• ベストアンサー

エクセルで数字の数え方

      結果 赤木・・・・3 井上・・・・5 佐藤・・・・4 鈴木・・・・3 田中・・・・4 ・・・・の部分にはデータが入っています。 (1)結果の部分で1~5のそれぞれの人数を数えるにはどう したらいいでしょうか? (2)例えば、結果の3を赤で示し、さらにその人の名前も赤 で表示するにはどうしたらいいのでしょうか?  (1~5をそれぞれの色で示したいです) よろしくお願いします♪

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

  • ベストアンサー
  • jindon
  • ベストアンサー率43% (50/116)
回答No.3

(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

hope63
質問者

お礼

回答、ありがとうございます! >画面右側の空白部分に下記コードをコピー+ペーストしてください。 その後はどうすればよいのでしょうか・・ 反映みたいな事をするのでしょうか? また、結果表示列は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 になるのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (9)

  • jindon
  • ベストアンサー率43% (50/116)
回答No.10

おまけです。 下記コードを既に貼り付けたコードの下(前のコードの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

hope63
質問者

お礼

C4から下の部分に名前を書いていたので、以下のi = 1の部分をi = 4にしたら出来ました! Private Sub Worksheet_Calculate() Dim i As Integer i = 1 何回も、そして色々と本当にありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。
  • jindon
  • ベストアンサー率43% (50/116)
回答No.9

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)
回答No.8

そこまではOKのようです。 確認しますが。このマクロは任意のシートでしか 作動しません。 コードが適所にペーストされているか確認するには、 該当シートのシートタブで右クリック→コードの表示、 で貼り付けたコードが出てくればOKです。 そのシートで計算が発生するたびに作動しますので。 シートに戻ったら、どのセルでも良いので、 =1+2 とでもして、該当シート上で1度計算させてください。

全文を見る
すると、全ての回答が全文表示されます。
  • kenbow22
  • ベストアンサー率48% (135/276)
回答No.7

=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件ずつの設定になりますが、書式をコピーして 条件の数値だけを変えていけばあまり手間はかからないと思います。

hope63
質問者

お礼

回答、ありがとうございました。 無事に解決、出来ました。

全文を見る
すると、全ての回答が全文表示されます。
  • jindon
  • ベストアンサー率43% (50/116)
回答No.6

jindon です。 コードはそれでOKです。 ペーストしたら、そのままエクセル画面に戻り、どこのセルでも良いので計算させてください。 このコードは、シート中のどのセルに於いても計算が発生すると作動します。 結果が計算によって変化したときにも作動します。

hope63
質問者

お礼

回答、ありがとうございます! 結果表示列はD列、名前はA列にしてjindonさんが書いて下さったコードをペーストしても何もおこらないようです。 ペーストしたら、右上の×で画面から消して元のシートに戻っているのが、ダメなのでしょうか? 何回もすみませんが、もう1度教えて頂けませんか?

全文を見る
すると、全ての回答が全文表示されます。
  • kenbow22
  • ベストアンサー率48% (135/276)
回答No.5

>(2)についてですが、数字だけならば、条件付き書式 >が使えるのですが、関数を使って結果の数字を求めて>いるので、使えないようです。 私も関数で表示させましたが、うまくいきました。 よろしければ具体的な関数を教えて下さい。 >また名前部分も 数式が B2=3  書式で赤を選択>すれば表示されます。 名前の入ったセルで条件付き書式を使います。 条件1で「セルの値が」→「数式が」に変えて、 その右の欄にB2=3と入力し書式ボタンを押して色を赤にしてOKを押します。

hope63
質問者

お礼

回答、ありがとうございます! 関数は以下のものを使用しています。 =IF(AC4>270,"5",IF(AC4>240,"4",IF(AC4>150,"3",IF(AC4>60,"2","1")))) kenbow22さんがやられている方法だと、1人づつ、書式の設定をしないといけなくなるのではないでしょうか? (間違ってたらゴメンなさい)

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

(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です。

hope63
質問者

お礼

回答、ありがとうございます! A    B 1 2あ  1 3い  2 4う  3 5え  4 6お  5 で試してみましたが、出来ませんでした。 どこかがおかしいのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • kenbow22
  • ベストアンサー率48% (135/276)
回答No.2

(1)は先に回答があったとおりCOUNTIF関数を使います。 結果の範囲がB2:B6にあるとして =COUNTIF(B2:B6,3)と任意のセルに入力すれば 結果が3の方の人数を表示できます。 (2)も回答通り条件付き書式で結果部分で、 セルの値が 次の値に等しい 3 として 書式ボタンで赤を選択すれば表示されます。 また名前部分も 数式が B2=3  書式で赤を選択すれば表示されます。

hope63
質問者

お礼

回答、ありがとうございました! (1)は解決しました♪ (2)についてですが、数字だけならば、条件付き書式が使えるのですが、関数を使って結果の数字を求めているので、使えないようです。 いい方法があったら、教えて下さい。 >また名前部分も 数式が B2=3  書式で赤を選択すれば表示されます。 意味がよく分からないので、もう少し詳しく教えて下さるとありがたいです。

全文を見る
すると、全ての回答が全文表示されます。
  • shy00
  • ベストアンサー率34% (2081/5977)
回答No.1

(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  など参考にしてください

参考URL:
http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/count/coun-nai.htm
hope63
質問者

お礼

回答、ありがとうございました。 (1)は解決しました。 (2)はマクロを使うしかないんですね~。 残念です・・

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルのcount関数ですが

    佐藤 70 青 鈴木 60 赤 田中 50 黄 というデータがあるとします。 (実際は何千人のデータがあるとします) ちなみに二列目は年齢、三列目は着ている服の色とします。 この状況で 「50歳以下の人と60歳以上で赤い服を着ている人の人数合計」を 吐き出す関数はどのようになるのでしょうか? excelは2007です。

  • Excelで

    2002/1/2 鈴木 AAAA 2002/1/5 佐藤 BBBB 2002/1/12 井本 CCCC 2002/1/20 田中 DDDD 2003/3/3 佐藤 EEEE 2003/3/12 井本 FFFF 2003/3/15 鈴木 GGGG 2003/4/2 田中 HHHH 2004/2/6 井本 IIII 2004/5/12 佐藤 JJJJ といったデータから 鈴木 2003/3/15 GGGG 佐藤 2004/5/12 JJJJ 井本 2004/2/6 IIII 田中 2003/4/2 HHHH のように、その人の最も最近のデータだけを 表示したいのですが、どなたか教えてください。 宜しくお願いします。

  • Excelのフィルタをかけた項目を別のセルに表示したい

    2行目にオートフィルタをかけて、組で赤を選んでフィルタをかけたときに、A1のセルに赤と表示させる方法を教えてください。A列のみ印刷するのでA列に組を表示させたいのです。よろしくお願いします。   A  B 1 2 名前 組 3 佐藤 赤 4 田中 青 5 山田 黄 6 鈴木 赤 7 木村 黄 8 井上 赤

  • excel 重複したデータのコピー

    例えばこんなデータがあるとします。 名前  値 鈴木  1 佐藤  2 佐藤  5 小林  2 田中  3 田中  1 田中  2 斉藤  0 山田  4 山田  2 というデータから 佐藤  2 佐藤  5 田中  3 田中  1 田中  2 山田  4 山田  2 という感じで名前が2つ以上あるデータだけ抽出・コピーをしたいのですが、 どういう風にすれば出来るでしょうか。

  • エクセル97です。かなり難しい足し算教えてください

    エクセル97を使っています。これは無理かと思いますが質問させてください 50名ほどの名簿があるとします。田中、佐藤、渡辺という感じです C2から下に名前、D2から下に金額のデータがあると仮定します 実際には300ほどのデータで、毎日のように増えます 同じ名前が何度も出てきます    C   D 2 田中 3000 3 佐藤 2000 4 渡辺 1500 5 鈴木 2000 6 田中 5000 一方で次のような名前ごとの合計を求める表があります 田中 3000 佐藤 2000 渡辺 1500 鈴木 2000 ここからが難しいのです。難しいですがGooの皆さんの中には優秀な人が たくさんいるのでもしかしてできるかも知れないと思い質問させて頂きました 6行目に田中さん5000という新しいデータが入ったら 田中さんの合計が8000になって欲しいのです 自分が今やっている方法は名前でソートしてその合計を求めています 名前をソートしないで自動的にというのでしょうか田中さんの合計が8000になるような方法があれば教えて欲しいと思います ちょっと長くなりましたがよろしくお願いします  

  • Excel 数字から判断して文字を表示

    Excelにて以下の様な処理を関数を用いて行いたいと思います(都合上、VBは不可) 1)数字に名前を割り当てる ex:「1-田中」、「2-鈴木」、「3-佐藤」、「4-山田」、「5-橋本」、「6-山本」、「7-沢田」、「8-山岡」 2)1~9までの数字を入力する ex:「12345」、「3456」、「2487」 3)2で入力された数字を元に1の名前を表示する ex: 「12345」→「田中、鈴木、佐藤、山田、橋本」 「3456」→「佐藤、山田、橋本、山本」 「2487」→「鈴木、山田、山岡、沢田」 この様な処理はどうすれば実現出来ますでしょうか? 数字の組み合わせがいくつもあるのでVLOOKUPは使えない。と思い、質問させて頂きました よろしくお願い致します。

  • エクセルで一番大きな数字の列名を表示させいたい

    ■■セダン■ワゴン■スポーツ■カテゴリ 田中□1□■□1□■□□□□■ 佐藤□1□■□2□■□□1□■ 鈴木□1□■□2□■□□3□■ 高橋□1□■□4□■□□4□■ 山本□1□■□3□■□□1□■ エクセルでこんな感じの表があります。 カテゴリの列に、一番大きな数字の列名(セダン・ワゴン・スポーツ)を 表示させたいのですが、どのようにすればいいのでしょうか? EX佐藤→ワゴン、鈴木→スポーツ、山本→ワゴン それから同数のものがある場合には、(田中、高橋)の場合には、同数と 表示させたく思っています。また数字がはいったセルには、データがない 場合があります。 以上よろしくお願いいたします。

  • EXCELの関数またはマクロ教えてください。

    こんばんは。 よろしくお願いいたします。 EXCEL2000です。 (1)こんな縦に重複した名前の表を、 名前 コード 内訳名 金額 鈴木  1   飴   \100 鈴木  2    ガム  \150 鈴木  4    米   \1,000 鈴木  6    食器  \500 佐藤  1    飴   \100 佐藤  2    ガム  \200 佐藤  3    パン  \300 田中  1    米   \1,300 田中  2    ガム  \200 田中  4    米   \1,300 田中  6    食器  \600 (2)横に一人一レコードにまとめたいのです。  列の項目が内訳名になり増ますよね。 名前  飴    ガム  パン    米    食器 鈴木  \100   \150  \1,000  \500 佐藤  \100   \200  \300 田中  \1,300  \200       \1,300   \600 (3)欲を言えば、飴とガムは合計したいです。これが最終形態です。 名前 お菓子 パン   米  食器 鈴木 \250  \1,000 \500 佐藤 \300  \300 田中 \1,500 \1,300    \600 せめて(1)から(2)にする方法で何かよい関数などないでしょうか。 でなくても、「はじめからこんなマクロ・VBAでこんなのできるよ。」 なんてのがあれば、モジュールで教えてください。 本当に本当によろしくお願いいたします。 このデータは後、300くらいあります。 私のレベルは、MOS上級取得なので、多少理解力はあるかと思います。 というか、必死で頑張りますのでお願いします。m(__)m

  • エクセルVBAの質問です

    sample.xlsがあり内容は下記のように A列に名前、B列に数字が入り、行数は一定でありません 田中一郎 3 鈴木健一 5 佐藤太郎 8 田中一郎 5 田中一郎 2 佐藤太郎 7 鈴木健一 3 佐藤太郎 9 鈴木健一 54 佐藤太郎 8 田中一郎 9 このエクセルシートにコマンドボタンを付け、VBAでコマンドボタンを押した場合 指定したエクセルファイル”kekka.xls”に 田中一郎 19 鈴木健一 62 佐藤太郎 32 と言うように、名前別でその氏名の横の数字の合計を表示させたいと考えています。 何卒お知恵をお貸しください、お願いします。

  • Excelでのリストアップ

    佐藤さん、鈴木さん、鈴木さん、高橋さん、田中さん、鈴木さんというデータから 「使われた苗字は佐藤さん、鈴木さん、高橋さん、田中さんの4種類です。」という動作をExcelでしたい時には何かよい方法はありますでしょうか。 のべ、といいますか、この動作をなんと言うか思いつかなかったため調べることが出来ずにいました。 アドバイスを頂けたらと思っております。 宜しくお願いいたします。

専門家に質問してみよう