0

我需要在 excel 中自动执行此任务:我有 2 个 excel 工作簿:一个有这种信息:

A               B                 C
1 TABLENAME1    FIELDNAME1
2 TABLENAME1    FIELDNAME2
3 TABLENAME2    FIELDNAME3
4 TABLENAME3    FIELDNAME1
5 TABLENAME3    FIELDNAME2
6 TABLENAME3    FIELDNAME3

和另一个:

A                   B
1 TABLENAME1        FIELDNAME3
2 xxTABLENAME1xx    FIELDNAME4
3 TABLENAME2xxx     FIELDNAME2
4 XXTABLENAME3xx    FIELDNAME1

注意:“A”和“B”只是单元格标题。

我必须从第二个工作簿的第一个工作簿中搜索每个表名及其各自的字段名。但是有一个问题:第二个工作簿中的表名可以包含在另一个更大的字符串中,所以LIKE这里需要类似 sql 命令的东西。

在搜索结束时,结果必须放在 C 列中,这样:

A               B                 C
1 TABLENAME1    FIELDNAME1      NO
2 TABLENAME1    FIELDNAME2      NO
3 TABLENAME2    FIELDNAME3      NO
4 TABLENAME3    FIELDNAME1      YES
5 TABLENAME3    FIELDNAME2      NO 
6 TABLENAME3    FIELDNAME3      NO

如您所见,带有 fieldname1 的 Tablename3 是在第二个工作簿中找到的唯一行。

我怎样才能使用 excel 公式或宏来做到这一点?请帮助我,因为这个任务实际上有数千行,它会为我节省很多时间。编辑:搜索必须不区分大小写。

4

2 回答 2

0

如果在 Excel 2007 及更高版本上,将此公式放在“Sheet1”单元格 C2 中并复制下来:

=IF(COUNTIFS(Sheet2!A:A,"*"&A2&"*",Sheet2!B:B,C2)>0,"YES","NO")
于 2013-08-28T19:35:27.547 回答
0

解决了:

=IF(
AND(
IFERROR(MATCH("*" & A1 & "*",[Workbook2.xlsx]Sheet!$D$2:$D$16074,0),FALSE)  
,
IFERROR(MATCH(B1,[Workbook2.xlsx]Sheet!$E$2:$E$16074,0),FALSE)    
),"YES","NO")
于 2013-08-28T21:05:28.540 回答