0

我是 VBA 新手,我需要一些帮助来完成我的需求。我有 2 个工作表。一个工作表将具有根据用户输入而变化的整数。(B 列工作表 1)。另一个工作表将具有从 1 到 255 的常数整数,每次 256 次。(在 B-Sheet 2-256 列 1's,256-2's.. ..)(即总共65280个细胞)。我需要比较两个工作表中的两个 B 列并将结果写入 D-Sheet 2 列。如果两个工作表中的两个列值都匹配,则结果列应该等于 B 列 sheet2。如果没有,结果列应该有 0。我该怎么做?

听到的单元格比较将花费更多时间进行大输入。有没有其他方法可以做到这一点?

4

2 回答 2

0

您实际上不需要为此使用 VBA。

您可以使用以下命令创建函数:VLOOKUP

在表数组的第一列中搜索值,并从表数组的另一列返回同一行中的值。

示例:

=IF(ISERROR(VLOOKUP(Sheet1!A1;Sheet2!A1:A15;1;0))=TRUE;0;Sheet1!A1)

http://office.microsoft.com/en-us/excel-help/vlookup-HP005209335.aspx

于 2012-08-02T12:49:43.720 回答
0

为此,您可以遍历所有行并比较每行的单元格并写入结果。这是代码:

   Public FirstSheetName As String
Public SecondSheetName As String
Public ResultSheetName As String
Public FirstSheetCol As String
Public SecondSheetCol As String
Public ResultSheetCol As String
Public StartIndex As Long
Public EndIndex As Long
Public Sub CompareTwoCols()
Dim i As Long
Dim ii As Long
FirstSheetName = "Sheet1"
FirstSheetCol = "B"
SecondSheetName = "Sheet2"
SecondSheetCol = "B"
ResultSheetName = "Sheet2"
ResultSheetCol = "D"
StartIndex = 1
EndIndex = 65280
'Initialized result with 0's
For i = StartIndex To EndIndex
If Sheets(SecondSheetName).Range(SecondSheetCol & i).Text <> "" Then
    Sheets(ResultSheetName).Range(ResultSheetCol & i).Formula = 0
End If
Next i
'Loop throuh all first sheet items skip if blank
For ii = StartIndex To EndIndex
If Sheets(FirstSheetName).Range(FirstSheetCol & ii).Text <> "" Then
'Loop through all second sheet items
    For i = StartIndex To EndIndex
    'skip if blank or has a value in it
    If Sheets(SecondSheetName).Range(SecondSheetCol & i).Text <> "" _
    And Sheets(ResultSheetName).Range(ResultSheetCol & i).Text = "0" Then
        If Sheets(FirstSheetName).Range(FirstSheetCol & ii).Value = Sheets(SecondSheetName).Range(SecondSheetCol & i) Then
            ' Match Found
            Sheets(ResultSheetName).Range(ResultSheetCol & i).Formula = ThisWorkbook.Sheets(SecondSheetName).Range(SecondSheetCol & i)
        End If
    End If
    Next i
End If
Next ii
End Sub

只需将 FirstSheetName、SecondSheetName 和 ResultSheetName 设置为适用的工作表。然后,设置 FirstSheetCol、SecondSheetCol 和 ResultSheetCol。最后将 StartIndex 设置为第一行,将结束索引设置为 LastRow。我希望它有帮助,迈克

于 2012-08-02T12:57:57.310 回答