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