在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
我不介意使用公式(我无法想出)或以编程方式处理它。
答案 0 :(得分:2)
按 Ctrl F3 创建一个动态命名区域,打开名称管理器,单击“新建”,将范围命名为“我选择MyRange
”和然后使用此公式来定义它(注意您可能需要更改工作表名称):
=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)),"")
以下是使用您提供的示例数据的结果(突出显示):
答案 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>