はじめまして。よろしくお願いします。
使用環境はEXCEL2013です。
添付画像のような【元シート】(シート名:元シート)のデータを
【転記シート】(シート名:転記シート;事前に用意)に転記したい
と考えてます。良い方法をご教示いただけないでしょうか?
よろしくお願いします。
・元データは7000行くらい
・元データA列のキーが変わるごとに対応するブロック毎を別シートに転記。
・A列の同一キーの行数は可変(1~50行)
・転記は4つのキー(4ブロック)ごとに下側に転記場所を変える
・E,J,O列は空列
・画像例では5行目は空行(上段のデータ数によって空行を入れる位置がかわります)
ややこしくて申し訳ありませんが、不明な点がありましたら補足いたしますので、
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんにちは!
VBAになりますが一例です。
「元シート」には項目行がなくて、1行目からデータがあり、
列方向に関してはA~E列までのデータだとします。
尚、Sheet3を作業用のシートとして使用していますので、Sheet3は使っていない状態にしておいてください。
標準モジュールです。
Sub Sample1()
Dim i As Long, cnt As Long, lastRow As Long
Dim myRow As Long, wS2 As Worksheet, wS3 As Worksheet
Set wS2 = Worksheets("転記シート")
Set wS3 = Worksheets("Sheet3")
Application.ScreenUpdating = False
wS2.Cells.Clear
With Worksheets("元シート")
.Rows(1).Insert
.Range("A1") = "ダミー"
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
.Range("A:A").AdvancedFilter Action:=xlFilterCopy, copytorange:=wS3.Range("A1"), unique:=True
myRow = 1
For i = 2 To wS3.Cells(Rows.Count, "A").End(xlUp).Row
.Range("A1").AutoFilter field:=1, Criteria1:=wS3.Cells(i, "A")
cnt = cnt + 1
If cnt > 4 Then
cnt = 1
myRow = wS2.UsedRange.Rows.Count + 2
End If
Range(.Cells(2, "B"), .Cells(lastRow, "E")).SpecialCells(xlCellTypeVisible).Copy _
wS2.Cells(myRow, (cnt - 1) * 5 + 1)
Next i
.Rows(1).Delete
wS3.Cells.Clear
wS2.Columns.AutoFit
wS2.Activate
End With
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
こんな感じではどうでしょうか?m(_ _)m
こんにちは。
早速のお返事、誠にありがとうございます。
完璧です!感動しました。
何時間もかけてやっていた手作業が一瞬で終わりました。
まだ、VBAのコードの意味は理解できていないのですが、
いろいろなことに応用できそうなので、勉強しつつ解読してみたいと
思います。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 2つの条件に合うセルにデータを転記したい 4 2022/12/02 11:05
- Excel(エクセル) Excelで、別シートの表のステータスに伴った動的な自動転記をしたいです。 2 2023/06/14 15:56
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Visual Basic(VBA) VBAで、シート間の転記するコードをFOR~NEXTで教えてください。 9 2023/04/30 20:04
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Excel(エクセル) VBAで、シート間の転記するコードを教えてください。 4 2023/03/26 10:43
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Excel(エクセル) excelにおける転記マクロの書き方 2 2023/05/12 03:16
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
- Excel(エクセル) エクセルシートのデータを1列飛ばしで別ブックのシートに貼り付けるマクロが知りたい 2 2023/06/05 22:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字の色も参照 VLOOKUP
-
Excel VBA ピボットテーブルに...
-
VBAで繰り返しコピーしながら下...
-
エクセルのブック分割マクロを...
-
ExcelのVlookup関数の制限について
-
エクセルの列の限界は255列以上...
-
エクセルの保護で、列の表示や...
-
エクセルで、book全体の検索&...
-
エクセルの複数シートにあるデ...
-
エクセルで、チェックボックス...
-
エクセルの表を自動的に、項目...
-
Excelでの並べ替えを全シートま...
-
VBAで項目ごとにシートを分けた...
-
エクセル マクロ 標準モジュー...
-
Excelで条件別にシートを振り分...
-
Excel の複数シートの列幅を同...
-
別シートから月(MONTH)で抽出す...
-
VBA 複数シートをひとつにまと...
-
エクセルの特定の複数の行を非...
-
SUMPRODUCTにて別シートのデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelのVlookup関数の制限について
-
文字の色も参照 VLOOKUP
-
オートフィルタ使用時にCOUNTIF...
-
エクセルの保護で、列の表示や...
-
VBAで繰り返しコピーしながら下...
-
エクセル関数に詳しい方、教え...
-
【条件付き書式】countifsで複...
-
Excel の複数シートの列幅を同...
-
エクセル マクロ 標準モジュー...
-
エクセルで横並びの複数データ...
-
エクセルの列の限界は255列以上...
-
Excelでの並べ替えを全シートま...
-
VLOOKアップ関数の結果の...
-
SUMPRODUCTにて別シートのデー...
-
エクセルで、チェックボックス...
-
Excel VBA ピボットテーブルに...
-
【エクセル】1列のデータを交...
-
エクセルVBAで、ある文字を含ん...
-
エクセルのブック分割マクロを...
-
excel 複数のシートの同じ場所...
おすすめ情報