根据列值查找相应的列名

例题描述和简单分析

ExcelD1:I6片区的第1行是列名,其他行有些格为空,有些格有数据,有数据的格一定是连续的。如下所示:


A

B

C

D

E

F

G

H

I

1




4.5.2020

5.5.2020

6.5.2020

7.5.2020

8.5.2020

9.5.2020

2




data

data





3




data

data

data

data

data


4





data

data

data

data

data

5




data

data

data

data

data

data

6






data

data

data

data

现在要在A列和B列分别算出连续有数据的格的起始列的列名,以及终止列的列名。如下所示:


A

B

C

D

E

F

G

H

I

1

start date

end date


4.5.2020

5.5.2020

6.5.2020

7.5.2020

8.5.2020

9.5.2020

2

4.5.2020

5.5.2020


data

data





3

4.5.2020

8.5.2020


data

data

data

data

data


4

5.5.2020

9.5.2020



data

data

data

data

data

5

4.5.2020

9.5.2020


data

data

data

data

data

data

6

6.5.2020

9.5.2020




data

data

data

data

上面算法涉及定位查询和按位置取数。

解法及简要说明

首先在 Excel 中选中 D1:I6, 复制到集算器脚本的 A1 格,然后编写如下脚本:

`

A

1

…(复制来的数据 )

2

=A1.split@n("\t")

3

=A2.to(2,).new(~.pselect(~!=""):start,~.pselect@z(~!=""):end)

4

=A3.new(A2(1)(start):'start date',A2(1)(end):'end date')

执行后,将A4的计算结果连同列名复制到ExcelA1格。

A2:将字符串解析成序列的序列

A3:取数据部分(从第2行开始),分别算出顺序第1个不为空的成员的位置,以及逆序第1个不为空的成员的位置。

A4:按位置从列名序列里中取数。

问答搜集

 https://stackoverflow.com/questions/63849461/excel-find-the-columns-first-and-last-cell-entry-and-use-that-columns-positions