- ベストアンサー
ExcelのVBAでデータをツリー構造にしたい
- Excelのあるシート「シート1」に親子関係が記されたデータがあります。親には親の名前が、子にはカンマ区切りで所属する子の名前が記されています。ツリー構造で親子関係を表現したいです。
- シート1の記述順は順不同ですが、一番上の行は必ず、一番上の親が来ます。一番上の行の親以外は、必ず親を持ちます。循環関数を作って考えるのが難しいです。
- シート2のようなツリー構造を作成するには、ExcelのVBAを使用します。セルの行と列を変更することで、ツリーの親子構造を表現できます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3です。 私がやるとした場合の方法。 ・”A1”しか親がないのですから、”親があって子のない”データは無視する。 ・親をキーに、子を項目としてDictionaryオブジェクトに放り込む。 ⇒データ書き出しをH列~とする。 ・まず最初”A1”をセルH1に代入する。 ・キー”A1”の項目をセルI2以下に書き出す。 ・次にI列を上から取得し、その値のキーがDictionaryにあるかチェックし、 値があればその項目をJ列に書き出す。 (この場合I列は上詰めされているので、項目分の行を挿入する。) ・以下J列に対して同じ作業でK列・・・と行挿入~書き出しを行なう。 と言った感じになるのかなと思いましたが、コーティングはしてません。 あくまで私見で可能かどうかはわかりません。
その他の回答 (3)
- n-jun
- ベストアンサー率33% (959/2873)
#1&2です。 一番ネックと感じるのは、 >D2 >D3 D2 ここでしょうか。 データを順に見ていくとD2は始め”親”と判断されるでしょう。 ところが次ではD3の”子”となります。 このように”親”であったはずのデータが、後から”子”であったとなった場合に、 それまでのデータ配置を入替えるためのコーティングって、結構複雑な感じがしてます。 なので”作っている”段階であれば、その事に興味がありましたのでコードの提示を求めたわけです。
- n-jun
- ベストアンサー率33% (959/2873)
#1です。 >循環関数を作って考えるのが、 この事が重要だと認識しての回答です。 すなわち、どのような判断をしてどのようにコーティングをしてみたが、 結果どんな感じに出来たのか、或いは出来なかったのか。 その事をやり取りする場であると思います。 そうでなければ「作成依頼」になりますので。
- n-jun
- ベストアンサー率33% (959/2873)
>そんなに難しくないかとは思うんですが、循環関数を作って考えるのが、今の眠い頭でできなくて…。 目が覚めたらまずそれを提示してみて下さい。
お礼
そんな回答不要です。 履歴として、他の方にも参考になるんですよ?