根据列值查找相应的列名

例题描述和简单分析

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