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

大数据集中多结果匹配求助:Excel重复加热器ID时间范围判断

解决方案:匹配所有重复加热器ID的时间范围判断

一、Excel公式方案(兼容所有Excel版本)

在K3单元格输入以下公式,然后横向、纵向填充到目标区域即可:

=IF(SUMPRODUCT(($B$3:$B$66=K$2)*($J3>$C$3:$C$66)*($J3<$D$3:$D$66))>0,1,0)

公式说明:

  • $B$3:$B$66=K$2:遍历B列所有行,标记出与当前列加热器ID匹配的行(匹配为1,不匹配为0)
  • $J3>$C$3:$C$66:标记出J列时间戳大于对应C列开始时间的行
  • $J3<$D$3:$D$66:标记出J列时间戳小于对应D列结束时间的行
  • SUMPRODUCT将三个条件的结果相乘后求和,只要有一行同时满足三个条件,总和就会大于0,此时返回1,否则返回0

如果是Excel 365/2021版本,也可以用更简洁的动态数组公式:

=IF(COUNTIFS($B$3:$B$66,K$2,$C$3:$C$66,"<"&$J3,$D$3:$D$66,">"&$J3)>0,1,0)

二、VBA自定义函数方案

如果需要更灵活的逻辑,或者数据量极大时,可以用自定义函数实现:

  1. 按下Alt+F11打开VBA编辑器
  2. 插入一个新模块,粘贴以下代码:
Function CheckHeaterTime(heaterID As Variant, timestamp As Date, idRange As Range, startTimeRange As Range, endTimeRange As Range) As Integer
    Dim i As Long
    CheckHeaterTime = 0 ' 默认返回0
    
    ' 校验输入区域行数一致
    If idRange.Rows.Count <> startTimeRange.Rows.Count Or idRange.Rows.Count <> endTimeRange.Rows.Count Then
        Exit Function
    End If
    
    ' 遍历所有行,检查匹配条件
    For i = 1 To idRange.Rows.Count
        If idRange.Cells(i, 1).Value = heaterID And _
           timestamp > startTimeRange.Cells(i, 1).Value And _
           timestamp < endTimeRange.Cells(i, 1).Value Then
            CheckHeaterTime = 1
            Exit For ' 找到符合条件的实例后直接退出循环
        End If
    Next i
End Function
  1. 返回Excel,在K3单元格输入以下公式,填充到目标区域:
=CheckHeaterTime(K$2,$J3,$B$3:$B$66,$C$3:$C$66,$D$3:$D$66)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 10:52:26