- ベストアンサー
エクセルで経路間の距離を管理。往路を入れたら自動で復路?
エクセルで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 こんな感じです。 この表が巨大化してきたので、なんとか左下(または右上) だけ数値を入力すれば、逆経路のキロ数も自動で入るように したいのですが、要領の良い作り方はありますでしょうか。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
#1の補足です。 <追伸> ● A B C D A ※ B 5 前回の式は、上の表の●の位置の列番号と行番号が同じことが条件です。 ●の位置が、A1、B2、C3、D4、.....、といった位置でない場合は、 =INDIRECT(ADDRESS(COLUMN()+1,ROW()-1)) のような、位置のずれた数だけ調整する加算・減算が必要です。
その他の回答 (5)
- DoragonFang
- ベストアンサー率41% (91/221)
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))) とします。式は複雑そうですが、出発点と帰着点のどちらが前にあるかを判断して、表の行列を入れ替えています。 もっとスマートな回答があるかもしれませんが、とりあえず参考まで。
お礼
おお! 発想の転換ですね。 面白いと思いました。 ただ、今回は参照している方の式は手を加えたくないのでANo.1の方のご教示を使わせていただきます。 なぜかというと、このキロ数の表は、いろいろな場所で参照されているからなんです。 ありがとうございました。
- DoragonFang
- ベストアンサー率41% (91/221)
ご質問の例のようにB1=A2,C1=A3,・・と 列と行が逆になってるとすると、 =INDEX($A$1:$J$10,COLUMN(),ROW()) で、対角の数字を参照できると思います。 この場合、数字が右上でも、左下でも構いません。 反対側の△部分に上記の式をコピーして下さい。 セル範囲は表全体をカバーするように設定して下さい。 もちろん、他の方が書いておられるように、 行又は列の番号がずれた表の場合は適宜補正する必要があります。
お礼
今回は別の方法で対処できましたが、いろんな方法があるのですね。 どうもありがとうございました。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
右上側が入力されてて A→AがB2のセルだとして B3に =OFFSET($B$2,COLUMNS($B$2:B3)-1,ROWS($B$2:B3)-1) と入力して、 以下左下側部分にコピーします。
お礼
今回はANo.1の方の方法を使いましたが、いろんな関数があることを知り、勉強になりました。 どうもありがとうございました。
- papayuka
- ベストアンサー率45% (1388/3066)
この表は「目で見る」事を基準にしていますか? そうでないなら、下記のようにして、VLOOKUPを使えば良いのでは? 経路 順路 逆路 AB 5 5 AC 8 8 BC 6 6 BD 1 1 意味違う?
お礼
よくわかりませんでしたので他の方法を使いました。 どうもありがとうございました。
- misatoanna
- ベストアンサー率58% (528/896)
A B C D A ※ B 5 上の表の※の部分に =INDIRECT(ADDRESS(COLUMN(),ROW())) と入力して右上半分の三角アリア全体にコピーしたらいかがでしょうか。
お礼
150行目から始まる表だったので理解に苦しみましたが、 試行錯誤の結果、+149、-149でできるようになりました。 助かりました。ありがとうございました。