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

时间:2013-09-20 16:35:41

标签: excel dynamic

在D栏中,我想将最后一个单元格中的数据复制到E列中的数据,直到带有标题“DETAIL”的列。 E中可能有2到15列,直到带有标题的列,这就是我被卡住的地方。所以要明确一个例子:

    A    B    C    D    E    F    G    H    DETAIL
1   x    x    x         a    b    c    d    x
2   x    x    x                             x
3   x    x    x         c    b    a         x
3   x    x    x         d    c              x

应如下填写D栏:

    A    B    C    D    E    F    G    H    DETAIL
1   x    x    x    d    a    b    c    d    x
2   x    x    x                             x
3   x    x    x    a    c    b    a         x
3   x    x    x    c    d    c              x

我不介意使用公式(我无法想出)或以编程方式处理它。

3 个答案:

答案 0 :(得分:2)

Ctrl F3 创建一个动态命名区域,打开名称管理器,单击“新建”,将范围命名为“我选择MyRange”和然后使用此公式来定义它(注意您可能需要更改工作表名称):

=Sheet1!E2:INDEX(Sheet1!2:2,MATCH("Detail",Sheet1!$1:$1,0)-1)

tigeravatar dynamic named range for E2:"Detail"

然后,在单元格D2中并向下复制,使用此公式(我没有使用IFERROR以便它向后兼容):

=IF(COUNTA(MyRange),INDEX(MyRange,MATCH(REPT("z",255),MyRange)),"")

以下是使用您提供的示例数据的结果(突出显示):

Formula results

答案 1 :(得分:1)

请尝试:

=IFERROR(INDEX(F2:T2,,MATCH("zzzzzz",F2:T2)),"")  
在D2中

并复制到适合。

答案 2 :(得分:1)

尝试使用LOOKUP

=IFERROR(LOOKUP(9^99,SEARCH("*",E1:H1),E1:H1),"")

SEARCH("*",E1:H1)在匹配任何字符时返回一个数字,当单元格为空时返回错误。 LOOKUP然后返回由9^99生成的数组中小于SEARCH的最后一个数字的单元格内容。

例如,在第一行中,SEARCH("*",E1:H1)返回{1,1,1,1},以便LOOKUP返回最后一行,即d

在第三行中,SEARCH("*",E3:H3)返回{1, 1, 1, #VALUE!}LOOKUP返回最后一个,此处为a

此公式适用于数字和文本。缺点是它被认为比INDEX/MATCH慢。另一方面,您可以修改INDEX / MATCH以使用数字,或修改它以适用于两者但是成为数组公式:

=IFERROR(INDEX(E1:H1,,MATCH(1,SEARCH("*",E1:H1))),"")

[适用于 Ctrl + Shift + 输入,否则返回一个空单元格,单独输入 Enter < / p>