- 締切済み
Excelのマクロの組み方を教えてください
3行と2列のデーターの塊があり、これを 1行のデータに並べ替えるにはどうしたらいいでしょうか? ただし 行方向(縦に) 30件、列方向(横に) 20件ほど入っていて、複雑です。 空白の行や列はないものと考えていただいて結構です。 詳細説明 A1からCB1はタイトルなどが入っていて、無視して、 データーの配列が以下の場合 A2 B2 C2 D2 E2 F2 →CB2まで A3 B3 C3 D3 E3 F3 →CB3まで A4 B4 C4 D4 E4 F4 →CB4まで A5 B5 C5 D5 E5 F5→CB5まで A6 B6 C6 D6 E6 F6→CB6まで A7 B7 C7 D7 E7 F7→CB7まで ↓ ↓ ↓ ↓↓ ↓ A120まで CB120まで を A2 A3 A4 B2 B3 B4 C2 C3 C4 D2 D3 D4 ↓ CA2 CA3 CA4 CB2 CB3 CB4 次に A5 A6 A7 B5 B6 B7 C5 C6 C7 D5 D6 D7 ↓ A118 A119 A120 B118 A119 A120 などと並べかえはどのようにマクロを組めばよいですか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- dr-9
- ベストアンサー率47% (24/51)
No.2の中の ' は、もちろんコメントです。 標準モジュールに書いて動作を確認しています。 必要に応じてクラスモジュールに記載しても恐らくうまくいくと思います。 やっている事は特別難しいところはなく、セルの値を配列に読み込み、ループ処理で別シートに書き出しているだけなので。
- dr-9
- ベストアンサー率47% (24/51)
恐らくデータの規則から、対象のデータの最後はCB121だと思います。 以下のようなループ処理で出来ると思います。 (標準モジュールで実験してうまくいっているようです) Option Explicit Sub test1() Dim v_dm As Variant '配列読み込み用 Dim v_wk As Variant '値読み込み用 Dim i_wr As Integer '書き込みの行位置用 Dim i_wc As Integer '書き込みの列位置用 Dim i_l1 As Integer '行の処理用 Dim i_l2 As Integer '列の処理用 Dim i_l3 As Integer '明細列処理用 Dim i_l4 As Integer '明細行処理用 v_dm = ActiveSheet.Range("A2:CB121") '配列に読み込み Worksheets("Sheet2").Activate '書き込み側シートをアクティブに 'メイン処理 i_wr = 1 For i_l1 = 1 To 120 Step 3 For i_l2 = 1 To 80 Step 2 i_wc = 1 For i_l3 = 0 To 1 For i_l4 = 0 To 2 v_wk = v_dm(i_l1 + i_l4, i_l2 + i_l3) If Len(v_wk) > 0 Then 'セルが空白で無い場合 Cells(i_wr, i_wc) = v_wk i_wc = i_wc + 1 End If Next Next If i_wc > 1 Then '全部空白で無い場合 i_wr = i_wr + 1 End If Next Next Debug.Print "---THE END---" End Sub
- dr-9
- ベストアンサー率47% (24/51)
>A120まで CB120まで >を >A2 A3 A4 B2 B3 B4 >C2 C3 C4 D2 D3 D4 > ↓ >CA2 CA3 CA4 CB2 CB3 CB4 どういう変換・並べ替えなのか詳しく説明して下さい。 セル位置なのか、値なのかがはっきりしていないのと、値はセル単位で代入なのかも明記されていると回答しやすくなります。 (1セルに空白区切りでまとめるわけではないですよね?)
お礼
おいそがしいなか、ありがとうございます。 ’のあとは こめんとですよね? マクロについて まったく使ったことがないので、稚拙な質問ばかりですみません。 データーに登録して試してみます。 ありがとうございました。
補足
エクスプローラーがなかなか反応してくれなくて、追加説明が遅くなりました。 A2からCB120は セルの番号です これらに氏名、住所、などのデーターがありまして A2、A3、A4、B2、B3、B4が一つの塊になるので、並べ替えしたいです 次のかたまりが C2,3,4、D2,3,4とつづいて、CA2 CA3 CA4 CB2 CB3 CB4となります しかし、縦方向に考えた場合は A2、A3、A4、B2、B3、B4からはじまって、A5 A6 A7 B5 B6 B7とつづき、最後は A118 A119 A120 B118 A119 A120となります データーはそれぞれのセルに単独で入っています できれば 空白のセルは無視したいです 宜しくおねがいします。