Excel |在不同的 sheet 中搜索 table 并从该行的列中获取值
Excel | Searching table in different sheet and bringing value from column in that row
我正在尝试在我的 sheet 中查找 table。我的 table 由三列和无限数量的行组成。
我的table可以在这里看到:
在我的第二个 sheet 中,我希望编写一个公式来搜索 table 中的所有行并在 A 列和 B 列中查找完全匹配项,这意味着它必须找到该行其中 a 列的值为 "jan",并且在同一行中,第二列的值必须为 "y"。如果它找到这个匹配项,它应该 return C 列的值。
我尝试研究 hlookup,但那是针对水平 tables 的,所以我认为这行不通。我也查看了 Vlookups,但它只允许一个条件搜索而不是查找两个匹配项。
任何人都可以在这里阐明一下吗?
您可以使用索引并匹配多个条件
=INDEX($A:$C00, MATCH("Jan"&"y", $A:$A00&$B:$B00, 0),3)
输入此公式时按CTRL + SHIFT + ENTER。
INDEX
函数的语法为
INDEX(array, row_num_in_array, [column_num_in_array])
和MATCH
returns在索引位置逻辑匹配
MATCH(lookup_value, lookup_array, [match_type])
将两者结合起来是一种灵活的技术,而且非常强大——匹配中的逻辑 lookup_value 可能是一个复杂的条件。
最简单的代码
对整列进行操作
INDEX(C:C, MATCH("Jan"&"y", A:A&B:B, 0), 1)
nb./ A:A
是 excel "all of column A" 的代码。您可以改用:
受限代码
对 sheet 的子集进行操作。
INDEX($C:$C00, MATCH("Jan"&"y", $A:$A00&$B:$B00, 0), 1)
请注意,您必须使用相同的行长度数组(例如行 2:1000),否则公式将不起作用。 MATCH
只知道它的 lookup_array 有多少行,你需要确保它的行与 INDEX
的数组
中的行相匹配
PS。抱歉,这与之前的答案很接近,但详细信息太长,无法发表评论。
PPS。我错过了对第一个答案的澄清。这会起作用,但不需要将所有三列都用作 INDEX
函数中的 array
。毕竟您只是从 C 列返回数据。
将范围转换为 table (ctrl-t),然后使用 SUMIFS 根据两个条件搜索 table
=SUMIFS(Table1[Alteration],Table1[Month],"Jan",Table1[Products],"y")
这是说 "give me [Alteration] where [Month] = "Jan" 和 [Products] = 'y'...这个 returns 364.
您可以将条件指向包含您的条件的单独单元格。
请注意,如果有不止一行具有相同的数据(即超过一行同时包含 'Jan' 和 'y'),C 列将被加在一起。
我正在尝试在我的 sheet 中查找 table。我的 table 由三列和无限数量的行组成。
我的table可以在这里看到:
在我的第二个 sheet 中,我希望编写一个公式来搜索 table 中的所有行并在 A 列和 B 列中查找完全匹配项,这意味着它必须找到该行其中 a 列的值为 "jan",并且在同一行中,第二列的值必须为 "y"。如果它找到这个匹配项,它应该 return C 列的值。
我尝试研究 hlookup,但那是针对水平 tables 的,所以我认为这行不通。我也查看了 Vlookups,但它只允许一个条件搜索而不是查找两个匹配项。
任何人都可以在这里阐明一下吗?
您可以使用索引并匹配多个条件
=INDEX($A:$C00, MATCH("Jan"&"y", $A:$A00&$B:$B00, 0),3)
输入此公式时按CTRL + SHIFT + ENTER。
INDEX
函数的语法为
INDEX(array, row_num_in_array, [column_num_in_array])
和MATCH
returns在索引位置逻辑匹配
MATCH(lookup_value, lookup_array, [match_type])
将两者结合起来是一种灵活的技术,而且非常强大——匹配中的逻辑 lookup_value 可能是一个复杂的条件。
最简单的代码
对整列进行操作
INDEX(C:C, MATCH("Jan"&"y", A:A&B:B, 0), 1)
nb./ A:A
是 excel "all of column A" 的代码。您可以改用:
受限代码
对 sheet 的子集进行操作。
INDEX($C:$C00, MATCH("Jan"&"y", $A:$A00&$B:$B00, 0), 1)
请注意,您必须使用相同的行长度数组(例如行 2:1000),否则公式将不起作用。 MATCH
只知道它的 lookup_array 有多少行,你需要确保它的行与 INDEX
的数组
PS。抱歉,这与之前的答案很接近,但详细信息太长,无法发表评论。
PPS。我错过了对第一个答案的澄清。这会起作用,但不需要将所有三列都用作 INDEX
函数中的 array
。毕竟您只是从 C 列返回数据。
将范围转换为 table (ctrl-t),然后使用 SUMIFS 根据两个条件搜索 table
=SUMIFS(Table1[Alteration],Table1[Month],"Jan",Table1[Products],"y")
这是说 "give me [Alteration] where [Month] = "Jan" 和 [Products] = 'y'...这个 returns 364.
您可以将条件指向包含您的条件的单独单元格。
请注意,如果有不止一行具有相同的数据(即超过一行同时包含 'Jan' 和 'y'),C 列将被加在一起。