1

100 人のユーザーからの調査があり、いくつかの統計を計算しようとしています。私の調査の関連フィールドは次のようになります。

    Gender           Interests
B1: Male         D1: Running, Snowboarding, Mountain Bikes
B2: Male         D2: Programming, Running, Paintball
B3: Female       D3: Bowling, Gymnastics
B4: Male         D4: Rock Climbing, Running,

「ランニング」に興味がある男性の割合を計算する必要があります。テキストは常に「実行中」とまったく同じ文字列に表示されますが、異なる順序で表示される場合があります。

ここに私がこれまでに持っているもの:

=SUM(
     COUNTIF(
             D1:D100,ISNUMBER(
                               SEARCH(D1:D100,"Running")
            )
      )
 )

男性/女性の基準をまだ考慮していないことに注意してください。この式は現在 0 を返しています。

どんな助けでも大歓迎です。

4

3 に答える 3

2

それにアプローチする簡単な方法は、計算を少し分割することです。

別の列では、次のような式を使用します。

=IF(AND(B1="Male",ISNUMBER(SEARCH("Running",D1))),1,0)

これにより、男性で「ランニング」が興味としてリストされているすべての人に 1 が与えられ、その他のすべての人には 0 が与えられます。それをシートの一番下までコピーすると、たとえば列が E の場合、パーセンテージを簡単に計算できます。

=SUM(E1:E100)/100
于 2010-06-22T14:41:20.463 に答える
1

また、この割合 (ランニングが好きな男性の割合) がまぐれによるものかどうかもテストする必要があります。

(ピアソン比または尤度比) カイ 2 乗検定を実行して、比率が予想と異なるかどうかを確認できます。

フィッシャーの正確確率検定を実行して、たとえば性別間で比率が異なるかどうかを確認することもできます。

于 2010-06-23T03:13:58.313 に答える
0

Excel と ADO を使用すると、多くのことができます。

Dim cn As Object
Dim rs As Object
Dim sFile As String
Dim sCn As String
Dim sSQL As String
Dim s As String, f As String
Dim sa As Variant
Dim i As Integer, c As Integer
Dim r As Range

''This is not the best way to refer to the workbook
''you want, but it is very conveient for notes
''It is probably best to use the name of the workbook.

sFile = ActiveWorkbook.FullName

sCn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sFile _
    & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

cn.Open sCn

sSQL = "SELECT interests " _
       & "FROM [Sheet1$] "

rs.Open sSQL, cn, 3, 3

With Worksheets("Sheet2")
    s = rs.GetString(, , , ",")
    sa = Split(s, ",")

    c = 1
    For i = 0 To UBound(sa)
        Set r = .Range("a1:a" & c)
        f = Trim(sa(i))
        If r.Find(f) Is Nothing Then
            c = c + 1
            .Cells(c, 1) = f
        End If
    Next

    .Cells(1, 1) = "Interests"
    .Cells(1, 2) = "Male"
    .Cells(1, 3) = "Female"

    For i = 2 To c
        rs.Close

        sSQL = "SELECT Gender, Count(Gender) As GNo " _
             & "FROM [Sheet1$] " _
             & "WHERE Interests Like '%" & .Cells(i, 1) & "%' " _
             & "GROUP BY Gender"

         rs.Open sSQL, cn

         Do While Not rs.EOF
            If rs.Fields("Gender") = "Male" Then
                .Cells(i, 2) = rs.Fields("GNo")
            ElseIf rs.Fields("Gender") = "Female" Then
                .Cells(i, 3) = rs.Fields("GNo")
            End If
            rs.MoveNext
        Loop

        Next

End With

''Tidy up
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
于 2010-06-22T19:05:11.497 に答える