fork download
  1. Option Explicit
  2.  
  3. Sub 業者情報設定()
  4. Dim sh1 As Worksheet '業者一覧シート
  5. Dim sh2 As Worksheet '配布用シート
  6. Dim dicT As Object 'ディクショナリ キー:業者名 値:業者一覧シートの行番号
  7. Dim maxrow1 As Long '業者一覧シートの最大行
  8. Dim maxrow2 As Long '配布用シートの最大行
  9. Dim row1 As Long '業者一覧シートの行番号
  10. Dim row2 As Long '配布用シートの行番号
  11. Dim name As String '業者名
  12. Set dicT = CreateObject("Scripting.Dictionary") 'ディクショナリ設定
  13. Set sh1 = Worksheets("業者一覧")
  14. Set sh2 = Worksheets("配布用")
  15. maxrow1 = sh1.Cells(sh1.Rows.Count, "A").End(xlUp).Row '業者一覧シート A列の最大行を取得
  16. '業者一覧シートの5行から最終行まで繰り返す
  17. For row1 = 5 To maxrow1
  18. name = sh1.Cells(row1, "A").Value '業者名取得
  19. If name <> "" Then
  20. dicT(name) = row1 'ディクショナリへ業者名と行番号を登録
  21. End If
  22. Next
  23. maxrow2 = sh2.Cells(sh2.Rows.Count, "A").End(xlUp).Row '配布用シート A列の最大行を取得
  24. '配布用シートの14行から最終行まで繰り返す
  25. For row2 = 14 To maxrow2
  26. name = sh2.Cells(row2, "B").Value '業者名取得
  27. If name <> "" Then
  28. '業者名がディクショナリに登録されているかチェックする
  29. If dicT.exists(name) = True Then
  30. '登録済みの場合の処理
  31. row1 = dicT(name) '業者一覧シートの該当行を取得する
  32. sh2.Cells(row2, "C").Value = sh1.Cells(row1, "B").Value '電話番号
  33. sh2.Cells(row2, "D").Value = sh1.Cells(row1, "C").Value '郵便番号
  34. sh2.Cells(row2, "E").Value = sh1.Cells(row1, "D").Value '住所
  35. Else
  36. '未登録の場合の処理
  37. sh2.Cells(row2, "C").Value = "業者一覧に未登録"
  38. sh2.Cells(row2, "D").Value = "業者一覧に未登録"
  39. sh2.Cells(row2, "E").Value = "業者一覧に未登録"
  40. End If
  41. End If
  42. Next
  43. MsgBox ("完了")
  44. End Sub
  45.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty