0

シート A とシート B の 2 つの Excel シートがあります。シート AI には、従業員の名前を含む名前付き範囲があります。列 B は空白です。シート 2 には、従業員のリストと出席日数の名前付き範囲があります。両方のシートの従業員名は同じ順序ではありません。シート A の名前とシート B を比較する必要があり、一致する場合は、出席日をコピーしてシート A の列 B に名前に対して配置する必要があります。VBA のヘルプを探しています

どんな助けでも大歓迎です

これは私がこれまでに持っているものです

    Sub ADDCLM()
    On Error Resume Next
    Dim Dept_Row As Long
    Dim Dept_Clm As Long
`   Dim table1
    Dim table2
    Dim cl
    table1 = Sheet1.Range("A2:A13")
    table2 = Sheet2.Range("A2:A13")
    Dept_Row = Sheet1.Range("B2").Row
    Dept_Clm = Sheet1.Range("B2").Column
    For Each cl In table1
      Sheet1.Cells(Dept_Row, Dept_Clm) = Application.WorksheetFunction.VLookup(cl, table2, 2, False)
      Dept_Row = Dept_Row + 1
    Next cl
    MsgBox "Done"
    End Sub
4

1 に答える 1

0

これを試してみてください。バリアントの代わりに範囲オブジェクトを使用します。行/列カウンター変数は不要/冗長なので削除します。VLOOKUP 関数を使用して列 B から値を返すには、table2 を 2 列の範囲として定義する必要があります。また、On Error Resume Next開始するのは悪い習慣であり、エラー処理を使用するか、エラー条件をテストして再ルーティングすることをお勧めします。 .

Sub ADDCLM()

Dim table1 As Range
Dim table2 As Range
Dim cl As Range
Set table1 = Sheet1.Range("A2:A13")
Set table2 = Sheet2.Range("A2:B13")  '# Modified this to 2 columns
For Each cl In table1
    If Not IsError(Application.Match(cl,table2.columns(1),False) Then
        cl.Offset(0,1) = Application.WorksheetFunction.VLookup(cl, table2, 2, False)
    End If
Next 
MsgBox "Done"
End Sub
于 2013-08-24T15:01:08.393 に答える