使用 HLOOKUP 公式挖掘日期

Mining for dates with HLOOKUP-formula

我有一个 google sheet,我认为我需要在其中使用 HLOOKUP 函数。但是,我没有足够的知识来实现​​它。
我有一个巨大的 sheet,我想从 "SW" 或 "SWF" 收集开始日期。 在单元格 B2:HB2 中,日期格式正确。 在单元格 B5:HB5 中,我有包含 "SW"、"W"、"SWF" 和 "WF" 的文本。

如果公式找到 "SW" 或 "SWF" 我希望它在同一列上给出日期。 因此,如果公式在单元格 D5 中找到 "SW",我希望它显示 D2 中的日期。
我希望有人有知识来制作这个公式并帮助我理解它 =)

副本,其中绿色区域是我希望在单元格 HC 和 HD 中实现的。 https://docs.google.com/spreadsheets/d/1wTShC1l-5PHMVeObnJQuwX1zJ4WKhJ3Vmh0hYAXo1eg/edit?usp=sharing

SW:开始工作
W:工作
SWF:开始工作完成
WF:工作完成

HLOOKUP() 函数的一个缺点是 "the first row in the range" 用于匹配密钥。换句话说,您的日期行应该是 HLOOKUP() BUT 范围内的一部分,它必须在 UNDER THE FIRST ROW 范围内.

所以我的建议是将日期列移到你们所有人的名字下面。或者复制一份在你的名字下,以免失去可读性。

进一步阅读:HLOOKUP()

开始:=INDIRECT(ADDRESS(ROW($B),match("SW",A5:HB5,0)))

完成:=INDIRECT(ADDRESS(ROW($B),match("SWF",A5:HB5,0)))


我认为 HLOOKUP(或任何类型的 Lookup)不是正确的函数,因为这些函数关注的是评估范围最左侧列中的值。

在这个回答中,使用了三个函数:

  • INDIRECT
  • ADDRESS
  • MATCH

搜索 "SW"
获取列match("SW",A5:HB5,0):匹配函数 "returns the relative position of an item in a range that matches a specified value." 在这种情况下,它 returns 找到 "SW" 的列号。

获取行: ADDRESS(ROW($B): 所有相关日期都在第 2 行中,可以通过评估找到单元格 B2 的行来重新计算此值.

获取日期INDIRECT(ADDRESS(ROW($B),match("SW",A5:HB5,0))) 组合行的列,以及returns 在该地址找到的值。