我有一個 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
有幾種方法可以做到這一點。最簡單的方法是將資料轉換為這些標籤並從中製作資料透視表。
因此,將資料載入到 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
您應該能夠對此進行資料透視表。只需使用 Column B 作為列即可。行的 C 列 前往第二個電子表格並插入表格。它應該選擇所有數據並將其轉換為表格。加入適當的標籤「學習時間」和「工作時間」。接下來,按一下資料透視表。
- 將「學習時間」拖曳到「列標籤」方塊中。
- 將「工作時間」拖曳至行標籤。
- 將「學習時間」拖曳至 SUM(Sigma) 值。確保它顯示的是 COUNT,而不是 SUM。
- 對「工作時間」進行同樣的操作
希望有效。