使用Excel进行个人计划执行记录与统计分析( 二 )


Set rngDatas =wksRecord.Range(“A1:G” & lngDataLastRow)
‘初始化筛选条件和筛选值放置的区域
With wksRecord
.Range(“J2″) =”>=” & [StartDate]
.Range(“K2″) =”<=” & [EndDate]
.Range(“M1:S” &Rows.Count).Clear
Set rngCriteria =.Range(“J1:K2”)
Set rngFilterData =https://www.i8ku.com/2021/.Range(“M1”)
End With
‘筛选数据
rngDatas.AdvancedFilterAction:=xlFilterCopy, _
CriteriaRange:=rngCriteria, _
CopyToRange:=rngFilterData
‘获取筛选的数据
lngFilterLastRow =wksRecord.Range(“M” & Rows.Count).End(xlUp).Row
If lngFilterLastRow = 1 Then Exit Sub
‘清除统计表中已有数据
lngLastRow = wksStat.Range(“B”& Rows.Count).End(xlUp).Row
wksStat.Range(“C7:D” &lngLastRow).ClearContents
‘分析数据并将结果输入到数据分析工作簿
For Each rng In [Category]
lngCount =
For Each cell InwksRecord.Range(“S2:S” & lngFilterLastRow)
If rng = cell Then
rng.Offset( , 1) =rng.Offset( , 1) + cell.Offset( , -2)
lngCount = lngCount + 1
End If
Next cell
rng.Offset( , 2) = lngCount
Next rng
End Sub
代码中有很多“硬编码”,例如wksStat.Range(“C7:D” & lngLastRow)和wksRecord.Range(“S2:S” &lngFilterLastRow)中的单元格引用 。如果工作表中的分类或列数据有增减,要作相应的修改 。
代码的图片版如下:

使用Excel进行个人计划执行记录与统计分析


结语:不必拘束于代码的优雅,也不必在意通用性,只要能够解决问题,快速实现自已的目的,适合自已就行,这就是VBA最大的好处 。

猜你喜欢