查找值的位置后再用位置取值
例题描述
有Excel文件book1.xlsx中有下图所示的3个片区数据(不同颜色标明)。
现在要算出1-12对应的一列数据,计算无则:在3片区中依次查找1-12,找到后在片区1对应位置取数,如果是0则取片区2同位置的数,如果是1则取F+当前查找数。结果如下图G、H列所示:
此题涉及序列成员定位、取序列指定位置成员、序表取列值以及剪贴板使用。
实现步骤
1、 编写脚本:
A |
|
1 |
=clipboard().import() |
2 |
=A1.(_1)|A1.(_2) |
3 |
=A1.(_3)|A1.(_4) |
4 |
=A1.(_5)|A1.(_6) |
5 |
=12.((k=A4.pos(~),~/"\t"/if(A2(k)==0,A3(k),"F"/~))) |
6 |
=clipboard(A5.concat("\n")) |
A1 从剪贴板里读取数据
A2 取A1中第1列的值与第2列的值合并成一个序列,即得到片区1序列
A5 循环1-12,先在A4中查到当前循环数的位置序号k,返回当前数+Tab(\t)+(如果A2中k位置的数是0则取A3中k位置的数,否则取F+当前数)
A6 把A5中的序列成员用\n连接成字符串后放进剪贴板
2、 到Excel文件里选择数据A1:F6,然后按Ctrl+C复制到剪贴板。
回到集算器,运行程序,结束后再回到Excel文件,点击G1,按Ctrl+V就可以把计算结果粘贴过来。
问答搜集 https://stackoverflow.com/questions/63932628/ho-do-i-list-values-of-an-array-in-a-column-based-on-values-from-other-arrays
【附件】 lookup.zip
英文版
英文已更新