• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExcelのVBAでデータをツリー構造にしたい)

ExcelのVBAでデータをツリー構造にしたい

このQ&Aのポイント
  • Excelのあるシート「シート1」に親子関係が記されたデータがあります。親には親の名前が、子にはカンマ区切りで所属する子の名前が記されています。ツリー構造で親子関係を表現したいです。
  • シート1の記述順は順不同ですが、一番上の行は必ず、一番上の親が来ます。一番上の行の親以外は、必ず親を持ちます。循環関数を作って考えるのが難しいです。
  • シート2のようなツリー構造を作成するには、ExcelのVBAを使用します。セルの行と列を変更することで、ツリーの親子構造を表現できます。

質問者が選んだベストアンサー

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

#3です。 私がやるとした場合の方法。 ・”A1”しか親がないのですから、”親があって子のない”データは無視する。 ・親をキーに、子を項目としてDictionaryオブジェクトに放り込む。 ⇒データ書き出しをH列~とする。 ・まず最初”A1”をセルH1に代入する。 ・キー”A1”の項目をセルI2以下に書き出す。 ・次にI列を上から取得し、その値のキーがDictionaryにあるかチェックし、  値があればその項目をJ列に書き出す。  (この場合I列は上詰めされているので、項目分の行を挿入する。) ・以下J列に対して同じ作業でK列・・・と行挿入~書き出しを行なう。 と言った感じになるのかなと思いましたが、コーティングはしてません。 あくまで私見で可能かどうかはわかりません。

その他の回答 (3)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

#1&2です。 一番ネックと感じるのは、 >D2 >D3 D2 ここでしょうか。 データを順に見ていくとD2は始め”親”と判断されるでしょう。 ところが次ではD3の”子”となります。 このように”親”であったはずのデータが、後から”子”であったとなった場合に、 それまでのデータ配置を入替えるためのコーティングって、結構複雑な感じがしてます。 なので”作っている”段階であれば、その事に興味がありましたのでコードの提示を求めたわけです。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

#1です。 >循環関数を作って考えるのが、 この事が重要だと認識しての回答です。 すなわち、どのような判断をしてどのようにコーティングをしてみたが、 結果どんな感じに出来たのか、或いは出来なかったのか。 その事をやり取りする場であると思います。 そうでなければ「作成依頼」になりますので。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

>そんなに難しくないかとは思うんですが、循環関数を作って考えるのが、今の眠い頭でできなくて…。 目が覚めたらまずそれを提示してみて下さい。

mozomozo123
質問者

お礼

そんな回答不要です。 履歴として、他の方にも参考になるんですよ?