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

如何设置条件触发规则实现单元格数据自动复制(会议考勤适用)

考勤自动统计实现方案

适用前提

假设你表格的基础结构如下,可根据你的实际情况修改对应参数:

  • 参会人姓名存放在 A列,从A2行开始
  • 出席标记输入在 B列,和姓名行一一对应
  • 出席人员姓名汇总输出到 D列

Excel 实现方法

方案1:函数公式(无需宏,兼容性好)

  1. 选中第一个要输出出席姓名的单元格(比如D2),输入以下公式:
=IFERROR(INDEX($A$2:$A$100,SMALL(IF($B$2:$B$100="P",ROW($A$2:$A$100)-ROW($A$1),""),ROW(A1))),"")
  1. 输入完成后:
    • Excel 365/2021版本:直接按回车即可
    • 更低版本:按 Ctrl+Shift+Enter 触发数组计算
  2. 把D2单元格的公式向下拖拽到和姓名列行数一致的位置即可,后续只要B列输入P,对应姓名就会自动出现在D列的汇总区。

提示:公式里的$A$2:$A$100替换为你实际的姓名列范围,$B$2:$B$100替换为你输入P的标记列范围。

方案2:VBA自动触发(无需手动拉公式,自动更新)

  1. 按 Alt+F11 打开VBA编辑器,在左侧项目栏双击你要设置规则的工作表,打开代码输入窗口
  2. 粘贴以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
    ' 可自定义以下三列的列号,A=1 B=2 C=3 以此类推
    Const NAME_COL As Integer = 1 ' 姓名列
    Const MARK_COL As Integer = 2 ' 标记P的列
    Const OUTPUT_COL As Integer = 4 ' 输出汇总列
    Dim lastRow As Long, i As Long, outputRow As Long
    
    ' 仅修改标记列时触发规则
    If Target.Column <> MARK_COL Then Exit Sub
    
    outputRow = 1
    Columns(OUTPUT_COL).ClearContents
    lastRow = Cells(Rows.Count, NAME_COL).End(xlUp).Row
    
    For i = 2 To lastRow
        If UCase(Cells(i, MARK_COL).Value) = "P" Then
            Cells(outputRow, OUTPUT_COL).Value = Cells(i, NAME_COL).Value
            outputRow = outputRow + 1
        End If
    Next i
End Sub
  1. 关闭VBA编辑器,把文件保存为.xlsm格式即可生效,后续修改标记列的内容会自动更新汇总结果,P不区分大小写。

Google Sheets 实现方法

直接在第一个输出单元格输入以下公式即可,不需要下拉,匹配到的姓名会自动溢出:

=FILTER(A2:A,B2:B="P")

提示:如果需要不区分大小写匹配P,可以用=FILTER(A2:A,UPPER(B2:B)="P")


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:15:02