从时间表中提取数据

时间:2016-11-12 06:21:02

标签: excel excel-vba excel-formula vba

我有一个时间表,包括我可以在什么日子,时间和学年上课。示例如下:enter image description here

我想要做的是提取数据:学年,学期,班级ID,班级名称,教师,教室,并包括日期和时间段。然后使用提取的数据创建一个新表。示例如下:enter image description here

我想问一下使用公式或VBA是否有更快更简单的方法。现在,我所做的只是复制和粘贴,但是有太多的数据。 (周一至周五和第一期至第六期)

1 个答案:

答案 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