If 语句嵌套在 Google 个工作表中的 Vlookup
If Statement Nested with a Vlookup in Google Sheets
我正在为 Google 表格的 Vlookup
中的 If
语句而苦苦挣扎。
当前公式:
=IfError(ARRAYFORMULA(if(len($A3:$A),VLOOKUP($A3:$A,
{'Form responses 3'!$E2:$E,'Form responses 3'!$G2:$G},2,0),)))
所以上面所做的是在另一个 sheet 上查找 A3:A
中的值,如果在 E:E
中有匹配项,则 return 中的值第二列,或 G:G
.
上述公式的问题是在 A3:A
中只能有一个唯一值(例如 1 - 36)但是 G2:G
有一个问题有多个迭代Vlookup
仅采用匹配的第一个值的相同数字。
因此,我试图通过要求它在给我一个值之前检查另一个唯一值来扩展上面的公式。因此下面的公式:
=IfError(ARRAYFORMULA(If('Form responses 3'!D:D=3,,
if(len($A3:$A),VLOOKUP($A3:$A,{'Form responses 3'!$E2:$E,'
Form responses 3'!$G2:$G},2,0),))))
所以现在要做的是首先检查以查看 if D:D =3
,然后仅执行上面提到的 VLookup
IF D:D is 3
(在本例中)。
我显然没有正确执行 If lookup for =3
,因为当我在单元格中输入第二个公式时,我仍然得到匹配的第一个值,并且没有考虑先查找 3。
如果有人想在所有上下文中查看公式,我很乐意分享 sheet。
公式的主要问题:
=IfError(ARRAYFORMULA(If('Form responses 3'!D:D=3,,
if(len($A3:$A),VLOOKUP($A3:$A,{'Form responses 3'!$E2:$E,'
Form responses 3'!$G2:$G},2,0),))))
就是VLOOKUP()
只能有一个搜索条件。您正在尝试通过在 VLOOKUP()
前面加上 IF()
语句来模拟多个条件。在某些情况下,您可能能够取得结果,但最终会得到难以理解和难以调试的公式。
而是使用 QUERY()
函数,您可以在其中设置多个条件。 QUERY()
更加灵活,允许多个搜索条件。
它的语法是QUERY(range, select statement, [headers])
这是一个在您的示例中给出正确值 87 的示例 sheet。
=query('Form responses 3'!$A:$G,"select G where D="&B&" and E = "&A3&"",0)
解释:
Form responses 3'!$A:$G
---要选择的范围
"select G
--- Select G 列来自范围
中的匹配行
where D="&B&
" --- 将范围内的列 D 与单元格 B1
匹配的条件
and
--- 合乎逻辑的 and
要遵循的附加条件
`E = "&A3&"" ---将范围内的列 E 匹配到单元格 A3 的条件
我强烈建议学习 QUERY
以及各种 select
语句的所有可能性。
我在此处的链接 sheet 中添加了一个额外的 sheet8
以显示正在运行的查询。上面的公式在单元格 E3
中,并按照您的预期给出值 87
。
https://docs.google.com/spreadsheets/d/1xo8edBZQ5bJXUqqGxqPMZeyrdAQgIFZzkgv7Dct1g0A/edit?usp=sharing
注意:如果您不熟悉 QUERY,我建议先做一个教程并学习它的语法。上面的示例有点高级(即根据另一个单元格值从一个 sheet 中选择)。
我正在为 Google 表格的 Vlookup
中的 If
语句而苦苦挣扎。
当前公式:
=IfError(ARRAYFORMULA(if(len($A3:$A),VLOOKUP($A3:$A,
{'Form responses 3'!$E2:$E,'Form responses 3'!$G2:$G},2,0),)))
所以上面所做的是在另一个 sheet 上查找 A3:A
中的值,如果在 E:E
中有匹配项,则 return 中的值第二列,或 G:G
.
上述公式的问题是在 A3:A
中只能有一个唯一值(例如 1 - 36)但是 G2:G
有一个问题有多个迭代Vlookup
仅采用匹配的第一个值的相同数字。
因此,我试图通过要求它在给我一个值之前检查另一个唯一值来扩展上面的公式。因此下面的公式:
=IfError(ARRAYFORMULA(If('Form responses 3'!D:D=3,,
if(len($A3:$A),VLOOKUP($A3:$A,{'Form responses 3'!$E2:$E,'
Form responses 3'!$G2:$G},2,0),))))
所以现在要做的是首先检查以查看 if D:D =3
,然后仅执行上面提到的 VLookup
IF D:D is 3
(在本例中)。
我显然没有正确执行 If lookup for =3
,因为当我在单元格中输入第二个公式时,我仍然得到匹配的第一个值,并且没有考虑先查找 3。
如果有人想在所有上下文中查看公式,我很乐意分享 sheet。
公式的主要问题:
=IfError(ARRAYFORMULA(If('Form responses 3'!D:D=3,,
if(len($A3:$A),VLOOKUP($A3:$A,{'Form responses 3'!$E2:$E,'
Form responses 3'!$G2:$G},2,0),))))
就是VLOOKUP()
只能有一个搜索条件。您正在尝试通过在 VLOOKUP()
前面加上 IF()
语句来模拟多个条件。在某些情况下,您可能能够取得结果,但最终会得到难以理解和难以调试的公式。
而是使用 QUERY()
函数,您可以在其中设置多个条件。 QUERY()
更加灵活,允许多个搜索条件。
它的语法是QUERY(range, select statement, [headers])
这是一个在您的示例中给出正确值 87 的示例 sheet。
=query('Form responses 3'!$A:$G,"select G where D="&B&" and E = "&A3&"",0)
解释:
Form responses 3'!$A:$G
---要选择的范围
"select G
--- Select G 列来自范围
where D="&B&
" --- 将范围内的列 D 与单元格 B1
and
--- 合乎逻辑的 and
要遵循的附加条件
`E = "&A3&"" ---将范围内的列 E 匹配到单元格 A3 的条件
我强烈建议学习 QUERY
以及各种 select
语句的所有可能性。
我在此处的链接 sheet 中添加了一个额外的 sheet8
以显示正在运行的查询。上面的公式在单元格 E3
中,并按照您的预期给出值 87
。
https://docs.google.com/spreadsheets/d/1xo8edBZQ5bJXUqqGxqPMZeyrdAQgIFZzkgv7Dct1g0A/edit?usp=sharing
注意:如果您不熟悉 QUERY,我建议先做一个教程并学习它的语法。上面的示例有点高级(即根据另一个单元格值从一个 sheet 中选择)。