① VBAはいらなかった話

 例えば、まぁ…

Excel形式でこんな結果を表示させたとしましょう。これが元データです。




実際には、何かしらのログでした。

データは5万行くらいありました。

特徴的なのはA列にだけ情報があることです。




SEさん

「このログのさ。会員番号と氏名と小計だけしか要らないのよ。横一列に並べた表にしてくれる?」


SEさんの理想はこちら。


※会員番号や氏名はcopilotによる作成で架空のデータです。





元データを、SEさんが理想とする表形式にするにはそこそこにハードルがあります。



会員番号と氏名は別途リストがあるとして…


※会員リストはcopilotによる作成で架空のデータです。



会員リストがあるのなら、VLOOKUPで元データの会員番号の横に並べられるじゃない?

…って思うけども、、、



例えば、元データの、会員一人分の情報がこちら。


が、こうなってほしい


と、いうだけなのですが、

まずVLOOKUPがあたらないのにお気づきですか。

元データのA列の『会員番号: 』というのがVLOOKUPがあたらない原因です。





さらに、

小計を横に持ってきたい。。。みなさんならどうします?




(会員番号はおろか、小計なんてもうVLOOKUPなんて当たりようがないよ…どうしよぅ)

って、その時の私は思いました。

数件~数十件程度なら、自分の目で見て、お手てでコピペっ、コピペっ…て地道にやってもいいのでしょうが、元データはン万件あるのです。




SEさん

「このログね。毎朝数万件吐き出してくるからさぁ。

そのたびに横一列の表にしてほしいの。

購入履歴は不要なんだけど、そこはどうしても一緒に排出されちゃうの。

これ、どうしたらいいと思う?

私たちSEより、普段から事務でExcel使うあなたのほうがExcelの細かいとこよく知っていると思うし、VBAで出来ないかな。

VBA考えてみて



左のような元データから、右のような表に変えるVBA



会員番号については元データか会員リストかのどちらかを、ちょっといじればVLOOKUPがあたりそうですが、

小計をどうしましょうかねぇ。




『必ず会員番号の3行下に小計がある。』とか規則が決まっていれば、VBAもいけそうですが、

残念ながら購入点数は会員によってさまざまなので、何行下に小計がくるかどうかはまちまちです。


”Findで探しては会員番号番号の横に並ぶようコピペする命令書いて、またFindで探しては…"

えーっ無理無理無理ぃ アタシがそんなの書きたくないし使いたくないわ。




で、その日はどっぷり考えこんじゃったんです。

VBA書くならどうやって…?

って。



続きます