谁能告诉我 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
数组,用于表示每个单元格是否包含文本值。例如,这可能是。该函数返回列号。在本例中,它将是。这两个相乘(,)。对于我的例子,最终的数组将是。将它插入之前的公式中将返回,因为它是第二大的值。TRUE
FALSE
{TRUE,TRUE,FALSE,FALSE,TRUE}
COLUMN
{21,22,23,24,25}
TRUE=1
FALSE=0
{21,22,0,0,25}
LARGE
22
-COLUMN(U2)+1
只需调整插入INDEX
公式的值以说明我们从第 22 列开始但数组U2:Y2
只有 5 列的事实。我们希望返回介于1
和之间的值5
,而不是21
和25
。
例子
假设您有以下范围内的数据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)