1

在 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

我不介意用公式(我想不出)或以编程方式处理这个问题。

4

3 回答 3

2

CtrlF3通过按调出名称管理器来创建动态命名范围,单击新建,为范围命名(我选择了MyRange),然后使用此公式定义它(注意您可能需要更改工作表名称):

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

E2的tigeravatar动态命名范围:

然后,在单元格 D2 中并向下复制,使用这个公式(我没有使用IFERROR它是为了向后兼容):

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

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

公式结果

于 2013-09-20T17:02:58.953 回答
1

请试试:

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

在 D2 中并复制下来以适应。

于 2013-09-20T16:49:42.883 回答
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返回最后一个 1,即d

在第三行,SEARCH("*",E3:H3)返回{1, 1, 1, #VALUE!}LOOKUP返回最后一个 1,也就是a这里。

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

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

[与++Ctrl一起使用,否则单独返回一个空单元格]ShiftEnterEnter

于 2013-09-20T17:02:46.117 回答