Google 表格 - 带有 INDEX 参数的 IF 语句给我 #ERROR(解析错误)
Google Sheets - IF statement with INDEX arguments giving me #ERROR (Parse Error)
为了提供一些细节,我正在使用 Google 表格 + Google 表格来制作一个简单的数据库,收集我输入的所有银行信息(收入、储蓄、支出等)而且我可以通过简单的排序来跟踪详细信息。
我被困在一个我似乎无法弄清楚的公式上。在我进入我的代码的具体细节之前,我将给出一个小的解释。我试图 [使用公式] 填充的单元格应该从表单响应 sheet 中获取 2 条信息(我将其称为“rawdata
”)并产生一个值(数字) 来自“rawdata
”中的另一个单元格。
因此,在“rawdata
”中,我有一列 (B
) 的表单响应行值为“Expense
”或“Income
” .我在“rawdata
”中有一列 (D
),提交的数字的值为“Amount
”。
“rawdata
”中引用的单元格:
B9 = "Expense"
D9 = 67.37
现在,由于原始的“rawdata
”是一个表单响应 sheet 它会在每个响应中插入新行,因此我尝试仅调用指向单元格的方向会在提交新响应时失败因为它会自己增加。因此,作为解决方案是不可能的。
因此,对于我用来在有组织的 sheet 中显示来自“rawdata
”的值的每个其他单元格,我使用 =INDEX()
从确切的行和列中提取值,而不是单元格引用,到目前为止它一直有效。
结果,=INDEX(rawdata!$B:$B,ROW(9:9))
在 B9
中显示来自“rawdata
”的“Expense
”。所以其余的细胞都是这样配制的,我没有遇到任何问题。
当我得到金额时,我使用 =IF()
公式从 D
列中提取值,并根据 [=18] 列的不同将其显示为负数或正数=] 状态。
=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)))
是我对问题的解决方案,因为对我来说它是有道理的。但它失败了,给我一个解析错误。
因此,当我尝试 运行 第一个 =INDEX()
的值 1
或 0
作为 =IF()
的结果时,它也失败了,所以我在排序后的 table 中创建了一个新列来提取“Expense
”或“Income
”的数据,以便我可以引用它。
“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
我现在不知所措。我在这里和整个 google 进行了大量搜索,已经筋疲力尽,尝试使用 INDEX
和 MATCH
、VLOOKUP
等,但无法解决这个问题救我一命。这里有没有人知道如何使用在“rawdata
”中添加新行时不会增加的单元格引用来解决这个问题?
PS。我还尝试使用 =VALUE()
尝试将 =INDEX()
转换为数字,但没有成功。
您的公式有多余的等号 (=
)。尝试 Insert > Column 并在新列的第 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)))
此外,array formula is a great tool for Form data calculations. In this file you can see a formula in Column F
that does a calculation in each row of the responses sheet from this form,它将随着新条目的出现而继续更新。请随意输入一些表单回复。
为了提供一些细节,我正在使用 Google 表格 + Google 表格来制作一个简单的数据库,收集我输入的所有银行信息(收入、储蓄、支出等)而且我可以通过简单的排序来跟踪详细信息。
我被困在一个我似乎无法弄清楚的公式上。在我进入我的代码的具体细节之前,我将给出一个小的解释。我试图 [使用公式] 填充的单元格应该从表单响应 sheet 中获取 2 条信息(我将其称为“rawdata
”)并产生一个值(数字) 来自“rawdata
”中的另一个单元格。
因此,在“rawdata
”中,我有一列 (B
) 的表单响应行值为“Expense
”或“Income
” .我在“rawdata
”中有一列 (D
),提交的数字的值为“Amount
”。
“rawdata
”中引用的单元格:
B9 = "Expense"
D9 = 67.37
现在,由于原始的“rawdata
”是一个表单响应 sheet 它会在每个响应中插入新行,因此我尝试仅调用指向单元格的方向会在提交新响应时失败因为它会自己增加。因此,作为解决方案是不可能的。
因此,对于我用来在有组织的 sheet 中显示来自“rawdata
”的值的每个其他单元格,我使用 =INDEX()
从确切的行和列中提取值,而不是单元格引用,到目前为止它一直有效。
=INDEX(rawdata!$B:$B,ROW(9:9))
在 B9
中显示来自“rawdata
”的“Expense
”。所以其余的细胞都是这样配制的,我没有遇到任何问题。
当我得到金额时,我使用 =IF()
公式从 D
列中提取值,并根据 [=18] 列的不同将其显示为负数或正数=] 状态。
=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)))
是我对问题的解决方案,因为对我来说它是有道理的。但它失败了,给我一个解析错误。
因此,当我尝试 运行 第一个 =INDEX()
的值 1
或 0
作为 =IF()
的结果时,它也失败了,所以我在排序后的 table 中创建了一个新列来提取“Expense
”或“Income
”的数据,以便我可以引用它。
“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
我现在不知所措。我在这里和整个 google 进行了大量搜索,已经筋疲力尽,尝试使用 INDEX
和 MATCH
、VLOOKUP
等,但无法解决这个问题救我一命。这里有没有人知道如何使用在“rawdata
”中添加新行时不会增加的单元格引用来解决这个问题?
PS。我还尝试使用 =VALUE()
尝试将 =INDEX()
转换为数字,但没有成功。
您的公式有多余的等号 (=
)。尝试 Insert > Column 并在新列的第 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)))
此外,array formula is a great tool for Form data calculations. In this file you can see a formula in Column F
that does a calculation in each row of the responses sheet from this form,它将随着新条目的出现而继续更新。请随意输入一些表单回复。