如何使用 VBA 代码比较两个 Excel 表上的数据?

如何使用 VBA 代码比较两个 Excel 表上的数据?

样本数据集: 在此处输入图片描述

是否有 VBA 公式可以比较两个数据集之间的日期和相似词?例如,如果它包含“Ter”和“1/9/18”,那么我可以找出位置是“Grass”。

我的目标是找到“日期”相同且“客场或主场俱乐部”与“组织”相匹配的单元格,最终找到位置。

我有两张 Excel 表,我需要找到可比较的行。我有一个“日期”列,需要在两张表上完全匹配。此外,我有两列,需要与第二张表上的一列匹配。(它们不是完全匹配,但都包含相似的单词,例如“Ter”)。

示例工作簿

答案1

您的样本数据集没有重复的日期,并且每个球队名称都有一个唯一的三字符标识符。对于满足这些约束的数据,这将有效。对于每个日期的多个比赛,可能没有工作表函数解决方案。

在此处输入图片描述

`=IF(OR(UPPER(LEFT(INDEX(Data1,MATCH(F2,$A$2:$A$10,0),2),3))=UPPER(LEFT(G2,3)),UPPER(LEFT(INDEX(Data1,MATCH(F2,$A$2:$A$10,0),3),3))=UPPER(LEFT(G2,3))),INDEX(Data1,MATCH(F2,$A$2:$A$10,0),4),"no match")`

为了简单起见,我将范围 $A$2:$D$10 命名为“Data1”。

我们通过采取来解释匹配的文本UPPER(LEFT([text],3))

以下是总体概要:

=IF(OR([one_thing],[another_thing]),[do_something],[something_else])

[one_thing](不包括左上角的文本操作)扩展为:

INDEX(Data1,MATCH(F2,$A$2:$A$10,0),2)=G2

和 [another_thing] 类似地:

INDEX(Data1,MATCH(F2,$A$2:$A$10,0),3)=G2

这些说,使用日期(F2)作为键,搜索数据集并分别返回第 2 列和第 3 列的值,然后与之进行比较G2

如果匹配,[do_something]:

INDEX(Data1,MATCH(F2,$A$2:$A$10,0),4)

获取日期匹配的数据集记录第4列,并打印;否则

[其他内容]

"no match"

如果需要,您可以使用一个换行符IFERROR来消除数据集中没有匹配日期的行的 #N/A 结果。

答案2

第一个解决方案是开发 VBA 代码来完成您想要的操作。

另一种方法是提取 2 个 CSV 文件并使用 WinMerge 进行比较。

最佳解决方案取决于搜索的复杂性。

在比较这两个文件之前,您可以使用 Notepad++ 加载它们并使用特定的正则表达式删除不重要的行。

相关内容