【问题标题】:Excel: Populate column C with differences between A and BExcel:用 A 和 B 之间的差异填充 C 列
【发布时间】:2017-06-15 09:10:01
【问题描述】:

我在 2 个工作表(WS1 和 WS2)中有 2 个列,其中包含 STRING 值列:A 和 B。 我想用差异填充第三个工作表 (WS3) 中的第三列“C”。

简单地说,我想用 WS1:A 但不在 WS2:B 中的项目名称填充 WS3:C 列。

【问题讨论】:

  • 使用 VBA 更容易 - 您愿意使用吗?
  • 是的,我对VB很熟悉(我写的是VB.NET ASP)
  • 一开始我误会了,我认为这里不需要 VBA

标签: vba excel excel-formula


【解决方案1】:

其实你可以做的很简单:

C列的公式是

=IF(COUNTIF($B$1:$B$10,A1),"",A1)

这是一个 VBA 替代方案:

Option Explicit

Sub DisplayUnique()
    Dim output As Range, r As Range
    Dim dict As Object

    Set dict = CreateObject("Scripting.Dictionary")

    Set output = ThisWorkbook.Worksheets("Sheet1").Range("C1")

    For Each r In ThisWorkbook.Worksheets("Sheet1").Range("A1:A10")
        If ThisWorkbook.Worksheets("Sheet1").Range("B1:B10").Find(r.Value, , , xlWhole) Is Nothing Then
            If Not dict.exists(r.Value) Then dict.Add r.Value, r.Value
        End If
    Next r

    output.Resize(dict.Count, 1).Value = Application.Transpose(dict.keys)
End Sub

【讨论】:

  • 我不得不对工作簿进行更改,这意味着这些列现在位于单独的工作表上 - 可以修改此公式还是 VBS 现在是更好的选择?
  • @DigitalLightcraft 只需在每个范围之前指定工作表,如'Sheet'1!A1'Sheet2'!$B$1:$B$10
  • 谢谢 - 这基本上可以完成这项工作,但是它使 C 列非常破碎(大量空白)
  • @DigitalLightcraft,我添加了一个 VBA 解决方案,可以很好地为您排列它们
  • 太棒了 - 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多