在進(jìn)行一些合并、匯總工作中,經(jīng)常碰到的一個問題是有一堆格式類似的不同工作表,希望能有一張匯總表顯示其中的一些數(shù)據(jù),又不想一個個手動link。而想用公式拉時又會發(fā)現(xiàn)工作表名無法作為變量隨之移動。 這里介紹一個常用函數(shù):indirect(以下都不解釋函數(shù)原理,反正寫了也沒人看^ ^) *但這種方法Link的話無法通過追溯公式直接定位到對應(yīng)單元格,推薦使用建立工作表的超鏈接替代 內(nèi)容分為三塊 1、Indirect的簡單使用 2、Indirect配合match/Lookup使用 3、其他配套事項 簡單來說,當(dāng)使用indirect跨工作表引用時,規(guī)律如下:=indirect(“工作表名!單元格區(qū)域”) *indirect也可以跨工作簿,但一定要工作簿維持打開才可以保持引用有效,沒啥用就不介紹了??绻ぷ鞑敬罅?amp;維持鏈接的引用至今沒有很好的解決方法。 觀察規(guī)律,發(fā)現(xiàn)括號里頭尾各有一個雙引號,如果這時非動態(tài)引用一個名為C.現(xiàn)金的工作表的B2單元格,公式如下:=INDIRECT('' C.現(xiàn)金'!B2') 即工作表名部分變?yōu)閱我?工作表名 單引號 則動態(tài)引用時工作表名部分如下:雙引號 &單元格位置& 雙引號,即如圖所示: 這時就達(dá)成了最簡單的跨工作表動態(tài)引用的效果。(注意Indirect引用工作表名里不能有空格) 不過這是在知道我們要引用B2單元格的情況下,那如果這個單元格的位置在每個工作表里都不確定呢?比如我們需要引用每張工作表的合計數(shù)。該合計數(shù)在不同表中列數(shù)相同但行數(shù)不同。 這時有兩種方法,match函數(shù)與lookup函數(shù)。這兩個函數(shù)都是用來查找的,前者返回查找的單元格的位置,后者返回單元格的內(nèi)容。 比如在兩個工作表里有一行結(jié)果&數(shù)字,分別為第二行和第五行,對應(yīng)值分別為5和10. 使用Match Indirect引用則返回對應(yīng)行號:=MATCH($A$1,INDIRECT(A3&'!A:A'),0) 然后使用index indirect引用行號以及工作表名與相應(yīng)的列則返回結(jié)果對應(yīng)的數(shù)據(jù):=INDEX(INDIRECT('''&$A3&''!B:B'),$C3) 注意:Match函數(shù)的最后一個變量寫0就會查找第一個匹配的值。此時數(shù)列可以以任意順序排列。 如果使用Lookup函數(shù)則公式如下:=LOOKUP(1,0/(INDIRECT(A3&'!A:A')=$A$1),INDIRECT(A3&'!B:B')) 原理就不解釋了,這時候可以避開lookup函數(shù)對應(yīng)列必須升序排列的缺陷并且直接得到結(jié)果,但這僅適用該列只有一個“結(jié)果”的情況。當(dāng)存在多個“結(jié)果”時,由于Lookup使用二分法查找,故不會像match一樣返回第一個匹配的值。 此時,就可以根據(jù)你的需求,隨心所欲地獲取你想要的單元格的數(shù)據(jù)了,包括可以實現(xiàn)引用倒數(shù)幾行等等。 以上就是我個人對于這類匯總工作常見需求的應(yīng)對方法,如果有更方便的歡迎討論。此外,其實網(wǎng)上也有很多excel插件匯總了各種批量合并批量改名等等功能,我自己也裝了。不過由于付費、安全等等因素,有時候不一定適用所有人,VBA 函數(shù)則是微軟默認(rèn)功能,不會存在突然用不了了的問題。 以上函數(shù)由于展開來講內(nèi)容太長了,其實能夠復(fù)制然后對應(yīng)著自己的需求改下公式就行了。 最后之前有個小伙伴后臺問關(guān)于Power query合并重復(fù)的問題,因為過了48小時就沒法再回復(fù)了,就直接在這里回復(fù): 我不清楚你用的是2013還是2016版本,根據(jù)我2013的經(jīng)驗來說,如果是從文件夾合并,這時會自動進(jìn)行如你發(fā)的那個專欄文章所說的刪除其他列并拓展,比如此時我從文件夾加載一堆表,選擇合并和編輯,在尚未進(jìn)行任何其他操作的情況下,左側(cè)默認(rèn)選擇其他查詢: 右側(cè)顯示如下: 不用進(jìn)行任何其他操作,自動就是把幾個工作表按順序拼起來的樣子了。我不確定你說的問題是由于版本不同造成的還是其他原因。 |
|