2016-11-12 73 views
0

我有一個時間表,包括我可以在什麼日子,時間和學年就讀的課程。下面的示例:enter image description here從時間表中提取數據

我想要做的就是提取DATAS:學年,學期,類ID,類名,教師和班級的房間,包括時間的日期和時段,以及。然後使用提取的數據創建一個新表。示例如下:enter image description here

我想問問是否有更快更簡單的方法來使用公式或VBA進行此操作。現在,我所做的只是複製和粘貼,但數據太多了。 (週一至週五和第一週期至第六週期)

回答

0

是的,它可以通過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 
+0

感謝您的回答。順便第2期從「課室」欄開始。它基本上是第一階段(學期到課室)的副本。 – syn3rgy

+0

是的,但它的工作,但部分。當我跑了它,它只是一個表格的主題「英語我」。其他人失蹤 – syn3rgy

+0

@ syn3rgy:我更新了代碼。由於合併的行,「類ID」列中的項目數量得不到正確計算。讓我知道它現在是否有效。 (如果你可以發佈一個鏈接到你的excel文件,最好測試一下它的代碼) – NavkarJ