マンガでよめる痔のこと・薬のこと

シート(1)
A B C D
作業列    コード    顧客名     金額
3        300001     A 10,000
3        300002   B 15,000
3        300003   C 20,000
3        300004   D 25,000
3        300005   E 30,000
4        400001   F 35,000
4        400002   G 40,000
 4 400003 H 45,000
4 400004 I 50,000
4 400005 J 55,000
       
シート(2)
A B C D E F
「1」 「2」 「3」 「4」 「5」 「6」
10,000 35,000
15,000 40,000
20,000 45,000
25,000 50,000
30,000 55,000

※ シート(1)にコード、顧客名、金額を入力すると、シート(2)にあるように該当するコードの先頭行の列に表示するようにしたいと思っています。

シート1で作業列を作りその作業列を基にシート2でVLOOKUP関数を使い‥シート2の10,000のセルの場合、
VLOOKUP(C$2,sheet1!$A$3,$D$12,4,false)として、下にコピーすると同じ金額になってしまいます。

セルが空白にならず、シート1の金額が上から順番にシート2に表記されるようにするにはどうしたらよいでしょうか。マクロはできませんので、関数で詳しく教えて下さい。宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

やりたいことは、コードの左一桁が横列、右一桁が縦行に分けたいということでしょうか?


Vlookup関数は、条件があった最初のデータしかでません。
シート1が
作業列 コード 顧客名  金額
31   300001  A    10,000
32   300002  B    15,000
33   300003  C    20,000
34   300004  D     25,000
35   300005  E    30,000
41   400001  F    35,000
42   400002  G    40,000
43   400003  H    45,000
44   400004  I    50,000
45   400005  J    55,000
シート2が
  1    2   3   4   5
1 #N/A #N/A 10000 35000 #N/A
2 #N/A #N/A 15000 40000 #N/A
3 #N/A #N/A 20000 45000 #N/A
4 #N/A #N/A 25000 50000 #N/A
5 #N/A #N/A 30000 55000 #N/A
でよければ
シート1のA列は =LEFT(B2,1)&RIGHT(B2,1) 下フィル
シート2に A列、1行目は文字列にして 1,2,3・・・
B2には     =VLOOKUP(B$1&$A2,Sheet1!$A$1:$D$11,4,FALSE)
右フィル、下フィルで出来ます。
VLOOKUP(B$1&$A2・・の$マークに注意してください。フィルした後の式を確認するとわかりやすいと思います。
    • good
    • 0
この回答へのお礼

ありがとうございました。
A列の文字列を000~999にして重複がないよう検証しています。
また、中には一部不規則なものがありますので、それは手作業でもよいのかなと思っています。本当にありがとうございました。

お礼日時:2008/05/04 15:20

既回答者は早く質問の意味が判ったようだが、私は苦労した。

列などはOKWAVE画面で崩れていることもわかり難い。質問の書き方に実例+説明文の説明文が無いためわかり難いと思う。
私は推定も入ってやや一般化してみた。
ーーー
私の表現なら
「コード」列の30万、40万などの先頭桁が変わるごとに、別場所に、30万、40万などの列を分けて、縦方向にに30万台、40万台だけの明細行の金額を並べたい。
ーー
例データ
A列   B列   C列   D列
番号金額300
300001A10,000300
300002B15,000301
300003C20,000302
400001F35,000400
400002G40,000401
400003H45,000402
400004I50,000403
400005J55,000404
500001ー1,000500
510003ー3,000501
510005ー5,000502
530006ー15,000503
550007ー16,000504
570008ー17,000505
590009ー18,000506
590010ー19,000507
590011ー20,000508
元の作業列(A列)は使わず、上記では削除、D列に作業用データを使った。
B列は本質問に関係ないと考慮してない。
D1の300はスタートの値として必要。
上記は例えば30万台が2桁以上の数あってもOKのように考えた。
D列D2セルの式は =IF(LEFT(A2,1)=LEFT(A1,1),D1+1,LEFT(A2,1)*100)
下方向に式を複写。
結果上記の通り。
便宜上、第21行目からA21:C32
359
10000350001000
15000400003000
20000450005000
5000015000
5500016000
17000
18000
19000
20000
ーーー
A21行に=SUMPRODUCT(($A2:$A18>(COLUMN()+2)*100000)*($A2:$A18<(COLUMN()+3)*100000)*1)
と入れてC21まで式を複写。結果は上記。
A22に式 =IF(ROW()-21>A$21,"",INDEX($A$2:$C$19,MATCH((COLUMN()+2)*100+ROW()-22,$D$2:$D$19),3))
と入れて、A32まで式を複写、A22:A32の式をC22:C32に複写。
結果
上記の通り。
ーー
もし上記で質問の主旨が合っているなら、この質問は関数の問題としてパズル的に難しい部類でしょう。
VBAなどを使えばこんなにごちゃごちゃすることは無い。関数は並べ替え、抜き出しなどは不得手なテーマです。作業列を使うことを許されたが、聡でないとまたぐっと難しくなろう。
    • good
    • 0

VLOOKUP関数の引数としてC$2を指定しているようですが


行を固定した場合、下方向へコピーしても金額は同じになると思います。

一度$を取って、お試しください。

勘違いでしたらご容赦ください。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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


人気Q&Aランキング