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. ws2.Rows("2:" & Rows.Count).ClearContents
  31. '読込元シートのデータの開始行を変数に代入
  32. i = 3
  33. '転記先シートの転記開始行を変数に代入
  34. x = 2
  35. 'Do Until = 条件が一致するまで処理を回す
  36. Do Until i = EndRow + 1 '表シートの最後の行まで処理を繰り返す
  37. '表シートの3列目とShiireNMが一致したら、ShiireNMと同じ名称のシートに転記する、一致しなかったら無視
  38. If ws1.Cells(i, 3) = ShiireNM Then
  39. ThisWorkbook.Worksheets(ShiireNM).Cells(x, 2) = ws1.Cells(i, 1) '№を転記
  40. ThisWorkbook.Worksheets(ShiireNM).Cells(x, 3) = ws1.Cells(i, 2) '名前を転記
  41. ThisWorkbook.Worksheets(ShiireNM).Cells(x, 4) = ws1.Cells(i, 3) '性別を転記
  42. x = x + 1 'Xの行に転記したので、転記先の行数を1行進める
  43. End If
  44. i = i + 1 'iの行の処理がおわったので、表シートの行数を1行進める
  45. Loop
  46. Next j
  47.  
  48. '最後まで転記が終われば、メッセージを出す
  49. MsgBox "転記が完了しました。"
  50.  
  51. ExitProcess:
  52. Exit Sub '処理を終わらす
  53.  
  54. ErrProcess:
  55. 'メッセージを出す
  56. MsgBox "エラー番号:" & Err.Number & vbCrLf & _
  57. "エラーの種類:" & Err.Description, vbExclamation
  58. Resume ExitProcess 'ExitProcessに飛ぶ
  59.  
  60. End Sub
  61.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty