定義された範囲内で値を選択し、他の値と一致させるにはどうすればよいでしょうか?

定義された範囲内で値を選択し、他の値と一致させるにはどうすればよいでしょうか?

私は、大学生のアンケートから作成した Access データベースを持っています。その中には、学生が授業の教材を読むのに週に何時間を費やしているか、また、仕事を持っている場合は週に何時間働いているかを入力するフィールドがあります。

私がしなければならないのは、表を作成することです。表の各列は、勉強時間の範囲である必要があります。たとえば、列 1 は「最大 5 時間」、列 2 は「5 ~ 10 時間」などです。行は同じですが、労働時間が含まれます。アイデアは、たとえば、「ほとんど勉強しない学生のうち、仕事のために時間がないために勉強する学生はどれくらいいますか?」と尋ね、次に「1 週間に最大 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

これを行うにはいくつかの方法があります。最も簡単な方法は、データをそれらのラベルに変換し、それを基にピボット テーブルを作成することです。

データをExcelのスプレッドシートにロードして学生の名前時間勉強勤務時間

それから、「クイック」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 を使用します。2 番目のスプレッドシートに移動してテーブルを挿入します。すべてのデータが選択され、テーブルに変換されます。適切なラベル「学習時間」と「労働時間」を追加します。次に、[ピボット テーブル] をクリックします。

  • 「学習時間」を列ラベルボックスにドラッグします。
  • 「労働時間」を行ラベルにドラッグします。
  • 「学習時間」を SUM(Sigma) 値にドラッグします。SUM ではなく COUNT になっていることを確認してください。
  • 「労働時間」についても同様です

うまくいくといいですね。

関連情報