Excel 索引/匹配4列

Excel 索引/匹配4列,excel,excel-formula,Excel,Excel Formula,我有一个Excel文件,有两张表——一张表包含我的项目、价格、代码等,另一张表用于与竞争对手交叉匹配 我在下面包括了一个Excel文件和图像 我希望能够在手动输入任何竞争对手的代码时自动生成代码。我可以做索引/匹配,但我只能匹配一列(我假设它们都在一张表中,这样更容易)。这是我的公式: =索引(C:C,匹配(K2,E:E,0) 因此,这只是在E:E中查找,当我尝试输入另一列,例如C:C或D:D时,它返回一个错误 我试图将匹配作为C:G执行,但它立即给出了一个错误 match之所以给您错误,是因为

我有一个Excel文件,有两张表——一张表包含我的项目、价格、代码等,另一张表用于与竞争对手交叉匹配

我在下面包括了一个Excel文件和图像

我希望能够在手动输入任何竞争对手的代码时自动生成代码。我可以做
索引/匹配
,但我只能匹配一列(我假设它们都在一张表中,这样更容易)。这是我的公式:

=索引(C:C,匹配(K2,E:E,0)

因此,这只是在
E:E
中查找,当我尝试输入另一列,例如
C:C
D:D
时,它返回一个错误

我试图将
匹配
作为
C:G
执行,但它立即给出了一个错误


match之所以给您错误,是因为它正在查找一个数组,而您将其放入了多个列中

肯定有一种更优雅的方式来做这件事,但这是我想出的第一个

=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)),"")))))

match之所以给您错误是因为它正在查找数组,而您将其放入了多个列

肯定有一种更优雅的方式来做这件事,但这是我想出的第一个

=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)),"")))))
索引/匹配组合 请尝试以下公式:

{=指数($B$2:$B$5,匹配(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。这将创建一个。因此,花括号。请注意,手动输入花括号无效

说明:

  • INDEX函数返回表或范围内的值或对值的引用
  • MATCH函数在单元格区域中搜索指定项,然后返回该项在该区域中的相对位置
语法:

索引函数有两种形式:数组和引用形式。在本例中,我们将使用引用形式

  • 索引(引用,行数,[列数],[区域数])

  • 匹配(查找值、查找数组、[匹配类型])

说明:

为了简化,我们将使用以下表格:

索引(引用,匹配(查找值,查找数组,[匹配类型])

INDEX
函数根据
row_num
参数从reference
My code
列(B1:B5)返回一个值,该参数用作指向右侧单元格的索引号,我们将用
MATCH
函数替换
row_num

另一方面,
MATCH
函数返回
competitor
n
列中值的相对位置,该值与
competitor code
列的各个单元格中的值相匹配

为了使它能够处理多个查找范围,我们将创建布尔值数组(真/假,也称逻辑值)通过比较
competitor code
列中各个单元格的值与单个
competitor
n
列中的值。现在,我们通过执行不改变其隐含值的数学运算将这些布尔值转换为数值(即TRUE=1,FALSE=0)。我们将直接添加这些值以简化操作。生成的数组有四个索引,其中有两个可能的值:1或0。由于
匹配
查找数组
中的每个项都是唯一的,那么只有一个
TRUE
1
。其余的是
FALSE
0
。因此,根据这些知识,我们将使用它作为
查找值

让我们分析一下公式:

=索引(B2:B5,匹配(1,(K2=C2:C5)+(K2=D2:D5)+(K2=E2:E5)+(K2=F2:F5)+(K2=G2:G5),0))

我的代码2
=
索引({“我的代码1”;“我的代码2”;“我的代码3”;“我的代码4”},匹配)

我的代码2
=
索引({“我的代码1”;“我的代码2”;“我的代码3”;“我的代码4”},(2))

2
=
匹配(1,(K2=C2:C5)+(K2=D2:D5)+(K2=E2:E5)+(K2=F2:F5)+(K2=G2:G5),0)

2
=
匹配(1,0;1;0;0},0))

我希望这个答案是有帮助的

参考资料和链接:

  • 索引/匹配组合 请尝试以下公式:

    {=指数($B$2:$B$5,匹配(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。这将创建一个。因此,花括号。请注意,手动输入花括号将不起作用

    说明:

    • INDEX函数返回表或范围内的值或对值的引用
    • MATCH函数在单元格区域中搜索指定项,然后返回该项在该区域中的相对位置
    语法:

    索引函数有两种形式:数组形式和引用形式。在这种情况下,我们将使用参考表格

    • 索引(引用,行数,[列数],[区域数])

    • 匹配(查找值、查找数组、[匹配类型])

    说明:

    为了简化,我们将使用以下表格:

    索引(引用,匹配(查找值,查找数组,[匹配类型])

    INDEX
    函数根据
    row_num
    参数从reference
    My code
    列(B1:B5)返回一个值,该参数用作指向右侧单元格的索引号,我们将用
    MATCH
    函数替换
    row_num

    匹配
    功能,
    =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))