我有网上商店的销售报告,需要计算每个订单行的商品成本。订单行可能看起来像其中之一:

2x Lavazza Crema e香气1kg-1x Lavazza Dolce Caffe Crema 1kg

1x Lavazza自动售货机香熏上衣1kg-1x Arcaffe Roma 1Kg-1x Kimbo-100%阿拉比卡顶级风味

因此,我需要Excel进行的工作是提取每种产品,并从另一张纸上通过vlookup函数查找其成本,然后将其乘以订购的数量。问题在于订购的产品数量可能从1到10+不等。
我尝试使用VBA进行计算,但是代码不起作用(我目前不使用乘法)
也许可以使用excel公式解决此问题?

Function GoodsCost(str, Optional strDelim As String = " ")
larray = Split(str, strDelim)
Set lookup_range = Worksheets("Products").Range("B:E")
For i = LBound(larray) To UBound(larray)
    skuarray = Split(larray(i), "x ")
    skucost = Application.WorksheetFunction.VLookup(UBound(skuarray), lookup_range, 4, False)
    cost = cost + skucost
Next i
GoodsCost = cost
End Function

最佳答案

好吧,看来现在问题已经解决了。当然,仅当假设产品说明中不包含破折号(-)时,该方法才有效。但是可以在产品列表中进行设置。另一个机会是使用另一个分号(例如“ /”)。我们可以使用Ctrl + F查找所有组合,例如“ x-”,并将其替换为“ x /”)

Function GoodsCost(str)
Dim answer As Double
Set Products = Worksheets("Products").Range("B:E")
larray = Split(str, " - ")
For i = LBound(larray) To UBound(larray)
    sku = Split(larray(i), "x ")
    Price = Application.WorksheetFunction.VLookup(sku(1), Products, 4, False) * sku(0)
    answer = answer + Price
Next i
GoodsCost = answer
End Function

10-05 21:29