如何在定义的范围内选择值并将其与其他值进行匹配?

如何在定义的范围内选择值并将其与其他值进行匹配?

我有一个 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。
  • 对“工作时间”执行相同操作

希望有效。

相关内容