[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『とても長いSUMIF関数を短く・・・』(サイサイ)
いつもお世話になっております。 今回ご相談させていただきたい内容は、 SUMIF関数についてです。
説明が難しいのですが、とある機種を作る仕事をしてまして、 私は部品の管理をしています。 Sheet1とSheet2のデータベースからSheet3に集計するのですが・・・
Sheet1-- A B C D E F 1 部品名 機種A 機種B 機種C 機種D 機種E 2 A 1 1 1 1 1 3 B 1 1 1 1 1 4 C 1 1 1 1 1 5 D 1 1 1 1 1 6 E 1 1 1 1 1
Sheet2-- A B C D E F 1 機種名 4/1 4/2 4/3 4/4 4/5 2 機種A 10 3 機種B 10 4 機種C 10 5 機種D 10 6 機種E 10
Sheet3-- A B C D E F 1 部品名 4/1 4/2 4/3 4/4 4/5 2 A 10 10 10 10 10 3 B 10 10 10 10 10 4 C 10 10 10 10 10 5 D 10 10 10 10 10 6 E 10 10 10 10 10
Sheet1は機種を作るためにどのくらいの部品を使用するかという表です。 例)機種Aを作るためには、部品A〜Eをそれぞれ1個ずつ使用します。
Sheet2は機種の生産日程をあらわす表です。 例)機種Aは4/1に10台作ります。
Sheet3の部品集計表には部品の使用数が表示されています。 例)部品Aは4/1に10個使用します。
結果的には毎日の部品の使用量を知りたいのですが、
現在、Shhet1とSheet2からSUMIF関数を使って集計しています。
Sheet3!B2 = SUMIF(Sheet1!$A:$A,Sheet3!$A2,Sheet1!$B:$B)*Sheet2!B$2 + SUMIF(Sheet1!$A:$A,Sheet3!$A2,Sheet1!$C:$C)*Sheet2!B$3 + SUMIF(Sheet1!$A:$A,Sheet3!$A2,Sheet1!$D:$D)*Sheet2!B$4 + SUMIF(Sheet1!$A:$A,Sheet3!$A2,Sheet1!$E:$E)*Sheet2!B$5 + SUMIF(Sheet1!$A:$A,Sheet3!$A2,Sheet1!$F:$F)*Sheet2!B$6
上の表は省略していますが、実は機種が約30種、部品が300種あり 式はとてもとても長いのです。
もっと式を短くできないでしょうか? もしくは何か他に適した関数はあるのでしょうか?
宜しくお願いします。
前提 1.「Sheet1の機種」 と「Sheet2の機種」 の順が同一とします。 2.「Sheet1の部品名」と「Sheet3の部品名」の順が同一とします。 3.「Sheet2の日付」 と「Sheet3の日付」 の順が同一とします。
Sheet3 B2セル =SUM(Sheet1!$B2:$F2*TRANSPOSE(Sheet2!B$2:B$6)) (※ 配列数式です→ Ctrl + Shift キーを押しながら、Enterキーで、式の入力を確定)
右へ、下へフィルコピー
<Sheet1> <Sheet2> 行 __A___ __B__ __C__ __D__ _ E _ _ F _ 行 __A___ __B___ __C___ __D___ _ E __ _ F __ 1 部品名 機種A 機種B 機種C 機種D 機種E 1 機種名 4月1日 4月2日 4月3日 4月4日 4月5日 2 部品01 1 1 2 1 1 2 機種A 10 3 部品02 2 1 1 1 1 3 機種B 1 10 4 部品03 3 1 1 1 1 4 機種C 10 5 部品04 4 1 1 1 1 5 機種D 10 6 部品05 50 1 1 1 1 6 機種E 10
<Sheet3> 行 __A___ __B___ __C___ __D___ _ E __ _ F __ 1 部品名 4月1日 4月2日 4月3日 4月4日 4月5日 2 部品01 11 10 20 10 10 3 部品02 21 10 10 10 10 4 部品03 31 10 10 10 10 5 部品04 41 10 10 10 10 6 部品05 501 10 10 10 10
(半平太)
半平太 さんご丁寧にありがとうございます。 さっそくためしてみました。
>Ctrl + Shift キーを押しながら、Enterキーで、式の入力を確定 両脇に{}が出現しました。(これでよいのでしょうか?)
順列は全て同一なのですが、 結果はうまくいきませんでした。
ちなみに式は、部品が275種類、機種が30種類なので、
=SUM(Sheet1!$B2:$AE276*TRANSPOSE(Sheet2!B$2:B$31))
という式で宜しいのでしょうか?
>>Ctrl + Shift キーを押しながら、Enterキーで、式の入力を確定 >両脇に{}が出現しました。(これでよいのでしょうか?)
OKです。^^
>ちなみに式は、部品が275種類、機種が30種類なので、 >=SUM(Sheet1!$B2:$AE276*TRANSPOSE(Sheet2!B$2:B$31)) >という式で宜しいのでしょうか?
2のままです。 ↓ B2セル =SUM(Sheet1!$B2:$AE2*TRANSPOSE(Sheet2!B$2:B$31))
(Ctrl + Shift キーを押しながら、Enterキーで、式の入力を確定 ←これをお忘れなく)
そして右へ、下へ(276行目まで) フィルコピー。
(半平太)
ご連絡ありがとうございます。
はい!わかりました。 データが職場にあるため、月曜日に報告します! 色々ありがとうございました。 (サイサイ)
やってみました。
できました! 間違いがないか、ずれてるところがないか、 色々調べたところ、全部あっていました。
以前のファイルは計算に5分ぐらいかかりとてももたついていたのに 今回は一瞬でした。
本当に感動しました。
半平太さん本当にありがとうございます。
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.