• ベストアンサー

エクセル 関数の質問

いうも回答して頂きありがとうございます。 入力用シートの A1セルに a又は b又は c ・・・ と入力 A2セルに a又は b又は c ・・・ と入力 A3セルに a又は b又は c ・・・ と入力 みたいな感じに入力されていたとします。 で、他の設定用シートの B1セルに a に対応した時間が入力 B2セルに b に対応した時間が入力 B3セルに c に対応した時間が入力 上記の時 入力用シートのC1にA1~A?までの時間の合計を出したいのですが どのような関数を使えばよろしいのでしょうか? 御指導の程、宜しくお願い致します。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

手抜きせずに。 設定用シートのA1に「a」と記入しておいて、その隣のB1に対応する時間数を記入します。 A2,A3にb、cとそれぞれ記入しておいて、隣のB2,B3に対応する時間数を記入します。 入力シートでは =SUMPRODUCT(SUMIF(設定!A:A,A1:A99,設定!B:B)) のように合計します。

kero1192kero
質問者

お礼

さっそく使わせてもらいました。自分が思っていた関数があったんですね。とても感謝しています。ありがとうございました。ネットでSUMPRODUCT関数も調べましたが、あまり理解できませんでした・・・。今後使えるようになれたらいいなと思っています。 追加で質問なんですが、 教えて頂いた式を加味して、入力用シートに a と入力したら、設定用シートのB列の時間を選択し、a の入力がなかったら、設定用シートのc列の時間を選択するようにしたい場合、どのようにしたらよろしいでしょうか?

その他の回答 (4)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.5

>追加で質問なんですが、 ついでに聞いちゃえと思いつきでチョコチョコっと追加するモノだから,ご質問がとってもイミフメイになってしまっています。 >入力用シートに a と入力したら、設定用シートのB列の時間を選択し、a の入力がなかったら、設定用シートのc列の時間を選択するようにしたい たとえばどういう状況でしょうか。 入力シート:   列 行 A 1 aと入力 →aの時間で計算 2 aと入力 →aの時間で計算 3 bと入力 →bの時間で計算 4 xと入力 →aじゃないのでcで計算 5 何も入力されていない →aじゃないのでcで計算 6 cと入力 →cの時間で計算 7 何も入力されていない →aじゃないのでcで計算 8 : 「aの入力じゃない」だけでは,じゃぁ「どうなってた時に」そうしたいのか,さっぱり要領を得ません。 たとえば上述のサンプルのA4セルのように,aでもbでもcでもない「何かが入力されている」のも「aは入ってない」ですし,A5やA7のように「まだ何も記入してない」のも「aは入ってません」。 このご質問は一回解決で打ち切って,新しく「こういう事が次にしたくなりました」なら新しいご相談として,キチンとヤリタイ事を添えて新たに投稿し直して下さい。

kero1192kero
質問者

お礼

続けて質問した方が分かり易いのかなと思いまして・・・。 読んでもらえばわかるとおり、自分は文才がないので、相手に分かり易く書くのがかなり苦手なんです。一から書けば更に分かり難くなるのかと思い、続けて質問した次第ですが、御指摘を受けたので一旦締め切らせて頂きます。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

作業列を作って簡単な方法で対応することができます。 シート2の設定用シートのA列にはa,b,c・・・などと下方に入力し、B列には対応する時間を入力します。 その上で入力用シートのB1セルには次の式を入力して下方にドラッグコピーします。 =IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:B,2,FALSE),"") C1セルには =SUM(B:B) セルの表示形式はユザー定義で [h]:mm のようにします。 なおシート1のB列が目障りでしたらB列を選択して右クリックし「非表示」を選択すればよいでしょう。

kero1192kero
質問者

お礼

新たに式を作り直して頂きありがとうございました。 関数を組み合わせる事で色々出来るんですね。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

シート1に入力用シート、シート2に設定用シートが有るとして、C1セルへの入力の式は次のような簡単な式で良いでしょう。 =COUNTIF(A:A,"a")*Sheet2!B1+COUNTIF(A:A,"b")*Sheet2!B2+COUNTIF(A:A,"c")*Sheet2!B3 又は =SUM(COUNTIF(A:A,"a")*Sheet2!B1,COUNTIF(A:A,"b")*Sheet2!B2,COUNTIF(A:A,"c")*Sheet2!B3) セルの表示形式はユーザー定義で [h]:mm のようにします。

kero1192kero
質問者

お礼

回答ありがとうございます。 設定シートの項目が増えると、記述が長くなるのが気になりますが、項目毎に増やせば思い通り計算出来るので別の時に使わせてもらいます。 貴重な時間をこの質問に使って頂きありがとうございました。

  • GADNET
  • ベストアンサー率35% (7/20)
回答No.2

入力用シートをSheet1 設定用シートをSheet2 とします。 簡単な方法は、 別途時間検出用の列をB列などにつけます。 式は、 B1 =IF(A1="a",Sheet2!B1,IF(A1="b",Sheet2!B2,IF(A1="c",Sheet2!B3,"??"))) B2 =IF(A2="a",Sheet2!B1,IF(A2="b",Sheet2!B2,IF(A2="c",Sheet2!B3,"??"))) B3 =IF(A3="a",Sheet2!B1,IF(A3="b",Sheet2!B2,IF(A3="c",Sheet2!B3,"??"))) B1からB3=sum(B1:B3)で合計時間が出ます。 文章が長くなりますが、時間検出のセルをつけたくない場合は、単純に上記の式を 足し算します。 =IF(A1="a",Sheet2!B1,IF(A1="b",Sheet2!B2,IF(A3="c",Sheet2!B3,"??")))+IF(A2="a",Sheet2!B1,IF(A2="b",Sheet2!B2,IF(A3="c",Sheet2!B3,"??")))+IF(A3="a",Sheet2!B1,IF(A3="b",Sheet2!B2,IF(A3="c",Sheet2!B3,"??"))) その他シート2のA1にa A2にb A3にcと入れ =VLOOKUP(A1,Sheet2!A1:B3,2,FALSE)+VLOOKUP(A2,Sheet2!A1:B3,2,FALSE)+VLOOKUP(A3,Sheet2!A1:B3,2,FALSE) でもできます。 後MATCH関数+INDEX関数でもできるみたいです。 予断ですが、関数での複数の条件分岐は、文章が長くなりがちなので、VBAを利用したほうが 文章が短くすみ、わかりやすいと思います。

kero1192kero
質問者

お礼

回答ありがとうございます。 さっそく試させてもらいましたが、結果が思うように出なかったので修正を試みましたが、式が長すぎて挫折しちゃいました。貴重な時間を使ってもらいながら、こちらの理解不足で無駄にしてしまい申し訳ありませんでした。