【回复贴】如何运用动态数组做一个查询表

懒得批爆
懒得批爆

创作者俱乐部成员

🔔

提问地址:https://bbs.wps.cn/topic/39292

第一步,下载了提问中的文件。

这个提问和本人前不久发布的

💡

【技巧分享】下拉列表转列表框

https://bbs.wps.cn/topic/38062

有异曲同工之效,所以想将其做成列表查询的状态,但是本人现在出差中,随身携带的是Mac的笔记本,Mac版WPS不支持开发工具,故本次用Excel作为演示示例,本例中Excel所有的操作均可在Windows版WPS中实现,也可通过本人分享的示例文档进行复制修改为所需的文档。

用Excel打开下载的文件

操作第一步

将数据源通过Ctrl + T(Mac系统快捷键为command ⌘+ T)转换为表,后续公式将使用结构化引用便于直观理解公式的使用方法,关于结构化引用可以参考本人的分享贴

📌

【结构化引用】高效的数据引用技巧

https://bbs.wps.cn/topic/38471

操作第二步

如果不希望出现控件列表,可跳过操作第二步至第四步,请直接跳到第五步

规范化客户电话列表

在任意位置输入=UNIQUE(表2[客户电话]),公式意思为对表2中客户电话字段进行去重处理,这个辅助列可以放在任意不需要显示结果的位置,不影响最终结果。

操作第三步

制作查询列表

在开发工具中选择列表框(WPS中可能位置和描述稍有不同,图标是相同的)

在空间上右键选择,设置控件格式

考虑到可能后续会需要对数据源更新数据,所以这里多选择了几行数据(也可不选择那么多)

操作第四步

设置查询框,输入公式=INDEX(B18:B30,B16),同样选择到多几行数据,这里的查询框也同上一步的辅助单元格一样,可以放在任意不需要显示结果的位置,不影响最终结果。

第二步,跳到这里来请往下看查询表的制作过程

操作第五步

编辑查询公式

在H5中录入:=FILTER(表2[客户订单号],表2[客户电话]=查询表!C4)

这个公式的具体含义如下:

首先是FILTER函数的语法结构:FILTER(筛选数据组,筛选条件)

这里的前提条件是:表1=取货登记表2=客户订单登记

从结构化引用的语法上来看:=FILTER(表2[客户订单号],表2[客户电话]=查询表!C4)的含义为,从

表2[客户订单号]中筛选,表2[客户订单号]等于C4的数据,即

接着在I5单元格录入公式:=FILTER(表2[批号],表2[客户电话]=查询表!C4)

这段公式的含义为,在表2[批号]中筛选,表2[批号]=C4,即电话号码,所以这里能看出,这个电话号码的辅助单元格在任意位置不重要,重要的是这个列表在什么位置。

操作第六步

在J5单元格中录入公式=XLOOKUP(H5#,表1[订单号],表1[价格],0,0),这里不用FILITER函数了,这里用XLOOKUP函数,一参查找函数使用数组引用范围H5#,这里的H5#表示引用了=FILTER(表2[客户订单号],表2[客户电话]=查询表!C4)这个公式所展示的所有单元格,下面的单元格公式也会用到H5#数组引用范围,后面将不在赘述。

操作第七步

在L5单元格中录入=XLOOKUP(H5#,表1[订单号],表1[取货日期],0,0),这里使用了XLOOKUP函数,含义如同上一步。

操作第八步

这里生成自动序号列表,这里也将使用动态数组

在G5单元格中输入公式=SEQUENCE(COUNTA(H:H)-2)

这里的的SEQUENCE函数表示生成一个数组,数组由4个参数组成

一参:行数(可省略,省略后默认1)
二参:列数(可省略,省略后默认1)
三参:起始数(可省略,省略后默认1)
四参:步进数(可省略,省略后默认1)

本例中,一参使用的是通过COUNTA计数H列的非空单元格,-2(H3和H4为2个单元格),其他参数省略后,均默认为1(1列、起始1,步进1)

第三步,美化

操作第九步

将需要隐藏的隐藏起来

其中C4单元格,B12:B30单元格均可隐藏,或放在某个sheet中隐藏工作表,得到的就是一个完整的查询表。

👋

由于金山文档不支持控件,故本例文档存放在某网盘,地址如下:

链接: https://pan.baidu.com/s/1V8GjiCyWQEecA0RSv2zFrg 提取码: fbs7

四川省
浏览 194
1
4
分享
4 +1
1
1 +1
全部评论 1
 
包罗万象
· 广东省
回复