Oracle SQL实现LogIn/LogOut动作的增量计数器需求咨询
实现累计计数器列的方法
针对你需要实现的逐行累计Counter列(LogIn+1、LogOut-1),以下是几种可行的电子表格实现方案,同时说明你用COUNTIF失败的原因:
方案一:直接累加(简单直观)
假设你的数据从第1行表头开始,Action列是C列,Counter列放在D列:
- 在D2单元格(对应第一行数据)输入:
=IF(C2="LogIn", 1, -1) - 在D3单元格输入:
=D2 + IF(C3="LogIn", 1, -1) - 选中D3单元格,下拉填充到所有数据行即可。
这个方法的逻辑是每一行的Counter值等于上一行的Counter加上当前Action对应的增减值,简单易懂。
方案二:用COUNTIF实现(修正你之前的错误)
你之前用COUNTIF失败,大概率是因为引用范围没有固定起始行。正确的公式应该是累计统计到当前行的所有LogIn和LogOut数量,再做差值:
在D2单元格输入:
=COUNTIF($C$2:C2,"LogIn") - COUNTIF($C$2:C2,"LogOut")
然后下拉填充到所有行。
这里的$C$2是绝对引用,固定了统计的起始行,下拉时范围会自动扩展为$C$2:C3、$C$2:C4等,从而实现累计计算。
方案三:SUM数组公式(适合动态数据场景)
如果你的表格可能会插入/删除行,用数组公式更灵活:
在D2单元格输入:
=SUM(IF($C$2:C2="LogIn",1,-1))
- 如果你用的是Excel 365/2021,直接回车即可;
- 旧版Excel需要按
Ctrl+Shift+Enter作为数组公式确认; - Google Sheets直接回车生效。
这个公式会自动对从C2到当前行的所有Action进行判断求和,得到累计Counter值。
内容的提问来源于stack exchange,提问作者Mick
相关产品推荐
相关产品推荐

