• ベストアンサー

VLOOKUPでできますか?

添付の表のようにC2に重量(オンス)があります。 これをもとに、下の表から対応する料金(ドル)をD2に表示したいのですが、 少しうまくいきません。 =VLOOKUP(C2,A7:C28,3)としているのですが、これだと、表示したいひとつ下を 表示してしまいます。 添付の写真の例では、 オンスは22.2オンスです(C2) A17に20オンスがあるのですが、少し上回っていますので、その下の24オンスに 対応する料金の26.49ドルを表示するようにするにはどのようにすればいいでしょうか?

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

D2には =IF(SUM(C2),INDEX(C7:C18,COUNTIF(A7:A18,"<"&C2)+1),"") などのように記入しておきます。

wait4u
質問者

お礼

ありがとうございました。 このようにするとは全然考えられなかったです。 技ですねっ! 助かりました。

その他の回答 (3)

回答No.4

#2のフォロー、または言い訳! 料金テーブルが規則正しければ、できる程度で一般的ではなかった。 一応、今明示されている範囲であれば、VLOOKUPでもできる。(普通はその先もあるんでしょう...) =IF(AND(C2<=MAX(A$7:A$18),SUM(C2)),VLOOKUP(IF(C2>8,C2+3,C2),A$7:C$18,3),"計算でけまへん!") 検索値はこれで、(切り上げ整数) =ROUNDUP(A2/28.35,0)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

>=VLOOKUP(C2,A7:C28,3)としているのですが、これだと、表示したいひとつ下を 表示してしまいます。 そうなんですよね。それが仕様です。価格の対応表を工夫します。 私も使いにくいなと思ったことがあります。 ただよく考えて見れば、価格対応表を   重量範囲   A列  B列   0.1  1   1.1  2   2.1  3 ・・・・ といったように範囲で表を準備しておけとMSは考えているのかなと、勝手に解釈しました。 A列の前に一列挿入して C8セルに =B7+0.01 とか一列ずれたセルを参照する式を入れては如何でしょうか。  

回答No.2

既に難しいテクニックで解決してるようですが、あなたの式をちょっとイジルだけでイケマス! 一番の問題は「oz換算」の方です。これは考え方として、料金テーブルに合わせて「整数に切り上げ」にしないとダメ!(多分「ノーマライズ」という筈?) C2は、 =ROUNDUP(A2/28.35,0) あと、D2のVLOOKUPの検索の型は「FALSE」「TRUE」どちらでもOK!! =IF(SUM(C2),VLOOKUP(C2,A7:C999,3),"") 検索の型: 「FALSE」では一致したものを検索する。見つからないときは「#N/A」となる。 「TRUE」は一致したものがなければ、手前を検索する。

wait4u
質問者

お礼

ご回答ありがとうございました。 こんな風に考えればできたのですね!!

関連するQ&A