当前位置:首页 > 技术文章 > 正文内容

73 “动态数组”用法详解(八) -选择行列CHOOSECOLS函数

zonemu12小时前技术文章2

今天继续分享动态数组专属函数系列行列数组函数系列之选择行列。选择行列这个函数原来没有发现他们的特殊之处,一直到有一天需要把常规公式更改为动态数组后,才发现这个函数的优秀之处。

老规矩,还是看语法,再看案例和使用场景。

CHOOSECOLS函数

函数的定义为:包含要在新数组中返回的列的数组;

函数的语法:=CHOOSECOLS(array,col_num1,[col_num2],…)

通俗的说法:选中多列后,录入对应的列号,就返回对应的列。

分别录入以下函数就可以很直观的知道这个函数的基本用法了。

B9=CHOOSECOLS(B2:E7,1),选择第一列;

D9=CHOOSECOLS(B2:E7,2,4),选择第二列和第四列;

G2=CHOOSECOLS(B2:E7,{1,3,4})选择多列的不同写法,这里注意用的大刮号的写法;

案例1:数据自动整理

场景;有时候从ERP导出的数据会非常多列,有很多列都是生产计划员不需要的,再或者是自己建模建立好的标准,别人发过来的数据,行列又不一样了,这样复制数据的时候就会错列,无法完美对齐。

如下图,列数非常多,需要的数据有的在第2列,有的在第6列,还有的可能在第8列,需要快速整理,简化报表。

对于以上的数据,用到选择列函数就非常简单了,只需要知道对应的列号,就可以快速选择了,先确定以下基本表对的列号:

{"下单日期","任务号","装配件","任务状态","单位","任务数量","完工数量","生产部门","评审交期"},这个表头对应的列号可以人工数,也可以用MATCH函数去判断,录入函数

=MATCH(A1:I1,'1.复制离散任务'!1:1,0),得到一个数字数组:{2,9,12,10,5,14,15,16,7},这个就是上面对应源数据的列号,只需要放到选择列号的第二参数就可以了,录入函数

=CHOOSECOLS('1.复制离散任务'!A2:R30000,MATCH(A1:I1,'1.复制离散任务'!1:1,0)),就可以得到标准化报表的结果。

上面的数据会有问题,就是范围选择比较大的情况,下面会出现0,如何把0过滤掉呢?

案例2:配合筛选函数过滤无效数据

场景:有时候建模的时候,因为源数据是变量,所以一般会预留足够多的行以防止数据过大,超出原先设定的引用范围(FILTER函数参数选择整列A:A,建模的时候,数据运算量非常大,会非常卡)。

当设定的范围过大,数据不哆的时候,没有数据的就会显示为0,造成数据不是最佳的。此时选择函数加上筛选函数就非常好的完成这个问题了。

为了让公式简单一点,先用LET函数把刚刚选择函数的结果设定为A,A代表刚才的结果。

CHOOSECOLS(A,1)<>0,表示选择A的第1列中不等于0作为FILTER函数的条件,录入函数FILTER(A,CHOOSECOLS(A,1)<>0),就把0的筛选出去了,最后合并公式:

=LET(A,CHOOSECOLS('1.复制离散任务'!A2:R30000,MATCH(A1:I1,'1.复制离散任务'!1:1,0)),FILTER(A,CHOOSECOLS(A,1)<>0))

我是古哥:

从事制造行业18年,在企业运营、供应链管理、智能制造系统等方面具有丰富的实战经验。企业智能化,柔性化计划运营管理专家,擅长通过企业流程优化规范,企业管理、导入计划运营提升企业效率;对提高企业准时交货率,降低企业库存,输出智能制造人才有丰富的经验。学习PMC生产计划,关注古哥计划!

相关文章

一套智能停车场收费管理系统设计方案,拓扑图VISIO格式

大家好,我是薛哥。最近VIP会员群的读者咨询停车场管理系统的规划设计方案,今天分享一个模板素材,主要里面的拓扑图可以编辑的,VISIO格式,建议收藏备用。此套完整的Word方案,VIP会员下载!智能停...

Ubuntu 25.04发行版登场:Linux 6.14内核,带来多项技术革新

IT之家 4 月 18 日消息,科技媒体 linuxiac 昨日(4 月 17 日)发布博文,报道称代号为 Plucky Puffin 的 Ubuntu 25.04 发行版正式上线,搭载最新 Linu...

7种超轻量级的Linux发行版,能够帮助你找到适合自己的操作系统

Linux是一种非常受欢迎的开源操作系统,而且有许多版本可以选择。有时候,你需要一种超轻量级的Linux发行版,它可以在资源有限的设备上运行,并且能够快速启动。本文将介绍7种超轻量级的Linux发行版...

【Vue3 基础】05.组件化(组件使用vuex)

这是 Vue3 + Vite + Pinia +TS + Element-Plus 实战系列文档。最近比较忙没什么时间写文章,争取早日把这个系列完结吧~生命周期和模板引用在本章之前,我们通过响应式 a...

面试官:聊聊你知道的Vue与React的区别

最近面到很多大公司的时候,小编都会碰到一个很尴尬的问题,很多大公司的技术栈都是React,但是小编学的是Vue,其实从本质上来说两者都是比较优秀的前端框架,所以有些面试官会问到Vue和React的区别...

Vue3开发极简入门(15.1):emits补完-结合v-model

之前代码是通过按钮触发emit,如果希望输入框里的内容在输入之后也能同步到父组件,就可以结合v-model的update事件来操作,具体如下。Son2.vue:<template>...