• ベストアンサー

エクセルの関数を複数組み合わせる方法

地名と時間を元に決まっている数字を書き入れるような関数をどうすれば作れるか教えていただけませんか?? 例えばA1列に地名(TOKYO,OSAKA,NAGOYAのどれかが入る)B列に時間(0~24H)が入力してあり、C列にAとBの条件が合う時に、それに対する数字をつけたく思います。 例) TOKYO:24H以上で50、10H以上24H未満で30、5H以上10H未満で20、5H未満で0 OSAKA:24以上で100、10H以上24H未満で50、5H以上10H未満で30、5H未満で0。 NAGOYA:24以上で80、10H以上24H未満で60、5H以上10H未満で350、5H未満で0。 のように地名と時間によって出てくる数字を変化させたいのですが、よろしくお願いします。

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

  • ベストアンサー
  • onntao
  • ベストアンサー率32% (108/332)
回答No.1

Index関数とMatch関数の組み合わせがよろしいかと 条件を一覧表にして、表引きする 参考に 一覧表を“縦横”に調べ、該当するデータを取り出す http://pc.nikkeibp.co.jp/pc21/tech/excel36/26/index.shtml C列に式を入れ下段にコピーですね

DUS123
質問者

お礼

Index関数とMatch関数なんて初めて知りましたし、参考ページを勉強し理解する事ができました。 ありがとうございました。

その他の回答 (2)

noname#140971
noname#140971
回答No.3

既に正答が出ていますが・・・。 <A>_______<B>_________<C>__________<D><E><F><G> TOKYO__0:00:00______00:00:00 1__00__00__00__00 TOKYO__5:00:00______00:05:00 1__20__00__00__20 TOKYO__12:00:00____00:12:00 1__00__30__00__30 TOKYO__13:00:00____00:13:00 1__00__30__00__30 TOKYO__23:59:00____00:23:59 1__00__30__00__30 TOKYO__24:00:00____01:00:00 1__00__00__50__50 TOKYO__25:00:00____01:01:00 1__00__00__50__50 C=TEXT(DAY(B1),"00") & ":" & TEXT(HOUR(B1),"00") & ":" & TEXT(MINUTE(B1),"00") D=(A1="TOKYO")*1 E=(C1>="00:05:00") * (C1 < "00:10:00")*20 F=((C1>="00:10:00") * (C1 < "01:00:00"))*30 G=(C1>="01:00:00")*50 H=(E1+F1+G1)*D1 このように小学校3年生レベルの足し算、掛算でも出来ないことはありません。 しかし、これは非現実的です。 Hの式を展開すれば、ものすごーい長さになります。 もう15年も前になりますが、法人税申告書作成システムで掛かる式を組み込もうとした税理士がおられました。 そうして、式の長さ制限に引っかかって頓挫されてヘルプの電話。 そこで、私が採用したのが<表引き方式>です。 そして、<表引き方式>ゆえに法人税申告書作成システムは今でも現役で活躍しています。 No1、No2さんの<表引き方式>が一番だなーと思う理由です。

DUS123
質問者

お礼

早速の回答ありがとうございます。 <表引き方式>という言葉は初めて聞きましたが、法人税申告書作成システムでこのやり方が活躍しているとは知りませんでした。 ありがとうございます。

noname#204879
noname#204879
回答No.2

   A    B    C  D  E   F  G  H  I 1  場所  時間(H) 数値       0H  5H 10H 24H 2  TOKYO    19  30   TOKYO  0  20  30  50 3  OSAKA    31  100   OSAKA  0  30  50 100 4  TOKYO     7  20   NAGOYA  0 350  60  80 5  NAGOYA    26  80 6  OSAKA     1   0 7  NAGOYA    9  350 8  OSAKA    15  50 9  NAGOYA    22  60 10 TOKYO    33  50 11 TOKYO     3   0 12 NAGOYA    4   0 13 OSAKA     8  30 C2: =VLOOKUP(A2,E$2:I$4,MATCH(B2,E$1:I$1),FALSE)

DUS123
質問者

お礼

わざわざ、式まで作成していただきありがとうございました。 今後の参考にさせていただきます。

関連するQ&A