Jak wybrać wartości w zdefiniowanych zakresach i porównać je z innymi?

1

Mam bazę danych Access, zbudowaną na podstawie ankiety przeprowadzonej wśród studentów uniwersytetów. Między innymi istnieją pola określające, ile godzin tygodniowo uczniowie poświęcają na czytanie materiałów lekcyjnych, a jeśli mają pracę, ile godzin tygodniowo pracują.

Muszę stworzyć tabelę. Każda kolumna w tabeli powinna zawierać zakres godzin nauki. Na przykład, kolumna 1 wynosiłaby „do 5 godzin”, kolumna 2 powinna wynosić „od 5 do 10 godzin” i tak dalej. Wiersze powinny być takie same, ale z godzinami pracy. Chodzi o to, aby na przykład zapytać „Studentów, którzy uczą się bardzo mało, ilu z nich to robi, ponieważ nie mają czasu, ponieważ pracują?”, A następnie zaznaczamy „Do 5 godzin studiuj tydzień ”, a zobaczysz, ilu studentów nie pracuje, ilu pracuje trochę i ilu pracuje.

Zdaję sobie sprawę, że może to nie być bardzo jasne, więc może pomóc przybliżona reprezentacja tabeli (liczby są wymyślone):

             |   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  |
-------------+-----+------+-------+-----+

Widzimy tutaj, że bardzo niewielu udaje się uczyć i dużo pracować, podczas gdy wielu ma dużo czasu, ale niewiele się uczy.

Potrzebuję sposobu na zbudowanie takiej tabeli, używając Access lub może Excela, jeśli lepiej do tego nadaje się. Znam trochę SQL, więc można go używać do tego.

Javier
źródło

Odpowiedzi:

1

Można to zrobić na kilka sposobów. Najłatwiejszym sposobem jest przekonwertowanie danych na te etykiety i utworzenie z nich tabeli przestawnej.

Załaduj więc dane do Excela do arkusza kalkulacyjnego ze studentName , hoursStudy , hoursWork

Potem wybiłem „szybkie” makro VBA. Jestem głównie facetem C3, ale byłem zaskoczony, jak trudno było znaleźć porządny samouczek Excel VBA. Wszystkie były przeznaczone dla nie-programistów i żaden nie był dla programistów, którzy po prostu nie wiedzieli, jak nawigować w programie Excel. Przepraszam więc, jeśli to nie zadziała za pierwszym razem. . .

Uruchom edytor VBA, wklej i uruchom go. . .

' 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

Powinieneś być w stanie przestawić tę tabelę. Wystarczy użyć kolumny B dla kolumn. Kolumna C dla wierszy Przejdź do drugiego arkusza kalkulacyjnego i wstaw tabelę. Powinien wybrać wszystkie dane i zamienić je w tabelę. Dodaj odpowiednie etykiety „Godziny nauki” i „Godziny pracy”. Następnie kliknij Tabela przestawna.

  • Przeciągnij „Godziny nauki” do pola Etykiety kolumn.
  • Przeciągnij „Godziny pracy” do etykiet wierszy.
  • Przeciągnij „Godziny nauki” do wartości SUM (Sigma). Upewnij się, że jest napisane COUNT, a nie SUM.
  • Zrób to samo z „Godziny pracy”

Mam nadzieję, że to działa.

surfasb
źródło
Sprawdzę to jutro i dam znać, czy to działa. Dzięki.
Javier
To prawie działało. Zasugeruję edycję, aby działała, a następnie ją zaakceptuję. Dzięki!
Javier
Ahh, VB nie robi++
surfasb
Tak, to i fakt, że przegapiłeś End Selects. Powinienem również dodać, że jeśli przeciągniesz zarówno „Godziny nauki”, jak i „Godziny pracy” do pola Sum / Sigma, wszystko zostanie zduplikowane. Potrzebujesz tylko jednego.
Javier
Ahh, super. Nie pracowałem w tabelach przestawnych od czasu tej klasy Office, którą musiałem wziąć. To wszystkie bazy danych przez cały dzień. . .
surfasb