返回最后一个填充的单元格在可变范围内的值

进入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) 

tigeravatar动态命名范围为E2:“Detail”

然后,在单元格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单独返回一个空单元格]