将查询结果填充到另一工作表

例题描述和简单分析

excel文件中,sheet2是数据待查片区,其中A列是起始时间,B列是截至时间,且每行的时间段均不重复。部分数据如下:


A

B

C

D

E

F

1

this is a title

2

date period

2wk HH

WPH

WCP

WPL

3

2018/7/10

2018/7/14

0.7839

0.7729

0.772

0.7655

4

2018/7/17

2018/7/21

0.799

0.794

0.7909

0.7599

5

2018/7/24

2018/7/28

0.8069

0.8007

0.7911

0.7783

现在要输入日期参数,从上述片区找到符合条件的一行数据,取其中的C-F列,由行转列,并填入shee1C2:C5。假如输入2018/7/18,则sheet1应当如下:


A

B

C

1


result below

2


2wk HH

0.799

3


WPH

0.794

4


WCP

0.7909

5


WPL

0.7599

上述算法涉及序列查询和单条记录的转置。

解法及简要说明

Excel sheet2的第3行开始往下复制数据,并粘贴到集算器脚本的A1格,之后编写如下脚本:

`

A

1

…(复制来的数据 )

2

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

3

=A2.select@1(pDate>~(1) && pDate<=~(2))

4

=A3.to(3,)

A2:将字符串解析为序列的序列,@p表示自动解析数据类型,这里是为了解析日期。

A3:按时间段查询序列。pDate是网格参数,比如2018/7/18。注意日期格式应和Excel一致,设置为yyyy/mm/dd

A4:从第3个成员开始,取该序列余下的成员。

执行上述脚本后,将A4复制到Excel shee1C2单元格,即可完成计算。

问答搜集

https://stackoverflow.com/questions/63840410/lookup-data-based-on-a-date-that-falls-between-two-dates