- ベストアンサー
エクセル 複数行の入れ替え(マクロ初心者です)
初めまして。エクセルのデータ整理で困っています。 現在、下記のようなデータがあります。 A B C ・・ X 1) Bさん Cさん ・・Xさん 2)手当1 b1 0 ・・ x1 3)手当2 b2 空白 ・・ x2 ・ ・ ・ ・・ ・ ・ ・ ・ ・・ ・ 10)手当9 b9 c9 ・・ x9 A列には手当の名前(通勤手当、住居手当など9つの種類があります) B列以降は1行目に人名、2行目以降は各人の手当額が記入されています。(上記例ではb1~b9となっています)最後の人をXとしてます。 このデータのうち、セルB2~セルX10を、縦一列に並び替えたいと思っています。(各人の手当額のみを縦に並べます。人名や手当の種類は並べ替えの対象になりません。) b1 b2 ・ ・ b9 0 空白 ・ ・ x9 また、人によっては手当額が0の人がおり、その場合は0もデータとして残るように、そして空白のセルもデータとして残るように設定したいです。 類似した質問でhttp://oshiete1.goo.ne.jp/kotaeru.php3?q=762328 を参考にマクロを組んでみましたが、以下の2つの問題がクリアできませんでした。 ●何故か行を先に入れ替えてしまう。 (マクロ処理後) (希望) b1 b1 c1 b2 d1 b3 ・ ・ ・ ・ x1 b9 b2 c1 c2 c2 ・ ・ ・ ・ ●空白のデータを無視してしまう(全データ数が違ってしまいます) この問題をクリアできるようなマクロをお教えいただけないでしょうか。お手数ですが、宜しくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こちらでいかがでしょうか。 Sub test() k = 1 For i = 2 To 9 For j = 2 To 26 Worksheets("sheet3").Cells(k, 1) = Cells(j, i) k = k + 1 Next j Next i End Sub お試し下さい。
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 マクロでなくても、数式を応用すれば出来るような気がしますが、そのワークシート関数のTransposeを、そのまま応用してマクロを作ってしまいました。 以下は、Worksheet(2) つまり、左から、2番目のシートに移し変えるようにしています。 ただし、B2~X10 が、変わるようでしたら、オプションをつけなくてはなりません。 Sub Sample() Dim i As Long Set rng = Range("A1").CurrentRegion.Offset(1, 1).Resize(9, 23) For i = 1 To 9 'A1~ Worksheets(2).Cells(1 + (i - 1) * 23, 1).Resize(23).Value = _ Application.Transpose(rng.Rows(i).Value) Next i End Sub
お礼
このような長々とした質問に、お二人もご回答いただいて恐縮です。 Wendy02様のマクロを元に、自分でマクロを組んでみましたが何故か行の合計を先に出してしまい、希望していた結果には至りませんでした。(私の理解不足が招いた結果だと思います…どうかお気を悪くなさらないでください) なので今回はNo1の回答者、kamejiro様のマクロを元に処理を進めました。ご協力、ありがとうございました。
お礼
素早いご回答、まことにありがとうございます。 お礼が遅くなり、申し訳ありませんでした。 上記のご提示いただいたマクロを元にマクロを組んだ結果、希望どおりのセルの入れ替えを行うことができました。 シンプルながら初心者にもわかり易いもので非情に助かりました。