【问题标题】:compare multiple cells in vba and return result for each comparision比较vba中的多个单元格并为每个比较返回结果
【发布时间】:2017-09-22 15:00:51
【问题描述】:

我在 sheet1 中输入了 4 个单元格(A2 到 A5)的值,现在代码应该采用这样的方式,即 VBA 从 sheet1 中的 4 个单元格中获取值,并将它们与(A1 到 D1)中的单元格进行比较sheet2 并应在 sheet2 中的 4 个单元格(E2 到 E5)中的每个单元格中返回结果,说明匹配或不匹配。

我已经尝试了很长时间,但能够使用 IF 和 THEN 全部四次。任何使用循环或可以将代码从 30 多行更改为几行的东西。

【问题讨论】:

  • A2 到 A6 代表 5 个单元格...
  • 更新了问题。谢谢
  • 您必须向我们展示您为解决问题而编写的任何代码...
  • @vamsikrishna - 你希望如何比较? Sheet1!A2=Sheet2!A1Sheet1!A3=Sheet2!B1Sheet1!A4=Sheet2!C1Sheet1!A5=Sheet2!D1
  • @Pspl 这是我尝试过的代码,下面的代码适用于 2 个工作表,但仅适用于 1 个单元格,如果我需要 4 个单元格,那么我的想法是重复 IF 条件 4 次,我相信不是一个好的编码实践 Dim value1, value2 As String If ParameterSheet.Range("B43").Value = OrigFile.Worksheets(1).Range("A1").Value Then OutputFile.Worksheets("Summary")。 Range("D33").Value = "match" Else OutputFile.Worksheets("Summary").Range("D33").Value = "does not match" End If

标签: excel compare vba


【解决方案1】:

试试

Sub Demo()
    Dim srcSht As Worksheet, destSht As Worksheet
    Dim cel As Range, destCell As Range
    Dim colIndex As Long

    Set srcSht = ThisWorkbook.Sheets("Sheet1")  'source sheet
    Set destSht = ThisWorkbook.Sheets("Sheet2") 'destination sheet
    Set destCell = destSht.Range("D33")
    colIndex = 1

    For Each cel In srcSht.Range("A2:A5")   'loop through each cell in range srcSht.Range("A2:A5")
        If cel.Value = destSht.Cells(1, colIndex) Then  'check for match
            destCell.Offset(colIndex - 1, 0).Value = "Match"         'display result
        Else
            destCell.Offset(colIndex - 1, 0).Value = "No Match"      'display result
        End If
        colIndex = colIndex + 1
    Next cel
End Sub

【讨论】:

  • 非常感谢,这行得通,但是如果我想在工作表 2 中显示结果怎么办?
  • @vamsikrishna - Sheet2 的确切位置?
  • 工作表 2 中的 D33 到 D36
  • 非常感谢,这就像一个魅力。我从 2 天以来一直在寻找这个。现在我将尝试将其添加到我的项目中。再次感谢。
  • 您好,我这里还有一个问题。实际上对我来说srcSht , destSht 和其他需要比较数据的工作簿是 3 个不同的工作簿。我能够连接所有三个工作簿,但 destSht 中的结果仅匹配单元格中的数据不匹配。请帮助@Mrig
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 2014-11-28
  • 1970-01-01
  • 1970-01-01
  • 2020-08-28
相关资源
最近更新 更多