Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9188 / 76732 ←次へ | 前へ→

【73109】どのように考え方を整理すれば良いでしょうか。
質問  うしろ  - 12/11/14(水) 21:50 -

引用なし
パスワード
   以下に示すような系統図があり、それぞれ路線(root*)は延長、面積を持っています。

rootA--rootB-+rootD-+rootH-+rootK(out)
       |   |   |
    rootC-+   |   |
rootE--rootF--rootG-+   |
              |
       rootI--rootJ-+
データは、以下のように整理しました。
路線名 接続先 延長 面積
rootA  rootB  120  10
rootB  rootD  50  20
rootD  rootH  110  50
rootH  rootK  30  30
rootC  rootD  60  20
rootE  rootF  100  40
rootF  rootG  90  70
rootG  rootH  70 100
rootI  rootJ  80  80
rootJ  rootK  20  60
rootK      10  70
<これまで行ったこと>
これらの路線名、接続先を読み込み接続先のループ内に路線名のループを回し
全データ比較してヒットしなかった場合、起点路線であることまでは検出できました。路線名(Rname),接続先(Oneme)、起点路線(Rst)とすると以下のコードで
起点路線まで見つけることができました。
for i= i to Ndat
  for j= i to Ndat
    if(Oname(i)=Rname(j))then
      exit for
    elseif(j=Ndat)then
      icnt=icnt+1
      Rstr(icnt)=Rname(i)
    endif
  next j
next i
<したいこと>
起点路線から延長、面積を合計し、延長は合流点で上流側の長い延長に自分の延長を加えるようにする。

<質問>
接続先のループを回して同じものを集計すれば面積は計算できそうですが、先に起点から合流点まの階層数を調べなければ合計ができそうもないので行き詰まってしまいました。
どなたか、よい考え方があればご教授願います。

<結果の例>
路線名 延長 面積
rootA  120  1
rootB  170  3

rootC   60  2
rootD  280 10

rootE  100  4
rootF  190 11
rootG  260 21
rootH  310 34

rootI   80  8
rootJ  100 14
rootK  320 55

0 hits

【73109】どのように考え方を整理すれば良いでしょうか。 うしろ 12/11/14(水) 21:50 質問
【73111】Re:どのように考え方を整理すれば良いでし... kanabun 12/11/15(木) 12:57 発言
【73118】Re:どのように考え方を整理すれば良いでし... うしろ 12/11/16(金) 21:05 お礼
【73114】Re:どのように考え方を整理すれば良いでし... kanabun 12/11/15(木) 21:10 発言
【73119】Re:どのように考え方を整理すれば良いでし... うしろ 12/11/16(金) 21:12 お礼
【73120】Re:どのように考え方を整理すれば良いでし... kanabun 12/11/17(土) 9:37 発言
【73126】Re:どのように考え方を整理すれば良いでし... うしろ 12/11/17(土) 23:33 お礼
【73116】Re:どのように考え方を整理すれば良いでし... kanabun 12/11/15(木) 23:00 発言
【73127】Re:どのように考え方を整理すれば良いでし... うしろ 12/11/18(日) 5:58 お礼

9188 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free