我想问一下,在Excel中的VBA中是否有可能将代码的一部分存储在字符串中,我的意思是在下面的例子中显示(这段代码不起作用):
Sub newMacro()
Dim wb As Workbook
Dim ws As Worksheet
Dim sAdditional As String
Dim rngWhereCount_1 As Range
Dim rngWhereCount_2 As Range
Dim iCellValue As Integer
Dim i as integer
Set wb = ThisWorkbook
Set ws = wb.Worksheets(1)
Set rngWhereCount_1 = ws.Columns(1)
Set rngWhereCount_2 = ws.Columns(2)
For i = 1 To 10
If (i = 1) Or (i = 2) Then
sAdditional = ", rngWhereCount_2, i"
Else
sAdditional = ""
End If
iCellValue = Application.WorksheetFunction.CountIfs(rngWhereCount_1, 1 & sAdditional)
Next i
End Sub
所以问题是,是否有一种简单而聪明的方式来声明sAdditional(可能不是字符串),但是在循环内使它成为可选的,同时sAdditional包含范围和字符串...
提前致谢! P上。
答案 0 :(得分:1)
我认为不可能同时包含String
和Range
的变量。假设您正在计算正数,您可以执行以下操作:
strCriterion2
。然后strCriterion2 = IIf(i=1 or i=2,"i",">=0").
因此strCriterion2
等于"i"
或">=0"
,具体取决于i
的值。CountIfs
写为CountIfs(rngWhereCount_1, 1, rngWhereCount_2, strCriterion2)
。我们的想法是,每当我们不希望激活第二个标准时,我们输入一个我们知道该范围内所有条目都有效的标准。因此,如果所有条目都是正数,那么如果我们强加">=0"
,第二个标准将被取消。如果您想要包含负数,可以使用">=-2.2251E-308"
代替">=0"
(取决于您拥有的Excel版本,我给出的数字对于Excel 2003来说最低)。
我希望以上有所帮助。