我希望比较 excel 中包含相似文本但其中包含不同分隔符的两个单元格。我想在比较字符串时忽略分隔符。
例如。
John Doe: Mary Ann. Are Married/
John Doe Mary Ann Are Married
我完全不知道宏。任何线索表示赞赏!
我希望比较 excel 中包含相似文本但其中包含不同分隔符的两个单元格。我想在比较字符串时忽略分隔符。
例如。
John Doe: Mary Ann. Are Married/
John Doe Mary Ann Are Married
我完全不知道宏。任何线索表示赞赏!
你可以试试这个:
Function CompareByLetter(t1 As String, t2 As String) As Boolean
CompareByLetter = CleanString(t1) = CleanString(t2)
End Function
Function CleanString(t As String) As String
Dim t1, x, c
For x = 1 To Len(t)
c = Asc(UCase(Mid(t, x, 1)))
If (c >= 65 And c <= 90) Or c = 32 Then t1 = t1 & Mid(t, x, 1)
Next x
CleanString = t1
End Function
然后您可以将其用作公式:
=CompareByLetter(A1,A2)
这个宏只是通过只保留字母和空格来比较字符串。
您还可以使用=CleanString(A1)
从字符串中删除所有其他字符。
要在您的项目中使用它,请打开 excel 并按ALT+F11
右键单击左侧并选择Insert -> Module
将代码粘贴到右侧的模块窗口中(见附件)。
自 Stackoverflow 图像托管以来的图像镜像似乎已关闭
之后,您应该能够像使用公式一样使用这些函数。
只需输入=CompareByLetter(A1,A2)
一个单元格。
如果你有 Office 365 Excel,那么我们可以使用这个数组公式:
=TEXTJOIN("",TRUE,IF(((CODE(UPPER(MID(A1,ROW(INDIRECT("1:" & LEN(A1))),1)))>=65)*(CODE(UPPER(MID(A1,ROW(INDIRECT("1:" & LEN(A1))),1)))<=90))+(CODE(UPPER(MID(A1,ROW(INDIRECT("1:" & LEN(A1))),1)))=32),MID(A1,ROW(INDIRECT("1:" & LEN(A1))),1),""))=TEXTJOIN("",TRUE,IF(((CODE(UPPER(MID(A2,ROW(INDIRECT("1:" & LEN(A2))),1)))>=65)*(CODE(UPPER(MID(A2,ROW(INDIRECT("1:" & LEN(A2))),1)))<=90))+(CODE(UPPER(MID(A2,ROW(INDIRECT("1:" & LEN(A2))),1)))=32),MID(A2,ROW(INDIRECT("1:" & LEN(A2))),1),""))
作为一个数组公式,退出编辑模式时必须使用 Ctrl-Shift-Enter 而不是 Enter 来确认。如果做得正确,那么 Excel 将{}
围绕公式。