我有一个时间表,包括我可以在什么日子,时间和学年上课。示例如下:
我想要做的是提取数据:学年,学期,班级ID,班级名称,教师,教室,并包括日期和时间段。然后使用提取的数据创建一个新表。示例如下:
我想问一下使用公式或VBA是否有更快更简单的方法。现在,我所做的只是复制和粘贴,但是有太多的数据。 (周一至周五和第一期至第六期)
答案 0 :(得分: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