返回最后一个填充的单元格在可变范围内的值
进入D列,我想复制最后一个单元格中的数据到列E中的数据,直到具有“DETAIL”标题的列。 从E到2到15列可能有任何地方,直到具有该标题的列,所以这是我卡住的地方。 所以要清楚一个例子:
ABCDEFGH DETAIL 1 xxxabcdx 2 xxxx 3 xxxcbax 3 xxxdcx
应该像这样填写D列:
ABCDEFGH DETAIL 1 xxxdabcdx 2 xxxx 3 xxxacbax 3 xxxcdcx
我不介意用一个公式(我不能拿出来)或编程方式来处理这个问题。
创build一个dynamic命名的范围,按Ctrl F3调出名称pipe理器,单击新build,命名范围(我selectMyRange
),然后使用此公式来定义它(请注意,您可能需要更改工作表名称):
=Sheet1!E2:INDEX(Sheet1!2:2,MATCH("Detail",Sheet1!$1:$1,0)-1)
然后,在单元格D2中复制下来,使用此公式(我没有使用IFERROR
以便它将向后兼容):
=IF(COUNTA(MyRange),INDEX(MyRange,MATCH(REPT("z",255),MyRange)),"")
以下是使用您提供的样本数据的结果(突出显示):
请尝试:
=IFERROR(INDEX(F2:T2,,MATCH("zzzzzz",F2:T2)),"")
在D2中复制下来以适应。
尝试使用LOOKUP
:
=IFERROR(LOOKUP(9^99,SEARCH("*",E1:H1),E1:H1),"")
SEARCH("*",E1:H1)
匹配任何字符时返回一个数字,单元格为空时返回一个错误。 LOOKUP
然后返回由SEARCH
生成的数组中最后一个数小于9^99
的单元格的内容。
例如,在第一行中, SEARCH("*",E1:H1)
返回{1,1,1,1}
以便LOOKUP
返回最后的1,即d
。
在第三行中, SEARCH("*",E3:H3)
返回{1, 1, 1, #VALUE!}
, LOOKUP
返回最后一个1。
这个公式将使用数字和文字。 不利的一面是它比INDEX
/ MATCH
慢。 另一方面,您可以修改INDEX
/ MATCH
以使用数字,或者修改它以适用于两者,但是成为数组公式:
=IFERROR(INDEX(E1:H1,,MATCH(1,SEARCH("*",E1:H1))),"")
[与Ctrl + Shift + Enter一起使用 ,否则用Enter单独返回一个空单元格]