【问题标题】:EXCEL - Return cell address of a variable date using INDEX MATCHEXCEL - 使用 INDEX MATCH 返回可变日期的单元格地址
【发布时间】:2016-05-25 18:07:39
【问题描述】:

在此示例中,有两个工作表,Sheet1Sheet2。 Sheet1 包含我们的公式,还包含单元格 B4 中的单元格查找值。 Sheet2 包含要搜索的数据索引。目标是在 Sheet1 上使用 INDEX MATCH 公式将 Sheet1 单元格 B4 的内容(在此示例中包含日期“5/23/2016”)与跨越多列的大索引 (L:DX) 进行匹配,在哪个日期生活。单元格查找值“5/23/2016”只会在 Sheet2 上出现一次。

我尝试了一些不成功的 INDEX MATCH 变体,遵循以下一般语法:

=INDEX(Sheet2!L:DX,MATCH(Sheet1!B4,Sheet2!L:DX,0))

Sheet2!L:DX 是在其中搜索单元格查找值的索引。注意它是如何跨越多列的。

B4 是单元格查找值

“0” 指定匹配必须是精确的

我相信一定有我遗漏的东西,因为这将返回 #N/A 错误。我了解此错误的一个原因可能是 MATCH 无法以我编写的方式跨多个列搜索此单元格查找值。想知道如何实现这一点,因为我无法找到适用于多列的该公式的示例

【问题讨论】:

  • 您将需要一个数组公式来执行此操作。我们可以收紧搜索行吗?数组不喜欢完整的列引用。
  • 当然,如果我理解正确的话,例如可以使用“L10:DX999”代替“L:DX”。我使用这么大范围的原因是因为 sheet2 中包含的数据可能会有所不同,但总是从 L 列开始并跨多列继续,并且总是在 DX 列之前结束。

标签: excel excel-formula


【解决方案1】:

要获取地址,我们可以使用 ADDRESS() 函数。要使用它,我们需要列号和行号:

查找行:

=AGGREGATE(15,6,ROW(Sheet2!$L$10:$DX$999)/(Sheet2!$L$10:$DX$999=$B$4),1)

要查找列:

=AGGREGATE(15,6,COLUMN(Sheet2!$L$10:$DX$999)/(Sheet2!$L$10:$DX$999=$B$4),1)

然后找到地址:

=ADDRESS(AGGREGATE(15,6,ROW(Sheet2!$L$10:$DX$999)/(Sheet2!$L$10:$DX$999=$B$4),1),AGGREGATE(15,6,COLUMN(Sheet2!$L$10:$DX$999)/(Sheet2!$L$10:$DX$999=$B$4),1),1,1,"Sheet2")

【讨论】:

  • 这个功能完美,一个优雅且编写良好的解决方案。谢谢。
  • 只是为了好玩,如果我要偏移这个 ADDRESS/AGGREGATE 函数所在的单元格,你知道我会在这个公式中的哪里添加偏移函数吗?我最初想在公式开头添加 OFFSET 以找到结果下方的单元格,以将公式的结果视为对偏移量的引用,但这似乎不太正确。谢谢。
  • 你想直接找到下面的单元格吗?如果是这样,只需将+1 添加到地址的行部分。 @Majora
  • 我希望返回日期正下方的值,然后使用INDEX(Sheet2!$L$10:$DX$999,AGGREGATE(15,6,ROW(Sheet2!$L$10:$DX$999)/(Sheet2!$L$10:$DX$999=$B$4),1) +1,AGGREGATE(15,6,COLUMN(Sheet2!$L$10:$DX$999)/(Sheet2!$L$10:$DX$999=$B$4),1))@Majora
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多