2

我想问一下在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 在里面包含 Range 和字符串......

提前致谢!P。

4

1 回答 1

1

我认为不可能有一个同时包含 aString和 a的变量Range。假设您正在计算正数,您可以执行以下操作:

  • 定义一个字符串变量strCriterion2。那么strCriterion2 = IIf(i=1 or i=2,"i",">=0").SostrCriterion2等于"i"">=0",具体取决于 的值i
  • 写你的CountIfsas CountIfs(rngWhereCount_1, 1, rngWhereCount_2, strCriterion2)

这个想法是,每当我们不希望激活第二个标准时,我们输入一个我们知道对该范围内的所有条目都有效的标准。因此,如果所有条目都是正数,那么如果我们强加 ,则第二个标准将被取消">=0"。如果您想包含负数,您可以使用">=-2.2251E-308"代替">=0"(也取决于您拥有的 excel 版本,我给出的数字对于 Excel 2003 是最低的)。

我希望以上内容有所帮助。

于 2013-08-05T17:21:25.237 回答