3

我希望比较 excel 中包含相似文本但其中包含不同分隔符的两个单元格。我想在比较字符串时忽略分隔符。

例如。

John Doe: Mary Ann. Are Married/
John Doe Mary Ann Are Married

我完全不知道宏。任何线索表示赞赏!

4

2 回答 2

2

你可以试试这个:

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

将代码粘贴到右侧的模块窗口中(见附件)。

VBA 窗口

自 Stackoverflow 图像托管以来的图像镜像似乎已关闭

之后,您应该能够像使用公式一样使用这些函数。

只需输入=CompareByLetter(A1,A2)一个单元格。

于 2017-03-14T20:14:13.473 回答
2

如果你有 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 将{}围绕公式。

![在此处输入图像描述

于 2017-03-14T20:21:21.737 回答