要做到這一點,你可以遍歷所有的行,並比較各行的單元格並將結果寫入。這裏是代碼:
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設置爲第一行,將End Index設置爲LastRow。 我希望它有幫助, 邁克
@Mike多謝邁克。這適用於sheet1和2的B列中的相同數量的整數。正如我所提到的,sheet1將具有來自用戶的可變輸入(範圍從1到255)。即它可能只包含2個值或甚至255個值。但是所有值都是不同的。如果sheet1在B列中有'2',那麼表2中的結果列D應該有256個2,它等於Sheet 2的B列。我怎樣才能修改代碼。希望我的要求對您有所幫助 – 2012-08-02 14:09:00
使用嵌套循環更新上述腳本。它應該適合你。 – 2012-08-06 18:40:03