- ベストアンサー
exelで 評価を自動判断したい
ある表で A B Cとランク付けが付いていて この項目に Aが4つ以上だと Aと判定するとか Bが3つ以上だと Bと判定するとか これを 関数で自動化したいのですが
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
VBAで私製関数化することをお勧めします。 (下記例は関数化してません。自動判定です。) IF条件が多く(ネストが深く)なると、式が大変です。 プログラム方式の方が書きやすいと思います。 第2-4行について B-F列のa,b,cの数を数えて、スコアリングします。 Sub bunnrui() For i = 2 To 4 a = WorksheetFunction.CountIf(Range(Cells(i, 2), Cells(i, 6)), "a") b = WorksheetFunction.CountIf(Range(Cells(i, 2), Cells(i, 6)), "b") c = WorksheetFunction.CountIf(Range(Cells(i, 2), Cells(i, 6)), "c") '---- Select Case a Case Is >= 4 Cells(i, "H") = "A" GoTo p01 Case Else End Select '---- Select Case b Case Is >= 3 Cells(i, "H") = "B" GoTo p01 Case Else End Select '---- Select Case c Case Is >= 2 Cells(i, "H") = "C" GoTo p01 Case Else End Select p01: Next i End Sub
その他の回答 (1)
- hinebot
- ベストアンサー率37% (1123/2963)
COUNTIF とIFを組み合わせるとできそうですね。 ランク付けのデータがA1~A10まで入っているとします。 =IF(COUNTIF(A1:A10,"A")>3,"A",IF(COUNTIF(A1:A10,"B")>2,"B","C")) という感じで。 COUNTIFでAやBの数をカウントし、その結果によりIFで振り分けてます。
お礼
ifとcountifのくみあわせですね
お礼
両回答とも 大変わかりやすく回答いただき ありがとうございました おふたりに 20ptさしあげたいのですが 私にとって むずかしい VBAの回答のかたに 20ptとさせていただきました