是否有 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++ 加载它们并使用特定的正则表达式删除不重要的行。