使用2个独立的数据集(带有重复数据集) 数据集是唯一由ID标识的。 可能没有我要求的时间戳的条目。 数据集非常大,由于重复,无法使用vlookup。
样品:
表1:
Device Name|Time Bracket| On/Off?
ID1 |06:20:00 |
ID2 |06:20:00 |
ID3 |06:30:00 |
表2:
Device Name |Timestamp |On/Off?
ID1 |06:20:00 |On
ID2 |06:50:00 |Off
ID3 |07:20:00 |Off
我想要实现的目标:
我想要一个if语句来检查是否: 1)设备ID匹配AND 2)时间戳匹配
如果是,请从表2返回On / Off的值。 如果没有,那么我希望它返回它上面的单元格的值 IF 它是同一个设备,否则只是将“缺席”放入单元格中。
我认为我可以通过一些IF语句这样做:
=if(HOUR([@[Time Bracket]]) = HOUR(Table13[@[Timestamp Rounded (GMT)]]) and
minute([@[Time Bracket]]) = minute(Table13[@[Timestamp Rounded (GMT)]]) and
[@[Device Name]]=Table13[@[Device Name]], Table13[@[On/Off?]],
IF([@[Device Name]]=Table13[@[Device Name]], INDIRECT("B" and Rows()-1), "absent"))
(为了便于阅读,我在其中添加了一些换行符)
然而,这似乎根本没有解决......我做错了什么? 这甚至是实现这一目标的正确方法吗?
我也尝试过与VLookUp类似的东西,但这种情况非常糟糕。
全部谢谢!
答案 0 :(得分:0)
为了不处理数组公式或合并字符串,(在你的情况下)最后仍然可能是错误的,我建议使用COUNTIFS
因为事实,你的数量非常少结果(只是打开或关闭)......
表示第一个表(从A1开始,因此公式为C2):
=IFERROR(CHOOSE(
OR(COUNTIFS(Table13[Device Name],[@[Device Name]],Table13[Timestamp],[@[Time Bracket]],Table13[On/Off?],"On"))+
OR(COUNTIFS(Table13[Device Name],[@[Device Name]],Table13[Timestamp],[@[Time Bracket]],Table13[On/Off?],"Off"))*2
,"On","Off","Error"),IF(A1=[@[Device Name]],C1,"Absent"))
这也将显示“开启”和“关闭”匹配的“错误”...跳过并提高速度,您也可以使用:
=IF(COUNTIFS(Table13[Device Name],[@[Device Name]],Table13[Timestamp],[@[Time Bracket]],Table13[On/Off?],"On"),"On",
IF(COUNTIFS(Table13[Device Name],[@[Device Name]],Table13[Timestamp],[@[Time Bracket]],Table13[On/Off?],"Off"),"Off",
IF(A1=[@[Device Name]],C1,"Absent")))
两个“设备名称”在A列,“时间括号”在B栏和“开/关?”在第C行,而表格从第1行开始...如果你不是这样,那么改变A1和C1,使它们匹配
(还插入换行符以便更好地阅读)
图片显示布局:
我选择了第二个公式来说明它是如何工作的......而且,这个公式不应该能够返回0
...我很困惑
答案 1 :(得分:0)
一些很好的建议,但是使用Scott Craner在上面的主题中建议的帮助列工作了。 为两个表创建了一个concat'd设备ID和时间戳的帮助列,然后执行了一个简单的VlookUp。
另一个经验教训:在盒子外面思考,并采用简单的解决方案,而不是尝试+像我一样聪明......:)