Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2016)
関数 INDEX SUMPRODUCT の組み合わせ
投稿日時: 19/09/16 17:45:26
投稿者: mimi1212

どなたか教えていただけないでしょうか。
 
4月というシートにテスト作成のデータを抽出したいと思っています。
 
データが保存されているのはテスト作成というエクセルブックです。
・・・C列 D列 ・・・H列    I列 ・・・ O列  P列
・・・NO 枝番 ・・・商品名  数量 ・・・月   会社名
・・・1号 1  ・・・リンゴ  20  ・・・4   A社
・・・1号 1  ・・・みかん  40  ・・・4   A社
・・・1号 2  ・・・もも   50  ・・・5   B社
・・・2号 1  ・・・リンゴ  30  ・・・5   C社
・・・2号 1  ・・・もも   25  ・・・5   C社
・・・2号 2  ・・・ブドウ  80  ・・・4   A社
・・・2号 2  ・・・なし   60  ・・・4   A社
 
最終的にめざしているのは
会社名と月とNO、枝番を入力することでデータを代入してほしいのです。
 
例)
D1 会社名を入力
E1 月を入力
行     C列   D列  E列    F列     G列   H列    I列
5行目・・・ NO   枝番  リンゴ  みかん   もも  ブドウ  なし


8行目・・・1号    1   20 (E8) 40(F8)
9行目・・・2号    2             80(H9) 60(I9)
 
今、E8に下記の関数を書いてみました。拾い上げてくるのですが
F8に([テスト作成.xlsx]オーダー!$H$8:$H$46=E5)*1の部分をF5に変えて書いてみましたが
拾い上げてくる数値が8と同じ20になります。
何がいけないのか、さっぱりわかりません。
どうかよろしくお願いいたします。
 
 
=INDEX([テスト作成.xlsx]オーダー!$I$8:$I$46,SUMPRODUCT(([テスト作成.xlsx]オーダー!$P$8:$P$46=D1)*1,([テスト作成.xlsx]オーダー!$O$8:$O$46=E1)*1,([テスト作成.xlsx]オーダー!$C$8:$C$46=C8)*1,([テスト作成.xlsx]オーダー!$D$8:$D$46=D8)*1,([テスト作成.xlsx]オーダー!$H$8:$H$46=E5)*1,ROW([テスト作成.xlsx]オーダー!$I$8:$I$46)))
 
 

回答
投稿日時: 19/09/16 18:15:12
投稿者: んなっと

相対参照、絶対参照、複合参照についてWeb検索してみてください。
 
D1→$D$1
C8→$C8
E5→E$5 など...
 
E8
=SUMIFS([テスト作成.xlsx]オーダー!$I:$I,[テスト作成.xlsx]オーダー!$P:$P,$D$1,[テスト作成.xlsx]オーダー!$O:$O,$E$1,[テスト作成.xlsx]オーダー!$C:$C,$C8,[テスト作成.xlsx]オーダー!$D:$D,$D8,[テスト作成.xlsx]オーダー!$H:$H,E$5)
右方向・→下方向・↓

投稿日時: 19/09/17 17:40:56
投稿者: mimi1212

参照についてWEBで調べて
下記のように書き換えましたが
今度は表にはない数字が表れます。
ネットで調べていますが、解決できずにいます。
助けてください。
 
=INDEX([テスト作成.xlsx]オーダー!$I$8:$I$46,SUMPRODUCT(([テスト作成.xlsx]オーダー!$P$8:$P$46=$D$1)*1,([テスト作成.xlsx]オーダー!$O$8:$O$46=$E$1)*1,([テスト作成.xlsx]オーダー!$C$8:$C$46=$C$8)*1,([テスト作成.xlsx]オーダー!$D$8:$D$46=$D$8)*1,([テスト作成.xlsx]オーダー!$H$8:$H$46=E$5)*1,ROW([テスト作成.xlsx]オーダー!$I$8:$I$46)))

回答
投稿日時: 19/09/17 18:25:04
投稿者: んなっと

引用:
=INDEX([テスト作成.xlsx]オーダー!$I$8:$I$46,SUMPRODUCT(([テスト作成.xlsx]オーダー!$P$8:$P$46=$D$1)*1,([テスト作成.xlsx]オーダー!$O$8:$O$46=$E$1)*1,([テスト作成.xlsx]オーダー!$C$8:$C$46=$C$8)*1,([テスト作成.xlsx]オーダー!$D$8:$D$46=$D$8)*1,([テスト作成.xlsx]オーダー!$H$8:$H$46=E$5)*1,ROW([テスト作成.xlsx]オーダー!$I$8:$I$46)))

$C$8,$D$8などが間違いです。
時間の無駄なので、下の式を試してください。
  
テスト作成.xlsxを開いていなくても使えるようにしたい場合の式
E8
=IFERROR(AGGREGATE(15,6,[テスト作成.xlsx]オーダー!$I$8:$I$46/([テスト作成.xlsx]オーダー!$P$8:$P$46=$D$1)/([テスト作成.xlsx]オーダー!$O$8:$O$46=$E$1)/([テスト作成.xlsx]オーダー!$C$8:$C$46=$C8)/([テスト作成.xlsx]オーダー!$D$8:$D$46=$D8)/([テスト作成.xlsx]オーダー!$H$8:$H$46=E$5),1),"")
右方向・→下方向・↓

投稿日時: 19/09/17 19:14:07
投稿者: mimi1212

んなっと さま
ありがとうございます。助かりました。
 
難しくてわからないことばかりですが、
関数を読み解けるように
がんばってみます。
 
本当にありがとうございました