iT邦幫忙

0

徵求VBA神人

vba

XD各位大大好~小弟因為要做出公司每個員工教育訓練名單GOOGLE目前沒查到相關資料所以到這請求神人大大協助
目前我擁有的表單格式如下
表單1
員工編號 中文姓名 部門名稱
X0000007 王大明 業務部

表單2
課程 上課日期 部門
銷售技巧 2014/01/01 業務部
基礎客戶服務 2014/01/02 ALL (意旨所有部門都要上)

完成後所需結果須如下

(員工編號)為該EXCEL Sheet 的名稱

王大明 業務部
銷售技巧 2014/01/01
基礎客戶服務 2014/01/02

看更多先前的討論...收起先前的討論...
zuyan iT邦好手 1 級 ‧ 2014-01-15 10:24:15 檢舉
建議輸出在同一個sheet...
員工人數多的時候 sheet 會很多很多 之後要整理資料沒有比較好用

張三
課程一 日期一
課程二 日期二

李四
課程一 日期一
課程三 日期三
ppoty456 iT邦新手 5 級 ‧ 2014-01-15 11:13:54 檢舉
感謝大大提醒,這點我有跟使用者討論過不過使用者堅持這樣做所以才發文
zuyan iT邦好手 1 級 ‧ 2014-01-15 13:34:28 檢舉
你應該堅持的.....
因為如果還有其他處理的時候,,,把它給標準化是會比較好的

張三 課程一 日期一
張三 課程二 日期二

李四 課程一 日期一
李四 課程三 日期三

因為這樣做之後可以用內建的表單 "樞紐分析表" ...
把所有人的課表做在同一張表上

也可以用自動篩選...

好處多很多 ..比如用自動篩選..在某一天課程上課的有誰...
順便做出簽到簿...
ppoty456 iT邦新手 5 級 ‧ 2014-01-15 16:17:58 檢舉
感謝大大回答

但是我是要做個人清單

例 某某人 該上的課有哪些 上課日期是何時
zuyan iT邦好手 1 級 ‧ 2014-01-15 20:18:52 檢舉
在同一個sheet 也可以啊!!
不同sheet要也可以...
只是我那麼多的經驗中..告訴我應該這樣做...

2 個回答

2
showjack
iT邦新手 1 級 ‧ 2014-01-23 15:25:52
最佳解答

a. 在sheet1 把員工資料都建好
b. 在sheet2 把課程資料都建好

程式碼不算太難
dim rr as integer '等一下用來做為輸出時的 row number
rr=1
for i= 1 to 員工人數
for j=1 to 課程數量
if (sheets(2).cells(j+1,3)=sheet2(1).cells(i,3)) or ((sheets(2).cells(j+1,3)="ALL) then
rr=rr+1
sheets(3).cells(rr,1)=sheets(1).cells(i,1)
sheets(3).cells(rr,2)=sheets(1).cells(i,3)
sheets(3).cells(rr,3)=sheets(2).cells(j,1)
sheets(3).cells(rr,4)=sheets(2).cells(j,2)
NEXT j
NEXT i

4
zuyan
iT邦好手 1 級 ‧ 2014-01-15 21:14:40

使用雙迴圈將 資料展開

圈i >>
建立新 sheet ..
個人課程資料指標 = 1
圈j >>
if 課程資料參加 = 員工 or = 業務部門 是則 加入建立的sheet的資料中
個人課程資料指標 ++

圈i 為 員工 數
圈j 為 課程項目 數

程式的結構大概是這樣 ...

zuyan iT邦好手 1 級 ‧ 2014-01-15 21:15:41 檢舉
<pre class="c" name="code">圈i >>
建立新 sheet ..
個人課程資料指標 = 1
        圈j >>
        if 課程資料參加 = 員工 or = 業務部門 是則 加入建立的sheet的資料中
        個人課程資料指標 ++

我要發表回答

立即登入回答