プロが教える店舗&オフィスのセキュリティ対策術

あるシートから別ファイルのシートへ、"金額の値"をコピーしたいのですが、
条件セルが元データでは縦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)

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

A 回答 (3件)

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)),"")

この回答への補足

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

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

補足日時:2007/05/27 01:57
    • good
    • 0

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



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

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

お礼日時:2007/05/27 22:53

Sheet1の金額の前に1列足して、「地域&商品名」を作れば、


Sheet2!C3: =vlookup($A3&C$1, Sheet1!C:C, 2, FALSE)
でおしまい。
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2007/05/27 02:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!