You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 21:06:23