<<目次へ


データの個数を返す関数&アンケート集計(VBAソース)

使い方

 =length(A1:A20)とすると,A1からA20のセル範囲においてデータが何個あるかを数えて,データの個数を返します。途中に空白(欠損値)がある場合でもそれを除いて計算してくれます。

Function length(dat As Range)
    Dim kosu As Integer
    Dim kuhaku As Integer
    Dim a As Integer
    kosu = dat.Rows.Count
    kuhaku = WorksheetFunction.CountIf(dat, "")
    a = kosu - kuhaku
    length = a
End Function


使い方

 プロシージャの中で上のlength関数を使用しているので,このプロシージャコードとは別にlength関数のコードを貼り付けておいて下さい。プロシージャを実行すると,@データ範囲の入力,A何件法で行ったか,B結果の出力先,の3つを聞かれますのでそれぞれ入力してください。
 各回答(例えば「はい=1」と「いいえ=2」の2件法など)の回答数,つまり「はい=1」と答えた人が何人いたか,また「いいえ=2」と答えた人が何人いたかを集計します。さらにそれぞれの回答数の割合も計算します(下図参照)。なお結果はパーセントスタイルで出力されないのであしからず

Sub syukei()
    Dim DataRange As Range, result As Range
    Dim ken As Integer
    Set DataRange = Application.InputBox("データ範囲を入力して下さい", Type:=8)
    ken = InputBox("何件法の質問ですか?")
    Set result = Application.InputBox("結果の出力先を指定", Type:=8)
    
    Dim alldata As Integer
    Dim i As Integer
    Dim kn As Double, kc As Double
    
    For i = 1 To ken
        kn = WorksheetFunction.CountIf(DataRange, i) / length(DataRange)
        result.Cells(i, 1).Value = kn
        kc = WorksheetFunction.CountIf(DataRange, i)
        result.Cells(i, 2).Value = kc
    Next i
End Sub