如何返回某一行的倒数第二个文本值?

如何返回某一行的倒数第二个文本值?

谁能告诉我 Excel 公式来返回一行中倒数第二个文本值?

我设法找到了最后一个文本值的公式:=INDEX(U2:Y2,MATCH(REPT("z",255),U2:Y2)),但不确定如何获得倒数第二个值?

答案1

公式

这是返回的另一种方法n从末尾开始的第个文本值。

=IFERROR(INDEX(U2:Y2,LARGE(ISTEXT(U2:Y2)*COLUMN(U2:Y2),2)-COLUMN(U2)+1),"")

此公式必须以数组公式的形式输入,使用Ctrl+ Shift+Enter而不是直接输入Enter。如果两端都出现花括号 { },则说明您输入正确。


怎么运行的

=IFERROR(...,"")如果公式的其余部分有错误,则将返回空白。如果没有至少n范围内的文本值。

INDEX(U2:Y2,...)接受数组并返回其中的某个值。INDEX(U2:Y2,4)将返回数组中的第 4 个元素,在本例中,就是其中的任何元素X2

LARGE(..,2)接受某个数组并返回该数组中的第二大值。将 更改2为任何其他数字可获得n第 1 个最大项。该SMALL函数类似,但返回n最小的值。

ISTEXT(U2:Y2)*COLUMN(U2:Y2)是让您将其作为数组公式输入的部分。该函数将返回一个/值ISTEXT数组,用于表示每个单元格是否包含文本值。例如,这可能是。该函数返回列号。在本例中,它将是。这两个相乘(,)。对于我的例子,最终的数组将是。将它插入之前的公式中将返回,因为它是第二大的值。TRUEFALSE{TRUE,TRUE,FALSE,FALSE,TRUE}COLUMN{21,22,23,24,25}TRUE=1FALSE=0{21,22,0,0,25}LARGE22

-COLUMN(U2)+1只需调整插入INDEX公式的值以说明我们从第 22 列开始但数组U2:Y2只有 5 列的事实。我们希望返回介于1和之间的值5,而不是2125


例子

假设您有以下范围内的数据U2:Y2

Hello | World | meep | 5 | boop

倒数第二个文本值是,meep让我们看看公式是如何工作的。我将一步一步地填写计算结果。您可以使用“公式”功能区上的“计算公式”查看类似的计算结果,尽管顺序可能不同。

=IFERROR(INDEX(U2:Y2,LARGE(ISTEXT(U2:Y2)*COLUMN(U2:Y2),2)-COLUMN(U2)+1),"")
=IFERROR(INDEX(U2:Y2,LARGE(ISTEXT(U2:Y2)*COLUMN(U2:Y2),2)-21+1),"")
=IFERROR(INDEX(U2:Y2,LARGE(ISTEXT(U2:Y2)*COLUMN(U2:Y2),2)-20),"")
=IFERROR(INDEX(U2:Y2,LARGE({TRUE,TRUE,TRUE,FALSE,TRUE}*COLUMN(U2:Y2),2)-21),"")
=IFERROR(INDEX(U2:Y2,LARGE({TRUE,TRUE,TRUE,FALSE,TRUE}*{21,22,23,24,25},2)-21),"")
=IFERROR(INDEX(U2:Y2,LARGE({21,22,23,0,25},2)-21),"")
=IFERROR(INDEX(U2:Y2,23-21),"")
=IFERROR(INDEX(U2:Y2,2),"")
=IFERROR(INDEX({"Hello","World","meep",5,"boop"},2),"")
=IFERROR("meep","")
="meep"

答案2

我怀疑你的方法可能不是最有效的......但利用你已经取得的成果,你可以利用现有的MATCH减一为您提供新的搜索边界,并返回该新区域中的最后一个文本。该OFFSET方法允许您使用新限制重新定义搜索区域,如下所示:

=INDEX(U2:Y2,MATCH(REPT("z",255),OFFSET(U2,0,0,1,MATCH(REPT("z",255),U2:Y2)-1)))

答案3

=INDEX(D7:P7,MATCH(REPT("z",255),D7:P7)-1)

相关内容