我正在尝试创建一个VBA命令,该命令经历了很多案例,以便找到佣金费用百分比。首先,我需要将ID与特殊ID列表进行比较(使用一个整数,循环遍历30个整数的列)。我还需要检查'komisija'值是否大于40,然后返回40。
Dim klienta_nr As Long
Dim ISIN As String
Dim Cena As Double
Dim Skaits As Double
Dim Komisija As Double
Set kSheet = ThisWorkbook.Sheets("komisijas")
'Set variables equal to the cell data
klienta_nr = Range("A2").Value
ISIN = Range("E2").Value
Cena = Range("H2").Value
Skaits = Range("I2").Value
'First, have case for non-special klients
If Application.WorksheetFunction.Match(klienta_nr, kSheet.Range("A2:A40")) Then
If Right(klienta_nr, 1) = 1 Or Right(klienta_nr, 1) = 8 Then
Komisija = (Cena * Skaits) * 0.003
End If
If Right(klienta_nr, 1) = 7 Then
Komisija = (Cena * Skaits) * 0.01
End If
If Komisija > 40 Then
Range("K2").Value = Komisija
End If
Range("K2").Value = Komisija
End If
Range("K2").Value = Komisija
答案 0 :(得分:0)
如果我理解正确,你必须这样做:
for each k in range("komisijas")
If klienta_nr = k.value Then
If Right(klienta_nr, 1) = 1 Or Right(klienta_nr, 1) = 8 Then
Komisija = (Cena * Skaits) * 0.003
If Right(klienta_nr, 1) = 7 Then
Komisija = (Cena * Skaits) * 0.01
End If
If Komisija > 40 Then
Range("D4").Value = 40
End If
Range("D4").Value = Komisija
End If
next
此代码未经过测试。
答案 1 :(得分:0)
试试这个:
Dim var as Variant
var = Application.WorksheetFunction.Match(klienta_nr, kSheet.Range("A2:A17"))
If Not iserror(var) Then
答案 2 :(得分:0)
我最终使用Application.Match函数来比较变量。通过这样做,我能够得到我想要的预期结果。
'Set variables equal to the cell data
klienta_nr = Range("A2").Value
ISIN = Range("E2").Value
Cena = Range("H2").Value
Skaits = Range("I2").Value
vk = Range("B2").Value
If Not Application.Match(klienta_nr, kSheet.Range("A2:A100")) Then
'IP2, 0.03% komisija, 40 EUR/USD Max
If Right(vk, 1) = 1 Or Right(vk, 1) = 8 Then
Komisija = (Cena * Skaits) * 0.003
Range("K2").Value = Komisija
End If
'IP1, 0.1% komisija, 40 EUR/USD Max
If Right(vk, 1) = 7 Then
Komisija = (Cena * Skaits) * 0.01
Range("K2").Value = Komisija
End If
'Komisija MAX is 40, so anything >=40 equals 40
If Komisija >= 40 Then
Range("K2").Value = 40
End If
End If