SCPPO(二十五):從導資料看如何將一天過出多天的效果
【前言】
最近在微信朋友圈中看到一篇不錯的文章,無巧不成書,剛剛又在專案中做了一次導資料的任務,在做完後感覺收穫許多,於是總結一下,發現得出的結論結論可以用這篇文章竟標題來代替!
【有趣探索旅程】
一、前提:
說起導資料,相信參加過維護評教和考試的小夥伴們都是刻骨銘心吧!回想起當時,真是一把辛酸淚,無數次哭暈在廁所。怎奈何?冤家路窄,今天又遇到這個問題,真是淚崩,真懷疑是上班前忘去少林寺給自己開光哈(程式設計師帶伺服器進寺廟開光 讓法師保佑永不宕機)。
二、需求:
由於模組要單獨做成產品,所以要資料做支援;資料:16年6月份和7月份某企業的18個裝置的所有三個型別的現金流,每天的開單資料,將資料彙總在一起;
三、兩種實現方式花費時間及流程:
1、採用系統的介面匯出方式:
(1)操作一次流程:點開日期加載出報表資料,另存為Excel,開啟Excel將資料進行復制,在彙總Excel中進行貼上;
(2)測試操作一次所用時間1分鐘(在正式伺服器上操作該流程測試出來,時間主要花費在系統每次載入報表資料);
(3)完成該需求需要進行操作次數18*61*3=3294次(其中18代表18個裝置,61代表6月份和7月份的總天數,3代表三個型別現金流);
(4)結論:共需花費時間—3294*1=3294分鐘=54.9
2、分析系統直接在資料庫中查,並利用Excel一些技巧實現方式
(1)查詢出所有明細資料:
A.操作流程:通過報表系統找到SQL語句並修改SQL語句查出每個型別的每個月的每個裝置的資料,將該資料從資料庫中複製到彙總表中共需操作次數:18*2*3=108次(18代表18個裝置,2代表兩個月,3代表3個現金流型別);
B.將查詢出的效果依次複製到彙總表中;
C.操作完後的效果圖:
(2)查詢出所有彙總並填到(1)中明細中:
A.操作流程:在明細表中新增一空行—>將資料庫中每個月每個裝置的每天彙總資料查詢出來—>利用VBA將資料庫中的彙總新增到明細表中;共需操作:2*18*2=72
B.在明細表中將每個裝置的每天的上新增一行(為新增彙總資料所用)(參考:Excel如何兩組不同的資料之間插入一行)
原來的資料圖:
新增完空行效果圖:
D.研究將將彙總資料查詢出來自動放到明細表中預留出來的空行中(利用VBA對Excel操作):
①原始資料:
Sheet1:
Sheet2:
②點選執行插入資料按鈕後的效果圖:
③VBA相應程式碼(其中按Alt+F11可看到VBA程式):
F.最終完成的示意圖:
G.溫馨提示:為什麼不在Excel中彙總的時候直接求和而去資料庫中再查一遍那?
在查的時候發現Excel詳細的資料是在資料庫中經過四捨五入的資料,而真正系統報表顯示是先求和後再四捨五入;如果按照Excel中直接求和會有偏差。
(3)時間(此時間包括操作時間以及改造SQL語句和嘗試使用Excel技巧時間):
A.將除彙總外的資料放到Excel中用時:2016年10月18日 14:00—2016年10月18日18:00=4小時
B.將每天的彙總加入到(2)中彙總的資料用時:2016年10月18日 21:30—2016年10月19日 3:30=6小時
C.共花費時:4+6=10小時
(4)次數:
A.將除彙總外的資料放到Excel中操作次數:108次;
B.將每天的彙總加入到(2)中彙總的資料操作次數:72次
C.總操作次數:108+72=180次
3、兩種方式對比:
第二種方式(SQL語句+Excel操作)比第一種方式(通過系統導)時間上減少:54.9-10=44.9小時;操作次數減少:3294-180=3114次
【總結】
1、做一次資料並不是做完算完了,通過總結這個過程形成文件,看出自己所做的工作的意義所在,增加成就感;其次在下次無論是自己還是他人再導資料的時候可以在以上的方法再進行優化;
2、程式猿需要有工匠精神,用心去做完一件事後會感覺好爽;
3、也感受到通過自己的工作節省了這麼多的時間,很明顯的感受到自己工作的意義,更加深刻的感受到生活的美好。