標題:
[發問]
用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/)