【问题标题】:To compare the each of the element in a range with another [closed]将范围内的每个元素与另一个元素进行比较[关闭]
【发布时间】: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


【解决方案1】:

当您使用 VBA 接缝时,您可以使用 RegEx 比较字符串 OR 以删除分隔符 OR 将它们替换为任何默认分隔符以进行比较。

【讨论】:

  • 帖子是用替换代码编辑的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-03
  • 1970-01-01
  • 1970-01-01
  • 2019-01-19
  • 2022-11-15
相关资源
最近更新 更多