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