我有一个包含2张纸的Excel文件 - 一张包含我的商品,价格,代码等,另一张用于与竞争对手交叉匹配。
我在下面添加了一个Excel文件和图片。
我希望能够在手动输入任何竞争对手的代码时自动生成我的代码。我能够INDEX/MATCH
,但我只能匹配一列(我假设它们都在一张纸上,以便更容易)。这是我的公式:
=INDEX(C:C,MATCH(K2,E:E,0)
因此,仅在E:E
中查看,当我尝试输入其他列,例如C:C
或D:D
时,它会返回错误。
我尝试将MATCH
作为C:G
,但它立即发出了错误。
答案 0 :(得分:1)
匹配给你错误的原因是因为它正在寻找一个数组并且你放入了多个列。
有一种更优雅的方式可以做到这一点,但这是我想出的第一个。
=IFERROR(INDEX(B:B,MATCH(K2,C:C,0)),IFERROR(INDEX(B:B,MATCH(K2,D:D,0)),IFERROR(INDEX(B:B,MATCH(K2,E:E,0)),IFERROR(INDEX(B:B,MATCH(K2,F:F,0)),IFERROR(INDEX(B:B,MATCH(K2,G:G,0)),"")))))
答案 1 :(得分:1)
请尝试以下公式:
{= INDEX($ B $ 2:$ B $ 5,MATCH(1,(K2 = $ C $ 2:$ C $ 5)+(K2 = $ d $ 2:$ d $ 5)+(K2 = $ E $ 2: $ E $ 5)+(K2 = $ F $ 2:$ F $ 5)+(K2 = $ G $ 2:$ G $ 5),0))}
说明:将公式{没有大括号}粘贴到公式栏并点击 CTRL + SHIFT + ENTER ,而单元格是仍然活跃。这将创建一个array formula。因此,大括号。请注意,手动输入大括号不起作用。
说明
语法:
INDEX函数有两种形式 - Array和Reference形式。在这种情况下,我们将使用参考表格。
说明:
为简化起见,我们将使用此表单:
INDEX(引用,MATCH(lookup_value,lookup_array,[match_type]))
INDEX
函数根据My code
参数返回引用row_num
列(B1:B5)中的值,该参数用作指向右侧单元格的索引号,我们将通过用row_num
函数替换MATCH
来实现这一目标。
MATCH
函数返回competitor
n
列中值的相对位置,该值与单个单元格中的值相匹配competitor code
列。
为了使它适用于多个查找范围,我们将通过比较competitor code
列中各个单元格的值与单个{{中的值}来创建布尔值数组(TRUE / FALSE,也就是逻辑值)。 1}} competitor
列。现在,我们通过执行不改变其隐含值的数学运算(即TRUE = 1,FALSE = 0)将这些布尔值转换为数值。我们将直接添加这些值以简化它们。结果数组有四个索引,有两个可能的值:1或0.由于n
的{{1}}中的每个项都是唯一的,因此只能有一个MATCH
或{{1} }。其余的是lookup_array
或TRUE
。因此,有了这些知识,我们将把它用作1
。
让我们剖析公式:
= INDEX(B2:B5,MATCH(1,(K 2 = C2:C5)+(K2 = D2:D5)+(K2 = E2:E5)+(K2 = F2:F5)+(K2 = G2 :G5),0))
FALSE
0
lookup_value
My code 2
=
INDEX({"My code 1";"My code 2";"My code 3";"My code 4"},MATCH)
My code 2
=
INDEX({"My code 1";"My code 2";"My code 3";"My code 4"},(2))
2
OR
=
MATCH(1,(K2=C2:C5)+(K2=D2:D5)+(K2=E2:E5)+(K2=F2:F5)+(K2=G2:G5),0)
2 =MATCH(1,
{FALSE;FALSE;FALSE;FALSE}+
{FALSE;FALSE;FALSE;FALSE}+
{FALSE;FALSE;FALSE;FALSE}+
{FALSE;FALSE;FALSE;FALSE}+
{FALSE;TRUE;FALSE;FALSE},0))
=MATCH(1,
{0;0;0;0}+
{0;0;0;0}+
{0;0;0;0}+
{0;0;0;0}+
{0;1;0;0},0))
=========
{0;1;0;0},0))
我希望这个答案很有帮助。
参考文献和链接: