根据最右边的值查找列值

根据最右边的值查找列值

我有一份不断变化的电影素材列表。它们按卷轴排列成行,最右边的值是最新版本。第一行是日期,其余的是卷轴。

我想要做的是,对于最新版本,垂直查看顶行以返回该版本的日期。

我已附加一张我想要的图片:

最新版本的日期 最新版本的日期

如果你看不到图片,请尝试想象一下

    A    B    C    D    E    F
   5/4  5/5  5/6  5/7  5/8  5/9
   1v10           1v11
        2v11           2v12  
   3v13                     3v14

在这种情况下,我想返回:

5/7 for 1v11
5/8 for 2v12
5/9 for 3v14

我已经使用查找功能来水平找出每个卷轴号的最新版本,现在我只需要找出如何获取最新版本的日期。

答案1

您可以通过将相关行的非空白列的最大列数传递到 INDEX 函数的列参数中来返回标题的值。

=INDEX($A$1:$F$1,1,MAX(COLUMN($A$1:$F$1)*N($A2:$F2<>"")))

在此处输入图片描述

如果您使用的是 O365 并且有权使用 Lambda 函数,则可以对所有行使用单个公式。以下公式仅在单元格 H10 中:

=LET(h,$A$9:$F$9,BYROW($A$10:$F$12,LAMBDA(r,INDEX(h,1,MAX(SEQUENCE(1,COLUMNS(h))*N(r<>""))))))

在此处输入图片描述

答案2

很多时候,简单的方法是重新排序表格:

将其排列为最左边的值为最新。
(即,当您需要插入新条目时,您必须 INSERT CELL CTRL+ )+

这样您可能根本不需要使用查找函数,或者 VLOOKUP() 可能是明智的选择。

答案3

据我了解,您完全有能力确定您在行中寻找的值。所以我将简单地讨论从那里开始该怎么做。我将选择您的第二个示例进行5/9 for 3v14讨论。

没什么好讨论的。你只需要知道列号。MATCH()只要查找的值只出现一次,就可以用一个简单的函数找到它。

这可以简单到:

=MATCH("3v14",HeaderRange,0)

其中“HeaderRange”是列标题的精确范围。更复杂的想法是,该范围中应包含哪些内容。仅包含日期标题的列?还是包含卷轴号的列?实际上,对于您的情况,更好的想法是从 A 列开始范围,而不是前两个想法,并以实际或预期数据的明确结尾结束范围,或者甚至超出该范围,到达某个真正永远无法到达的列。

原因是这会给您实际(“绝对”)的列号,而不是您必须添加一些常数的相对列。

但是您想要的是标题范围单元格中的实际值(您需要列号)。您可以使用MATCH()上面的函数作为其内部元素来构建它。但是XLOOKUP()可以直接找到它,因为它将MATCH()的功能包含在其中。所以:

=XLOOKUP(A4,  A1:Q1,  A1:Q1  )

还有许多其他公式化方法可以获取该单元格的内容,但它们在某种程度上更“计算密集”,因为 Excel 每次计算任何内容时都会计算它们,而上述公式仅在其中单元格的值受到影响或可能受到影响时才会重新计算。用 Excel 的话来说,这些函数是“易变的”。

然而,对于现代计算机和不太庞大的数据库,或者不太庞大的需要不断重新计算的公式数量来说,这不是问题。在我六年前的 8Mb 内存的普通戴尔台式机上,我可以对 100,000 行、30 列的数据进行查找,几乎没有任何延迟。所以你可能想使用这样的方法,看看会发生什么。

但是,上述方法XLOOKUP()设置起来很简单,一年后当其他人使用和维护电子表格时(因为你升职了),也很容易理解,而且完全不用担心波动性。所以它有一些巨大的优势。

当然,如果您的用户拥有旧版本的 Excel,并且其中不存在该功能,则INDEX/MATCH可以进行替代。

相关内容