Excel - 2个表 - 如果单个行中的2个单元格匹配,则返回同一行的另一个单元格

时间:2016-06-14 15:09:50

标签: excel nested-if

使用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类似的东西,但这种情况非常糟糕。

全部谢谢!

2 个答案:

答案 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,使它们匹配

(还插入换行符以便更好地阅读)

图片显示布局:

layout

我选择了第二个公式来说明它是如何工作的......而且,这个公式不应该能够返回0 ...我很困惑

答案 1 :(得分:0)

一些很好的建议,但是使用Scott Craner在上面的主题中建议的帮助列工作了。 为两个表创建了一个concat'd设备ID和时间戳的帮助列,然后执行了一个简单的VlookUp。

另一个经验教训:在盒子外面思考,并采用简单的解决方案,而不是尝试+像我一样聪明......:)