我有一个 excel 文件,其中包含以下信息
姓名 | 类型 | 类型 2 | 日期 | 日期 2 |
---|---|---|---|---|
罗恩 | A | 1;2 | ||
乔恩 | A | 2;3 |
我试图提取日期中的 1 和 2,或者日期 2 列中的 2 或 3,因此,如果类型为 A,则公式将中断并从日期中提取某些内容,但是,如果类型有其他值,那么我想检查类型 2,然后在日期 2 上运行公式,我知道这有点混乱
我现在有以下情况:
=IF(OR(Type="On-Call", Type 2="On-Call"),LEFT(Date, SEARCH(";",Date,1)),"")
当 Type 的值为 A 时,此方法有效,但如果没有,则不会显示任何内容
基本上我认为我需要的是如果类型具有值 A,则运行代码,但如果没有,则检查类型 2,如果它具有值 A,则在日期 2 上运行代码但嵌套的 IF 也给我带来了一些麻烦我遇到过类似的事情,但没有用:
=IF(OR(Sheet1!H2="On-Call"),LEFT(Sheet1!L2, SEARCH(";",Sheet1!L2,1)),IF(Sheet1!I2="On-Call"),LEFT(Sheet1!K2, SEARCH(";",SHEET1!K2,1)),"")
有人知道我怎样才能实现这样的目标吗?
提前致谢!
答案1
答案2
解决此类问题的基本方法是:
=IFERROR( VLOOKUP(H2,B2:D3,3,FALSE), VLOOKUP(H2,C2:E3,3,FALSE) )
使用 A1:E3 中的数据和单元格 H2 中的查找值。
您可以使用任何可行的查找,VLOOKUP
之所以使用仅仅是因为它对大多数人来说都很熟悉。
这个想法是使用一个查找,如果失败则给出错误。如果成功,您将通过检查“类型”列并从“日期”列返回获得有效结果,在本例中,您1;2
可以按照自己的意愿处理它。如果失败(错误),第二个查找将通过检查“类型 2”列并从“日期 2”列返回获得有效结果。
当然,这只是证明了这一点。其他事情也可能会造成影响。例如,两列中可能都没有匹配项。另一种可能是两列中都有匹配项,而你可以通过更复杂的方式选择你最关心的两列中的哪一列,这可能会使返回的结果复杂化。各种各样的事情。
对于早于的版本IFERROR
,可以使用ISERROR
:
=IF( ISERROR(VLOOKUP(H2,B2:D3,3,FALSE)), VLOOKUP(H2,C2:E3,3,FALSE), VLOOKUP(H2,B2:D3,3,FALSE) )
它做同样的事情,只是更长的时间以适应不太快乐的方式。ISERROR
回溯很长一段路,所以其中一个应该有用。
如果您的查找逻辑比所呈现的更复杂,则可能需要进行更多的调整才能适应,但这是一种简单、一年后易于遵循的方法。