處理 30 萬行 × 20 列的數據 Excel + VBA 是否可以勝任,Access 是否可以勝任,有沒有其他合適的軟體推薦?
背景如下
1、普通辦公需求,對數據處理基本上僅限於ifs,countifs,sumifs,vlookup,index,match這個級別的公式,但是屬於日常工作,每天都要更新一次原始數據,然後出報表。
2、數據源是.csv。
3、excel本身對30萬行+20列的數據打開就是非常痛苦的事情了,任何一個簡單的公式運行都會長達幾分鐘到十幾分鐘不等,而且期間電腦處於癱瘓狀態,容易卡死。
4、office是2013的。
5、本人有旺盛的求知慾和學習力。
問題如下
1、如果加VBA能不能解決問題?
2、如果VBA不行,那麼access能不能處理,access使用過程中是否需要使用其他軟體?(在某處看見說可以用infopath做介面,我不是特別理解是什麼意思。)
3、如果access可以勝任,那麼有沒有推薦學習的方法、視頻或者書籍?(我已經了解到有網易雲課堂,但希望不被推薦《XXX一日通》這類型的快餐書籍。)
4、如果access不能勝任,或者有更好的軟體可以使用,是否可以推薦?
請安裝power pivot或者power query,比用vba簡單多了。這個數量級是沒問題的,我處理過百萬級的。
謝邀。
個人建議access,原因在於:
1、excel並不適合對大量的原始數據進行運算,其擅長的在於數據格式等處理,也就是出報表。對於你的數據量來說,使用excel,特別是vlookup函數,真心卡到死。
2、VBA的話,我個人不是很熟悉,用的也不多。就個人的看法來說,純粹使用vba處理大量數據,程序寫起來比較麻煩,而且並沒有sql直觀和易讀。當然可以用VBA內嵌SQL來做
3、access的學習成本相對比較低,並且處理大量數據就是資料庫軟體的目的和作用,因此效率上還是有一定的保障的。
4、access和Excel的集成比較緊密,操作更方便。
我不知道你所說的原始數據的來源是什麼,按照我個人的理解舉個例子:
1、每天從其他系統or資料庫中,取得需要更新的原始數據,命名為「new.csv」
2、使用access創建一個到「new.csv」的鏈接,這樣每天只需要將最新的數據保存為「new.csv」即可
3、在Access中做初步的處理,比如匹配、匯總、篩選等,做出最終的一個匯總表
4、在excel中創建一個數據透視表,數據來源定義為該Access的資料庫文件中的匯總表,自定義好格式等;同時定義一個校驗表,設定一些勾稽關係等,數據來源同樣是Access,目的在於確保能夠發現源數據中存在的問題(如果可以確保源數據不會出錯,那麼校驗表就不需要了)
5、這樣,你每天需要做的事情就是,打開源系統下載數據,保存為「new.csv」,然後打開Excel,刷新數據透視表,這樣Access和數據透視表會同時刷新,數據及需要的報表就有了
至於access的學習問題,主要就是一些基礎的概念(表、視圖等)以及SQL語句。 會寫SQL,就會用Access了。
以上,請參考
excel可以完成。
有些功能建議放棄公式,使用數據透視表完成,並安裝Powerpivot插件
另外,關閉自動計算,一定程度上可以避免打開卡的問題
一般是這樣的,如果你還有後續處理的話,先把數據存在Access,然後在Excel裡面創建一個table,指向那個Access表,順便給一段SQL,這樣整理好的數據就可以在Excel裡面接著用了。全部用VBA也不是不行,本來也只有性能上的區別。
有10萬行*50列的excel數據,裡面有跟題主差不多的公式,大概會有30多m。excel經常無響應卡死。
嘗試過access,一方面使用沒excel熟悉,修改比較麻煩,另一方面access響應也很慢,所以還是放棄了access。
現在我的解決辦法是讓it在伺服器上給了我12顆cpu,8g內存。使用64位excel2010大概可以在一分鐘之內完成一次計算,基本沒有出現過無響應情況。你可以嘗試一下。
30W 行 20列, 假設每個單元格50B. 文件大小 0.3M * 20 * 50B = 300M
我用Excel打開過3,400m的文件 進行Pivot操作毫無壓力, 所以Excel完全能夠勝任
使用powerpivot處理這類數據絕對得心應手
excel現在本身支持一百萬行16k列的兩維表 超過一百萬行的 需要用powerpivot 你的問題看起來不是數據量的問題 而是你用來處理數據的公式 避免使用vlookup在大表格里會很有幫助 pivottable is your friend
Access /SQLite 應該可以,Excel理論上能搞定,實踐上要看人品,更大型的類似 Oracle,MSSQL OLAP 或者 SAS 、 PostgreSQL/Greenplum 之類的是肯定沒問題的。如果是我的話會直接跑各種Script了,不過那種除了R一般都沒有太好看的輸出。
在工作中,有些人也許是過於迷信Excel的能力,任何問題都試圖在Excel環境下解決,因此出現了各種數據分析問題的複雜的、甚至古怪的Excel解決方案。比如,過多的IF()嵌套、複雜的Match()Index()函數聯合、以及令人費解的數組公式、甚至本無必要的VBA編程等,讓本應簡單的Excel變成了這些人"秀"智商的工具。
造成這種現象的原因,公平地說,這並不怨他們,因為他們所熟悉的數據處理工具只有Excel一種,儘管有些實際問題並不適合Excel處理。
事實上,對於很多數據分析和處理問題,與其花大量時間尋求複雜、古怪、甚至可靠性讓人懷疑的Excel解決方案,還不如花一點時間,學習一種新的工具來增強我們在數據處理方面功力,也許會收到"山重水複疑無路,柳暗花明又一村"的效果!
我們承認,Excel是偉大的,但卻又不得不承認,Excel不是萬能的,它至少在"多數據表關聯"、"數據處理自動化"、"大量數據的處理"等方面存在著能力上的欠缺。
我們知道,Excel同時處理上萬條數據時速度就會明顯下降,如果工作表中含有大量公式,其運算速度簡直讓人難以忍受。關於Excel處理大量數據速度變慢的問題,我們千萬不能一個勁兒地抱怨Excel的能力,因為Excel本來就不是為了處理大量數據而設計的。
Excel的功用主要是用來分析數據,大量數據的處理則是資料庫軟體的強項。而對於我們這些非IT信息技術人員,Access,作為一個小型桌面資料庫管理軟體,是我們進行大量數據處理的首選。
關於Access的入門圖書,僅提供基本供您參考:http://yuedu.baidu.com/search?word=%C1%D6%CA%E9%C3%F7+Accesspbook=0
留個位置吧。
其實要是excel能搞定,就不會提這樣的問題了。
業務場景是怎樣的?如果是半年算一次,excel的方案也可以。統計局就是這麼乾的。
如果每天算三趟,只好access,不然加班都弄不完。
我算過。access是出名的效率差,但是比excel還是好很多。只能說側重點不同。
數據排查、去重複、匹配、分類匯總、計數都快。
如果僅僅是想存儲的話那麼Excel 2013 自帶powerpivot;
將這30萬數據導入到power pivot excel workbook里. 建立連接後每天定時自動更新;
但對這30萬數據進行分析查找,反映時間是個問題;
所以更好的辦法是
1. 把這30萬數據分表;快速的數據存儲分析第一步最好是對數據分表;第一次分可能不知道怎麼分,但是這真的是一勞永逸的事情(基於1nf,2nf,3nf)分成幾個表建立關係;以後分析處理做表達會非常非常的簡單!!!
2. 做成access,但介於你要分析數據,你需要學習SQL
可以考慮使用MongoDB.
善於利用資源啊:
如果你會go 可以 試試 dinedal/textql · GitHub
如果你會python 可以試試 harelba/q · GitHub
如果你會javascript 可以試試 mholt/PapaParse · GitHub
如果你會C#,可以試試paulyoder/LinqToExcel · GitHub
如果你會PHP,可以試試thephpleague/csv · GitHub
數據多了的時候,你用什麼都比用EXCEL快,畢竟EXCEL還要去顯示他們,多費時間和內存。
如果你什麼都不會,可以找個IT單身狗,他們都會。
看到這個題我都懷疑題主是不是我們廠請來發軟文的。。。
那我就配合一下做個廣告:
我們家splunk軟體正好符合你的要求,你的數據量應該可以直接用免費版。
報表生成,自動提醒,定時查詢,更新數據源,絕對用的你酥爽!沒試過這麼大量的行數,只用過15萬行大概十幾列的數據,電腦是4系4核筆記本I7加512G SSD和8G內存,感覺比當年雙核奔騰處理不到5萬條數據還快。
countif函數會挺要命的,貌似countifs反而好些,不同函數背後的演算法可能不同,要是程序死掉了換個其他函數試試,比如vlookup太慢的話就用offset(match())
用SQLite吧,不會我教你
數據源應該是從資料庫導出來的吧
為什麼不直接從資料庫里出結果
寫幾條語句,每天跑一下就完了
如果這類工作是需要經常處理的,建議學習一些ETL工具,比如我比較熟悉的微軟的SSIS就很好用。
資料庫一般也會自帶一些數據導入導出功能嚮導,可是據我的使用經驗,簡直不是一般的坑爹,被坑數次以後,我現在有數據遷移的工作都是老老實實寫SSIS腳本來做。
學習微軟的SSIS估計有一周時間差不多了。而一旦學會,就不用再害怕一般的數據遷移任務了。Excel可以就滿足你的需求, 順便問一下,前段時間漏出來的開房數據題主你現在才下好?
推薦閱讀:
※微軟該如何解決超解析度問題?
※OS X Yosemite 與 Windows 10 相比有哪些優缺點?
※SQL Server為什麼日誌文件越來越大?
※在 Windows 10上,Vmware Workstation和Hyper-V 深層次上有何優劣?
※為什麼微軟將其軟體開發平台起名為.NET?
TAG:微軟Microsoft | MicrosoftExcel | MicrosoftAccess | VBA | Excel公式 |