汇总表的简化编码

时间:2014-05-05 21:15:34

标签: vba excel-vba excel

我正在编写一个宏来根据原始数据的计数创建摘要。
每个案例有100多行,有20个案例具有不同的价值。

raw data

我想显示这样的摘要:绿色区域表示所有行的计数值大于20.粉红色表示所有计数的总和。

result

为此,我写道:

Range("A2") = "Total"
Range("A3") = "Case 1"
Range("A4") = "Case 2"
Range("A5") = "Case 3"
Range("A6") = "Case 4"
....

对于绿地,我写道:

Range("B3").formula = "=COUNTIF(T:T, "">""20)"
Range("B3").formula = "=COUNTIF(T:T, "">""20)"
Range("B3").formula = "=COUNTIF(T:T, "">""20)"
Range("B3").formula = "=COUNTIF(T:T, "">""20)"
....

正如您所预测的那样,表格中的每个单元格都有很多代码行。
有没有简单的方法可以做到这一点?

2 个答案:

答案 0 :(得分:1)

这对我有用:

Dim n as Long, rng As Range

Set rng = ThisWorkBook.Range("A2")

For n = 1 to 20
    rng.Offset(n, 0).Value = "Case " & n
    rng.Offset(n, 1).Formula = "=COUNTIFS(S:S,""Case " & n & """,T:T,"">20"")"
Next n

答案 1 :(得分:1)

你也可以试试这个:

With ThisWorkbook.Sheets("YourSheetNameHere")
    .Range("A2").Value = "Total"
    .Range("B1").Value = "Category"
    .Range("S2", .Range("S" & .Rows.Count).End(xlUp).Address).Copy .Range("A3")
    .Range("A3", .Range("A" & .Rows.Count).End(xlUp).Address).RemoveDuplicates 1, xlNo
    .Range("B2").Formula = "=COUNTIF(T:T,"">20"")"
    .Range("B3", "B" & .Range("A" & .Rows.Count).End(xlUp).Row).Formula = _
        "=COUNTIFS(S:S,A3,T:T,"">20"")"
End With