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

如何在Excel中按EventNum自动统计雌雄动物各行为的出现次数?

三种自动化统计方案(针对5万+行相机陷阱数据)

已经帮你整理了三种无需手动统计的方法,按需选就行:


方案1:Excel动态数组公式(零代码,适合Excel 365/2021+)

  1. 提取唯一EventNum:在Sheet2的A2单元格输入=UNIQUE(Sheet1!B:B),自动生成所有不重复的事件编号。
  2. 统计行为次数:
    • 若行为是TRUE/FALSE标记(TRUE表示出现),比如统计雄性行为1的次数,在Sheet2的B2输入:
      =COUNTIFS(Sheet1!B:B,A2,Sheet1!C:C,TRUE)
    • 若行为是文本(比如“觅食”),则把条件改成对应的文本:
      =COUNTIFS(Sheet1!B:B,A2,Sheet1!C:C,"觅食")
  3. 横向/下拉拖动公式,覆盖所有11种雌雄行为列,自动完成全量统计。

方案2:Power Query(高效处理大数据,一键刷新)

适合5万+行的大数据集,速度比公式快,数据更新后右键就能刷新结果:

  1. 选中Sheet1的原始数据区域,点击「数据」→「从表格/区域」(确认数据有表头)。
  2. 在Power Query编辑器中,点击「转换」→「分组依据」:
    • 分组列选EventNum
    • 点击「添加分组」,给每个雄性/雌性行为单独设置统计项:
      操作选「计数行」,自定义列名(比如“雄性行为1次数”),然后设置条件为[雄性行为1列名] = TRUE(文本行为就等于对应文本)
  3. 所有统计项添加完后,点击「关闭并上载」,选择上载到Sheet2即可。

方案3:VBA宏(一键批量生成,适合重复执行)

  1. 按Alt+F11打开VBA编辑器,插入新模块,粘贴以下代码:
Sub 统计动物行为次数()
    Dim 源表 As Worksheet, 目标表 As Worksheet
    Dim 最后行 As Long, i As Long, j As Long
    Dim 事件字典 As Object, 事件编号 As Variant
    Dim 雄性行为列 As Variant, 雌性行为列 As Variant
    Dim 列名 As String
    
    ' 指定工作表(按实际修改表名)
    Set 源表 = ThisWorkbook.Sheets("Sheet1")
    Set 目标表 = ThisWorkbook.Sheets("Sheet2")
    Set 事件字典 = CreateObject("Scripting.Dictionary")
    
    ' 替换成你实际的11种雌雄行为列名
    雄性行为列 = Array("雄性行为1", "雄性行为2", "雄性行为3")
    雌性行为列 = Array("雌性行为1", "雌性行为2", "雌性行为3")
    
    ' 清空目标表旧数据(保留表头)
    目标表.Range("A2:Z" & 目标表.Cells(目标表.Rows.Count, "A").End(xlUp).Row).ClearContents
    
    ' 遍历源数据统计次数
    最后行 = 源表.Cells(源表.Rows.Count, "B").End(xlUp).Row
    For i = 2 To 最后行
        事件编号 = 源表.Cells(i, "B").Value
        If Not 事件字典.Exists(事件编号) Then
            ReDim 统计数组(0 To UBound(雄性行为列) + UBound(雌性行为列) + 1)
            统计数组(0) = 事件编号
            事件字典(事件编号) = 统计数组
        End If
        
        ' 统计雄性行为
        For j = 0 To UBound(雄性行为列)
            列名 = 雄性行为列(j)
            If 源表.Cells(i, 列名).Value = True Then ' 文本行为改成 = "行为名称"
                事件字典(事件编号)(j + 1) = 事件字典(事件编号)(j + 1) + 1
            End If
        Next j
        
        ' 统计雌性行为
        For j = 0 To UBound(雌性行为列)
            列名 = 雌性行为列(j)
            If 源表.Cells(i, 列名).Value = True Then
                事件字典(事件编号)(j + UBound(雄性行为列) + 2) = 事件字典(事件编号)(j + UBound(雄性行为列) + 2) + 1
            End If
        Next j
    Next i
    
    ' 写入目标表表头
    目标表.Cells(1, "A").Value = "EventNum"
    For j = 0 To UBound(雄性行为列)
        目标表.Cells(1, j + 2).Value = 雄性行为列(j)
    Next j
    For j = 0 To UBound(雌性行为列)
        目标表.Cells(1, j + UBound(雄性行为列) + 3).Value = 雌性行为列(j)
    Next j
    
    ' 写入统计结果
    i = 2
    For Each 事件编号 In 事件字典.Keys
        目标表.Cells(i, "A").Resize(1, UBound(事件字典(事件编号)) + 1).Value = 事件字典(事件编号)
        i = i + 1
    Next 事件编号
    
    MsgBox "统计完成!"
End Sub
  1. 修改代码里的雄性行为列和雌性行为列数组,换成你实际的11种行为列名。
  2. 按F5运行代码,Sheet2会自动生成所有EventNum的行为统计结果。

内容的提问来源于stack exchange,提问作者Ellka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:07:34