例えば、まぁ…
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書くならどうやって…?
って。
…続きます。