VBA实现值对出现次数统计及符合条件记录导出
需求背景
需要从名为Table1的源工作表导出符合筛选规则的数据到output工作表,相关界面参考如下:
目前已完成基础筛选导出功能,对应VBA代码如下:
Sub missing() Dim ws, wsOut As Worksheet Set ws = ActiveWorkbook.Sheets("Table1") Set wsOut = ActiveWorkbook.Sheets("output") lastRow = ws.Range("G" & Rows.Count).End(xlUp).Row lastRowOut = wsOut.Range("G" & Rows.Count).End(xlUp).Row + 1 For i = 1 To lastRow If (ws.Cells(i, 10).Value = "") _ And _ ((ws.Cells(i, 7).Value = "Peking") Or _ (ws.Cells(i, 7).Value = "Tokio") Or _ (ws.Cells(i, 7).Value = "London")) _ And _ ((ws.Cells(i, 8).Value = "A") Or _ (ws.Cells(i, 8).Value = "B") Or _ (ws.Cells(i, 8).Value = "C")) _ Then wsOut.Range("B" & lastRowOut & ":C" & lastRowOut).Value = ws.Range("G" & i & ":H" & i).Value wsOut.Range("A" & lastRowOut).Value = i lastRowOut = lastRowOut + 1 End If Next i End Sub
现有代码的筛选规则:
- J列(第10列)单元格值为空
- G列(城市列)取值为
Peking/Tokio/London - H列(部门列)取值为
A/B/C
符合规则的行,会将原表行号写入输出表A列,对应城市、部门值写入输出表B、C列。
待新增需求
需要在现有导出功能基础上,额外增加(城市、部门)值对的出现次数统计,按示例标注的格式输出,参考效果如下:
之前尝试在If判断逻辑中嵌入Countifs方法实现统计,但运行未达到预期。
实际使用的数据规模:
- 城市列有40余个不同取值
- 部门列有10余个不同取值
- 总数据量超过6000条
需要可稳定运行的VBA实现方案。
内容的提问来源于stack exchange,提问作者Eren Jaeger
相关产品推荐
相关产品推荐




