Board logo

標題: [發問] 用VBA自己篩選 還是用一般方式處理? [打印本頁]

作者: guaga    時間: 2013-11-8 09:20     標題: 用VBA自己篩選 還是用一般方式處理?

想請問一下大家
有辦法將 附加檔案中 每日生產工時/產值 那邊的內容
另外做一個SHEETS 像 [每日報表] 那樣
如果在[每日報表]輸入日期 然後 操作員的  開始時間 結束時間 總工時 休息時間  工時差 產值
能自己跑出來加總嗎

我有試過用樞紐分析表 不過資料跟自己加總的不太對?
要用程式下去跑嗎
麻煩大家了
作者: joey0415    時間: 2013-11-11 12:01

本帖最後由 joey0415 於 2013-11-11 12:03 編輯

我自己新開一個新檔

資料=>現有連線=>更多=>excel檔=>日報表=>內容=>定義

儲存格修改一下格式設定

參考參考

sql語法

select 日期,操作員,開始時間,結束時間,[總工時(分)],[休息時間(分)],[應完成時間(分)],工時差 from [日報表$] where 操作員='蒂妮'

select sum([總工時(分)]),sum([休息時間(分)]),sum([應完成時間(分)]),sum(工時差) from [日報表$] where 操作員='蒂妮'


[attach]16658[/attach]

[attach]16659[/attach]


[attach]16661[/attach]

[attach]16662[/attach]
作者: guaga    時間: 2013-11-11 16:35

回復 2# joey0415
想請問一下
可是這樣的做法 能看到每個操作員的資料嗎
不好意思 我對於SQL不是很了解 可以問一下語法是要放在哪裡呀?
作者: guaga    時間: 2013-11-11 16:45

回復 2# joey0415

你好
我試過你說的這個方法了
不過在合計的地方
還是要自己加總對不對?
作者: joey0415    時間: 2013-11-11 19:02

本帖最後由 joey0415 於 2013-11-11 19:08 編輯

回復 4# guaga

select sum([總工時(分)]),sum([休息時間(分)]),sum([應完成時間(分)]),sum(工時差) from [日報表$] where 操作員='蒂妮'

最後一張圖就是蒂妮的個人加總,如果要每人,每天的加總

你可能還要再參考一下sql中的group by語法,功能很強大哦!

我自已在資料庫中使用group by語法,約29萬筆資料,以excel叫出來,並使用雙重group by語法,好像不用十秒就運算完了

你那個還算簡單,建議如果資料量大一些,還是放在真正的資料庫中,安全運算又方便

當然以上語法,如果正確,你還可以用錄製的方式,產一vba碼,最後把人名等改成變數並製成下拉選單按鈕,最後你要查什麼,下拉選單找到人名,按下去就知道

花一點時間研究一下就可以省很多力氣

博碩文化的  excel與外部資料無縫整合,這本你可以參考一下!

參考
作者: guaga    時間: 2013-11-12 10:31

回復 5# joey0415

我用出來了謝謝你
想請問一下 你說的group by  
有辦法將所有操作員做一個加總嗎
還是要用VBA撰寫?
作者: joey0415    時間: 2013-11-12 11:39

本帖最後由 joey0415 於 2013-11-12 11:43 編輯

回復 6# guaga

select   員工, sum(你要加總的欄位,例如工時) from 你的sheet   where 你要選取的範圍(如指定日期…)    group by 你要每分組的欄位(例如:員工, 日期)


    類似這樣的語法,你大概可以把所有的資料,按照,員工與日期,把所有工時加總


以上為個人自學用語不一定精準

group by就是把你要的資料分成一群一群的,之前在按照你要select條件判斷,例如你要sum加總,它就將你指定的群組加總…


參考參考
作者: guaga    時間: 2013-11-12 15:28

回復 7# joey0415
自學可以這麼厲害  我要檢討檢討
是參考"excel與外部資料無縫整合"這本學的嗎
作者: guaga    時間: 2013-11-12 15:39

回復 8# guaga

不好意思 在請問一下 如果要增加操作人員是 在where 操作員後面再增加名稱嗎
select sum([總工時(分)]),sum([休息時間(分)]),sum([應完成時間(分)]),sum(工時差) from [沖壓日報表$] where 操作員='蒂妮,宇拉'
作者: joey0415    時間: 2013-11-12 19:19

回復 9# guaga


select sum([總工時(分)]),sum([休息時間(分)]),sum([應完成時間(分)]),sum(工時差) from [沖壓日報表$] where 操作員 in ('蒂妮','宇拉')

可以參考以下
http://www.1keydata.com/tw/sql/sqlin.html

而第九篇回文的方式,可以列出所有操作員的加總項

而你問的則是指定某些人員

而 in  中的人員,也可以是selcet查詢  ,例如你利找到某種排列的前三名語法後,把它放進in中,它也會自動找出你要的進階資料

例如子查詢
http://www.1keydata.com/tw/sql/sql-subquery.html
參考
作者: guaga    時間: 2013-11-13 10:05

回復 10# joey0415

真的很謝謝你這麼有耐心幫我!!!

後來我有參考網站用group by
SELECT 操作員, sum(產值) FROM [沖壓日報表$] GROUP BY 操作員  這個沒有問題

但是要增加日期下去 值就跑掉了
SELECT 操作員, sum(產值),sum(日期) FROM [沖壓日報表$] GROUP BY 操作員

還有 欄位的預設值都是這樣(如圖)
[attach]16683[/attach]
作者: joey0415    時間: 2013-11-13 14:31

回復 11# guaga


    SELECT 操作員, sum(產值) as 總產值,sum(日期) as 總時數 FROM [沖壓日報表$] GROUP BY 操作員

as 把就把前面的東西重新命名
作者: joey0415    時間: 2013-11-13 14:45

回復 11# guaga


將你的資料簡化一下,如下

設定一下你的日期格式即可

select sum([總工時(分)]) as 時數  , 日期,操作員  from [工作表1$] group by 日期,操作員
    [attach]16688[/attach]

[attach]16689[/attach]
作者: guaga    時間: 2013-11-13 15:51

回復 13# joey0415

你好 我後來用你說的方式改寫
select
sum([開始時間]) as 開始時間  ,
sum([結束時間]) as 結束時間 ,
sum([總工時(分)]) as 總工時,
sum([休息時間])  as 休息時間
sum([應完成時間(分)]) as 應完成時間,
sum([工時差]) as 工時差,
sum([產值]) as 產值 ,
日期,操作員 from [沖壓日報表$]
group by 日期,操作員

可是休息時間會出錯  後來我先把休息時間刪掉
[attach]16690[/attach]

後來變成開始與結束時間 都跟原本的不同  到是其他值都對?




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)