2017-05-07 26 views
0

何らかの理由で、商品の重量と比較して、どれくらいの価格が計算されるのかを計算します。[Excel-VBA]セルから特定の価格を取得する

Excelで2つの列を作成しましたが、実際には、A1にLBSの量を入力すると、e.xの値が得られます。 100の場合、B1の出力は$ 150である必要があります。私は単純なVBAコードで何かを試しました。 ITは機能しますが、価格は時間外に変化します。

C(LBS)とD(price)の欄には、lbsとpricesを書き留めました(シート2)。 e.xの場合。

LBS Price 
100 150 
200 300 
300 450 

私は、次のコードをしました:

Private Sub CommandButton1_Click() 
Dim kilo As Integer, result As String 

kilo = Range("A1").Value 

Select Case kilo 
    Case Is >= 300 
     result = "450 euro" 
    Case Is >= 200 
     result = "300 euro" 
    Case Is >= 1 
     result = "150 euro" 
    Case Else 
     result = "nvt" 
End Select 

Range("B1").Value = result 

End Sub 

問題は、それが40000 LBSに行く、リストが長すぎるです。 40.000 LBS /重量の上に500ポンド/キロ当たりのxxxの価格があります

この式は100から199ポンドの間のこのようなものです、価格は€300です - 200から299の価格は€450になります、 -

アイデアはありますか?私はセルを結果にしたいので、体重が200〜300の場合、出力は450ユーロになるはずです。セル(B4)

ありがとうございます。

+0

。アルゴリズムを構築しようとする人がどれくらいいるのかよく分かりませんが、そうであれば、値の重みの完全なリストが必要になります。 – Ambie

+0

現時点でアルゴリズムは「重量/ 100 * 150」と見えますが、問題は次のとおりです。アルゴリズムは300ポンド後にtrueになるでしょうか? – Ambie

答えて

0

私はここにあなたのデータ構造にあまりにも明確でないんだけど、次は正しい方向にあなたを移動するために役立つはず:LBSのリストで

|シート2の価格(列C及びD)、そのリストが昇順にソートされ確実...

=VLOOKUP(A1,Sheet2!C:D,2,True) 

この式は、範囲Sheet2!C:Dの最初の列のセルA1の値を「ルックアップ」。一致が見つからない場合、Trueを最終パラメータとして使用して、(順序付けられた)リストをしきい値のセットとして扱います。満たされた最後のしきい値は「一致」の行と見なされます。 3番目のパラメータ2は、Sheet2!C:Dの範囲内の秒を取得することを意味します。

あなたはVLOOKUPhere

注用のOfficeのサポートページを見つけることができ、これはさらにいくつかの作業をせずに、あなたの「マックス」を処理しません。私は最高価格が何であるかそれほど明確でないんだけど、あなたはPriceFactor「LBS」あたりの範囲を計算するには、以下の式を使用することができます

=If([output] >= [Max], [Per LB Calculation], [output]) 
0

:あなたは、たとえば状の第2式の何かのための入力としてこれを使用することができます:その後、

PriceFactor = WorksheetFunction.RoundUp((Kilo/100), 0) 

Resultを取得するためにPriceFactor * 150を掛けます。あなた `If`文のようなビット - - または価格に重みを変換するアルゴリズム、または両者の組み合わせあなたは本当にどちらか価格マップに重量を見ている

コード

Option Explicit 

Private Sub CommandButton1_Click() 

Dim Kilo As Long, Result As Long 
Dim PriceFactor As Double 

Kilo = Range("A1").Value 

PriceFactor = WorksheetFunction.RoundUp((Kilo/100), 0) 
Result = PriceFactor * 150 

Range("B1").Value = Result 

End Sub 
関連する問題