標題:
[發問]
EXCEL課程表結合行事曆呈現方式請求協助
[打印本頁]
作者:
520iopiop
時間:
2014-10-2 15:44
標題:
EXCEL課程表結合行事曆呈現方式請求協助
本帖最後由 520iopiop 於 2014-10-2 15:46 編輯
大家好:
小弟實在是迫於沒有更好的方式,所以想發問請求EXCEL高手的協助!!
前言:
小弟本身有用ASP結合MS SQL寫出一個簡單的行事曆擊點進去後會有相關訊息,而現在主管告知能否已EXCEL方式製作類似的行事曆,目前需求大約如下
1.資料表.JPG內(為主管提供的資料),重點在於綠色框框(日期區間),紅色框框(星期),藍色框框(時段)為主要依據.
2.將黃色框框(學員編號)顯示在Sheet2內的周曆上
問題:
1.如何將這三個依據去做該欄判斷呢??(我嘗試用INDEX與MATCH都無法呈現學員編號)
2.會有當日 時段內有兩個以上的學員產生,我該如何去將他呈現呢?
請各位給些意見~謝謝!!
http://61.60.207.9:5000/fbsharing/72AQ8qsf
附件貼不上論壇,用私人空間擺放!!
作者:
GBKEE
時間:
2014-10-3 16:09
回復
1#
520iopiop
附件貼不上論壇,用私人空間擺放!!
將檔案放在壓縮檔可上傳
試試看
Option Explicit
Sub Ex()
Dim Sh(1 To 2) As Worksheet, Rng(1 To 3) As Range, CRng(1 To 2) As Range
Dim i As Integer, R As Integer, C As Integer
Set Sh(1) = Sheets("Sheet1") '資料表
Set Sh(2) = Sheets("Sheet2") '呈現表
Set Rng(1) = Sh(1).Range("i3:j3") '課程起日~課程迄日
Set Rng(2) = Sh(2).Range("c4") '排程開始日期
Set CRng(1) = Sh(1).Range("M2:S2") '上課星期
Set CRng(2) = Sh(2).Range("b5", Sh(2).Range("b5").End(xlDown)) '上課時間
Rng(2).Offset(1).Resize(CRng(2).Rows.Count, 7) = "" '清除呈現表
Do While Rng(1).Cells(1) <> "" '課程起日<>""
i = 0 '排程開始日期的欄位
Do While Rng(2).Offset(, i) >= Rng(1).Cells(1) And Rng(2).Offset(, i) <= Rng(1).Cells(2)
'迴圈的條件:呈現表的日期是[課程起日~課程迄日]的期間
C = CRng(1).Cells(Application.Match(Format(Rng(2).Offset(, i), "AAAA"), CRng(1), 0)).Column
'C = 資料表的上課星期中搜尋,排程日期的星期欄數
Set Rng(3) = Sh(1).Cells(Rng(1).Row, C) '資料表的上課的時間區段
If Rng(3) <> "" Then
R = Application.Match(Rng(3), CRng(2), 1)
'R=列數:呈現表的上課的時間中所對應的,資料表的上課的時間
Rng(2).Offset(R, i) = IIf(Rng(2).Offset(R, i) = "", Sh(1).Cells(Rng(1).Row, "B"), Rng(2).Offset(R, i) & vbLf & Sh(1).Cells(Rng(1).Row, "B"))
'排程開始日期(R列, i欄)
'Sh(1).Cells(Rng(1).Row, "B") =>資料表的學員編號
End If
i = i + 1 'Rng(2).Offset(, i)->排程開始日期的欄位,向右移動一欄
Loop
Set Rng(1) = Rng(1).Offset(1) '課程起日,向下移動一列
Loop
CRng(2).EntireRow.AutoFit
End Sub
複製代碼
作者:
520iopiop
時間:
2014-10-6 13:30
回復
2#
GBKEE
謝謝您的幫忙!! 我用您的語法在去做修正(因為判斷的依據又有變更)!!
但我大概了解了~:) 這裡真是高手雲集阿...
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)