2016-06-14 68 views
0

使用2个单独的数据集(带有重复项) 数据集由ID唯一标识。 可能没有我需要的时间戳条目。 数据集非常大,并且由于重复,无法使用vlookup。Excel - 2个表 - 如果单个行中的2个单元格匹配,则返回同一行中的另一个单元格

样品:

表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 如果没有,那么我想它返回它上面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

您可能需要使用INDEX/MATCH在这里看到的HTTP ://stackoverflow.com/questions/18767439/lookup-using-index-and-match-with-two-criteria有两种方法看第二种。 –

+0

谢谢,让我看看这个... –

+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的...我很困惑

+0

嘿,谢谢你回到我身边。 我已经尝试了两个,但我得到一堆0 ... 因此,对于这两个,我已将列设置为设备ID |时间戳/括号|开关。 我的表格有标题,所以我将它改为: = IF(COUNTIFS(Table13 [Device Name],[@ [Device Name]],Table13 [Timestamp],[@ [Time Bracket]],Table13 [On IF(COUNTIFS(表13 [设备名称],[@ [设备名称]],表13 [时间戳],[@ [时间括号]],表13 [开/关] (A2 = [@ [Device Name]],C2,“Absent”))) 不知道发生了什么事。 –

+0

@ R.Sama不知道为什么会发生这种情况......我测试了它,并且它没有任何错误地工作......还为图片添加了答案......还请检查是否有任何“隐藏”字符领先的空间和所有这些东西... –

+0

啊 - 我发现现在使用它的其中一个问题 - 格式化单元格 - 因为我有来自各方的不同数据,很难保持正确格式化单元格,这意味着有时即使显示的值是正确的,但Excel解释它的方式不是。在一个简单的自创数据集上进行尝试时,它确实可行! –

0

几个很好的建议,但使用上面的斯科特克莱纳主题中建议的帮手列工作。 为这两个表创建了concat'd设备ID和时间戳的帮助列,然后做了一个简单的VlookUp。

另一个教训:想想框外,并用简单的解决方案去,而不是试图+太聪明像我在做... :)

相关问题