Excel公式:计算调查统计

我有一个来自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, 

我需要计算对“跑步”感兴趣的男性的百分比。 文本将始终以string的forms出现在“正在运行”中,但可能会以不同的顺序出现。

这里我到目前为止:

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

注意我还没有考虑到男性/女性的标准。 该expression式当前返回0。

任何帮助将不胜感激。

一个简单的方法来处理它将是一点点分解你的计算。

在另一列中使用像这样的公式:

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

这会给你一个1,每个人都是男性,有“跑步”列为兴趣,0为所有其他。 复制到你的工作表,然后很容易计算出百分比,例如,如果列是E:

 =SUM(E1:E100)/100 

你也应该testing一下,看看这个比例(喜欢跑步的男人的百分比)是不是侥幸。

你可以做一个(皮尔森或似然比)卡方检验,看看这个比例是否与预期不同。

您也可以进行Fisher's Exact Test来查看,例如,性别之间的比例是否不同。

你可以用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