【问题标题】:Select columns and copy duplicates between them选择列并在它们之间复制重复项
【发布时间】:2012-11-14 04:45:48
【问题描述】:

两个不相邻的列,A 列和 C 列,包含字符串,而 E 列(同样不相邻)应该包含 A 列和 C 列之间的重复字符串。

现在我的主要问题是 A 列和 C 列的长度不同,并且重复项本身不在同一行上。

当不使用 VBA 时,以下输入列 E 给出了除空白之外的解决方案。

=IF(ISERROR(MATCH(A1,$C:$C,0)),"",A1)  

例如:
A列
土豆
番茄
西兰花
胡椒
蘑菇

C 列
蘑菇
黄瓜
西兰花

茴香

E 列应该是
蘑菇
西兰花

这是我迄今为止能够找到的,但这是非常错误的。我只是发现自己无法解决这个问题。

Sub Duplicates()
  Dim duplicates As Range
  Set duplicates = Columns("A", "C")
  activesheet.duplicates.Copy Destination:=activesheet.Range("E1")
End Sub

【问题讨论】:

    标签: excel vba macos duplicates


    【解决方案1】:

    ...试试这个:

      Sub PopulateColE()
    
         Dim cl As Range
         Dim CurrentRow As Integer: CurrentRow = 1
    
         On Error Resume Next
    
         For Each cl In Intersect(ActiveSheet.UsedRange, ActiveSheet.Range("C:C"))
            Application.WorksheetFunction.Match cl.Value, Range("A:A"), 0
    
            If Err.Number = 0 Then
               Range("E" & CurrentRow).Value = cl.Value
               CurrentRow = CurrentRow + 1
            End If
    
            Err.Clear
         Next cl
      End Sub
    

    【讨论】:

    • 太棒了!谢谢!我会试着真正理解你做了什么.. :-)
    • 当我们在这里(如果允许的话)另一个问题。我为列 A 和 C 运行此代码(给出 E),然后我也为 A 和 B 运行它(给出 F)。是否可以从 F 列中删除带有 E 的重复项?
    • 最简单的方式(如果我理解你的问题)- 在 E 和 F 之间添加一个额外的列,在这两列上运行宏,然后删除旧的 F
    • 这是有道理的,但我认为恰恰相反。如果 E 列是 abcde,而 F 列是 defgh。然后我会 F 是 fgh,我认为你的解决方案会给我 de,不是吗?
    • 再一次,QUICK 修复将简单地将 If Err.Number = 0 Then 更改为 If Err.Number <> 0 Then - 我希望这是有道理的...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多