• ベストアンサー

エクセルで経路間の距離を管理。往路を入れたら自動で復路?

エクセルでIndex Match 関数を使ってキロ数の自動入力をしています。 つまり、ある場所間の表があり、A→B 5キロ、B→A 5キロ のように表の左下側と右上側で斜めの軸線で対象となる 数値が重複して入っています。   A  B  C  D A    5  8  12 B 5     6  1 C 8  6     7 D 12  1  7 こんな感じです。 この表が巨大化してきたので、なんとか左下(または右上) だけ数値を入力すれば、逆経路のキロ数も自動で入るように したいのですが、要領の良い作り方はありますでしょうか。

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

  • ベストアンサー
回答No.4

#1の補足です。 <追伸> ● A  B  C  D A    ※ B 5    前回の式は、上の表の●の位置の列番号と行番号が同じことが条件です。 ●の位置が、A1、B2、C3、D4、.....、といった位置でない場合は、  =INDIRECT(ADDRESS(COLUMN()+1,ROW()-1)) のような、位置のずれた数だけ調整する加算・減算が必要です。

noname#183584
質問者

お礼

150行目から始まる表だったので理解に苦しみましたが、 試行錯誤の結果、+149、-149でできるようになりました。 助かりました。ありがとうございました。

その他の回答 (5)

回答No.6

ANo.5です。 逆の発想ですが、表を片側だけ入れておいて、 キロ数を得る関数の方を変えてはどうでしょうか? 今、表が質問者様の様な形で、    A  B  C  D     あ  い  う  え 1 あ    5  8  12 2 い       6  1 3 う          7 4 え  と、右上にだけ数字が入っているとします。 G1セルに出発点、H1セルに到着点、I1セルに距離を求めるとすると、 I1セルに、 =IF(MATCH(G1,$B$1:$E$1,0)>MATCH(H1,$B$1:$E$1),INDEX($B$2:$E$5,MATCH(H1,A2:A5,0),MATCH(G1,B1:E1,0)),INDEX($B$2:$E$5,MATCH(G1,A2:A5,0),MATCH(H1,B1:E1,0))) とします。式は複雑そうですが、出発点と帰着点のどちらが前にあるかを判断して、表の行列を入れ替えています。 もっとスマートな回答があるかもしれませんが、とりあえず参考まで。

noname#183584
質問者

お礼

おお! 発想の転換ですね。 面白いと思いました。 ただ、今回は参照している方の式は手を加えたくないのでANo.1の方のご教示を使わせていただきます。 なぜかというと、このキロ数の表は、いろいろな場所で参照されているからなんです。 ありがとうございました。

回答No.5

ご質問の例のようにB1=A2,C1=A3,・・と 列と行が逆になってるとすると、 =INDEX($A$1:$J$10,COLUMN(),ROW()) で、対角の数字を参照できると思います。 この場合、数字が右上でも、左下でも構いません。 反対側の△部分に上記の式をコピーして下さい。 セル範囲は表全体をカバーするように設定して下さい。 もちろん、他の方が書いておられるように、 行又は列の番号がずれた表の場合は適宜補正する必要があります。

noname#183584
質問者

お礼

今回は別の方法で対処できましたが、いろんな方法があるのですね。 どうもありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

右上側が入力されてて A→AがB2のセルだとして B3に =OFFSET($B$2,COLUMNS($B$2:B3)-1,ROWS($B$2:B3)-1) と入力して、 以下左下側部分にコピーします。

noname#183584
質問者

お礼

今回はANo.1の方の方法を使いましたが、いろんな関数があることを知り、勉強になりました。 どうもありがとうございました。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

この表は「目で見る」事を基準にしていますか? そうでないなら、下記のようにして、VLOOKUPを使えば良いのでは? 経路 順路 逆路  AB  5  5  AC  8  8  BC  6  6  BD  1  1 意味違う?

noname#183584
質問者

お礼

よくわかりませんでしたので他の方法を使いました。 どうもありがとうございました。

回答No.1

  A  B  C  D A    ※ B 5    上の表の※の部分に  =INDIRECT(ADDRESS(COLUMN(),ROW())) と入力して右上半分の三角アリア全体にコピーしたらいかがでしょうか。

関連するQ&A