地 球 不 爆 炸 我 们 不 打 烊
>>>上课啦: MAP函数能够对源数组中的每个元素应用同一表达式并返回新数组。不但支持链式调用和动态数组,还与其他函数相结合实现复杂数据的转换计算。本期小课堂我们分享学习MAP函数 ▼ 言之有李: ☆☆ 什么是“映射”??? ☆☆ 映射是指两个数组或者两个集合之间元素相互对应的关系。 ☆☆ MAP函数的定义??? ☆☆ MAP函数:逐个遍历实现映射,即两个非空集合A与B存在着对应关系f,而且对于A中的每一个元素a,B中总有唯一的一个元素b与之对应(MAP函数就是实现非空集合A影射到非空集合B的计算过程) ☆☆ MAP函数的语法??? ☆☆ =MAP(Array1,LAMBDA_or_Array<#>) ☆☆ =MAP(数组1,LAMBDA自定义表达式或者数组2,LAMBDA自定义表达式或者数组3,……,LAMBDA自定义表达式或者数组n) ☆☆ MAP函数的原理??? ☆☆ MAP函数是按照从上到下,从左到右的顺序遍历数组中的每个元素,执行LAMBDA自定义表达式,最后返回和源数组尺寸相同的结果数组。如下图所示 ▼MAP函数原理 抛砖引玉: 和BYROW函数和BYCOL函数一样,当第1参数Array源数组为引用时,则MAP函数同样也会保留引用属性。请看如下例题 【例题1】在B列统计每个BOM名称累加出现的次数 ▼ 小试牛刀: ※※ 如果妳能接受编程函数的话,请在B2单元格内编辑函数公式=MAP(A2:A12,LAMBDA(x,COUNTIF(A2:x,x))),ENTER回车 ※※ 如果妳能接受动态数组的话,请在B2单元格内编辑函数公式=COUNTIF(OFFSET(A2,,,ROW($1:$11)),A2:A12),ENTER回车 庖丁解牛: 我们对=MAP(A2:A12,LAMBDA(x,COUNTIF(A2:x,x)))函数公式进行解析 ➽➽ MAP函数的第1参数Array引用数组A2:A12,系统会遍历该数组中的每个元素,执行LAMBDA自定义表达式运算 ➽➽ LAMBDA函数的第1参数Parameter指向源数组A2:A12中被系统所遍历的每个元素 ➽➽ COUNTIF函数的第1参数Rang是A2:x,表示统计范围;COUNTIF函数的第2参数Criteria是x,表示统计条件 ➽➽ 函数公式的计算过程为
抛砖引玉: MAP函数通常是将计算结果作为内存数组的形式,传递给其他函数。即:它只是一个计算过程,而非最终结果。请看如下例题 【例题2】统计每个人物出现的次数 ▼ 小试牛刀: ※※ 在D1单元格内编辑函数公式
庖丁解牛: ➽➽ LET函数的第1参数和第2参数x,TEXTSPLIT(TEXTJOIN(",",,B2:B11),,","),表示先借助TEXTJOIN函数对人物内容进行拼接,再借助TEXTSPLIT函数对拼接内容进行拆分,后赋值于变量x。如下图所示 ▼ ➽➽ LET函数的第3参数和第4参数y,UNIQUE(x),表示借助UNIQUE函数对变量x去重并赋值于变量y。如下图所示 ▼ ➽➽ 借助SEQUENCE函数对变量y构造序列。如下图所示 ▼ ➽➽ 借助MAP函数对遍历映射的人物出现次数进行汇总。如下图所示 ▼ ➽➽ 借助HSTACK函数将“序号”、“人物”和“次数”返回结果进行横向堆叠。如下图所示 ▼ ➽➽ 借助VSTACK函数将“序号”、“人物”和“次数”字段标题进行纵向堆叠。如下图所示 ▼ 下课啦>>>: 当我们使用BYROW、BYCOL、MAP、MAKEARRAY、REDUCE、SCAN和ISOMITTED等编程类函数时,必须要借助Excel的动态数组功能,一次性返回全部结果。这样可以有效的避免反复调用单元格对象到内存中不至于影响Excel的运行和计算速度! 如果WPS不支持动态数组功能,则强行引入新函数将变得毫无意义!
|
|
来自: bookstore520 > 《Excel全家福》