Excel 中找出每列第一个和最后一个非空格对应的行
Excel表格的第2-6列有空格。
A |
B |
C |
D |
E |
F |
|
1 |
StartDate |
QID1 |
QID2 |
QID3 |
QID4 |
QID5 |
2 |
10/03/2024 10:56 |
1 |
yes |
3 |
2 |
|
3 |
10/03/2024 03:10 |
2 |
no |
4 |
23 |
|
4 |
09/03/2024 19:25 |
3 |
yes |
2 |
2 |
|
5 |
09/03/2024 11:40 |
4 |
no |
1 |
yes |
|
6 |
09/03/2024 03:55 |
5 |
yes |
5 |
no |
|
7 |
08/03/2024 20:10 |
6 |
||||
8 |
08/03/2024 12:25 |
7 |
no |
|||
9 |
08/03/2024 04:40 |
8 |
yes |
|||
10 |
07/03/2024 20:55 |
9 |
no |
|||
11 |
07/03/2024 13:10 |
1 |
no |
no |
||
12 |
07/03/2024 05:25 |
2 |
no |
no |
||
13 |
06/03/2024 21:40 |
3 |
no |
no |
||
14 |
06/03/2024 13:55 |
4 |
no |
|||
15 |
06/03/2024 06:10 |
5 |
no |
3 |
要求从第2-6列的每列,找出第一个和最后一个非空格,把它们对应的第1列的格值用"to"拼起来。
H |
I |
|
1 |
QID1 |
06/03/2024 06:10 to 10/03/2024 10:56 |
2 |
QID2 |
06/03/2024 06:10 to 10/03/2024 10:56 |
3 |
QID3 |
09/03/2024 03:55 to 10/03/2024 10:56 |
4 |
QID4 |
06/03/2024 06:10 to 07/03/2024 13:10 |
5 |
QID5 |
09/03/2024 03:55 to 10/03/2024 10:56 |
使用 SPL XLL
=spl("=d=E@2p(?),d.to(2,).(d(1)(~.pselect@z(~)) /""to""/ d(1)(~.pselect(~)))",A2:F15)
函数 E@2p 对二维序列进行转置。pselect 找到符合条件的第 1 个成员的位置,@z 表示从后往前找。to(2,) 取第 2 至最后一个成员,(1) 第 1 个成员。
英文版 https://c.scudata.com/article/1724047412008
请问如果是想提取 B 列开始的每一列中的非空格,对应 A 列名单,这种可以实现吗?
可以,其实 (~.pselect@a(~)) 这一步,就已经取得了第 2-6 列所有非空的成员位置,比如第 QID2 列的结果是 1-5,7-14(没有 6)