如何在多种条件下正确使用For循环

时间:2016-12-14 14:37:16

标签: excel vba loops for-loop

我在下面有以下循环:

With Sheets("Sheet Name")
    For i = 2 To 26
        .Cells(11, i).Formula = Application.WorksheetFunction.CountIfs(Sheets("Sheet1").Range("F8:F" & n), Sheets("Sheet2").Range(Chr(64 + i) & "8"), Sheets("Sheet1").Range("AC8:AC" & n), "S")
        .Cells(12, i).Formula = Application.WorksheetFunction.CountIfs(Sheets("Sheet1").Range("F8:F" & n), Sheets("Sheet2").Range(Chr(64 + i) & "8"), Sheets("Sheet1").Range("AC8:AC" & n), "YS")            
    Next i
End With

每行末尾的最后一个条件改变一个字符串,即" S"," YS"。我想避免每个人使用1行" S"和" YS"等等,即每个标准将有许多行。我还想添加另一个处理行

的for循环

2 个答案:

答案 0 :(得分:4)

codes = Array("S", "YS")
For i = 2 To 26
    For j = 0 to UBound(codes)
        Sheets("Sheet Name").Cells(11+j, i).Formula = Application.WorksheetFunction.CountIfs(Sheets("Sheet1").Range("F8:F" & n), Sheets("Sheet2").Range(Chr(64 + i) & "8"), Sheets("Sheet1").Range("AC8:AC" & n), codes(j))
    Next j
Next i

答案 1 :(得分:-1)

我的长篇问题和改进列表中的下一步是模拟这个,但对于SUMIFS,因为我正在查看成本数据。

请参阅下文,我希望其他人可以从中受益,也许可以改善!

With Sheets("Operations Schedules -Summary")
    For i = 2 To 26
        For j = 0 To UBound(codes)
            .Cells(37 + j, i).Formula = Application.WorksheetFunction.SumIfs(Sheets("Sheet1").Range("AD8:AD" & n), Sheets("Sheet1").Range("F8:F" & n), Sheets("Sheet2").Range(Chr(64 + i) & "8"), Sheets("Sheet1").Range("AC8:AC" & n), codes(j))
        Next j
    Next i
End With

SUMIFS的一些基本语法:

  • 第一部分是指定总和范围
  • 第二部分是指定标准范围,然后是critera
  • 这相当于我相信的197个标准!

任何新手都会查看上述变量的各种资格:

  • i,j和n是long类型的变量。 n用于计算(动态)目标数据集中的行数