我正在尝试编写两个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的新手,非常感谢任何人都可以提供的任何帮助。谢谢。
答案 0 :(得分:0)
就变量乘数而言,请尝试使用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
数据类型(用于小数)不同。在到达错误点之前,使用转换为整数 Cint
将乘积更改为整数。
答案 1 :(得分:0)
数据透视表可以解决您的问题,并且可以通过在其原始列和列上轻松导航而获得准确的结果
答案 2 :(得分:0)
图像可用于更好地说明哪些数据是源(初始)数据,哪些是目标(结果)数据,例如A和B列中有数据。我(要创建)在F列中(或在A列中的另一个工作表中或以逗号分隔的字符串中)B列的数据的唯一列表,以及在G列中具有匹配的乘数我需要计算数据...并将其复制到I列中。不需要C列和D列...等等。
Workbook Download (Dropbox)
图片
公式
=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)