Excel 映射并创建一个新列
Excel mapping and create a new column
Excel 文件列:
A B C
2 two 3
5 five 8
3 three 10
8 eight 11
12 one 15
我想在同一个文件中创建一个新列 D
,如下所示:
A B C D
2 two 3 three
5 five 8 eight
3 three 10
8 eight 11
12 one 15
我想映射 C
和 A
,如果匹配,D
取值 B
。
示例:C
中的值 3
存在于 A
中,因此 D
将采用相应的 B
值 three
。
谢谢!
因此,基于 BigBen 关于使用 IFERROR
的额外建议,我相信您在第 D
栏中想要类似的内容:
=IFERROR(VLOOKUP(C1, A:B, 2, FALSE), "")
...然后将公式向下拖动到整个列 D
现在,这里有一些假设:
- 您的数据没有任何 header 行,数据从第 1 行开始,而不是第 2 行
- 您需要 empty/blank 没有完全匹配的值(这是 BigBen 的
IFERROR
建议)。您当前的问题布局似乎表明了这一点。否则,您将在 D 列的所有空白单元格中得到 #N/A
。
编辑:为了确认,我使用了您的数据(虽然我从第 2 行开始),下面是它的处理方式 -
如果有 DA 功能,您可以使用:
1) - 使用 FILTER
:
排除空单元格
D1
中的公式:
=FILTER(B1:B5,COUNTIF(C1:C5,A1:A5)>0)
2) - 使用 XLOOKUP
:
包含空单元格
D1
中的公式:
=XLOOKUP(C1:C5,A1:A5,B1:B5,"")
如果 无法访问 DA 功能,您可以使用:
1) - 使用 INDEX
、MATCH
和 SMALL
:
排除空单元格
=IFERROR(INDEX(B:B,SMALL(IFNA(MATCH(C:C,A:A,0),""),ROW(A1))),"")
Note 1 - This needs to be array entered through CtrlShiftEnter
Note 2 - Alternatively, one could use a non-array entered approach including AGGREGATE
as per @basic: =IFERROR(INDEX(B:B,AGGREGATE(15,6,MATCH(C:C,A:A,0),ROW(A1))),"")
2) - 使用 VLOOKUP
:
包含空单元格
请参考@Gravity给出的另一个答案。
基本上,两种方法之间的区别可以形象化为:
Excel 文件列:
A B C
2 two 3
5 five 8
3 three 10
8 eight 11
12 one 15
我想在同一个文件中创建一个新列 D
,如下所示:
A B C D
2 two 3 three
5 five 8 eight
3 three 10
8 eight 11
12 one 15
我想映射 C
和 A
,如果匹配,D
取值 B
。
示例:C
中的值 3
存在于 A
中,因此 D
将采用相应的 B
值 three
。
谢谢!
因此,基于 BigBen 关于使用 IFERROR
的额外建议,我相信您在第 D
栏中想要类似的内容:
=IFERROR(VLOOKUP(C1, A:B, 2, FALSE), "")
...然后将公式向下拖动到整个列 D
现在,这里有一些假设:
- 您的数据没有任何 header 行,数据从第 1 行开始,而不是第 2 行
- 您需要 empty/blank 没有完全匹配的值(这是 BigBen 的
IFERROR
建议)。您当前的问题布局似乎表明了这一点。否则,您将在 D 列的所有空白单元格中得到#N/A
。
编辑:为了确认,我使用了您的数据(虽然我从第 2 行开始),下面是它的处理方式 -
如果有 DA 功能,您可以使用:
1) - 使用 FILTER
:
D1
中的公式:
=FILTER(B1:B5,COUNTIF(C1:C5,A1:A5)>0)
2) - 使用 XLOOKUP
:
D1
中的公式:
=XLOOKUP(C1:C5,A1:A5,B1:B5,"")
如果 无法访问 DA 功能,您可以使用:
1) - 使用 INDEX
、MATCH
和 SMALL
:
=IFERROR(INDEX(B:B,SMALL(IFNA(MATCH(C:C,A:A,0),""),ROW(A1))),"")
Note 1 - This needs to be array entered through CtrlShiftEnter
Note 2 - Alternatively, one could use a non-array entered approach including
AGGREGATE
as per @basic:=IFERROR(INDEX(B:B,AGGREGATE(15,6,MATCH(C:C,A:A,0),ROW(A1))),"")
2) - 使用 VLOOKUP
:
请参考@Gravity给出的另一个答案
基本上,两种方法之间的区别可以形象化为: