- ベストアンサー
マクロで困っています。3列を1列に合体したいです
マクロ初心者なのですが、どなたか助けていただけませんでしょうか? 社名-番号1-番号2-番号3 T社 1 2 3 T社 1 2 3 T社 1 2 3 N社 1 2 3 N社 1 2 3 N社 1 2 3 O社 1 2 3 O社 1 2 3 O社 1 2 3 上記表があったとして、私がマクロでしたい完成表は下記です。 社名-番号1 T社 1 T社 2 T社 3 N社 1 N社 2 N社 3 O社 1 O社 2 O社 3 最終行は不定期です。 1社につき3行あったとして、番号2列と番号3列を番号1列に合体させたいのです。 どなたかお力をお貸し頂けませんでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一例です。 並び替えシートをSheet2にしています。 データシートのシートタブ上で右クリック→コードの表示→サンプルコード貼り付け→シート上でAlt+F8キー押下、sample実行 Sub sample() Dim i As Long, j As Long, db, wk Set db = CreateObject("Scripting.Dictionary") For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row For j = 2 To Cells(i, Columns.Count).End(xlToLeft).Column wk = Cells(i, "A") & "," & Cells(i, j) db(wk) = 1 Next Next With Sheets("sheet2") .Cells.ClearContents Cells(1, "A").Resize(, 2).Copy .Cells(1, 1) wk = db.keys For i = 0 To UBound(wk) .Cells(i + 2, "A").Resize(, 2) = Split(wk(i), ",") Next End With Set db = Nothing End Sub
その他の回答 (1)
- okormazd
- ベストアンサー率50% (1224/2412)
どうしてもマクロを使いたいなら仕方がないが、使わなくても関数で簡単にできるし、関数なら、リアルタイムで変わる。 社名-番号1-番号2-番号3 が、A、B、C、D列の1行目で、2行目からデータがあるとすれば、 B2に、 =COUNTIF($A$2:A2,A2) として、最終行までフィルドラッグすればいい。すでに入っている1、2、3などのデータは関係ない。
お礼
関数のご指導ありがとうございます!! 今回は業務内容がマクロという無茶ぶりだったので、 使う機会がありませんでした。 次回使うことがあれば参考にさせて頂きます!! 貴重なお時間頂いて解説ありがとうございます。
お礼
空白行や同じ電話番号の列は削除されたようです? マクロを作るにも未熟なのでこのマクロを基に ちょっと自分で研究してみます!! 貴重なお時間頂きありがとうございました!!