两个包含文本但包含多个分隔符的单元格之间的字符串比较

时间:2017-03-14 19:32:29

标签: excel-vba excel-formula string-comparison text-comparison vba

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

EG。

public MWStructArray Convert(ResolutionContext context)
    {
        var dictionary = context.SourceValue as Dictionary<string, object>;
        var mwStructArray = new MWStructArray(1, 1, dictionary.Keys.ToArray());

        foreach (KeyValuePair<string, object> entry in dictionary)
        {
            if (entry.Value is IDictionary)
            {
                mwStructArray[entry.Key, 1] = context.Mapper.Map<MWStructArray>(entry.Value)
            }
            else
            {
                mwStructArray[entry.Key, 1] = entry.Value.ToString();
            }
        }

        return mwStructArray;
    }

我完全没有意识到宏。任何线索都很感激!

2 个答案:

答案 0 :(得分: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 Window

Image mirror since Stackoverflow image hosting seems down

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

只需在单元格中输入=CompareByLetter(A1,A2)即可。

答案 1 :(得分: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会将{}放在公式周围。

![enter image description here