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

はじめて質問させていただきます。
売価に対して各価格表の価格以下の場合(1)とする。
という計算式を反映させたいのですが、うまく出来ません。
ex)
H:価格 86,000
A2: 30,000 B2: (1)
A3: 50,000   B3: (2)
A4: 100,000  B4: (3)
A5: 120,000  B5: (4)



この場合、(3)と表記させたいのですが、(2)と表記されてしまいます。
ちなみに、私が入れた計算式は
=VLOOKUP($H2,'重要原紙 (2)'!$A$2:$B$21,2,TRUE)です。

分かり難い説明で大変申し訳御座いませんが、是非ご教授いただきたいと思いますので、宜しくお願い致します。

A 回答 (3件)

表の作り方が悪いためでしょう。


0から最初の(一番小さい)区分間でのコードを振らすため、最初に0を入れる必要が(通常では)あります。
0
30,000 B2:
50,000   B3:
100,000  B4:
120,000  B5:
--
すなわち、
01
30,0002
50,0003
100,0004
120,0005
としますが、0-30000は最初のコードを振ります。
1行ずれる感じです。その理由はVLOOKUP関数のTRUE型の解説書を見てください。「検索地より小さい阿智の最大値が検索される」とあります。わかりにくいですが、対応表の右列を1行ずらして、テストすれば判ります。
800003
11
300002
299991
400002
600003
700003
1100004
1300005
のようになります。
ーー
A   X
B
AからBはX と覚えましょう。
120000の後のBは記述しませんが、青天井です。
A    Z

といった感じです。
きっちりBは、次ぎの段階のコードが振られます。以上・以下・未満
に注意が必要です。対応表の作り方が1だけ増減して変わります。
それと通常=IF(A1="","",VLOOKUP())としますし、該当なしの手当てもします。
ーー
質問では、
A2: 30,000 B2: (1)
としてますが
A2: 30,000 0.5
とかぐらい敵に書いたほうが判りやすい。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
VLOOKUPを使う場合は最初に0を入れる必要があるのですね。
しかし、今回の場合B列を変更させる事が出来ません。
その場合はVLOOKUPではなく、やはり先にご回答頂いた様にINDEXとMATCHの組み合わせだけになってしまうのでしょうか?
もし他の簡略できる式がお分かりになれば、またご教授頂ければと思います。
有難う御座いました。

お礼日時:2007/07/10 23:48

>残念ながらB列は動かす事が出来ません。


◆そのような条件下であれば、これでいかがでしょうか?
=INDEX('重要原紙 (2)'!B2:B5,MATCH(1,INDEX(1/('重要原紙 (2)'!A2:A5>=H2),),0))
    • good
    • 0
この回答へのお礼

度々有難う御座います。
教えて頂いた式で無事解決しました。
有難う御座いました。

お礼日時:2007/07/10 23:39

その数式だと、(2)と出るのが正しいです。

式が×というより検索範囲の表がまずいです。

A2番地に30,000、A3番地に50,000ですね。
ということは、「30,000以上50,000未満」が(1)、「50,000以上100,000未満」が(2) ってことになっちゃいます。

1コずつずらして、こんな感じはいかがでしょうか?
H:価格 86,000
0 (1)
30000 (2)
50000 (3)
100000 (4)
120000 (5)

数式は、検索範囲$A$2:$B$21を$A$2:$B$22にすれば、そのまま使えます。

この回答への補足

早速のご回答有難う御座います。
言葉が足りませんでしたが、B列は全て【~以下】とさせたいのです。
30,000以下は全て(1)
30,001~50,000以下は全て(2)
・・・というカンジで。

せっかく、1コづつずらすというアドバイスを頂きましたが、残念ながらB列は動かす事が出来ません。
他に良い方法があれば、またご教授下さい。
宜しくお願い致します。

補足日時:2007/07/10 01:51
    • good
    • 0

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