将查询结果填充到另一工作表
例题描述和简单分析
某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列,由行转列,并填入shee1的C2: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 shee1的C2单元格,即可完成计算。
英文版
英文已更新