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

基于每日输入表更新主表:公式或VBA统计需求咨询

解决方案

方案1:纯公式实现(仅适用于输入表保留历史数据)

如果你的输入表会按日期留存每日的表情录入数据(比如每日数据存放在独立行/区域),可以用Excel动态数组函数生成自动扩展的统计表格:

  • 假设输入表命名为输入表,A列是录入日期,每行对应当日的M28:O30表情数据
  • 主表A2单元格输入公式生成唯一日期序列:
    =UNIQUE(输入表!A2:A100)
    
  • 主表B2单元格统计当日:)数量:
    =BYROW(A2#, LAMBDA(date, COUNTIFS(输入表!A:A, date, 输入表!M:O, ":)")))
    
  • 主表C2单元格统计当日:(数量:
    =BYROW(A2#, LAMBDA(date, COUNTIFS(输入表!A:A, date, 输入表!M:O, ":(")))
    

当输入表新增日期行时,主表统计行会自动扩展。

方案2:VBA代码实现(适用于输入表每日覆盖更新)

如果输入表每日的表情数据会被覆盖(当日录入后次日替换),纯公式无法留存历史统计,必须用VBA自动追加数据到主表:

步骤1:添加VBA模块

  1. 按Alt + F11打开VBA编辑器
  2. 右键点击目标工作簿 → 插入 → 模块
  3. 粘贴以下代码:
Sub 每日满意度统计()
    Dim wsInput As Worksheet, wsMain As Worksheet
    Dim smileCount As Integer, sadCount As Integer
    Dim lastRow As Long
    
    ' 替换为你的实际工作表名称
    Set wsInput = ThisWorkbook.Worksheets("输入表")
    Set wsMain = ThisWorkbook.Worksheets("主表")
    
    ' 统计表情数量
    smileCount = Application.CountIf(wsInput.Range("M28:O30"), ":)")
    sadCount = Application.CountIf(wsInput.Range("M28:O30"), ":(")
    
    ' 定位主表下一个空行
    lastRow = wsMain.Cells(Rows.Count, 1).End(xlUp).Row + 1
    
    ' 写入当日数据
    With wsMain
        .Cells(lastRow, 1).Value = Date
        .Cells(lastRow, 1).NumberFormat = "yyyy/mm/dd"
        .Cells(lastRow, 2).Value = smileCount
        .Cells(lastRow, 3).Value = sadCount
    End With
    
    MsgBox "当日统计已保存至主表", vbInformation
End Sub

步骤2:设置自动触发(可选)

若需要自动执行,可在工作表对象中添加触发代码:

  • 双击输入表的工作表对象(VBA编辑器左侧),粘贴以下代码:
' 打开工作簿时自动执行,避免重复添加当日记录
Private Sub Workbook_Open()
    Dim wsMain As Worksheet
    Set wsMain = ThisWorkbook.Worksheets("主表")
    
    If wsMain.Columns(1).Find(Date, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then
        每日满意度统计
    End If
End Sub

' 输入表M28:O30区域修改时自动执行,仅当日无记录时添加
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("M28:O30")) Is Nothing Then
        Dim wsMain As Worksheet
        Set wsMain = ThisWorkbook.Worksheets("主表")
        
        If wsMain.Columns(1).Find(Date, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then
            每日满意度统计
        End If
    End If
End Sub

使用注意:

  • 确保主表A1、B1、C1已设置表头:日期、笑脸数量、哭脸数量
  • 代码中工作表名称需与你的实际表名一致
  • 手动执行可通过「开发工具」→「宏」选择每日满意度统计运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 00:35:11