LoginSignup
Yukimiooo
@Yukimiooo (Yukimi Ooo)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

VBAで、行列を変換した表を、別シートに作成する方法

解決したいこと

表Aのような形式のデータを、表Bのような形式にまとめたいと考えています。
①そのためにはマクロVBAでどのようなコードを書くといいのか、
②この操作に適した手段はVBA以外にあるのか、
の2点を知りたいです。

ご存じの方がいらっしゃれば、お知恵を貸していただきたいです。

宜しくお願いします。

自分で試していること・困りごと

私は現在、VBAを用いて、以下のようなコードを書いています。
しかし、別シート上で、特定のIDの名前のみ1列にまとめ、ほかのデータは消去するという流れにしているため、別シートに出力されるのは1種類のIDの名前のみになってしまいます。
上に挙げた表Bのように、一度の作業で、別シートに、同じIDごとに名前を横並びに表示させる表を出現させたいのですが、その方法が思いつきません。

(表A)
元データ.png

(表B)
理想形.png

(現状0)
現状0.png

(現状1)
現状1.png

(現状2)
現状2.png

(現状3)
現状3.png

0

1Answer

これはVBよりもPower Queryに向いていますね。Power Queryでよければ以下のような方法があります。英語環境を使っているので、適当に読み替えてください。
まず元のデータを選択して、メニューから[Insert]->[Table]を選んでテーブル化します。
image.png
そうすると新しいテーブルにはTable1という名前がつくはずなので、それを前提に話を進めます。
次に[Data]->[New Query]->[Blank Query]を選ぶとクエリーエディタが開きます。
image.png
[Advanced Editor]で以下のように入力してください。

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    Summary = Table.Group(Source, {"ID"}, {{"Column", each Text.Combine([名前], ","), type text}})
in
    Summary

image.png
最後に[Close & Load]を押して終わりです。ちなみに上記のqueryは手打ちで動作確認しておりませんので、もしエラーになったら画像の方を参考にしてください。Power QueryはVBAと違って大文字小文字を区別しますのでご注意ください。

2

Comments

  1. @Yukimiooo

    Questioner
    VBA以外の方法を教えていただき、ありがとうございます!
    Power Queryの存在を初めて知りました。
    いろいろ勉強してみます。ありがとうございます!

Your answer might help someone💌