fork download
  1. Sub test()
  2.  
  3. Dim ws1 As Worksheet '読込元シート
  4. Dim ws2 As Worksheet '転記先シート
  5. Dim i As Long '表シートの開始行
  6. Dim x As Long '転記先シートの開始行
  7. Dim j As Long 'シート番号
  8. Dim EndRow As Long '最終行
  9. Dim ShiireNM As String 'シートの名前
  10.  
  11. On Error GoTo ErrProcess: 'エラーがあったら、ErrProcessに飛ぶ
  12.  
  13. '読込元シートを変数に代入(Excelのシートも変数にできます)
  14. Set ws1 = ThisWorkbook.Worksheets("表") 'ws1は、このExcelブックの「表」というシート
  15.  
  16. '最終行の取得
  17. EndRow = ws1.Cells(Rows.Count, 1).End(xlUp).Row '表シートの1列目を見て、一番下に値がある行数を取得
  18.  
  19. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  20. 'Forに対してNext、Doに対してLoop、Ifに対してEnd Ifが対になっているので、同じインデント(段落)に揃える。
  21. 'その中の処理は、インデントを一段下げて書く。
  22. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  23.  
  24. 'For = 変数がどこからどこまで処理を続ける
  25. For j = 2 To ThisWorkbook.Worksheets.Count '2シート目から最後のシートまで繰り返す(Worksheets.Count=一番後ろのシートの番号)
  26. 'シート名を変数に代入
  27. ShiireNM = ThisWorkbook.Worksheets(j).Name
  28. '転記先のシート名を変数に代入
  29. Set ws2 = ThisWorkbook.Worksheets(ShiireNM)
  30. '読込元シートのデータの開始行を変数に代入
  31. i = 3
  32. '転記先シートの転記開始行を変数に代入
  33. x = 2
  34. 'Do Until = 条件が一致するまで処理を回す
  35. Do Until i = EndRow + 1 '表シートの最後の行まで処理を繰り返す
  36. '表シートの3列目とShiireNMが一致したら、ShiireNMと同じ名称のシートに転記する、一致しなかったら無視
  37. If ws1.Cells(i, 3) = ShiireNM Then
  38. ThisWorkbook.Worksheets(ShiireNM).Cells(x, 2) = ws1.Cells(i, 1) '№を転記
  39. ThisWorkbook.Worksheets(ShiireNM).Cells(x, 3) = ws1.Cells(i, 2) '名前を転記
  40. ThisWorkbook.Worksheets(ShiireNM).Cells(x, 4) = ws1.Cells(i, 3) '性別を転記
  41. x = x + 1 'Xの行に転記したので、転記先の行数を1行進める
  42. End If
  43. i = i + 1 'iの行の処理がおわったので、表シートの行数を1行進める
  44. Loop
  45. Next j
  46.  
  47. '最後まで転記が終われば、メッセージを出す
  48. MsgBox "転記が完了しました。"
  49.  
  50. ExitProcess:
  51. Exit Sub '処理を終わらす
  52.  
  53. ErrProcess:
  54. 'メッセージを出す
  55. MsgBox "エラー番号:" & Err.Number & vbCrLf & _
  56. "エラーの種類:" & Err.Description, vbExclamation
  57. Resume ExitProcess 'ExitProcessに飛ぶ
  58.  
  59. End Sub
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty