【问题标题】:How to compare only a part of strings in different excel sheets(columns)如何仅比较不同Excel工作表(列)中的部分字符串
【发布时间】:2012-09-12 11:07:31
【问题描述】:

如何比较下面指定的两个工作表列,但是只有工作表 1 中位置(列)中的部分字符串与工作表 2 中的位置(列)匹配?
1.只有 sheet1 中位置(列)的第一个两个字符和 sheet2 中位置(列)的第一个两个字符应该匹配。
2.只有 sheet1 中 location(column) 的任意两个字符和 sheet2 中 location(column) 的任意两个字符应该匹配。请帮忙

Location(sheet1)    Location(sheet2)     
____________________________________________
india- north        USxcs  
India-west          Indiaasd  
India- east         Indiaavvds  
India- south        Africassdcasv  
US- north           Africavasvdsa  
us-west             UKsacvavsdv  
uk- east            Indiacascsa  
uk- south           UScssca  
Africa-middle       Indiacsasca  
Africa-south        Africaccc  
Africa-east         UKcac  

【问题讨论】:

  • 在这里尝试这样的事情- =Vlookup(A, B, MatchingColumnName, True/False):A=通过相关excel函数获得的Sheet1位置列中的所需子字符串(类似于SubString()函数)B =通过相关excel函数获得的Sheet2位置列中的所需子字符串(类似于SubString()函数)(我只是给出一个想法,请检查语法是否正确)
  • 这里子串的位置在问题2中是未知的。如果字符串的任何部分(4个字符)匹配,需要比较两个表。
  • 您好,我想我已经在技术上回答了您的问题,即使您在扩展答案时遇到了问题。如果您想发布代码,我很乐意为您提供帮助,但我认为您应该接受我的回答,除非您不同意。
  • 您使用的是哪个版本的 Excel,如果您使用的是 2003,则只能嵌套 7 个 IF 函数,因此 OlduwanSteve 的解决方案对您不起作用,如果是这种情况,您应该将问题更新为指明你的版本。

标签: excel excel-2007


【解决方案1】:

对于问题 1,您可以使用 MID 函数从每个单元格值中提取前两个字符并进行比较。

对于问题 2,如果您可以接受预定的最大字符串长度,则有一个解决方案。这不是一个非常不错的解决方案!您可以使用嵌套的 if 语句,基本上是“展开循环”。此示例比较单元格 A1 和 B1 的长度为 A1 最多 12 个字符:

=IF(IFERROR(FIND(MID(A1,1,2),B1,1),0)>0,TRUE,
IF(IFERROR(FIND(MID(A1,2,2),B1,1),0)>0,TRUE,
IF(IFERROR(FIND(MID(A1,3,2),B1,1),0)>0,TRUE,
IF(IFERROR(FIND(MID(A1,4,2),B1,1),0)>0,TRUE,
IF(IFERROR(FIND(MID(A1,5,2),B1,1),0)>0,TRUE,
IF(IFERROR(FIND(MID(A1,6,2),B1,1),0)>0,TRUE,
IF(IFERROR(FIND(MID(A1,7,2),B1,1),0)>0,TRUE,
IF(IFERROR(FIND(MID(A1,8,2),B1,1),0)>0,TRUE,
IF(IFERROR(FIND(MID(A1,9,2),B1,1),0)>0,TRUE,
IF(IFERROR(FIND(MID(A1,10,2),B1,1),0)>0,TRUE,
IF(IFERROR(FIND(MID(A1,11,2),B1,1),0)>0,TRUE,
FALSE
)
)
)
)
)
)
)
)
)
)
)

感谢 James Jenkins 的这次更新

似乎旧版本的 Excel 有 7 个嵌套函数的限制。您可以通过将相邻单元格中的公式链接在一起来解决此问题(如果您不介意使电子表格更加难看)。事实上,如果您想获得真正的创意,您可以使用列索引来计算搜索的偏移量,例如:

=IF(IFERROR(FIND(MID($A1,(COLUMN(C1) - 3) * 6 + 1, 2), $B1, 1),0)>0,TRUE,
...repeat with +2, +3, +4, +5
if(D2 = FALSE, FALSE, TRUE)
)))))))

如果您需要更多字符串长度,则可以正确复制该列。请注意,当相邻列为空白时,最里面的 'if' 应该强制一个 TRUE 或 FALSE 值。

【讨论】:

  • 这里子串的位置在问题2中是未知的。如果字符串的任何部分(4个字符)匹配,则需要比较两个表。尝试了 MID、SUBSTITUTE、FIND、SEARCH 功能。
  • 一旦我意识到你在问什么,我就更新了我的答案。有帮助吗?
  • 不,不会,但您可以根据需要扩展示例。字符串需要多长时间?
  • 是的,我扩展了示例并尝试使用长度为 30 的字符串,[Erroe, too many arguments]
  • 也许您可以更新您的问题并发布您尝试过的内容。这听起来像是一个简单的语法错误(我这么说是因为我自己在测试我的回复时看到了同样的错误。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-18
  • 1970-01-01
相关资源
最近更新 更多