• ベストアンサー

EXCEL 3つの条件に当てはまる値の参照について

シート1のデータがありまして、そのデータをシート2のフォーマットで表示したいとします。 シート2の稼動時間の欄をシート1の稼動時間から参照して持ってきたいと考えていますがうまくいきません。 シート2のセルC5には○○株式会社、A支店の1日の稼動時間を表示できるようにしたいです。 検索とかける対象がひとつであればできるのですが、この三つ(社名、支店、日付)の条件を満たしての参照のしかたがわかりませんでした。 どのような方法がございますでしょうか。教えてください。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 Sheet2のフォーマットを僅かに変えてしまう事になりますが、Sheet2でも年と月を指定しておく必要があります。(そうしないと、例えばSheet2の日付が1の欄に、前年の12月1日等の様に、日数は同じで、年や月が異なる日のデータも合計されてしまいます)  ですから、まず、Sheet2のA1セルに 2011年1月 という形式で、年と月を合わせて入力して下さい。  次に、Sheet2の B4セルに  日付 C4セルに  稼働時間 と入力して下さい。  次に、Sheet2のB5セルに次の数式を入力して下さい。 =IF(ISNUMBER($A$1),$A$1,"")  次に、Sheet2のB6セルに次の数式を入力して下さい。 =IF(ISNUMBER(B$5),IF(MONTH(MAX(B$5:B5)+1)=MONTH(B$5),B$5+1,""),"")  次に、Sheet2のC5セルに次の数式を入力して下さい。 =IF(OR(B$2="",C$3="",$B5="",$B5>MAX(Sheet1!$A:$A)),"",SUMPRODUCT((OFFSET(Sheet1!$A$1,1,,MATCH(9^9,Sheet1!$A:$A)-1)=$B5)*(OFFSET(Sheet1!$B$1,1,,MATCH(9^9,Sheet1!$A:$A)-1)=B$2)*(OFFSET(Sheet1!$C$1,1,,MATCH(9^9,Sheet1!$A:$A)-1)=C$3)*OFFSET(Sheet1!$D$1,1,,MATCH(9^9,Sheet1!$A:$A)-1)))  次に、Sheet2のC5セルをコピーして、Sheet2のC6セルに貼り付けて下さい。  次に、Sheet2のB6~C6の範囲をコピーして、B7~C35の範囲に貼り付けて下さい。  次に、Sheet2のB4~D35の範囲をコピーして、右方向に向かって必要な回数だけ貼り付けて下さい。  以上で準備は完了で、後はSheet2において「日付」と表示されているセルの2つ上のセルに各会社名を、「稼働時間」と入力されているセルの直ぐ上のセルに各営業所名を、それぞれ入力し、Sheet2のA1セルに年と月を入力すると、各支店の日ごとの稼動時間が表示されます。

kumkum0926
質問者

お礼

目的を達成することができました。 ありがとうございます。 私が考えていたよりかなり複雑だったようです・・・ 関数の複数組み合わせに関してはまったくわからない状態なので これを元に応用できるよう勉強します。 本当にありがとうございました。

その他の回答 (1)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 回答番号:ANo.1です。  先程の回答で書き忘れていた事が御座いました。  Sheet2のB6セルコピーする前に、以下の操作を行って下さい。 Sheet2のB5~B6の範囲を選択   ↓ 選択範囲を示す黒い太枠の内側に、カーソルを合わせてマウスを右クリック   ↓ 現れた選択肢の中にある、[セルの書式設定]を選択してクリック   ↓ 現れた「セルの書式設定」ウィンドウの[表示形式]タグをクリック   ↓ [分類]欄の中にある、[ユーザー定義]を選択してクリック   ↓ 「セルの書式設定」ウィンドウの[種類]欄に d と入力する   ↓ 「セルの書式設定」ウィンドウの[OK]ボタンをクリックする