[[20160427154333]] 『統計』(にっちゃん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『統計』(にっちゃん)

初めまして。
学校で人気投票をしています。ひとり3票まで投票可能で、相互票は無効なアンケートを集計しています。

a行に名前c行に総獲得数d行に有効票e行に無効票とそれぞれ合計を出したいのですが、有効票(相互票を除いたもの)の簡単な出し方を教えていただけませんでしょうか?
いまある形は
a行に名前(仮にa君とします) c行総獲得数 d行に有効票e行に無効票 f・g・hにその人が投票した人名を入力しています。
よろしくお願いします。

< 使用 Excel:Excel2010、使用 OS:Windows8 >


Sub 無効票()
    Dim dt(), u As Long
    With ActiveSheet
        u = .UsedRange.Columns(1).Cells.Count
        ReDim dt(u, u)
        For i = 1 To u
            For j = 6 To 8
            dt(i, conv(.Cells(i, j))) = True
            Next j
        Next i
        For i = 1 To u
            For j = 6 To 8
            If dt(i, conv(.Cells(i, j))) = True And dt(conv(.Cells(i, j)), i) = True Then
            .Cells(i, 5) = Val(.Cells(i, 5)) + 1: .Cells(i, j).Font.Color = vbRed
            End If
            Next j
        Next i
    End With
End Sub
Function conv(arg)
    On Error Resume Next '1行目が表題の場合必要
    conv = Application.WorksheetFunction.Match(arg, ActiveSheet.Columns("A"), 0)
End Function
(mm) 2016/04/27(水) 16:40

 自分自身への投票はないものとする。

 1行目が見出し行で2行目からデータがあるものとする。

 総獲得票(C2セル)
 =COUNTIF(F$2:H$100,A2)

 有効票(D2セル)
 =SUMPRODUCT((A$2:A$100<>F2)*(A$2:A$100<>G2)*(A$2:A$100<>H2)*(A$2:A$100<>"")*(F$2:H$100=A2))

 無効票(E2セル)
 =C2-D2

 と入力してC2セルからE2セルを下へフィルコピーしてみてくれ。

 なお上記の式ではデータの最大行数を100行目までとしている。
 もっとある場合は式中の「$100」部分をすべて同じ値で大きくしてくれ。

 あと、テストのほうもきちんとおこなってくれ。

 追記
 有効票の
 (A$2:A$100<>"")
 部分はいらなかったな。
 D2セルの式は
 =SUMPRODUCT((A$2:A$100<>F2)*(A$2:A$100<>G2)*(A$2:A$100<>H2)*(F$2:H$100=A2))
 としてくれ。
(ねむねむ) 2016/04/27(水) 16:44

 あるいは

 有効票(D2セル)
 =C2-E2

 無効票(E2セル)
 =SUMPRODUCT(((A$2:A$100=F2)+(A$2:A$100=G2)+(A$2:A$100=H2))*(F$2:H$100=A2))
 でも。

(ねむねむ) 2016/04/27(水) 17:06


ねむねむさんありがうございました!
無事完全しました。
(にっちゃん) 2016/04/27(水) 18:10

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.