[[20080329142314]] 『とても長いSUMIF関数を短く・・・』(サイサイ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『とても長い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.