【发布时间】:2020-10-15 12:55:46
【问题描述】:
我需要比较两个单个单元格的数据以检查两个数据的差异。 数据的格式类似于“C1,C2,C3”,但分隔符可能会因给定的记录而改变。它可能会变成“C1~C2~C3”甚至“C1-C2-C3”之类的东西。 我尝试使用拆分功能,但分隔符不灵活,而我必须先检查分隔符才能将数据拆分为数组,然后我尝试循环数据以找到分隔符,但它不起作用。我可以知道如何克服这个问题,或者有什么更简洁的建议吗? 抱歉英语和表达能力差...
我也试过替换
Sub ChangeDelim()
Dim i As Variant
Dim delimList() As Variant
Dim replacement As String
Dim str1 As String
Dim str2 As String
delimList = Array("@", ".", "~", "-", "_") 'may increase due to requirement
replacement = ","
str1 = Sheet1.Range("A4")
str2 = Sheet1.Range("B4")
For Each i In delimList
str1 = Replace(str1, i, replacement)
str2 = Replace(str2, i, replacement)
Next i
With Worksheets("Testing")
.Range("D4") = str1
.Range("E4") = str2
End With
End Sub
But it looks like doesn't work since the output still the same
【问题讨论】:
-
将所有
,替换为-,然后将所有~替换为-,最后使用-作为分隔符进行拆分。否则使用强大的正则表达式,如下所示:regex101.com/r/uzrmG0/1 • 有关如何使用它的更多信息,请参阅:How to use Regular Expressions (Regex) in Microsoft Excel both in-cell and loops。自己尝试一下,如果您遇到问题或错误返回您的代码 (No attempt was made)。 -
您是否有未知数量的分隔符,或者分隔符只能是
,、~或-? -
是的,它将是未知数量的分隔符,而不仅仅是这些......
-
如果除了字母和数字以外的任何东西都可以作为分隔符,那么我推荐正则表达式!
-
@black138 请注意,您从
Sheet1读取,但您写入不同的工作表Worksheets("Testing")您的代码肯定会将每个分隔符替换为逗号,我对其进行了测试。
标签: arrays excel vba split comparison