查找值的位置后再用位置取值

 

例题描述

Excel文件book1.xlsx中有下图所示的3个片区数据(不同颜色标明)

..

现在要算出1-12对应的一列数据,计算无则:在3片区中依次查找1-12,找到后在片区1对应位置取数,如果是0则取片区2同位置的数,如果是1则取F+当前查找数。结果如下图GH列所示:

..

 此题涉及序列成员定位、取序列指定位置成员、序表取列值以及剪贴板使用。

 

实现步骤

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)+(如果A2k位置的数是0则取A3k位置的数,否则取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