• 締切済み

エクセルで運賃を 車種別に出したいのです。

運送系の仕事に使う 運賃表を作っています。 1つ目の質問は 1    A      B     C       D 2 車種    発     着     運賃 3 4t     札幌   大阪   15000 4 10t    名古屋   仙台   23000 5 クール   小樽   帯広    3500 と このような表で 発と着をプルダウンで選んだら Dに運賃が出るようにはできました。 例=IFERROR(INDEX($Y$25:$AG$33,MATCH(E20,$Y$24:$AG$24,0),MATCH(F20,$X$25:$X$33,0)),"") ※セルの数値などは気にしないでください。今は試しに作っているので 同じシート内に運賃表を入れて参照しています。 問題は 運賃が 4t 10t 15t トレーラ クール等で違うことです。 また 発・着それぞれ 25拠点位あるので 1つの表にしてプルダウンにするのは かえって大変そうで(各車種別に 25拠点あるので) できたら A列の 4t 10t等をプルダウンで選んで 別のシートにそれそれ 4t運賃表 10t運賃表等を作り それを参照して  発/着を参照して 運賃を自動的に表示したいのです。 A列が 10tの時は 10tのシートの運賃表をみて =IFERROR(INDEX($Y$25:$AG$33,MATCH(E20,$Y$24:$AG$24,0),MATCH(F20,$X$25:$X$33,0)),"")を 出しなさい って なるのが理想です。 二つ目は 運賃表ですが INDEXの参照の時  列と行の数値や値が一緒でなくてはならないと書いてあったのですが、 書いてある順番も一緒でなくては駄目ですか? たとえば  行は 札幌 東京 名古屋 大阪 列は 大阪 東京 札幌 名古屋 という並びだと エラーになりますか? 正直 簡単な関数しか知らず 1つ目の質問のINDEXもここで調べて作りました。 当然マクロも知りません。 できるだけ わかりやすく教えてください。 お願いします。 ちなみにXP オフィス2007で作っています。 説明不足があれば すぐ補足しますので 何卒 ご指導お願いいたします。

みんなの回答

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.4

データの持ち方で一案ですが 一枚のシートに添付の様に 車種   場所   札幌   仙台   東京  名古屋   大阪 4t   札幌        200   300   500   600      仙台   200        200   400   500      東京   300   200        200   300      名古屋  500   400   200        100      大阪   600   500   300   100 10t  札幌        150   250   450   550      仙台   150        150   350   450      東京   250   150        150   250      名古屋  450   350   150         50      大阪   550   450   250    50 ・・・・・・・ と横方向に着名を25列、行方向は 25行*車種数をとった一覧にしてみます。 別途 車種一覧の範囲に 4t 10t 15t ・・・と準備ます。 仮に K3~M3 セルに 入力規則で プルダウンで選択しているとします。 最初に、車種が出てくる 行番号は =MATCH(K3,A:A,FALSE)  発地の名称が何行目にでてくるかを =MATCH(L3,B3:B7,FALSE) 着地の名称が何列目に出てくるかを =MATCH(M3,A2:G2,FALSE) といったようなMatch関数で得られます。 金額は INDEX関数で行番号、列番号を指定して =INDEX(A:G,K6+L6-1,M6) で求めます。 もちろん式が長くなりますが、作業に使用したセルを省くこともできます。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です! たびたびごめんなさい。 もう一度質問文を読み返して・・・ 質問の2番目の回答をしていませんでしたね。 数式でMATCH関数を使っているということは列・行項目の並びが変わっても問題ないはずです。 ただ、 数式を拝見すると行と列が逆ではないのでは? INDEX関数は 配列(表の範囲) 行番号(表内の何行目か?) 列番号(表内の何列目か?) の順になります。 ※ 前回の方法の場合は同じ並びでないとデタラメなデータが表示されてしまいます。 それから数式では拠点が9拠点の表配置のような気がします。 というコトは、車種によって拠点数が違うのですかね? その場合は前回の方法でも構わないのですが、表の空白部分がかなり出ると思います。 それを回避する方法として、 A列の車種によってB・C列のリスト表示を変更することが出来ます。 長くなるので今回はこの程度で・・・ ごめんなさいね。m(_ _)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 一案です。 車種別に↓の画像のように表を作成しておきます。 25拠点あるということですが、今回は5拠点での方法です。 やり方は一緒です。 各拠点の表の拠点の並びはすべて同じで、運賃データのみ変更しておきます。 そしてSheet1のF列に拠点を羅列(この並びも各表の並びと一緒)しておく。 ※ F列が目障りであれば、遠く離れた列にするか、F列を非表示にしておきます。 準備(1) 車種別毎のデータに名前定義しておきます。 画像では「4t」SheetのB2~F6セルを範囲指定(データ部のみ) → 名前ボックスに _4t と定義 (数値・アルファベット等は名前定義できない場合がありますので、最初に「_」アンダーバーを入れておきます。) 同様に「10t」SheetのB2~F6セルを範囲指定 → _10t と名前定義 これをすべての車種で行います。 そしてSheet1のD2セルに =IF(COUNTBLANK(A2:C2),"",INDEX(INDIRECT("_"&A2),MATCH(B2,$F$1:$F$5,0),MATCH(C2,$F$1:$F$5,0))) という数式を入れオートフィルで下へコピーすると 画像のような感じになります。 これで何とか希望に近い形にならないでしょうか?m(_ _)m

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

運賃表を作ってからvlookupを使って運賃を自動抽出してみて下さい。

関連するQ&A