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