为了提供一些细节,我使用Google Forms+Google Sheets制作了一个简单的数据库,收集我输入的所有银行信息(收入、储蓄、支出等),我可以通过简单的排序来跟踪细节。
我陷入了一个似乎无法理解的公式中。在我进入代码的具体细节之前,我将给出一个小的解释。我试图[用公式]填充的单元格应该从表单响应表中获取2条信息(我将其称为"rawdata
"),并从"rawdata
"中的另一个单元格中生成一个值(数字)。
所以在‘rawdata
’中,我有一列(B
)的值为"0";CCD_ 5";或";CCD_ 6";对于表单响应行。我在‘rawdata
’中有一列(D
),其值为"0";CCD_ 9";提交的编号。
"rawdata
"中引用的单元格:
B9 = "Expense"
D9 = 67.37
现在,由于最初的"rawdata
"是一个表单响应表,它在每次响应时都会插入新行,所以我尝试在提交新响应时仅调用单元格的方向失败,因为它会自行递增。因此,成为一个解决方案是不可能的。
因此,对于我用来在有组织的工作表中显示"rawdata
"中的值的每一个其他单元格,我都使用=INDEX()
来提取该行和列中的值,而不是单元格引用,到目前为止,它一直有效。
CCD_ 14显示";CCD_ 15";因此从B9
中的"rawdata
"。所以其余的细胞都是这样配制的,我没有遇到任何问题。
当我得到这个数量时,我使用=IF()
公式从D
列中提取值,并根据B
列的状态将其显示为负数或正数。
作为结果,=IF(rawdata!B8="Expense", -rawdata!$D9, rawdata!$D9)
显示-67.37
。
但由于我不能用这个公式来填充空单元格以备将来使用,我必须找到另一种方法来填充;
=IF(=INDEX(rawdata!$B:$B,ROW(9:9)) = "Expense", =INDEX(-rawdata!$D:$D,ROW(9:9)), =INDEX(rawdata!$D:$D,ROW(9:9)))
是我解决问题的方法,因为对我来说这是有意义的。但它失败了,给了我一个解析错误。
因此,当我试图用1
或0
的值作为=IF()
的结果来运行第一个=INDEX()
时,它也失败了,所以我在排序表中创建一个新列来提取"0"的数据;CCD_ 27";或";CCD_ 28";所以我可以参考一下。
"processeddata
"中的单元格:
E9 = "Expense"
=IF(E9="Expense", 1, 0)
显示1作为结果,所以我认为这就是我的问题的解决方案。
=IF(E9="Expense", =INDEX(-rawdata!$D:$D,ROW(9:9)), =INDEX(rawdata!$D:$D,ROW(9:9)))
显示带有描述"分析错误"的#ERROR
。
=INDEX(-rawdata!$D:$D,ROW(9:9))
显示-67.37
=INDEX(rawdata!$D:$D,ROW(9:9))
显示67.37
我不知道现在该怎么办。我已经在这里和谷歌上搜索了很多次,试着使用INDEX
、MATCH
、VLOOKUP
等,但无法解决这个问题来挽救我的生命。这里有人知道我如何通过在"rawdata
"中添加新行时不会增加的单元格引用来解决这个问题吗?
PS。我还尝试过使用=VALUE()
将=INDEX()
转换为数字,但没有成功。
您的公式有多余的等号(=
)。尝试插入>列和新列第8行中的此公式:
=arrayformula( if(rawdata!B8:B = "Expense", -rawdata!D8:D, rawdata!D8:D) )
您的公式中有一些等号,这可能是问题所在。
而不是:
IF(=INDEX(rawdata!$B:$B,ROW(9:9)) = "Expense", =INDEX(-rawdata!$D:$D,ROW(9:9)), =INDEX(rawdata!$D:$D,ROW(9:9)))
试试这个:
IF(INDEX(rawdata!$B:$B,ROW(9:9)) = "Expense", INDEX(-rawdata!$D:$D,ROW(9:9)), INDEX(rawdata!$D:$D,ROW(9:9)))
此外,数组公式是计算Form数据的一个很好的工具。在该文件中,您可以看到Column F
中的一个公式,该公式在该表单的响应表的每一行中进行计算,它将随着新条目的生成而继续更新。请随意输入并提交一些表格回复。