找回密码
 加入怎通
查看: 410|回复: 6

99 365新函数 CHOOSECOLS CHOOSEROWS

[复制链接]
我来看看 发表于 2023-03-26 21:06:15 | 显示全部楼层 |阅读模式
4 Q" ]$ x" m8 g

CHOOSECOLS CHOOSEROWS这两个函数属于同一类函数,函数的目标很明确,就是返回一组数据中,指定的行或列,类似OFFSET中返回指定区域,只不过OFFSET函数需要指定高度和宽度,在这里不需要,直接用行号或者列号来替代了;还是先看看参数

. J% ~1 A9 s. J8 K7 @

函数参数:CHOOSECOLS(array,col_num1,[col_num2],…);CHOOSEROWS(array,row_num1,[row_num2],...);从参数中可以发现,365版本函数就单个函数的参数来说,都是非常好理解的,就是选中一个区域,指定条件返回等;如昨天分享的TOCOL、TOROW,一个返回列,一个返回行,参数也类似;单单看参数不好理解,直接上案例;

" B& E3 u4 v9 \& O# c/ T

基础用法如下图数据中,表1是一个数据区域,如需要在表2或其它区域返回5月的各个产品在各超市的销量和乐购超市1到6月的销量数据,可以在以下单元格分别录入以下函数:K2=CHOOSECOLS(C2:H9,5)

5 j% X) [) V) z# I0 ]

B11=CHOOSEROWS(B3:H9,4)以上函数理解,第二参数行号和列号是相对的就可以了,理解好后,可以根据这两个行号创建一些复杂的动态引用了,如返回某段时间范围的数据并汇总,来看一下高级用法;

- n: o9 i' L8 a+ \0 J

范围求和还是上面的数据,需要查询指定销售月份的所有超市的汇总销量,如想知道1月到3月或者3月到4月的销量汇总,如何设计是查询报表?设计此类查询报表只需要思考变量和定量分别是什么就可以了变量就是查询条件的月份开始和结束时间。

z8 g3 |8 B8 @3 D4 p0 k# o3 G b

定量就是销售数据,确定后就不变了;确定开始月和结束月,用MATCH来判断,长度可以直接相减就可以了;为了确保大家理解公式,公式先不合并,分段写,分别录入以下函数:D11 =MATCH(C11,C2:H2,0) 开始月列号

" ?4 P) p1 U! S$ u( Z# X: ]

D12 =MATCH(C12,C2:H2,0) 结束月列号D13 =SEQUENCE(,D12-D11+1,D11,1) 范围列,返回2到4列C13 =SUM(CHOOSECOLS(C3:H9,SEQUENCE(,D12-D11+1,D11,1))),用CHOOSECOLS返回C3:H9区域的第2到4列,并用SUM函数求和;写好这个函数后,只需要调整查询范围就可以快速找到对应的动态范围的销售数据。

# \. h: Q" j6 N0 n4 z# E8 _

过滤数据有时候用筛选函数对指定数据区域进行条件筛选的时候,因为数据区域和条件的原因,会出现我们不想要的列,此时用CHOOSECOLS可以对筛选结果进行指定返回列如下图对源数据中条件为本科的员工返回对应的联系电话。

. y1 {" a4 I2 L+ r3 j

录入以下函数:

+ m6 y2 b& u! p) ^2 y

G1= =VSTACK({"姓名","电话"},CHOOSECOLS(FILTER(A2:E14,C2:C14="本科"),1,5))结果如下图所示为了方便大家理解,分步运算结果如下:步骤1:=FILTER(A2:E14,C2:C14="本科") ,筛选本科的结果。

8 z, b! V0 s- l8 f# ^

步骤2:=CHOOSECOLS(FILTER(A2:E14,C2:C14="本科"),1,5),保留第1列和第5列步骤3:=VSTACK({"姓名","电话"},CHOOSECOLS(FILTER(A2:E14,C2:C14="本科"),1,5))

