各位前輩好:
不曉得應如何下標題較清楚,所要詢問的資料內容如下(附件為資料zip):
excel 內 有數個工作表(按月份分)及 excel A欄為[診所名稱]、B欄為[轉診次數].
但
每個工作表中 A欄 的 診所數量 並不相同
(例如 1月 有家診所叫 mobile01診所,但他在 2月 並沒有出現,直到 3月 又出現)。
已知 欲加總每個工作表的每家診所轉診總次數,可用 [資料]->[合併彙算] 進行。
本次問題:
想依 每間診所 每個月份(例如 1 ~ 12 月)的轉診次數,製作 轉診次數 圖表(例曲線圖、長條圖)。
目前方法:手動尋找 每個sheet內 該診所當月的資料. 並逐一新增至新的 sheet . 製作成 該診所 當年度轉診次數資料.
由於資料每個月包括的診所上百間,想詢問有沒有什麼方式可以增加作業效率呢?
感激不盡!
附加壓縮檔: 201702/mobile01-8880ae1ace8d9df97a5efddbe55c1881.zip
hedy2896 wrote:
由於資料每個月包括的診所上百間,想詢問有沒有什麼方式可以增加作業效率呢?...(恕刪)
要快只能用vba來整理資料
想用公式也不是不行,但必需要先整理出一個有“全部診所名稱”的總表(如下)
如果有上百間診所,a欄就要有上百個名稱
每月份用sumproduct()來處理加總,最後再用這個總表來製作圖表
sumproduct()站上範例很多,請自行搜尋
不過缺點是,不能自動化,只要診所有增加或減少
都要人工再修改一次總表,圖表也要重新製作,也不適合每個月都要製作圖表的需求

改用vba可以一鍵全部處理好,vba 部份流程如下
一、先寫一個程式(自行想辦法),產生一個新工作表名稱暫定sheet1,把1~12月合併成下面這樣

二、用篩選分類
分類方式,請參考這一篇的範例
http://www.mobile01.com/topicdetail.php?f=511&t=5056987&p=1#63233105
把裡面 "a:a" 全部改成 "b:b"
這樣就可以用在sheet1這個工作表
想把一、的程式碼加進來也可以,位置在
Sub test()
Call delsheet
(合併工作表程式碼加在這裡)
…
…
順便把這行
If Worksheets(i).name <> "Sheet1" Then
改成
If Not (IsNumeric(Mid(Worksheets(i).Name, 1, Len(Worksheets(i).Name) - 1))) Then
三、因為分類之後會像下面這樣


所以要增加程式碼,來補上不足的月份(自行想辦法)
位置在這一行下面
.UsedRange.Copy Sheets("_" & namedata & "_").Cells(1, 1)
(補月份程式碼加在這裡,如果只要年度總表,可跳過)
然後會變成下面這樣


四、增加畫圖表程式碼(自行想辦法),位置在
.UsedRange.Copy Sheets("_" & namedata & "_").Cells(1, 1)
(補月份程式碼加在這裡)
(每月畫圖表程式碼加在這裡,也可不要)
五、年度總轉診次數,分類好再加上這一行程式碼
(補月份程式碼加在這裡)
(每月畫圖表程式碼加在這裡,也可不要)
Range("C14").FormulaR1C1 = "=""總轉診次數="" & SUM(R[-12]C:R[-1]C)"
六、如果程式完成的話,幾秒內就會依診所名稱自動分類、產生圖表,像下面這樣


或這樣


全部整理成一個年度總表也沒問題
程式碼位置
Next
(年度總表,或現有月份總表,程式碼加在這裡)
.AutoFilterMode = False


上百間診所也可以

這是慢動作

會回答您,是因為我曾經回答過資料分類的問題
也寫過一個快速處理複雜資料分類的vba範例,供大家參考。
不想回答的部份,不是不會,這個程式我早就寫好,您看到的圖都是程式跑出來了
我很樂意教學,但我不想成為部份有心人士(公司)的免費工具
故有所保留
錄製巨集辦不到的自動分類,直接抄範例就可以了
剩下的3個部份,都可以使用錄製巨集再稍作修改程式碼即可
我希望您能自己想想怎麼寫