比较两张表中的多个列以获取一个值

比较两张表中的多个列以获取一个值

我对 Excel VBA 宏的了解有限。我有两张名为“摘要”和“数据”的工作表

  • 摘要表有固定的行和列。
  • 数据表中有值。

我需要比较摘要和数据表的代码、公司 MRC 编号和状态,如果字段匹配,则从数据表获取摘要字段的相应值。

Excel

答案1

我的解决方案基于附屏幕截图,我发现工作表之间只有两个公共列, 是

1. 代码

2. 公司 MRC

我无法找到摘要和数据状态字段。

我想建议使用一组宏来比较两个工作表,以便将公共数据复制到另一个工作表中。

Sub CompareRanges()

Dim WorkRng1 As Range, WorkRng2 As Range, Rng1 As Range, Rng2 As Range

Set WorkRng1 = Application.InputBox("Range A:", "", Type:=8)
Set WorkRng2 = Application.InputBox("Range B:", Type:=8)

For Each Rng1 In WorkRng1
rng1Value = Rng1.Value

For Each Rng2 In WorkRng2

If rng1Value = Rng2.Value Then
Rng1.Interior.Color = VBA.RGB(255, 0, 0)
Exit For

End If
Next
Next

End Sub

怎么运行的:

  1. 回应两者输入框使用两张表中适当的数据范围进行比较。
  2. 宏观将突出显示重复数据在 Sheet 1(数据表) 中红色
  3. 跑步下面写的宏来复制重复数据。
  4. 将两个宏复制为标准模块

編輯:

执行以下操作以避免使用第二个宏:

  1. 选择数据范围DATA Sheet并应用自动过滤
  2. 筛选行数红色
  3. 复制已过滤的行。
  4. 将单元格指针放置在所需单元格处并应用特殊粘贴然后点击价值

    Sub CopyRedRows()
    
    Dim wks As Worksheet
    Dim wNew As Worksheet
    Dim lRow As Long
    Dim lNewRow As Long
    Dim x As Long
    
    Set wks = Sheets("Data")
    lRow =  wks.Cells.SpecialCells(xlCellTypeLastCell).Row 
    
      Set wNew = Sheets("Summary")
      lNewRow = 10
    
      For x = 1 To lRow
        If wks.Cells(x, 1).Interior.Color = vbRed Then
          wks.Cells(x, 1).EntireRow.Copy wNew.Cells(lNewRow, 1)
          lNewRow = lNewRow + 1
        End If
      Next
    
    End Sub
    
  5. Sheet NameRGB Color Code&lNewRow值是可编辑的。

相关内容