如何只比较不同excel表(列)中的一部分字符串

时间:2012-09-12 11:07:32

标签: excel excel-2007

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

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  

1 个答案:

答案 0 :(得分:0)

对于问题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值。