WPS专属函数+Excel,5种解法通关这个难题!
职场
教育
2024-09-13 07:04
江苏
随着微软和WPS不断的更新迭代,过去复杂的问题,现在不仅简单,而且多了很多解法,今天我们就给大家总结一波!需求比较简单,就是把A列的内容,按照B列指定的次数重复,并一列显示!我们将分享从老版本通用解法到最新的套路,从复杂到简单的各种套路!随着WPS的更新和Excel升级,这个解法使用已经比较少了,比较复杂,新手难以理解,需要一定的函数基础!我们简单解释一下,利用的是LOOKUP返回小于等于查找值的最大值对应的结果,第二参数把次数依次累和处理,对应的结果是{3;7;9},你可以参数用这个代替第二参数或者辅助列的方式来简化公式
=LOOKUP(ROW(A1)-1,SUBTOTAL(9,OFFSET($B$1,,,ROW($1:$4))),$A$2:$A$4)&""
上面的解法太复杂了,下面我们来看一下新版本的解法,难度要降低不少!
超级简单有没有,WPS和Excel365及以上版本都可以使用!这里有点数组的思维,也就是用A:Z对应的1~26列和3行次数比较,小于的时候,返回对应的内容,否则返回\,有文本没添加双引用,导致错误,在用TOCOL去掉错误,就这么简单!
=TOCOL(IF(COLUMN(A:Z)<=B2:B4,A2:A4,\),3)
当然365函数式编程后,很多同学很少使用过去的数组处理思维处理,所以下面我们讲一下遍历法!
下面分享是逐行遍历处理,一般的编程思路,if处理部分也有点数组,大家也可以使用EXPAND函数代替处理,基本一样,只是个人习惯!
=DROP(REDUCE("",B2:B4,LAMBDA(x,y,VSTACK(x,IF(SEQUENCE(y),OFFSET(y,,-1))))),1)
除了这些写法,WPS还推出了独有的函数,解决这个问题,相对也要简单很多!
REPTARRAY函数是WPS的专属函数,Excel没有对应的函数,也是今年WPS更新新增的函数!之前文章也有介绍过,感兴趣的可以翻一翻!简单来说,就是按照指定的次数,行列扩展,当然第一参数支持数组,但是可惜的是第2、3参数并不支持数组!=DROP(REDUCE("",D2:D4,LAMBDA(x,y,VSTACK(x,REPTARRAY(OFFSET(y,,-1),y)))),1)
以上都是常规的思路,还有一些冷门的字符解法,我们也可以简单分享一个!但是一般并不推荐,因为字符串长度有限制,这是单元格本身容纳的字符量所限制的!
这个应该就不用多解释了,文本添加间隔符,然后按指定的次数重复内容,合并都一起后再拆分即可!
=TEXTSPLIT(CONCAT(REPT(A2:A4&"|",B2:B4)),,"|")
以上就是我们给大家总结的几种玩法了,你都会吗?以后遇到类似的问题,不要再说不会了!今天的函数的专题、Py、PQ、技巧等都可以处理这些基础问题!快去试试吧!