VBAを初めて使用しました。 私は2つのワークシートを持っています。その顧客の住所に基づいて、すべての顧客に営業担当者を割り当てる必要があります。 Sheet1では、Zip(K)、City(I)、Country(L)という3つのデータ列を使用します。 Sheet2には、B列とC列(下位と上位の値)、都市(D)と国(E)の郵便番号の範囲があります。すべての行には、割り当てられた販売担当者の名前があります。VBA - 複数の条件に基づいて別のシートのセルをコピーします。
コードの要件: お客様の国が最初の販売先国に一致するかどうかを確認します。 はいの場合、顧客の郵便番号が範囲内にあるかどうかを確認します。 Sheet1に一致する販売担当者名があり、次の行に移動する場合。 Zip範囲が基準としてSheet2に指定されていないか、または顧客のZIPに一致がない場合、Sheet1に一致するコピー販売担当者名があり、次の行に移動する場合は、Cityが一致するかどうかを確認します。 City2に基準として都市が指定されていない場合、または顧客の都市に一致する都市がない場合は、国が一致しているかどうかを確認し、販売員名をSheet1にコピーします。
これがこれまで持っている場合です:
`Sub Territory()
Dim i As Integer
Dim sh1 As Worksheet, sh2 As Worksheet
Dim sh1Rws As Long, sh1Rng As Range, s1 As Range
Dim sh2lowRws As Long, sh2lowRng As Range, s2l As Range
Dim sh2highRws As Long, sh2highRng As Range, s2h As Range
Set sh1 = Sheets("Sheet1")
Set sh2 = Sheets("Sheet2")
Set i = 1
With sh1
sh1Rws = .Cells(Rows.Count, "K").End(xlUp).Row
Set sh1Rng = .Range(.Cells(1, "K"), .Cells(sh1Rws, "K"))
End With
With sh2l
sh2lowRws = .Cells(Rows.Count, "B").End(xlUp).Row
Set sh2lowRng = .Range(.Cells(1, "B"), .Cells(sh2lowRws, "B"))
End With
With sh2h
sh2highRws = .Cells(Rows.Count, "C").End(xlUp).Row
Set sh2highRng = .Range(.Cells(1, "C"), .Cells(sh2highRws, "C"))
End With
For Each s1 In sh1Rng
For Each s2l In sh2lowRng
If s1 > s2l And s1 < s2h Then sh2lowRws.Copy Destination:=Sheet.sh1.Range("u", i)
End If
Set i = i + 1
End Sub`
が必要なら、私に知らせて「End If」は必要ありません - それは私が見ることのできる最も明白なエラーです...それ以外に、コードの何が間違っているのか、どこでエラーが発生したのかを実際には言わなかったので、助けが不可能です –
整数などの基本変数を代入するときに 'Set'を使わないでください(' set i = ... ')。 'Set'キーワードは、オブジェクト参照を割り当てるときにのみ使用されます。 –
'設定しSH1 =シート( "シート1")=シート( "シート2") セットSH2 SH1 sh1Rws = .Cells(Rows.Count、 "I")。エンド(xlUp)で.Row sh2l sh2Rws = .Cellsで (Rows.Count、 "D")で終わるsh1Rng = .Range(.Cells(1、 "I")を、.Cells(sh1Rws、 "I"))を設定し 。端(xlUp).Row セットsh2Rng = .Range(.Cells(1、 "D")、.Cells(sh2Rws、 "D"))sh1Rng内の各S1について で終了10 for each s2 in sh2Rng s1 = s2 then MsgBox "Test" 次s2 次s1 End Sub' –