如何将价格乘以正确的货币值

时间:2019-09-04 15:18:51

标签: excel vba excel-formula

刚开始学习VBA

我想将产品价格乘以货币值以获得新价格。

htop

这是到目前为止我尝试过的代码。我不断收到对象未定义的错误。我该如何解决?

No      Name    Quantity Price Product Currency OrderID       Currency  $
1       Tim     5       5       A       HKD     RX12            HKD 1
2       Alan    6       5       A       HKD     PR22            USD 7.8
3       Alan    2       6       B       USD     PR22            CAN 6
4       Bob     3       5       A       HKD     ED45            
5       Bob     8       8       C       CAN     ED45            
6       Tim     10      6       B       USD     AS63            
7       Rose    12      8       C       CAN     LM36            
8       Cathy   15      6       B       USD     JI48            
9       Rose    2       5       A       HKD     HG54            
10      Tim     8       6       B       USD     VB87            

2 个答案:

答案 0 :(得分:0)

如果数据如下表所示

enter image description here

您可以使用L列中的简单公式来做到这一点

NetTopologySuite.Geometries.Point ReferenceColor = ...
double MaximumVariance = ...

context.Point.Select(m => new {
   ID = m.ID,
   Name = m.Name,
   ...
   ColorVariance = m.Color.Distance(ReferenceColor),
})
.Where(m => m.ColorVariance < MaximumVariance && ...)
.OrderBy(m => m.ColorVariance)
.ThenBy(...)

它使用MATCH function在货币列表(第I列)中找到货币(第F列)并返回其行号。并将其与INDEX function组合以返回该匹配行的货币因子(J列),最后将其与价格(D列)相乘。

答案 1 :(得分:0)

尝试一下。您最大的问题是如何声明变量。另外,P = 1 + i可以帮助您避免在第一个单元格中运行无限循环。希望这会有所帮助!

Sub NP()

    Dim NP As Long
    Dim i As Long
    Dim P As Long
    Dim curr As String

    For i = 2 To 10
    P = Cells(i, 4)
    curr = Cells(i, 6)
        If curr = "HKD" Then
            NP = Range("J2").Value * P
        ElseIf curr = "USD" Then
            NP = Range("J3").Value * P
        Else
            NP = Range("J4").Value * P
        End If
    P = 1 + i
    Next i

End Sub