Vba 多变量计数

Vba 多变量计数,vba,excel,excel-2007,variant,Vba,Excel,Excel 2007,Variant,我在过去使用过类似的变体,但它的解决方案是一维的。我想知道使用二维变量是否可行 我有一个不断变化的日期列表,与一周相对应,将按时间顺序输入。下一列是该周的计数C列是它发生的建筑物 例如,上图中显示的第一行发生在“10/2/2016”的一周,该周的计数为8,这意味着第2-9行中的建筑与该周相关,并在相应的每一周持续 我有每年的计数总和,因此对于“E1:G14”中的图表,我想分别计算每年建筑物的每次计数。我只是不知道如何处理它,以及变量是否有用,或者对范围使用CountIfs是否最有效 先谢谢你

我在过去使用过类似的变体,但它的解决方案是一维的。我想知道使用二维变量是否可行

我有一个不断变化的日期列表,与一周相对应,将按时间顺序输入。下一列是该周的计数<代码>C列是它发生的建筑物

例如,上图中显示的第一行发生在
“10/2/2016”
的一周,该周的计数为8,这意味着第
2-9行中的建筑与该周相关,并在相应的每一周持续

我有每年的计数总和,因此对于
“E1:G14”
中的图表,我想分别计算每年建筑物的每次计数。我只是不知道如何处理它,以及变量是否有用,或者对范围使用
CountIfs
是否最有效

先谢谢你

代码

Private Sub maybe()

    Dim sht As Worksheet: Set sht = Worksheets("Sheet3")
    Dim wk_cnt As Double: wk_cnt = sht.Range("A1", sht.Range("A1").End(xlDown)).Rows.Count
    Dim bld_cnt As Double: bld_cnt = sht.Range("C2", sht.Range("C2").End(xlDown)).Rows.Count
    Dim cnt As Double
    Dim yrs_cnt As Double
        If sht.Range("D3").Value = "" Then
            yrs_cnt = 1
        Else:
            yrs_cnt = sht.Range("D2", sht.Range("D2").End(xlDown)).Rows.Count
        End If
    Dim yrsArray As Range
        If sht.Range("D3").Value = "" Then
            Set yrsArray = sht.Range("D2")
        Else:
            Set yrsArray = sht.Range("D2", sht.Range("D2").End(xlDown))
        End If
    Dim vCnts As Variant

    ReDim vCnts(1 To 12, 1 To yr_cnt)
        vCnts(1, 1) = "Irving Building"
        vCnts(2, 1) = "Memorial Building"
        vCnts(3, 1) = "West Tower"
        vCnts(4, 1) = "Witting Surgical Center"
        vCnts(5, 1) = "Madison Irving Surgery Center"
        vCnts(6, 1) = "Marley Education Center"
        vCnts(7, 1) = "410 South Crouse"
        vCnts(8, 1) = "Physicians Office Building"
        vCnts(9, 1) = "Crouse Business Center"
        vCnts(10, 1) = "Commonwealth Place"
        vCnts(11, 1) = "Crouse Garage"
        vCnts(12, 1) = "CNY Medical Center"

    For x = 1 To yrs_cnt
        cnt = 0
        For y = 2 To wk_cnt
            If Year(sht.Cells(y, 1).Value) = sht.Cells(1, x + 5).Value Then
                cnt = cnt + sht.Cells(y, 2).Value
                sht.Cells(14, x + 5) = cnt
            End If
        Next y
    Next x

End Sub
编辑

带C列

仅包含A列和B列


我需要数字来匹配第二张图片,但当我把所有三列都包括进去时,它看起来就像我按年份分组后的第一张图片。如何修复此问题?

数据透视表似乎未正确使用“计数”列。当它显示“Count of Count”时,它告诉您显示的数字是数据范围中符合所选标准的行数。我认为,如果您将“值”字段设置更改为“求和”,您将对差异感到满意。见下文:


使用数据透视表。@SJR-在这种情况下,我该如何做呢。使用不同长度的列?@SJR-我编辑了我的问题。我遇到了一些问题