我有一个 Access 数据库,是根据对大学生的调查建立的。除其他内容外,还有一些字段用于记录学生每周花多少小时阅读课堂材料,以及如果他们有工作,每周工作多少小时。
我需要做的是创建一个表格。表格中的每一列都应该是学习时间的范围。例如,第 1 列应为“最多 5 小时”,第 2 列应为“5 到 10 小时之间”,依此类推。行应该相同,但包含工作时间。例如,我们可以问“在学习时间很少的学生中,有多少人是因为工作而没有时间学习的?”,然后检查“每周最多 5 小时的学习时间”列,就会看到有多少学生不学习,有多少学生学习时间很少,有多少学生学习时间很多。
我意识到这可能不是很清楚,所以也许粗略地表示一下表格会有所帮助(数字是虚构的):
| Hours of study |
| < 5 | 5-10 | 10-15 | 15+ |
-------------+-----+------+-------+-----+
Hours <10 | 35 | 15 | 10 | 5 |
of 10-40 | 30 | 18 | 7 | 2 |
work 40+ | 40 | 10 | 3 | 1 |
-------------+-----+------+-------+-----+
这里我们可以看到,很少有人能够花很多时间学习和工作,而很多人有充足的时间,但却不怎么学习。
我需要一种构建此类表格的方法,使用 Access 或 Excel(如果更适合的话)。我懂一些 SQL,所以用它来做这件事没问题。
答案1
有几种方法可以做到这一点。最简单的方法是将数据转换为这些标签,然后将其制作成数据透视表。
因此,使用学生姓名,小时学习,小时工作
然后我打出了一个“快速” VBA 宏。我主要是 C3 人,但我很惊讶找到一个像样的 Excel VBA 教程有多难。它们都是为非程序员准备的,没有一个是为那些不知道如何操作 Excel 的程序员准备的。所以如果第一次没用,我很抱歉。。。
启动 VBA 编辑器,粘贴并运行它...
' Takes your spreadsheet of hours in sheet 1 and turns them into your measured values
' Then simply take the second worksheet and turn it into a pivottable
Sub StudyAndWork()
Dim i as Integer
i = 0
Do
Select Case Worksheets(1).Range("B" & i).Value
Case Is < 5
Worksheets(2).Range("B" & i).Value = "<5"
Case 5 To 10
Worksheets(2).Range("B" & i).Value = "5 to 10"
Case 10 To 15
Worksheets(2).Range("B" & i).Value = "10 to 15"
Case Else
Worksheets(2).Range("B" & i).Value = ">15"
End Select
i = i + 1
Loop Until IsNull(Worksheets(1).Range("B" & i).Value)
i = 0
Do
Select Case Worksheets(1).Range("C" & i).Value
Case Is < 10
Worksheets(2).Range("C" & i).Value = "<10"
Case 10 To 40
Worksheets(2).Range("C" & i).Value = "10 - 40"
Case Else
Worksheets(2).Range("C" & i).Value = "40+"
End Select
i = i + 1
Loop Until IsNull(Worksheets(1).Range("C" & i).Value)
End Sub
您应该能够将其转置为表格。只需使用 B 列作为列。C 列作为行 转到第二个电子表格并插入表格。它应该选择所有数据并将其转换为表格。添加适当的标签“学习时间”和“工作时间”。接下来,单击“数据透视表”。
- 将“学习时间”拖到列标签框中。
- 将“工作时间”拖到行标签。
- 将“学习时间”拖到 SUM(Sigma) 值。确保它显示的是 COUNT,而不是 SUM。
- 对“工作时间”执行相同操作
希望有效。