• ベストアンサー

exelで 評価を自動判断したい

ある表で A B Cとランク付けが付いていて この項目に Aが4つ以上だと Aと判定するとか Bが3つ以上だと Bと判定するとか  これを 関数で自動化したいのですが

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.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

gogogo123
質問者

お礼

両回答とも 大変わかりやすく回答いただき ありがとうございました おふたりに 20ptさしあげたいのですが 私にとって むずかしい VBAの回答のかたに 20ptとさせていただきました

その他の回答 (1)

  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.1

COUNTIF とIFを組み合わせるとできそうですね。 ランク付けのデータがA1~A10まで入っているとします。 =IF(COUNTIF(A1:A10,"A")>3,"A",IF(COUNTIF(A1:A10,"B")>2,"B","C")) という感じで。 COUNTIFでAやBの数をカウントし、その結果によりIFで振り分けてます。

gogogo123
質問者

お礼

ifとcountifのくみあわせですね

関連するQ&A