[Excel VBA]从单元格获取指定价格
出于某些原因,我想计算一个价格与一件物品的重量相比是多少 我在excel中创建了两列,我真正想要的是,如果我在A1中输入磅的数量,对于e.x.100,输出需要是150美元,在B1中。我尝试了一些简单的VBA代码。它可以工作,但价格会随着时间的推移而变化 在C列(磅)和D列(价格),我已经写下了磅和价格(在第2页)。 对于e.x 我有以下代码:[Excel VBA]从单元格获取指定价格,vba,excel,Vba,Excel,出于某些原因,我想计算一个价格与一件物品的重量相比是多少 我在excel中创建了两列,我真正想要的是,如果我在A1中输入磅的数量,对于e.x.100,输出需要是150美元,在B1中。我尝试了一些简单的VBA代码。它可以工作,但价格会随着时间的推移而变化 在C列(磅)和D列(价格),我已经写下了磅和价格(在第2页)。 对于e.x 我有以下代码: Private Sub CommandButton1_Click() Dim kilo As Integer, result As String kil
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磅。在40000磅/重量的基础上,每500磅/公斤有xxx的价格
公式是这样的,在100到199磅之间,价格是300欧元-
200到299之间的价格为450欧元-
有人有主意吗?我想要得到单元格,所以如果权重在200到300之间,输出应该是450欧元,-单元格(B4)
非常感谢。我不太清楚您的数据结构,但以下内容将帮助您朝着正确的方向前进: 在第2页(C列和D列)中列出LBS |价格,确保列表按升序排序
=VLOOKUP(A1,Sheet2!C:D,2,True)
此公式“查找”范围表2第一列中单元格A1
中的值!C:D
。如果没有找到匹配项,通过使用True
作为最终参数,我们将(有序)列表视为一组阈值。。。达到或超过的最后一个阈值将被视为“匹配”行。第三个参数2
,表示我们检索范围Sheet2!内的第二个参数!C:D
您可以找到VLOOKUP
注意,如果没有进一步的工作,这将无法处理“Max”。例如,您可以将其用作第二个公式的输入,例如:
=If([output] >= [Max], [Per LB Calculation], [output])
我不太清楚什么是最高价格,但您可以使用下面的公式来计算每个“磅”范围的
价格系数:
然后乘以PriceFactor*150
,得到结果
代码
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
您实际上是在查看权重到价格的映射(有点像您的If
语句),或者是将权重转换为价格的算法,或者是两者的组合。我不知道有多少人会喜欢尝试构建这个算法,但有些人可能会,如果他们这样做,他们会想要完整的权重-价格值列表-也许现在就编辑你的帖子,将其包括在内。目前这个算法看起来是weight/100*150
,但问题是:300磅后这个算法会成立吗。
PriceFactor = WorksheetFunction.RoundUp((Kilo / 100), 0)
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