ある表を決められたルールで並べ替え ① 条件の確認

先日職場で、こんな質問を受けた。

「表を、マクロのボタン一つで並び替えたいんですけど、できますか?」

私は安易に、「できますよ」と答えた。答えてしまった。
f:id:Infoment:20200216215929j:plain

思い出しながら、それっぽく表を再現してみるとこうなる。
f:id:Infoment:20200216220038p:plain
この表をシステムから取得するたび、毎回手作業で並び替えているとのこと。

条件1

コードの先頭には、何やらアルファベットが付されている。しかも一文字とは限らないらしい。
f:id:Infoment:20200216220405p:plain

条件2

その後ろには半角スペースが幾つかあって、しかも「二つ以上」というルール。
f:id:Infoment:20200216220250p:plain

条件3

アルファベット3文字と品名が、「.」で繋がっている。
f:id:Infoment:20200216220516p:plain
この関係は固定で、例えば、

  1. AAA.りんご
  2. BBB.りんご
  3. AA. りんご

のように、アルファベットが混在したり、文字数が変わることはないとのこと。

これらを踏まえたうえで、以下のように並び替える。
f:id:Infoment:20200216220743p:plain

条件4

並び替えは、アルファベット3文字をキーに行う。
f:id:Infoment:20200216220910p:plain
しかも、A ⇒ B ⇒ C のようにアルファベット順ではなく、毎回決められた同じ順番で並び替えるとのこと。

条件5

ある決められた行の下に、空白行を幾つか挿入したい。しかも、行数は場所によって異なる。
f:id:Infoment:20200216221124p:plain

かなり複雑だが、毎回同じなら
「別シートから、並び替え後の順序で参照しては?」
とも思う。しかし出来ると言った手前、どうやったら出来るか考えてみた。

ということで、数回に分け並び替えてみる。

明日に続きます。

参考まで。