[英]Get information from a dictionary and set it in a cell in excel-vba
[英][Excel-VBA]Getting the specif price from cell
由于某些原因,我想计算与物品重量相比的价格。
我在excel中创建了两列,我真正想要的是,如果我在A1中输入了LBS的数量(例如100),则在B1中的输出需要为$ 150-。 我已经尝试了一些简单的VBA代码。 IT有效,但是价格会随着时间变化。
在C栏(LBS)和D栏(价格),我写下了磅和价格(在表2中)。 对于前
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)
非常感谢你。
我对您的数据结构不太清楚,但以下内容应有助于您朝正确的方向前进:
与您的LBS列表| 工作表2中的价格(C和D列),确保列表按升序排序...
=VLOOKUP(A1,Sheet2!C:D,2,True)
此公式从“ Sheet2!C:D
”范围第一列的单元格A1
中“查找”值。 如果找不到匹配项,则使用True
作为最终参数,我们将(有序)列表视为一组阈值...满足或超过的最后一个阈值将被视为“匹配”行。 第三个参数2
,意味着我们在Sheet2!C:D
范围内检索第二个参数。
您可以在此处找到VLOOKUP
的Office支持页面
请注意,如果不做进一步的工作,这将无法处理您的“最高”费用。 例如,您可以将其用作第二个公式的输入,例如:
=If([output] >= [Max], [Per LB Calculation], [output])
我不清楚最高价格是多少,但是您可以使用以下公式计算每个“ LBS”范围的PriceFactor
:
PriceFactor = WorksheetFunction.RoundUp((Kilo / 100), 0)
然后将PriceFactor * 150
乘以得到Result
。
码
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.