データの個数を返す関数&アンケート集計(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