2016-11-12 66 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