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

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

zonemu2个月前 (07-10)技术文章23

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

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

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生产计划,关注古哥计划!

相关文章

2023 年 10 个最佳 Linux 桌面发行版

Linux 操作系统在桌面领域的发展已经不再被忽视,越来越多的用户正在考虑切换到 Linux 上。在 2023 年,我们可以期待更多的 Linux 桌面发行版的推出和发展。这里列举了 10 个最佳的...

Vue3开发极简入门(14):组件间通信之props、ref&amp;defineExpose

组件间的关系可以分为:父子关系。以前文的代码为例,最典型的就是App.vue与Car.vue这种,APP是父,Car是子。祖孙关系。如果Car再引入一个子组件,这个子组件与App就是祖孙关系。其他。比...

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

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

「2022」打算跳槽涨薪,必问面试题及答案——VUE篇

1、为什么选择VUE,解决了什么问题?vue.js 正如官网所说的,是一套构建用户界面的渐进式框架。与其它重量级框架不同的是,vue 被设计为可以自底向上逐层应用。vue 的核心库只关注视图层,不仅易...

在 Spring Boot3 中操作 GitLab API 的全面指南

在当今互联网大厂的后端开发工作中,高效管理代码版本和项目协作至关重要。GitLab 作为强大的版本控制系统,其 API 为开发人员提供了丰富的操作可能性。本文将深入探讨如何在 Spring Boot3...

程序员效率提升!使用自动化工具gitx,每周节约半小时

你是否经历过这样的折磨?一个 JIRA 需求要同时修复 dev、qa、staging 三个分支每个版本涉及 A、B、C 三个项目手动执行以下操作:从 dev 切临时分支cherry-pick 提交推送...