0

我有两个表,表 1 列 A 是滚动日期列。表 2 由四列不同的“触发日期”组成。表 2 第 1 列包含年度触发,即每年发生一次。表 2 第 2 列包含双年度触发,每年发生两次。表 2 第 3 列包含每月触发器,“12 个日期”,表 2 第 4 列包含每周触发器,“52 个日期”。

好的,所以我正在寻找一个将返回日期触发器的公式,其中表 1 列 1 匹配在单元格中选择的条件(每年、每两年、每月、每周)“我们会说 F1,在可能创建的任何范围之外。

示例:如果 Table 1 Col 2 = "01/02/2013" 并且我在 F1 中选择“Weekly”,则该公式将查看 Table 2 中的每周列以确定是否存在“01/02/2013”​​。

我已经为表 2 中的每一列分配了一个命名范围我已经为 F1 中的条件分配了一个命名范围,这是一个下拉列表

有什么建议么?

4

3 回答 3

0

好的,假设您的 Range Name 位于 中F1,您查找匹配项的公式如下所示:

=If(IsError(Match(LookupVal,Indirect(F1),0)),"No Match", "Match")

...类似的东西

希望这有助于为您指明正确的方向。

于 2013-10-23T14:07:07.367 回答
0

你可以试试:

=IFERROR(VLOOKUP(B2,INDIRECT(CHAR(72+MATCH(F$1,$I$1:$L$1,0))&":"&CHAR(72+MATCH(F$1,$I$1:$L$1,0))),1,0),"")  

SO19542409 示例

于 2013-10-23T14:06:03.907 回答
0

INDIRECTVLOOKUP会在这里成为你的朋友。

正如您所描述的那样,我构建了 Table2,为表中的列添加了年度、双年度、每月、每周标签 - 这将避免必须保持命名范围是最新的,因为它直接查看公式中的表格

对于该函数,然后我使用 VLOOKUP 在 F1 引用的列中查找日期。
列参考:INDIRECT("Table2["&$F$1&"]")
查找值:(VLOOKUP([@Col2],INDIRECT("Table2["&$F$1&"]"),1,FALSE)查看返回值中的第 1 列,因为我并不关心返回什么值。
如果找到,这将返回日期,如果没有,则返回错误。然后我可以将结果包装在IF(ISERROR(所以如果找到日期,我可以返回是或否。

这产生了整个公式

=IF(ISERROR(VLOOKUP([@Col2],INDIRECT("Table2["&$F$1&"]"),1,FALSE)),"No","Yes")

对于 Table1 中的下一列,这样当我更改 F1 中的值时,它会在 Table2 中查找该列名,如果找到,请告诉我。

于 2013-10-23T14:09:06.397 回答