0
我有一個時間表,包括我可以在什麼日子,時間和學年就讀的課程。下面的示例:從時間表中提取數據
我想要做的就是提取DATAS:學年,學期,類ID,類名,教師和班級的房間,包括時間的日期和時段,以及。然後使用提取的數據創建一個新表。示例如下:
我想問問是否有更快更簡單的方法來使用公式或VBA進行此操作。現在,我所做的只是複製和粘貼,但數據太多了。 (週一至週五和第一週期至第六週期)
我有一個時間表,包括我可以在什麼日子,時間和學年就讀的課程。下面的示例:從時間表中提取數據
我想要做的就是提取DATAS:學年,學期,類ID,類名,教師和班級的房間,包括時間的日期和時段,以及。然後使用提取的數據創建一個新表。示例如下:
我想問問是否有更快更簡單的方法來使用公式或VBA進行此操作。現在,我所做的只是複製和粘貼,但數據太多了。 (週一至週五和第一週期至第六週期)
是的,它可以通過VBA,但是您的工作表結構在截圖中不完全可見:它不顯示「第一期」將結束,「第二期」將開始。
對於除Time
以外的其餘數據,以下函數將按照您的要求進行操作。它將名爲Sheet1
的工作表中的數據提取到名爲Sheet2
的工作表。
Sub extractData()
' Keep track of day name
DayName = ""
' Loop variable
Dim i As Integer
i = 0
loopVar = True
While (loopVar)
' Get the Class ID
ClassID = Sheets("Sheet1").Range("D" & i).Value
' Check if this is an empty row
If (ClassID <> "") Then
' Get the semester name
Sem = Sheets("Sheet1").Range("C" & i).Value
' Get the Class Name
ClassName = Sheets("Sheet1").Range("E" & i).Value
' Get the Teacher Name
TeacherName = Sheets("Sheet1").Range("F" & i).Value
' Get the Class Room
ClassRoom = Sheets("Sheet1").Range("G" & i).Value
' Get the day name
Temp = Sheets("Sheet1").Range("A" & i).Value
If Temp <> "" Then DayName = Temp
j = i - 2
' Set the Class ID
Sheets("Sheet2").Range("A" & j).Value = ClassID
' Set the Class Name
Sheets("Sheet2").Range("B" & j).Value = ClassName
' Set the Teacher
Sheets("Sheet2").Range("C" & j).Value = TeacherName
' Set the Class Room
Sheets("Sheet2").Range("D" & j).Value = ClassRoom
' Set the semester
Sheets("Sheet2").Range("E" & j).Value = Sem
' Set the Day Name
Sheets("Sheet2").Range("F" & j).Value = DayName
' Incrementl the loop variable
i = i + 1
Else
' End the loop
loopVar = False
End If
Wend
End Sub
感謝您的回答。順便第2期從「課室」欄開始。它基本上是第一階段(學期到課室)的副本。 – syn3rgy
是的,但它的工作,但部分。當我跑了它,它只是一個表格的主題「英語我」。其他人失蹤 – syn3rgy
@ syn3rgy:我更新了代碼。由於合併的行,「類ID」列中的項目數量得不到正確計算。讓我知道它現在是否有效。 (如果你可以發佈一個鏈接到你的excel文件,最好測試一下它的代碼) – NavkarJ