0

私は VBA を初めて使用するので、必要な作業を完了するためにサポートが必要です。私は2つのワークシートを持っています。1 つのワークシートには、ユーザー入力に応じて変化する整数が含まれます (列 B シート 1)。別のワークシートには、256 回ごとに 1 から 255 までの定数整数が含まれます。(列 B シート 2-256 1's、256-2's.. ..) (つまり、全部で 65280 セル)。両方のシートの両方の B 列を比較し、結果を列 D シート 2 に書き込む必要があります。両方のシートの両方の列の値が一致する場合、結果列は列 B シート 2 と等しくなるはずです。そうでない場合、結果列には 0 が必要です。これを行うにはどうすればよいですか?

入力が大きいと、聞いたセルの比較に時間がかかります。これを行う別の方法はありますか?

4

2 に答える 2

0

そのためにVBAを使用する必要はありません。

次の関数を作成できます。VLOOKUP

table 配列の最初の列の値を検索し、table 配列の別の列から同じ行の値を返します。

例:

=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 を最初の行に、End Index を LastRow に設定します。お役に立てば幸いです、マイク

于 2012-08-02T12:57:57.310 に答える