如何在Excel中自动化?

时间:2013-08-28 18:24:39

标签: excel vba excel-vba excel-formula

我需要在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”只是单元格标题。

我必须使用第二个工作簿中第一个工作簿中的相应字段名搜索每个tablename。但是有一个问题:第二个工作簿中的表名可以包含在另一个更大的字符串中,所以这里需要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公式或宏进行此操作? 请帮助我,这将节省我很多时间,因为这个任务实际上有数千行。 编辑:搜索必须不区分大小写。

2 个答案:

答案 0 :(得分:0)

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

=IF(COUNTIFS(Sheet2!A:A,"*"&A2&"*",Sheet2!B:B,C2)>0,"YES","NO")

答案 1 :(得分: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")