-套路合集-
按指定次數(shù)重復(fù)內(nèi)容
1.vlookup精確查找(4參為0)
如下圖所示,B列的是要重復(fù)的內(nèi)容,C列是要重復(fù)的次數(shù),最后想要的效果是E列那樣。A重復(fù)2次,B重復(fù)3次......
首先在A列添加一個輔助列,在A3單元格輸入公式=SUM(C$3:C3),向下填充。這樣A列得到的數(shù)據(jù)就是C列次數(shù)的累加求和。然后在E2單元格輸入公式=IFNA(VLOOKUP(ROW(A1),$A:$B,2,),E3)&"",向下填充,完成。
這個公式用的是vlookup的精確查找方式,外面套了個ifna是為了處理錯誤值,如果vlookup的結(jié)果出錯,那么返回下一個單元格。這個公式剛開始的時候還是不太好理解的。因為它的結(jié)果會引用(依賴)下一個單元格,而下一個單元格會引用下下一個單元格。
如果不用輔助列也能做出來,公式比較長。在G2單元格輸入第1個公式=IFNA(VLOOKUP(ROW(A1),IF({1,0},SUMIF(OFFSET(C$3,,,ROW($1:$4)),"<>"),B$3:B$6),2,),G3)&"",先按ctrl+shift,再按enter。向下填充。
在H2單元格輸入第2個公式=IFNA(VLOOKUP(ROW(A1),IF({1,0},MMULT(N(ROW($1:$4)>=COLUMN(A:D)),C$3:C$6),B$3:B$6),2,),H3)&"",不用三鍵,向下填充。
這2個公式之所以不用輔助列,是因為已經(jīng)用offset或mmult構(gòu)建出A列的輔助列了,只不過放在內(nèi)存數(shù)組中,而不是單元格中。
2.lookup升序查找
同樣先看輔助列的公式,在A列添加輔助列(其它列也可以),在A3單元格輸入公式=SUM(C$2:C2),向下填充,注意這個輔助列是從0開始的,比上一個例子的輔助列多個0。然后在E2單元格輸入公式=LOOKUP(ROW(A1)-1,A$3:A$7,B$3:B$6)&"",向下填充,完成。
不用輔助列的公式也給出2個,第1個在G2單元格輸入公式=LOOKUP(ROW(A1)-1,MMULT(N(ROW($1:$5)>COLUMN(A:D)),C$3:C$6),B$3:B$6)&""。
第2個在H2單元格輸入公式=LOOKUP(ROW(A1)-1,SUMIF(OFFSET(C$2,,,ROW($1:$5)),"<>"),B$3:B$6)&"",這2個公式都不用按三鍵,向下填充。主要用的函數(shù)還是offset和mmult。
3.match精確查找(3參為0)和升序查找(3參為1或缺省)
首先看match精確查找,其實和vlookup精確查找是差不多的。A列添加輔助列(其他列也可以),在A3單元格輸入公式=SUM(C$3:C3),向下填充。然后在E2單元格輸入公式=IFNA(INDEX(B$3:B$6,MATCH(ROW(A1),A$3:A$6,)),E3)&"",向下填充完成。
不用輔助列的公式就不寫出來了,基本都差不多,大家可以自己下載文件查看。
再來看match升序查找,這種查找方式和lookup還有vlookup模糊查找的方式基本差不多。所以vlookup函數(shù)也可以用模糊查找的方式來完成,大家可以自己試一下。接下來還是看match升序查找,同樣添加輔助列,在A18單元格輸入公式=SUM(C$17:C17),向下填充。然后在E18單元格輸入公式=INDEX(B$18:B21,MATCH(ROW(A1)-1,A$18:A$22))&"",向下填充完成。
4.textjoin+rept
textjoin是個文本連接函數(shù),我個人是非常喜歡這個函數(shù),所以很多時候都會往這個函數(shù)的方向來思考問題。在E2單元格輸入公式=TRIM(MID(TEXTJOIN(,,REPT(A$3:A$6&REPT(" ",99),B$3:B$6)),ROW(A1)*99-98,99)),按三鍵結(jié)束,向下填充。
簡單地說下大概的思路,先用重復(fù)函數(shù)rept來按次數(shù)重復(fù)內(nèi)容,比如A重復(fù)2次就成了AA,B重復(fù)3次就是BBB,......當(dāng)然AA中間還要加入99個空格,然后用textjoin將中間帶空格的AA,BBB....連接成一個很長的字符串,最后用mid一個個提取出來。簡單來說就是先重復(fù),再連接,最后提取。
5.二維數(shù)組的萬金油
在上篇文章《萬金油公式在二維數(shù)組中的應(yīng)用》中,我發(fā)現(xiàn)二維數(shù)組的萬金油公式可以實現(xiàn)按次數(shù)重復(fù)內(nèi)容的效果。在E2單元格輸入公式=INDEX(A:A,SMALL(IFERROR(--MID(REPT(ROW($3:$6)&REPT(" ",99),B$3:B$6),COLUMN(A:I)*99-98,99),4^8),ROW(A1)))&"",按三鍵結(jié)束,向下填充。
這個題目和之前那個題目還是有些不一樣的,因為之前那個題目要重復(fù)的次數(shù)不是像今天這樣直接寫在一個單元格中的,而是把所對應(yīng)的內(nèi)容橫向分布在多個單元格中,所以現(xiàn)在也要像之前那樣構(gòu)建二維數(shù)組。有興趣的童鞋可以自己看下公式。覺得復(fù)雜也可以用前面的公式。當(dāng)然除了用函數(shù),還可以用其他的方法,比如pq,vba等。
練習(xí)文件鏈接:
https://pan.baidu.com/s/18s8lODJzeTurSvvKVi3Vzw
提取碼:7dmd
聯(lián)系客服