我有 3/4 列带有修订号(P01、P02、P03 等),我想构建一个公式,在新列中显示最新的修订号,这样我就不需要滚动到工作表的最右侧来获取此信息。
此外,当我突出显示某一列时,它最终会突出显示其旁边的以下 3 列。这是为什么?
答案1
这个答案解决了你的第一个问题:
假设您在列中有一个 id A
,想要在列中构建公式B
,并将数据存储在例如范围内C1:E5
;示例数据和结果:
ID | 修订 | P01 | P02 | P03 |
---|---|---|---|---|
1 | P02 | X | X | |
2 | P02 | X | ||
3 | P01 | X | ||
4 | P03 | X | X | |
5 | P03 | X |
在这种情况下,您可以例如将INDEX()
和合并MATCH()
如下,用于标题下方的第一行(即单元格B2
并将其向下拖动):
=INDEX($C$1:$E$1, 1, MATCH("x", C2:E2, 1))
此公式将修订版的标题作为数组(您最终想要返回)。假设您在每一行中构建公式,它始终使用第一行,并且应根据修订版中“x”的最后一个匹配返回列。
但是,只有当您的单元格中含有“x”时,这种方法才会有效。
更通用的方法看起来如下:
=INDEX($C$1:$E$1, 1, MAX(IF(C2:E2<>"", COLUMN(C2:E2)-COLUMN(C2)+1, 0)))
这种方法不是基于相应单元格中存在“x”这一事实,而是查找相应范围内的最后一个非空单元格,例如C2:E2
。因此,您需要识别具有非空单元格的最后一列,并通过列 ID 和修订版(假设它们不计算在内)的数据偏移列数对其进行更正。基于此,您将返回相应的标题。
PS:如果没有进一步的细节(例如,屏幕截图等),就无法回答第二个问题。
答案2
对于第一个问题,如果您的 Excel 表如下所示:
使用以下公式并将范围替换C2:XFD2
为您的数据范围。C2
在我的示例中,是行数据开始的单元格,也是XFD2
整个工作表的最后一个单元格:
=LOOKUP(2,1/(C2:XFD2<>""),C2:XFD2)
如果您的最后一次修订位于工作表的第一列,则可以将范围简单地指定为整行:
=LOOKUP(2,1/(1:1<>""),1:1)
对于您答案的第二部分,我无法提供帮助,因为我必须检查工作簿。