先日twitterでデータ並び替えで質問を投げかけられているのを見かけたので、物は試しとやってみた。
前提条件
下記のように横1行に並んでいるデータを4つ毎に区切って下に順番に並び替えていく。
元ネタをつぶやかれた方は「For」を使ってと条件をつけていたかと思う。
マクロでの並び替え
実際に作ってみたのがこちら
Sub 並替() Dim i As Long For i = 0 To 15 Cells((i \ 4) + 3, i Mod 4 + 1).Value = Cells(1, i + 1).Value Next i End Sub
¥(円マーク バックスラッシュ)は割り算の答え(商)を返す演算子。
modは割り算の余りをを返す演算子。
For文を1~16ではなく、0~15で回しているのがポイント。
関数での並び替え
マクロを使用せずに並び替えるならこのような方法。
=OFFSET($A$1,,(ROW()-3)*4+COLUMN()-1)
並び替え後の全てのセルに同じ数式が入力されている。
まとめ
なんとなくはこうすれば上手くいくだろうなとはパッと思うのだが、実際にちゃんと動くにはトライ・アンド・エラーをしないと一発では作れない。
こういう頭の体操を繰り返すことで少しずつスキルが上がっていくんだろう。
※関数の方法は我ながらきれいにまとまったんじゃないかと思う。
データ整形のみで1冊を費やす狂気の本

何万件ものデータやピボットテーブルで苦しんでいる人のための Excel多量データ整形テクニック
- 作者: 村田吉徳
- 出版社/メーカー: 秀和システム
- 発売日: 2017/10/27
- メディア: 単行本
- この商品を含むブログを見る