我正在尝试编写两个VBA宏:
第一个采用变量(VariableA)并检查另一个变量(VariableB)的值。根据VariableB的值,将乘数应用于VariableA。然后获取VariableA的最终值(使用乘数)并输出到新变量(VariableC)。我尝试了一个“If Then Else”语句,这似乎不起作用(很可能是因为我做错了)。
第二个宏看起来总结将采用VariableC并根据VariableB的值对变量求和,并为每次出现的VariableB生成单个输出。
乘数
VariableA VariableB Multiplier VariableC
100 1998 1.4 140
100 1998 1.4 140
100 1999 1.7 170
100 1999 1.7 170
100 2000 2.0 200
100 2000 2.0 200
我试图在VBA中使用SumIfs,但我一直收到错误13,我认为这是来自VariableB和VariableA之间的格式差异。即使我将两个变量设置为相同的格式(整数),我仍然会得到错误。当我调试它时,它指向VariableB作为问题。
理想情况下,我试图让我的最终输出看起来像这样:
VariableB SumofVariableC
1998 280
1999 340
2000 400
我是VBA的新手,非常感谢任何人提供的帮助。谢谢。
就变量乘数而言,请尝试使用Select Case
Dim Vari as Integer
Dim Multi as Single
Vari = VariableB
Select Case Vari
Case Is = 1998
Multi = 1.4
Case Is = 1999
Multi = 1.7
Case Is = 2000
Multi = 2.0
Case Else
Multi = 1.5
End Select
就第二个问题而言,我不确定我是否了解最新情况,但似乎变量不匹配。您可能需要转换/转换它们。 Integer
数据类型与Single
数据类型(小数)不同。在转到错误点之前,使用convert to integer Cint
将产品更改为整数。
数据透视表可能适用于您的问题,可以通过简单的原始和列导航为您提供准确的结果
图片
公式
=INDEX(G$2:G$4,MATCH(B2,F$2:F$4,0))
=A2*INDEX(G$2:G$4,MATCH(B2,F$2:F$4,0))
=SUMIF(B$2:B$7,F2,D$2:D$7)
=SUMPRODUCT((B$2:B$7=F2)*A$2:A$7*G2)