excel自动统计函数或VBA,2万条数据,要求如图

如题所述

假设数据列是 A, B, C, D列,后面统计列为G, H, I, J列,数据从第3行开始,则

1990年(含1990)以后:

H3=COUNTIFS(A:A, G3, B:B, ">=1990")

1990年以前的:

I3=COUNTIFS(A:A, G3, B:B, "<1990")

有社保人数:

J3=SUMIF(A:A, G3,C:C )

有了最后一行的公式,下面的只有下拉即可。当然不是让你两万多条数据一点一点往下拉,鼠标停留在单元格右下角,出现黑十字的时候双击即可

追问

谢谢高技术回答。假如在1990-2000年之间出生,公式是?
=COUNTIFS(A:A,D3,C:C,">=1990&<=2000")这个公式好像不对,具体条件该如何写?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-08-29

用数组+字典,这样代码比较简洁,不知道为什么动画效果很差,右击图片选择在新标签页中打开动画效果就好了。

Sub aaa()
    Dim a, b(1 To 20000, 1 To 3), d, m%
    a = Range("a2:d" & Cells(Rows.Count, 1).End(xlUp).Row)
    Set d = CreateObject("Scripting.dictionary")
    For i = 1 To UBound(a)
        If Not d.Exists(a(i, 1)) Then m = m + 1: d(a(i, 1)) = ""
        If Val(a(i, 3)) < 1990 Then
           b(m, 2) = b(m, 2) + 1
        Else
            b(m, 1) = b(m, 1) + 1
        End If
        If Val(a(i, 4)) = 1 Then
           b(m, 3) = b(m, 3) + 1
        End If
    Next
    Range("f2").Resize(m, 1) = Application.Transpose(d.keys)
    Range("g2").Resize(m, 3) = b
    Set d = Nothing
End Sub

第2个回答  2018-08-29
数据透视表
countifs都可以实现。
第3个回答  2018-08-29
来来VBA搞起来!
文件发来!
第4个回答  2018-08-29
数据透视表功能可以解决你的问题。
相似回答