计数多个变体
Count with multiple variants
我过去曾将变体用于类似的事情,但它的解决方案是一维的。我想知道使用二维变体是否可行。
我一直在更改与一周相对应的日期列表,这些日期将按时间顺序输入。下一列是该周的计数。 Column C
是它发生的建筑物。
例如,上图中显示的第一行发生在 "10/2/2016"
的那一周,那一周的计数为 8,这意味着第 2-9
行中的建筑物与该周相关一周,并在每个相应的一周继续。
我有每年的计数总和,所以对于"E1:G14"
中的图表,我想分别计算每年建筑物的每次计数。我只是对如何处理它以及 Variants 是否有用或者使用 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" 列。在显示 "Count of Count" 的地方,它告诉您显示的数字是您的数据范围内有多少行符合所选条件。我认为,如果您将值字段设置更改为 SUM,您会对差异感到满意。见下文:
我过去曾将变体用于类似的事情,但它的解决方案是一维的。我想知道使用二维变体是否可行。
我一直在更改与一周相对应的日期列表,这些日期将按时间顺序输入。下一列是该周的计数。 Column C
是它发生的建筑物。
例如,上图中显示的第一行发生在 "10/2/2016"
的那一周,那一周的计数为 8,这意味着第 2-9
行中的建筑物与该周相关一周,并在每个相应的一周继续。
我有每年的计数总和,所以对于"E1:G14"
中的图表,我想分别计算每年建筑物的每次计数。我只是对如何处理它以及 Variants 是否有用或者使用 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" 列。在显示 "Count of Count" 的地方,它告诉您显示的数字是您的数据范围内有多少行符合所选条件。我认为,如果您将值字段设置更改为 SUM,您会对差异感到满意。见下文: