- ベストアンサー
エクセルで数字の数え方
結果 赤木・・・・3 井上・・・・5 佐藤・・・・4 鈴木・・・・3 田中・・・・4 ・・・・の部分にはデータが入っています。 (1)結果の部分で1~5のそれぞれの人数を数えるにはどう したらいいでしょうか? (2)例えば、結果の3を赤で示し、さらにその人の名前も赤 で表示するにはどうしたらいいのでしょうか? (1~5をそれぞれの色で示したいです) よろしくお願いします♪
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
(1)は解決ということで・・ (2)に付いてですが、 結果の列が数式(手入力ではない)だということなので エクセル画面から該当シートのシートタブを右クリックして、コードの表示を選択 画面右側の空白部分に下記コードをコピー+ペーストしてください。 結果表示列はD列、名前はA列に想定してあります。 A列の1行目から下方向に値がある限りその行のD列の値を検証して、両方のセルのフォントを指定された色に変えます。 シートのどの部分でも計算が発生したときに作動します。 D列の値が1-5以外(値無しも含む)は黒に戻します。 Private Sub Worksheet_Calculate() Dim i As Integer i = 1 Do While Cells(i, 1).Value <> "" Select Case Cells(i, 4).Value Case 1 Cells(i, 1).Font.ColorIndex = 42 Cells(i, 4).Font.ColorIndex = 42 Case 2 Cells(i, 1).Font.ColorIndex = 14 Cells(i, 4).Font.ColorIndex = 14 Case 3 Cells(i, 1).Font.ColorIndex = 3 Cells(i, 4).Font.ColorIndex = 3 Case 4 Cells(i, 1).Font.ColorIndex = 4 Cells(i, 4).Font.ColorIndex = 4 Case 5 Cells(i, 1).Font.ColorIndex = 5 Cells(i, 4).Font.ColorIndex = 5 Case Else Cells(i, 1).Font.ColorIndex = -4105 Cells(i, 4).Font.ColorIndex = -4105 End Select i = i + 1 Loop End Sub
その他の回答 (9)
- jindon
- ベストアンサー率43% (50/116)
おまけです。 下記コードを既に貼り付けたコードの下(前のコードのEnd Subの下)に貼り付けてください。 該当シートのどこのセルでもダブルクリックした時にも作動します。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim i As Integer i = 1 Do While Cells(i, 1).Value <> "" Select Case Cells(i, 4).Value Case 1 Cells(i, 1).Font.ColorIndex = 42 Cells(i, 4).Font.ColorIndex = 42 Case 2 Cells(i, 1).Font.ColorIndex = 14 Cells(i, 4).Font.ColorIndex = 14 Case 3 Cells(i, 1).Font.ColorIndex = 3 Cells(i, 4).Font.ColorIndex = 3 Case 4 Cells(i, 1).Font.ColorIndex = 4 Cells(i, 4).Font.ColorIndex = 4 Case 5 Cells(i, 1).Font.ColorIndex = 5 Cells(i, 4).Font.ColorIndex = 5 Case Else Cells(i, 1).Font.ColorIndex = -4105 Cells(i, 4).Font.ColorIndex = -4105 End Select i = i + 1 Loop End Sub
お礼
C4から下の部分に名前を書いていたので、以下のi = 1の部分をi = 4にしたら出来ました! Private Sub Worksheet_Calculate() Dim i As Integer i = 1 何回も、そして色々と本当にありがとうございました!
- jindon
- ベストアンサー率43% (50/116)
jindonです。 もしNo9でも作動しない場合は、Eventが無効にされている可能性もありますので、下記コードを Alt+F11 で VBE を起動して、左側のThisWorkbookに下記コードを貼り付けて実行してください。 Sub a () Application.EnableEvents=True End Sub 実行の仕方、 excel画面に戻り、Alt+F8 → ThisWorkbook.a を選択で実行 該当シートに戻り、シートのどこかで計算させてください。 A列に名前、E列に結果であれば、最初のコードですので、そのままもう一度コピーして貼り付けてください。 .(ピリオド)が抜けたりしていると、作動しませんので。 こちらでは作動しています。
- jindon
- ベストアンサー率43% (50/116)
そこまではOKのようです。 確認しますが。このマクロは任意のシートでしか 作動しません。 コードが適所にペーストされているか確認するには、 該当シートのシートタブで右クリック→コードの表示、 で貼り付けたコードが出てくればOKです。 そのシートで計算が発生するたびに作動しますので。 シートに戻ったら、どのセルでも良いので、 =1+2 とでもして、該当シート上で1度計算させてください。
- kenbow22
- ベストアンサー率48% (135/276)
=IF(AC4>270,"5",IF(AC4>240,"4",IF(AC4>150,"3",IF(AC4>60,"2","1"))))を =IF(B1>270,5,IF(B1>240,4,IF(B1>150,3,IF(B1>60,2,1))))にすれば数値として表しされますので 可能になります。 また1件ずつの設定になりますが、書式をコピーして 条件の数値だけを変えていけばあまり手間はかからないと思います。
お礼
回答、ありがとうございました。 無事に解決、出来ました。
- jindon
- ベストアンサー率43% (50/116)
jindon です。 コードはそれでOKです。 ペーストしたら、そのままエクセル画面に戻り、どこのセルでも良いので計算させてください。 このコードは、シート中のどのセルに於いても計算が発生すると作動します。 結果が計算によって変化したときにも作動します。
お礼
回答、ありがとうございます! 結果表示列はD列、名前はA列にしてjindonさんが書いて下さったコードをペーストしても何もおこらないようです。 ペーストしたら、右上の×で画面から消して元のシートに戻っているのが、ダメなのでしょうか? 何回もすみませんが、もう1度教えて頂けませんか?
- kenbow22
- ベストアンサー率48% (135/276)
>(2)についてですが、数字だけならば、条件付き書式 >が使えるのですが、関数を使って結果の数字を求めて>いるので、使えないようです。 私も関数で表示させましたが、うまくいきました。 よろしければ具体的な関数を教えて下さい。 >また名前部分も 数式が B2=3 書式で赤を選択>すれば表示されます。 名前の入ったセルで条件付き書式を使います。 条件1で「セルの値が」→「数式が」に変えて、 その右の欄にB2=3と入力し書式ボタンを押して色を赤にしてOKを押します。
お礼
回答、ありがとうございます! 関数は以下のものを使用しています。 =IF(AC4>270,"5",IF(AC4>240,"4",IF(AC4>150,"3",IF(AC4>60,"2","1")))) kenbow22さんがやられている方法だと、1人づつ、書式の設定をしないといけなくなるのではないでしょうか? (間違ってたらゴメンなさい)
- imogasi
- ベストアンサー率27% (4737/17069)
(1)は、データ-ピボットテーブル・・・でやるのがてっとり速いです。 (2)は4種以上の色分けするなら ツール-マクロ-VBE-挿入-標準モジュールに 下記を貼りつけ実行する。 Sub test01() c = Array(1, 5, 2, 6, 3, 8, 4, 9, 5, 10) d = Range("a2").CurrentRegion.Rows.Count For i = 2 To d + 1 For j = 0 To UBound(c) Step 2 If Cells(i, "B") = c(j) Then Range(Cells(i, "A"), Cells(i, "F")).Interior.ColorIndex = c(j + 1) End If Next j Next i End Sub (自分に合わせて変更点) (1)d = Range("a2").CurrentRegion.Rows.Count データの始まり行がA2の例です。 (2)If Cells(i, "B") = c(j) Then 評価コードがB列にある時の例です。 (3) c = Array(1, 5, 2, 6, 3, 8, 4, 9, 5, 10) は (コード)(色コード) 1 5 2 6 3 8 4 9 5 10 の例です。 色コードがどんな色かは、別シートで Sub test02() For i = 1 To 52 Cells(i, "A") = i Cells(i, "B").Interior.ColorIndex = i Next i End Sub を実行して確認してください。 (5)Range(Cells(i, "A"), Cells(i, "F")).Interior.ColorIndex = c(j + 1)は A:F列に色を付けている例です。 字体の色はFont.Colorindexです。
お礼
回答、ありがとうございます! A B 1 2あ 1 3い 2 4う 3 5え 4 6お 5 で試してみましたが、出来ませんでした。 どこかがおかしいのでしょうか?
- kenbow22
- ベストアンサー率48% (135/276)
(1)は先に回答があったとおりCOUNTIF関数を使います。 結果の範囲がB2:B6にあるとして =COUNTIF(B2:B6,3)と任意のセルに入力すれば 結果が3の方の人数を表示できます。 (2)も回答通り条件付き書式で結果部分で、 セルの値が 次の値に等しい 3 として 書式ボタンで赤を選択すれば表示されます。 また名前部分も 数式が B2=3 書式で赤を選択すれば表示されます。
お礼
回答、ありがとうございました! (1)は解決しました♪ (2)についてですが、数字だけならば、条件付き書式が使えるのですが、関数を使って結果の数字を求めているので、使えないようです。 いい方法があったら、教えて下さい。 >また名前部分も 数式が B2=3 書式で赤を選択すれば表示されます。 意味がよく分からないので、もう少し詳しく教えて下さるとありがたいです。
- shy00
- ベストアンサー率34% (2081/5977)
(1)COUNTIF関数を使用してはいかがですか? http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/count/coun-nai.htm など参考にしてください (2)条件付き書式を使いましょう ただし、3つ以上やその人の名前も・・・と言うことであれば、マクロなど組むしかないかな・・・ とりあえず条件付き書式については http://www.eurus.dti.ne.jp/~yoneyama/Excel/jyo-sho/jyo-syna.htm など参考にしてください
お礼
回答、ありがとうございました。 (1)は解決しました。 (2)はマクロを使うしかないんですね~。 残念です・・
お礼
回答、ありがとうございます! >画面右側の空白部分に下記コードをコピー+ペーストしてください。 その後はどうすればよいのでしょうか・・ 反映みたいな事をするのでしょうか? また、結果表示列はE列、名前はC列だとしたら、 Private Sub Worksheet_Calculate() Dim i As Integer i = 1 Do While Cells(i, 3).Value <> "" Select Case Cells(i, 5).Value Case 1 Cells(i, 3).Font.ColorIndex = 42 Cells(i, 5).Font.ColorIndex = 42 Case 2 Cells(i, 3).Font.ColorIndex = 14 Cells(i, 5).Font.ColorIndex = 14 Case 3 Cells(i, 3).Font.ColorIndex = 3 Cells(i, 5).Font.ColorIndex = 3 Case 4 Cells(i, 3).Font.ColorIndex = 4 Cells(i, 5).Font.ColorIndex = 4 Case 5 Cells(i, 3).Font.ColorIndex = 5 Cells(i, 5).Font.ColorIndex = 5 Case Else Cells(i, 3).Font.ColorIndex = -4105 Cells(i, 5).Font.ColorIndex = -4105 End Select i = i + 1 Loop End Sub になるのでしょうか?