![Excel 公式:MATCH 可以识别 'n'&"01" 或 'n'&"02 "](https://linux22.com/image/1261879/Excel%20%E5%85%AC%E5%BC%8F%EF%BC%9AMATCH%20%E5%8F%AF%E4%BB%A5%E8%AF%86%E5%88%AB%20'n'%26%2201%22%20%E6%88%96%20'n'%26%2202%20%22.png)
我有一张 Excel 工作表(源),其 A 列包含简单的 ID 号(01 到 40000)。在另一张工作表(子)中,A 列包含相同的 ID 号,但添加了额外的 01 或 02;例如 0101 或 0102、250001 或 250002 等。因此,此 ID 号列表的长度几乎是其两倍。B 列包含数字。
我正在尝试从子表的 B 列中提取数据,并根据它是否有“01”或“02”将数字放入源表的 B 列或 C 列。
我的想法是使用 INDEX/MATCH,但我不确定如何编写匹配以考虑查找值的不完全匹配。MATCH(A1&"01",child!A1:A100000,)。
非常感谢任何提示和链接。
麦克风。
答案1
它应该可以工作,但依赖于匹配的数据类型。
如果中的数据child
是数字,则此方法无效,因为n&"01"
它是字符串。在这种情况下,您需要将其包装A1&"01"
在VALUE()
公式中,以便在每个使用它的地方将其转换为数字。
由于没有进一步的详细信息,我将其从其余答案中省略了,但只需将其添加进去就足够了。
如果您可以对第二张表中的数据进行排序,那么您应该能够直接执行此操作VLOOKUP
,如下所示:
=VLOOKUP( A1 & "01" , child!$A$1:$A$10000 , 2 , FALSE )
如果找到匹配项,则将返回B
匹配行的列值,否则返回。因此,您需要将其包装在一行中以处理此问题(为了便于阅读,示例中使用了换行符):###01
#N/A
IF
=IF( ISNA( VLOOKUP(A1&"01",child!$A$1:$A$10000,2,FALSE) ) ,
"" , VLOOKUP(A1&"01",child!$A$1:$A$10000,2,FALSE) )
该公式将适用于列B
,您需要相同的公式,但&"02"
在列内C
。
答案2
在 B1 中:
=IF(ISNA(MATCH(A1&"01",child!$A$1:$A$10000,FALSE)),"",VLOOKUP(A1&"01",child!$A$1:$C$10000,2,FALSE)
在 C1 中:
=IF(ISNA(MATCH(A1&"02",child!$A$1:$A$10000,FALSE)),"",VLOOKUP(A1&"02",child!$A$1:$C$10000,3,FALSE)
并根据需要填写。
答案3
您的工作表名称似乎不匹配。从功能上讲,您的子工作表实际上是源。但是使用您的名称:
保持简单。使用 vlookup。这些方程式将数据拉入“源”表:
在 B 列中:
=vlookup(a4&"01",child!a$4:b$13,1,0)
在 C 列中:
=vlookup(a4&"02",child!$a$4:b$13,1,0)
假设数据从两个工作表的第 4 行开始。您需要扩展数据范围child!a$4:b$13
以涵盖子工作表上的所有数据。然后填写方程式。
可能需要一些错误处理来控制#n/a
行为:
=if(isna(vlookup(a4&"02",child!a$4:b$13,1,0)),"",vlookup(a4&"02",child!a$4:b$13,1,0))