3 C1 `' m3 z+ q/ p

整理数据有时候从ERP软件中或者网页中复制数据到Excel的时候发现,数据错行错列,虽然是错行错列,但是还是有一点规律,如下图数据中,源数据中日期与消费金额与消费备注分别在两列,每一笔记录对应三行,第一行为日期,第二行为金额,第三行为空,边上一列对应消费备注,如何把这些数据整理成标准的一维数据呢?

6 C; A. B6 a* @

步骤1:=WRAPROWS(B1:B14,3) ,把第1列转成1行最多3列的数据步骤2:=WRAPROWS(C1:C14,3),把第2列也转成转成1行最多3列的数据

% Z/ ?& Q: ~/ O/ \; j. A0 _+ E5 a

步骤3:==HSTACK(WRAPROWS(B1:B14,3),WRAPROWS(C1:C14,3)),把第1列和第2列并到一起;步骤4:=CHOOSECOLS(HSTACK(WRAPROWS(B1:B14,3),WRAPROWS(C1:C14,3)),1,2,4),保留第1列、第2列、第4列;

" u- J( c# |* ^1 w* u

步骤5:=VSTACK({"消费日期","金额","备注"},CHOOSECOLS(HSTACK(WRAPROWS(B1:B14,3),WRAPROWS(C1:C14,3)),1,2,4)),加上标题

. P! s$ Q! s7 W, K5 D

思路总结Office 365 的某个新函数绝对不是单单一个函数就可以发挥最大功能的,配合上其它函数才是战斗力最强的,特别是理解数组形态,垂直、水平、行、列方向,配合一些特定组合可以达到一个公式搞定特定需求的结果;

9 j ^( r2 L, ], i5 t8 p" C

合并区域:VSTACK+ HSTACK,特别适合加标题;选择行列:CHOOSECOLS CHOOSEROWS,特别适合去除无效行列,保留有效行列;筛选结果:FILTER,条件筛选函数合并结果:TEXTJOIN、CONCAT; 把结果合并

1 f2 O2 z$ @6 j, E% p6 m

分开结果:TEXTSPLIT 把结果再次分开

' O6 C% J" c! Y, s1 m# p

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

8 F+ `$ D/ m$ C1 x- i& P

学习PMC生产计划,关注古哥计划!

0 L4 P( p% L4 O G# @ 4 {3 z* e9 X! q4 Y: j K( S* D' [7 U# D I% F 5 ^, h% U: t) s) J% L# \! D' o! T+ O" j3 I& @$ P5 }

暂时无法加载帖子列表

回复

使用道具 举报

深圳艺立 发表于 2026-03-14 19:39:44 | 显示全部楼层
这个思路很新颖,打开了新世界的大门,谢谢分享
回复

使用道具 举报

电影爱好者 发表于 2026-05-21 21:59:13 | 显示全部楼层
蹲了这么久,终于看到有价值的讨论,支持一下!
回复

使用道具 举报

1524602628 发表于 2026-07-05 07:57:52 | 显示全部楼层
楼主太厉害了,整理得这么详细,必须支持
回复

使用道具 举报

chengege 发表于 2026-07-16 06:24:14 | 显示全部楼层
说得很实在,没有夸大其词,这种真实分享太难得了
回复

使用道具 举报

Chilsion 发表于 2026-08-28 23:44:36 | 显示全部楼层
楼主辛苦了,整理这么多内容,必须点赞收藏
回复

使用道具 举报

liantian 发表于 2026-08-29 09:00:42 | 显示全部楼层
这个分享太实用了,刚好能用到,感谢楼主!
回复

使用道具 举报

    您需要登录后才可以回帖 登录 | 加入怎通

    本版积分规则

    QQ|手机版|小黑屋|网站地图|真牛社区 ( 苏ICP备2023040716号-2 )

    GMT+8, 2026-9-14 02:28 , Processed in 0.040397 second(s), 27 queries , Gzip On.

    免责声明:本站信息来自互联网,本站不对其内容真实性负责,如有侵权等情况请联系420897364#qq.com(把#换成@)删除。

    Powered by Discuz! X3.5

    快速回复 返回顶部 返回列表