こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MATCH関数とINDEX関数の組み合わせ方

あるシートから別ファイルのシートへ、"金額の値"をコピーしたいのですが、
条件セルが元データでは縦2行(地域と商品名)、コピー先では(列)に配置されているため、
どうやって関数を組んだら良いのかわかりません。
 関数ではなく、マクロにしないと無理でしょうか?
(マクロでもいいのですが、コードがよくわからないので…)

 又、地域はコードで番号順に並んでいますが、商品名はアルファベットと数字が混ざっており、
ソートされていない並び(変更不可)になっています。

Sheet1(元データ)
   A      B    C
1 地域   商品名  金額
2 (01関東) (AS01) (200)
3 (01関東) (333B) (250)

このSheet1の金額データを別ファイル:Sheet2の該当欄に表示させたい。

Sheet2(コピー先)
  A           B     C      D
1 地域\ 商品名 (AS0100) (9999B) (AF205)
2 (01関東)       (200)   (300)   (250)
3 (02中部)       (50)    (250)    (290)

どなたか、お知恵を拝借できれば幸いです。

投稿日時 - 2007-05-25 00:20:13

QNo.3028130

困ってます

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

Sheet2!B2: =IF(SUMPRODUCT((Sheet1!$A$2:$A$10=$A2)*(Sheet1!$B$2:$B$10=B$1)),INDEX(Sheet1!$C$2:$C$9,SUMPRODUCT((Sheet1!$A$2:$A$10=$A2)*(Sheet1!$B$2:$B$10=B$1),ROW(A$2:A$10)-1)),"")

投稿日時 - 2007-05-25 07:34:16

補足

ご回答ありがとうございます。この方法で上手くいきました!

ただ、最後の ROW(A$2:A$10)-1 の記述は
なぜ必要なのかよくわかりませんでした。
後々のためにも、教えて頂ければうれしいです。

投稿日時 - 2007-05-27 01:57:54

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

[ANo.1この回答への補足]に対するコメント、

「なぜ必要なのか」に対する答えは、それがないと所望の値が得られないからです。
ただし、ROW(A$2:A$10)-1 の代わりに ROW($2:$10)-1 でもOKです。
INDEX(配列,行番号,列番号)の「行番号」に相当する部分を算出するために必要、と言えばお分かりでしょうか?

投稿日時 - 2007-05-27 02:45:54

お礼

理解しました!
ご丁寧にありがとうございます。

投稿日時 - 2007-05-27 22:53:00

Sheet1の金額の前に1列足して、「地域&商品名」を作れば、
Sheet2!C3: =vlookup($A3&C$1, Sheet1!C:C, 2, FALSE)
でおしまい。

投稿日時 - 2007-05-25 13:23:18

お礼

ご回答ありがとうございます。

確かにこの方法が一番シンプルなのですが、
Sheet1にあたるファイルは書式を変更してはいけない
ということと、商品欄の並び(これも変更不可)が
必ずしも昇順ではなかったので
VLookupは使えないかと思うのです。
関数だけでやりくりするには、限界があるのかもしれません。

投稿日時 - 2007-05-27 02:07:30

あなたにオススメの質問