Excel初学小白说说循环遍历函数reduce、scan和map简单说

打工人常用数据处理工具Excel造就了一个个表哥表姐,也使得表哥表姐们逐步成为大神。新版本的Excel新出了一批功能逆天的函数;包括今天我们要说的循环遍历函数,所谓的循环遍历就是一个一个循环,一个也不要错过的来进行一遍或者规定好的一个处理(lambda定义的过程)。

今天我们主要说说reduce、scan和map;他们的语法大同小异,大家自行研究一下;接下来,我们说说他们三个的区别,reduce主要是一个一个循环数组,最后得到一个结果;scan也是一个一个循环数组,但是得到的结果是多个,它循环一次得到一个结果,接着循环第二次得到第二个结果,……,最后把所有结果都呈现出来;map主要是映射(可以理解为函数的一一对应),处理的数组是什么样的,结果呈现的就是什么样,举例说明一下,map处理的数组是三行四列,最终得到的结果也是三行四列;他们三个,都是循环数组的每一个单元,但是结果有所却别而已。

下面,我们举例说明:

Excel初学小白说说循环遍历函数reduce、scan和map简单说

数据源(a1:b3)和结果(d1:d9)

我们要把a1:b3的三行两列数据转化成d1:d9的样子,我们的函数公式为:

=LET(arr,A1:A3,

brr,DROP(REDUCE(“”,arr,LAMBDA(x,y,VSTACK(x,REPTARRAY(y,OFFSET(y,,1))))),1),

crr,DROP(REDUCE(“”,OFFSET(arr,,1),LAMBDA(x,y,VSTACK(x,SEQUENCE(y)))),1),

MAP(brr,crr,LAMBDA(x,y,x&y)))

大家会发现,reduce处理后的数组第一行是空白,也就是初始值,我们要用drop函数处理一下,也就是说reduce常常搭配drop使用;map函数的数组最少一个,可以是多个,这里是两个数组,分别是对arr处理后的brr和crr;实则map函数这一段MAP(brr,crr,LAMBDA(x,y,x&y)),直接携程arr&brr也是可以的,这里只是用一下map函数;另外,大家应该也发现了,他们都要和lambda函数搭配使用,这就是他们功能逆天的缘故了,lambda让用户可以实现自己想要的各种功能,也就是我们上面提到的lambda定义的过程。

接下来,我们说点简单的东西,分别用reduce、scan和map实现同一功能;把A1:B4的数据处理成d1:d4的样子。

Excel初学小白说说循环遍历函数reduce、scan和map简单说

数据源(a1:b4)和结果(d1:d4)

针对这个题目,我们有以下几个方法,分别用上reduce、scan和map,具体公式为:

方法一:map函数多数组法

=LET(dt,A1:B4,MAP(CHOOSECOLS(dt,1),CHOOSECOLS(dt,2),LAMBDA(x,y,REPT(x,y))))

方法二:map函数单一数组法

=MAP(A1:A4,LAMBDA(x,REPT(x,OFFSET(x,,1))))

方法三:scan函数法

=SCAN(“”,A1:A4,LAMBDA(x,y,REPT(y,OFFSET(y,,1))))

方法四:reduce函数法:

=DROP(REDUCE(“”,A1:A4,LAMBDA(x,y,VSTACK(x,REPT(y,OFFSET(y,,1))))),1)

四种方法,实则本质都一样;相比之下,方法二比较简单。好了,就说到这里吧,希望对大家有所协助,也希望得到大神的指导,谢谢大家!

© 版权声明

相关文章

5 条评论

  • 头像
    品牌童装货源 读者

    如何使用一个单元格内的公式,而不是每个单元格都下拉填充公式,实现序号的填充,并且遇到空白单元格自动跳过去,并且序号是累加的

    无记录
    回复
  • 头像
    思想聚焦 投稿者

    我不是Excel老师,我只是分享一下,另外,如果学习新函数,尤其是这些个函数,不会嵌套的就不适合,个人观点,不喜勿喷。

    无记录
    回复
  • 头像
    耳東 读者

    一下👍

    无记录
    回复
  • 头像
    蔚山流浪卖艺站街女 投稿者

    感谢感谢,互相学习

    无记录
    回复
  • 头像
    豆仔 读者

    用这么复杂的函数组合不懂的还是不懂,懂的也会绕迷糊,要是当老师,就是误人子弟

    无记录
    回复