說到多文件匯總、多表匯總,,解決方案有很多,,可以使用數(shù)據(jù)透視表、VBA,、函數(shù),、Power Query等,對于txt,、csv文件,,我們還可以用批處理來合并。但是我還是鐘愛用SQL查詢的方式來實現(xiàn),。這是為什么呢,? 理由一:不受數(shù)據(jù)源格式限制 假如數(shù)據(jù)源中多個表的格式不一致,比如每列的位置不一致,、列數(shù)不一致等,,使用上面那些方法就不好用了。但是,,使用SQL查詢的方式,,查詢結(jié)果可以統(tǒng)一列的排列順序。 理由二:隨心所欲地選擇數(shù)據(jù) 數(shù)據(jù)源中有很多字段,,但是相當多的字段其實都是冗余字段,,對我們分析數(shù)據(jù)沒有任何幫助,。如果我們把全部字段都包含進來,那么匯總文件就會很大,,每次打開都會很費時間,。用SQL查詢的方式就可以做到想要什么就選擇什么字段,一個幾十MB大小的文件,,可以縮減到不到1MB,,就是因為去掉了不需要的冗余字段。 理由三:方便的過濾功能 通過添加條件語句,,可以方便地過濾掉不需要的數(shù)據(jù),,使匯總數(shù)據(jù)干凈、簡潔,、明了,。并且在條件語句中支持模糊查找及各種算術(shù)運算符,還可以使用子查詢等,,極大地豐富了條件的設(shè)置,。 理由四:直接匯總分析,一步到位 可以直接在語句中指明匯總方式及按照什么字段匯總,,比如求和,、計數(shù)、求平均值,、最大值,、最小值等統(tǒng)計功能,直接一步到位,,不需要再單獨設(shè)置透視表或公式來統(tǒng)計。 理由五:直接創(chuàng)建數(shù)據(jù)透視表 在創(chuàng)建查詢的過程中,,可以直接設(shè)置創(chuàng)建數(shù)據(jù)透視表的方式來返回數(shù)據(jù),,不需要單獨生成列表再創(chuàng)建數(shù)據(jù)透視表,減少操作步驟,,方便快捷,。 理由六:靈活、開放式的數(shù)據(jù)區(qū)域 就像用Offset指定動態(tài)區(qū)域一樣,,使用SQL查詢也可以設(shè)置開放式的區(qū)域,,數(shù)據(jù)源增、減行數(shù),,一刷新就可以反應(yīng)到查詢結(jié)果中,。并且,在查詢參數(shù)中可以指定每個表中有效的數(shù)據(jù)區(qū)域,,該數(shù)據(jù)區(qū)域參數(shù)也可以設(shè)置成開放式的動態(tài)區(qū)域,。 理由七:可以動態(tài)指定查詢參數(shù) 可以使用單元格內(nèi)容作為查詢參數(shù),,動態(tài)地反映不同的查詢條件所得到的結(jié)果,這里需要在MS Query中設(shè)置,。 理由八:處理大數(shù)據(jù)時,,速度快 如果你的數(shù)據(jù)源有幾萬行、十幾萬甚至幾十萬行時,,甚至在加上各種條件,,使用SQL查詢的優(yōu)勢就很明顯了。 原因九,、十,、十一……:等待你來發(fā)掘... 好了,說了這么多好處,,你是否也蠢蠢欲動了呢,?下面我們就來介紹一下這種方法。 SQL基礎(chǔ) SQL就是Structured Query Language,,結(jié)構(gòu)化查詢語言,,可以用來查詢、更新,、管理數(shù)據(jù),。SQL語句有很多,跟Excel結(jié)合起來,,我們重點看一下Select,、where、group by,、order by等,。 SQL查詢語句示例 1、查詢名稱為Data的表中的所有字段的數(shù)據(jù) Select * from [Data$] 注意:Excel工作表名稱后面需要加上美元符號$,,并且需要放到方括號[]中,;星號*表示查詢所有字段的數(shù)據(jù)。 2,、查詢名稱為Data的表中的“銷售員”和“銷量”兩個字段,。 Select [銷售員],[銷量] from [Data$] 注意:字段名稱可以不加方括號,但是當字段名稱中間有空格,、字段名是SQL語句中的保留名稱等特殊情況時就必須要加方括號,;在查詢時,只要表中有這些字段就可以了,,不用管這些字段的前后順序,。 3、查詢名稱為Data的表中銷售員Lily的銷售信息 Select * from [Data$] Where 銷售員='Lily' 注意:需要指定條件時就用Where語句,,多個條件用And,、Or連接,,分別表示并且、或,;條件格式為[字段名]=“具體內(nèi)容”,,操作符可以是=、>,、<,、>=、<=,;如果是模糊查詢就用Like,,比如:銷售員 like '%Lily%' ;如果是同一個字段的多個值可以用關(guān)鍵字In,比如:銷售員 in ('Lily','Cherry'),。 4,、查詢名稱為Data的表中銷售員Lily的銷售總額 Select 銷售員,Sum(銷量) as Lily的總銷量 from [一組$] Where 銷售員='Lily' group by 銷售員 注意:進行匯總的時候,可以直接用Sum,、Group by,;在select中出現(xiàn)的字段,如果這個字段是匯總字段,,則這個字段必須加到Group by里面,;Sum函數(shù)是求和,也可用其他功能函數(shù),,比如:平均值A(chǔ)VG,、計數(shù)Count、最大值Max,、最小值Min,;As可以重命名字段。 5,、查詢名稱為Data的表中D5:F200區(qū)域的數(shù)據(jù)中銷售員和銷量兩個字段 Select [銷售員],[銷量] from [Data$D5:F200] 注意:在Data$后面加上區(qū)域的地址,,如果不知道最后一行是多少,或者為了讓數(shù)據(jù)區(qū)域是動態(tài)的,,可以省略最后一行的行號,如下,。 Select [銷售員],[銷量] from [Data$D5:F] 6,、查詢名稱為一組、二組,、三組三個表中的所有數(shù)據(jù) Select '一組' as 數(shù)據(jù)來源,* from [一組$] union all Select '二組' as 數(shù)據(jù)來源,* from [二組$] union all Select '三組' as 數(shù)據(jù)來源,* from [三組$] 注意:有需要合并的表,,就用union all連接起來,一般最多不能超過50個,。如果超過50個,,也可以用子查詢的方式來解決,。子查詢示例如下: Select * from (Select * from [一組$] union all Select * from [二組$] union all Select * from [三組$]) union all select * from [五十一組$]。在輸入SQL語句時,,各種符號一定要在英文狀態(tài)下輸入,,否則你可能半天都檢查不出來錯在哪兒;如果使用星號*,,那幾個表中的數(shù)據(jù)字段順序要一致,、數(shù)據(jù)區(qū)域大小要一致,如果直接指定字段名稱,,則不受此限制,。 7、查詢名稱為一組,、二組,、三組三個表中銷售員Lily和David的所有數(shù)據(jù) select * from (Select * from [一組$] union all Select * from [二組$] union all Select * from [三組$]) where 銷售員 in ('Lily','David') 或者 Select * from [一組$] where 銷售員 in ('Lily','David') union all Select * from [二組$] where 銷售員 in ('Lily','David') union all Select * from [三組$] where 銷售員 in ('Lily','David') 注意:可以在一個查詢語句的外面在嵌套上另外一個查詢語句,表示從查詢結(jié)果中再次查詢,。 8,、查詢名稱為Data的表中的所有字段的數(shù)據(jù)并按照日期排序 Select * from [Data$] order by 日期 注意:排序用order by,默認是升序,,加上DESC表示降序,,DESC是descending的縮寫。降序示例:order by 日期 Desc 以上就是常用的各種代碼示例,。 應(yīng)用實例 下面我們以實例講解一下怎樣合并多表的數(shù)據(jù),。 數(shù)據(jù)源文件中有三個表,分別是一組,、二組,、三組,里面有各個銷售員的銷售數(shù)據(jù),。 點擊【數(shù)據(jù)】選項卡下面的“現(xiàn)有連接”,。 在彈出的對話框中點擊左下角的“瀏覽更多”按鈕,,找到數(shù)據(jù)所在的文件,會彈出以下對話框,。 任意選擇一個表并點擊“確定”按鈕就可以了,,因為后面我們還要更改成查詢語句。 在彈出的對話框中我們可以選擇顯示列表或者直接創(chuàng)建數(shù)據(jù)透視表,,并且可以指定數(shù)據(jù)顯示的位置,。 這里我們選擇“表”,這樣我們就建立了鏈接并初步導入了數(shù)據(jù),。 在上一步中得到的數(shù)據(jù)區(qū)域,,點擊右鍵,選擇“表格”-->“編輯查詢”,。 在打開的對話框中輸入查詢語句,。 Select '一組' as 數(shù)據(jù)來源,* from [一組$] union all Select '二組' as 數(shù)據(jù)來源,* from [二組$] union all Select '三組' as 數(shù)據(jù)來源,* from [三組$] 這樣就完成了多表匯總。 是不是感覺很簡單呢,?趕快動手試一試吧,! 其他數(shù)據(jù)匯總方式,請移步,。 多表匯總,,你還可以這么做,,讓函數(shù)和VBA有多遠滾多遠! |
|