本文へ

エクセルに関し教えてください

レス31
(トピ主 0
🙂
困ったさん
話題
聡明なる小町の皆さんにお尋ねします。

ある目的でデータを採取しており、ところどころのセルに色付けしています。
セル自体にも数値が入力されてますが、色付けしたセルの数を求めたいと思い、エクセル関数の本を覗いてみましたがわかりませんでした。
単純に着色したセルの数を求めるにはどうすれば宜しいでしょうか?
セルの数だけで、セル内の数値は無視するものです。

よろしくお願いいたします。

トピ内ID:8649779877

これポチに投票しよう!

ランキング

レス

レス数31

このトピックはレスの投稿受け付けを終了しました

関数では無理

🙂
ミルミル
私もやろうとしたことありますが、関数では無理です。セルの書式がどうなっているかという情報を取得する関数がないので。VBAかマクロでプログラム書けば取得できますけど。 関数で実現したいなら、どこかに1列設けて、色付けするのと同じ条件の時には「A」という値を入れるなどした方がいいです。その列に特定の値が入ったセルをカウントする関数ならあります。なお、その列を非表示にすればシートを印刷した時に不格好という問題も回避できます。

トピ内ID:3205066507

...本文を表示

エクセルですか。

🙂
Zaku
多分ですが、エクセルの全体を指定して並べ替えとフィルターからフィルターを設定できるので、フィルターから色設定で選択したい色を選べば良いと思うけど。

トピ内ID:2094509303

...本文を表示

マクロを使えばできます

🐱
ピルチャード
セルの内容とセルの背景色とに関連があるのなら出来るでしょうけど、関連がない場合はマクロを使わないと無理だと思います。 下にVBAのコードの例を書いておきますから参考にして下さい。 ただし、5行目の調べる範囲(行)、6行目の調べる範囲(列)、8行目の調べる色(ColorIndex)、13行目の結果を表示する場所は、必要に応じて変える必要があります。 Dim b as long Dim c as long Dim d as long Dim e as long For b = 1 to 10 '調べる範囲/行、この場合1~10行 For c = 1 to 26 '調べる範囲/列、この場合A~Z列 d = Cells(b, c).Interior.ColorIndex 'セルの色 If d = 6 Then '探すセルの色によって数字は異なります。「6」は黄色 e = e + 1 End If Next c Next b Range("A1") = e '「A1」セルに結果が表示されます

トピ内ID:8548264341

...本文を表示

検索しましょう

🙂
金平
この色のセルは何個?Excelで色のついたセルの数をカウントする で検索してみましょう

トピ内ID:8050215558

...本文を表示

Googleで

041
ちり
エクセル セル色別 カウント で入力すると似た質問と答えがいっぱい出て来ますよ~。 関数ぽくも出来ますが私だったらオートフィルタで欲しいセルの色指定して抽出するかな。

トピ内ID:7402325252

...本文を表示

色をカウントする関数は存在しない。

🙂
エクセラー
エクセルのバージョンはいくらかね? 色のついたセルは同じ列?別な列にもある? とりあえず、 ■2007以降で同じ列にある場合。 以下手順。  1.データの表全体を選択する。  2.データタブ⇒フィルタボタンを選択。  3.すると、表のタイトル部分(1番上)にフィルタボタンが出るので押下。  4.押下したフィルタの列内に、セルや文字に色がついているものがある場合は、「色フィルター」が選べるようになっているので、数えたい色を選択。 この説明で良くわからなかったら、「色フィルタ」でググってくれたまへ。 ■色のついたセルがあちこちにある場合。(簡単だけど面倒。) 以下手順。  1.エクセルの右下に左右にスライドするバーがあるじゃろ?さらにその下の何もないところを右クリック。  2.データの個数を選択。  3.キーボードの「ctrl」を押したまま、数えたい色のセルをマウスで全てクリック。  4.先ほどの右下のところに、個数が表示される。 ※注意:これは元々データの入っているセルの数を数えるため、セル色だけで中身のデータがない場合はカウントされない。 ■すべてのバージョンのエクセルで可能。(面倒だが、2案目よりはやりやすい) 以下手順。  1.データの入ったシートを別シートにまるまるコピー。(シート複製)  2.表全体を選択⇒Delete押下。  3.数えたいセルに●をコピペ。  4.ctrl+Fで●を全て検索。 他にもいろいろ。 主が調べたのは、おそらくマクロ。 プログラミング言語(VBA)を勉強してくれ。 面倒臭いのでここでは説明しない。 色んなやり方があって、どうすると一番楽でミスなくやれるかが頭の使いどころ。 頑張れ。 マクロ覚えると、エクセルに働いてもらえるので、楽だし早いし楽しいぞ~。 数列とか、何の役に立つんだ?と思ってたものが役に立つしな。

トピ内ID:5515974321

...本文を表示

うーん

🙂
ゆの
関数は基本的にセル内の値を操作する物なので 値を無視して書式で判定するような物なんてあったかな…? マクロ(VBA)を使うのであればやり方はすぐに思い浮かぶんですが…

トピ内ID:2542999695

...本文を表示

関数では無理 part1

🙂
mira
色付セルを数えたい。これは関数では無理だと思いますよ。 やりたいなら、マクロです。 まず、Excelを開いた後、Alt+F11でエディタを開きます。 左側にプロジェクトツリーがあると思います(開いているEXCELファイル名があるでしょう)。 そこでマウス右クリックし、挿入→標準モジュールをクリックします。 右側にModule1というウィンドウができたと思いますので、そこにマクロ内容を書き込みましょう。 書き終わったら保存。 一旦エディタを閉じて、集計したいシートを表示し、ALT+F8でマクロを開き、実行しましょう。 さて、これだけで出来るなら、質問してきてないですよね。。でも、条件が分からないので、 ちょっと完璧なコードは教えてあげられないんです。 とりあえず、コメント(「'」の後ろはコメントです。エディタで緑色になる部分ですね) たっぷりの例をつけますので、分からない部分を質問するなり、もう少し条件を具体的に 書いてくれるなりすれば、またお答えできるかと思います。

トピ内ID:6415455775

...本文を表示

関数では無理 part2

🙂
mira
例(矢印で囲まれた部分がエディタに貼り付けられるマクロ部分です。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓ Option Explicit '変数のスペルミスを防ぐための措置(変数宣言されてない変数があるとエラーになる) '############################################################################## '# マクロ名:countColor '# '# 処理概要:アクティブセルの指定範囲に対し、1セルずつ色がついているか否かを '# 確認し、色付いているセルの個数をカウントする。 '# 結果はポップアップで出力する。 '# '# 処理のメイン部分の解説(実際に書いてある所を見つつ、理解してみよう) '# '# cells(lngRow,lngCol).interior.colorindex '# => lngRow行目、lngCol列のセルの塗りつぶしの色を数値で表したもの '# '# 今回は色あり(塗りつぶしなし以外)が対象だったため、塗りつぶしなしを '# 表す値(xlColorIndexNone)以外の値だった場合にカウントするIF文 '# (if ~ end if)を作成。特定の色だけカウントしたい場合、 '# その色のみでIF文を作ることも出来る。 '# ↑↑↑↑↑↑↑↑↑↑↑↑↑↑ おぉう、コード1行だけで次へ!

トピ内ID:6415455775

...本文を表示

関数では無理 part3

🙂
mira
↓↓↓↓↓↓↓↓↓↓↓↓↓↓ '# '# cells(lngRow,lngCol).font.colorindex '# => lngRow行目、lngCol列のセルの文字の色を数値で表したもの '# '# 今回は色あり(自動以外)が対象だったため、自動を表す値(xlColorIndexAutomatic) '# 以外の値だった場合にカウントするIF文(if ~ end if)を作成。 '# 特定の色だけカウントしたい場合、その色のみでIF文を作ることも出来る。 '# '# 今回の注意点としては、一旦色付けしたセルを、元に戻そうとしてセルの色を白で '# 塗りつぶしていたり、文字色を自動ではなく黒で設定していたりすると、 '# 人間の見た目的には同じに見えるけれど、このマクロでは色付セルとして '# カウントされてしまう。そこら辺が大丈夫かは確認しておくこと。 '# '# あと、カウント対象がアクティブシートのみなので、ブック内シート全て、とか、 '# 違うブックのシートとかいう場合に対応してはいません。ついでにエラー時の '# 処理もないので、そこら辺も気にしないとならないかなー。 '# '############################################################################## ↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 次へー・・・。

トピ内ID:6415455775

...本文を表示

関数では無理 part4

🙂
mira
↓↓↓↓↓↓↓↓↓↓↓↓↓↓ Sub countColor() '使用する変数の宣言 Dim lngRow As Long '確認するセルの行数 Dim lngCol As Long '確認するセルの列数 Dim lngCnt As Long '色付セルの個数(結果) Dim lngStartRow As Long '色付セルを確認する範囲(スタート行) Dim lngEndRow As Long '色付セルを確認する範囲(終了行) Dim lngStartCol As Long '色付セルを確認する範囲(スタート列) Dim lngEndCol As Long '色付セルを確認する範囲(終了列) Application.ScreenUpdating = False 'マクロ実行途中で再描画しない(実行時間の短縮) '色付セルをカウントする範囲を決定します。 '今回の例では、最初(A1セル)から最後(一番下の一番右)まで全てが範囲としてます。 'これだと、自分のカウントしたい範囲の外に色付セルがあったらダメになりますし、 '範囲が広いほどマクロ実行時間が遅くなるので、範囲は適切に選ぶことをお勧めします。 '正直、最新バージョンEXCELだったりすると、全範囲のままだといつまで経っても終わらない、 'と泣く羽目になると思いますよ。 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 次へー。

トピ内ID:6415455775

...本文を表示

関数では無理 part5

🙂
mira
↓↓↓↓↓↓↓↓↓↓↓↓↓↓ lngStartRow = 1 '今回、例として1行目から見ます lngStartCol = 1 '今回、例として1列目(A列目)から見ます lngEndRow = Rows.Count '今回、例として最終行まで見ます lngEndCol = Columns.Count '今回、例として最終列まで見ます lngCnt = 0 'まず、結果を0で初期化 '繰り返し処理を二重に回して、まず1行目の1列目、1行目の2列目、・・・1行目の終了列、 '2行目の1列目・・・という風に、範囲内のセル全てを一つ一つ調べています。 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑ ちょっと少ないけれど、固まりで纏めたいので次へー。

トピ内ID:6415455775

...本文を表示

関数では無理 part6

🙂
mira
↓↓↓↓↓↓↓↓↓↓↓↓↓↓ For lngRow = lngStartRow To lngEndRow 'スタート行から終了行まで繰り返し For lngCol = lngStartCol To lngEndCol 'スタート列から終了列まで繰り返し '指定されたセルが色付いているかを確認しているのはココ 'セルに色付け、というのが背景色のことか文字色のことか分からなかったので '両方書いています。このまま使うと、背景と文字色を両方色付けている場合に '1セルを二重カウントしちゃうので、どちらかを消すように 'セルに色付けが、背景色塗りつぶしの場合は、こちら If Cells(lngRow, lngCol).Interior.ColorIndex <> xlColorIndexNone Then '「色がない」以外 lngCnt = lngCnt + 1 '色付きセル数をカウントアップ End If 'セルに色付けが、文字に色を付けているという意味の場合は、こちら If Cells(lngRow, lngCol).Font.ColorIndex <> xlColorIndexAutomatic Then '「色が自動」以外 lngCnt = lngCnt + 1 End If Next lngCol Next lngRow ↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 次へ

トピ内ID:6415455775

...本文を表示

関数では無理 part7(最後ー!)

🙂
mira
↓↓↓↓↓↓↓↓↓↓↓↓↓↓ '範囲全てを数え終わったので、結果をポップアップにて表示。 'もし、どこかのセルに結果を記入したいのなら、cells(何行目か,左から何列目か).value=lngCnt という式を書いてやればいい。 '結果は別のシートにしたいのなら、worksheets("結果を記入したいシート名").cells(何行目か,左から何列目か).value=lngCntに。 '例えば、Sheet2のA1セルに結果を書きたいなら、worksheets("Sheet2").cells(1,1).value=lngCnt と書く。 MsgBox "色付セルの個数:" & lngCnt '色付セルの個数:個数 とポップアップされる End Sub ↑↑↑↑↑↑↑↑↑↑↑↑↑↑ こんな感じです。これを見て、自分に合うように変えるか、分からないなら カウントしたいものが具体的にどんなものなのかを説明していただくのが いいかと思います。 それでは頑張ってくださいねー。

トピ内ID:6415455775

...本文を表示

ユーザー定義関数

🙂
1月からやる気出す
関数としては、ないらしいです。 色のついたセルの数をカウントするには、ユーザー定義関数を作成して使うらしいです。 ユーザー定義関数は上級者向け。 初心者向けのやり方は、 エクセルのデータを変更してよいのであれば、 1.色のついたセルの右に、列を1列挿入 2.色のついたセルがあれば挿入した列に1を入力していく。 3.=SUM(範囲は挿入した列)で合計値を求める これで合計値がセルの数になります。 やや中級者向けのやり方は、 1.オートフィルタ 2.色のついたセルのみ表示 3.オートカルクでステータスバーに個数を表示(デフォルトは合計値なので右クリックで個数に変更)

トピ内ID:6680506639

...本文を表示

オートフィルタ

🙂
こにゃ
お使いのExcelが古いものじゃない限り オートフィルタで色付きセルをフィルタ出来ますのでお試しください。

トピ内ID:7985668103

...本文を表示

違ったらゴメン

🙂
ms06
たぶん、特別な数式いらないと思います。 エクセルの全体を範囲していして、上のバーのホームに並べ替えとフィルターってあるので フィルターを押すとエクセル横枠 A.B.Cって所に逆三角形のマークが出るのでマークをクリックしたら 色フィルターを選べば、一番左下に○○レコード中○個みつかりましたって出ると思いますよ。

トピ内ID:2094509303

...本文を表示

そもそも

🙂
答えになってない?
セルに色を付けた条件があると思うんですけどね。 とりあえず一時的な集計なら色フィルターを掛けることで何個見つかったかは下部に表示してくれます。

トピ内ID:8979974565

...本文を表示

できると思いますよ。

041
あのこ
条件に何色を1、何色を2として、それそれの合計個数出せたと思いますよ。数値と他に同時に表記できたとも思います。

トピ内ID:9399984939

...本文を表示

名前の定義とCOUNTIF関数では?

🙂
mamecha
こんにちは。 色つきのセルがA1としたらの計算式です。 B1セル上で、数式タブ→名前の定義→名前の定義 名前欄に「色番号」(ほかの名前でも。) 範囲欄は、そのブックまたはシートのみを選択、 コメント欄は記入の必要なし 参照範囲に、下記の数式を入力 =GET.CELL(63+NOW()*0,A1) で、OKをクリックし、B1セルに、=色番号 と入力、 その行以下にオートフィルでコピー。 色つきセルの個数を表示させる行に、 =COUNTIF(B1:B100,">=0") 仮に100行あるとしての計算式ですが、これでどうでしょうか。

トピ内ID:9333821680

...本文を表示

組み込み関数には無いと思います

🙂
ochapi
Excelの関数には、セルの塗りつぶし色を取り出すようなものはないと思います。 セルの着色に意味があるようなデータ設計をしてしまった段階でExcelでの分析が面倒くさくなっているような気がしますが、あえて行うならVBAでセルのプロパティを参照して数えるのが一番素直かと。

トピ内ID:5327905315

...本文を表示

一つの列?

🐱
匿名
列が一つの中のところどころの色付けでしたら 色フィルタをかけて何個のデータなのかを見たら早いかと。

トピ内ID:8102080033

...本文を表示

フィルターソートしたら?

🙂
通り
フィルターで色ソートして、該当の行数を数える。 で、良いと思いますよ。

トピ内ID:7030452624

...本文を表示

ユーザー定義関数

🐴
マクロ初心者
無いものはマクロで関数を作ります。Excel2010の場合。 1.「ファイル」タブを選択し「オプション」をクリック 2.「リボンのユーザー設定」をクリック 3.「メインタブ」内の「開発」にチェックを入れ「OK」 4.「開発」タブを選択し「Visual Basic」をクリック 5.「挿入」メニューから「標準モジュール」をクリック 6.出てきた白い画面に下記コードをコピペする Function CoCo(Rng As Range, Coind As Integer) As Long Dim myRng As Range Dim Col As Long Application.Volatile Col = 0 For Each myRng In Rng If Coind > 99 Then If myRng.Interior.ColorIndex > 0 Then Col = Col + 1 End If Else If myRng.Interior.ColorIndex = Coind Then Col = Col + 1 End If End If Next myRng CoCo = Col End Function ワークシートに戻り、着色セルの数を表示する任意のセルに下記を入力。 =CoCo(対象範囲,対象色) 対象範囲:例えばA1セルからJ10セルならA1:J10(左ボタンを押して範囲をなぞる) 対象色:エクセルが定義するColorIndexを指定。黒は1、赤は3、黄色は6。詳細は「ColorIndex」で検索してください。色不問の場合は100。 セルの色を変えたら「F9」キーを押して再計算してください。 ネットで公開されていた「勝手に使用して可」のコードを参照しました。

トピ内ID:7687261037

...本文を表示

別の方法で

🙂
多胡天
エクセル上でのセル着色は“装飾”だと思います。 『条件付き書式』で、「入力されたデータ」が「定義した条件」に合うセルの色をピンク色に表示する、などデータを基に“装飾”する事は可能です。 でも、逆の“装飾”をデータ(着色されたセルの個数)に戻すのは無理ではないでしょうか。 セルに着色するからには、何か着目点や判断基準があると思います。 例えば「鳥の写真の一覧表」なら「渡り鳥の写真だけセルに色付けする」とか。 そういった情報(着色のポイント)を“備考欄”のセルとして付け加えては? 「鳥写真」の例なら、ファイル名・撮影年月日・鳥名・撮影地・・・等の表になっていると思います。 その横に備考欄を追加して「渡り鳥なら1を、そうでなければ0を」入力する、のです。 (もちろん、今まで通り「渡り鳥が映っているファイル名のセルに着色」していても構いません。) 表の最下段で、備考欄の合計値を求めれば、その数値が着色セルの総数と(入力ミスさえなければ)一致します。 複数の条件で着色を色分けしているのなら、色分けの数だけ備考欄も増やせば良いだけ、です。 データの種類ごとに着色の基準があるのなら・・・。 着色そのものを『条件付き書式』にしたうえで、データ数カウント用に『IF関数』で「0又は1」を自動生成する行を列の末尾にデータ種類の数だけ(データ処理用の表として)作る方がミスが出ないし楽かも。

トピ内ID:7234320227

...本文を表示

それについては

🙂
花火
公開された飲み会参加者シートなどで○を付けた参加希望者数を↓関数で掴むのは便利ですよね。   =COUNTIF(A2:A6,"○") このような使い方を、色付きセルの個数を表示する関数はないかという質問と理解しました。 色々なやり方があるのですが・・・ 1.googleで次のキーワード検索して下さい。   excel 関数 色付きセル 合計 2.そこの一覧表の↓サイトに紹介されているものが一番、簡単だと思います。  色付きセルの合計 | Excel2010 | 初心者のためのOffice講座 ただ人間の目では同じ色に見えても色コードが違う場合は別にカウントされますので注意が必要です。 それとExcel2007以降のバージョンが必要です。 上手く行けば良いですね。

トピ内ID:9443189151

...本文を表示

Subtotal

好きなタイプは紅い豚
トピ主さんはマクロ組めるの? マクロ(自作関数)はコードの意味がわからないと、その後のメンテができないんじゃないのかな。趣味で作ってるファイルならそれでも良いけど、業務で利用するにはリスキーすぎる。 ついでに、マクロがわかる人がサイテーでも二人はいないと、リスクヘッジが厳しいし。 トピ文にマクロに関しての記述がいっさいないので、トピ主さんはマクロができないと仮定して。私がオススメするのは 1.条件付き書式が設定されているなら数式をパクって流用 2.オートフィルタ+Subtotal関数 一時的な集計であれば、上記でイケると思います。 恒久的に発生する業務なら、各データにフラグが立てられるように、データ設計の見直しを提案します。

トピ内ID:3490683819

...本文を表示

COUNTIF

041
オッチャン
自分が考えた方法が、2月1日23時25分現在で、投稿されていませんので、 次の通り、レスいたします。 たとえばA1からA5に数値をインプットし、色付けする条件が「10より大きいとき」の場合、 B1に「=IF(A1>10,"○","")」とインプットし、B2 からB5までコピーします。 B6に、「=COUNTIF(B1:B5,"○")」とインプットすれば、B6に○の数が表示されます。 B列を表示したくなければ、A6に「=COUNTIF(B1:B5,"○")」をインプットして、 B列を非表示にすれば良いと思います。 なお、セルの数値が10より大きいときに色づけする場合、 A1からA5をドラッグし、「条件付き書式」-「新しいルール」を選択し、 その中の「指定の値を含むセルだけを書式設定」、「次の値より大きい」を選び、 「10」をインプットします。 そして、書式Fをクリックし、塗りつぶしタグから塗りつぶしたい色を選択し OKをクリックすれば、自動的に色づけされます。 こんなんでいかがでしょうか。

トピ内ID:2923706111

...本文を表示

列ごとに求められます

🐱
タマ
解答が出ているかと思いますが、 データ~フィルタをクリックします。 タイトルに▼がつきますので▼をクリックし、色フィルタで指定の色をクリックします。 ここでステイタスバー(エクセルの左下枠の部分)に 「○○レコード中○個が見つかりました」 と表示になります。 なので見る事は出来ますが、セルに表示にはなりません。 セルに求めるとしたら フィルタで色指定した後にCTRLキーを押したままGキーを押してジャンプダイアログを表示し、左下の「セル選択」をクリックします。 ここで「可視セル」でOKします。 コピーボタンをクリックし、新シートで貼り付けしcount関数で数値の入っているセルを数えたら良いと思います。 解除は▼をクリックして「○○からフィルターをクリア」を選びます。

トピ内ID:5147602612

...本文を表示

ユーザー定義関数(補足)

🐴
マクロ初心者
2018年1月30日 20:14のレス「ユーザー定義関数」の補足です。 エクセル2003まではワークシートで扱える色は56色で、それを1~56の色番号(ColorIndex)としてカラーパレットに割り当てました(色番号はユーザーが変更できた)。 エクセル2007からは、光の三原色RGBを0~255で表し、256の3乗、約1670万色が使用可能となりましたが、カラーパレットは56色のままなので、登録された56色以外は中間色として似た色の番号が割り付けられます。 つまり、小生が提案した関数(CoCo)では微妙な色の違いを識別できません。複数の色を使い分けて集計する場合は、人間の目が一目で区別できる色を使うことをお奨めします。 ご参考までに、色番号を確認するマクロを書いておきます。 1.新しいBookを開く 2.任意のセルを任意の色で塗りつぶす(複数セル可) 3.「開発」タブを選択し「Visual Basic」をクリック 4.「挿入」メニューから「標準モジュール」をクリック 5.出てきた白い画面に、下記コードをコピペする Sub Get_Color() Dim MyRng As Range Set Rng = Selection For Each MyRng In Rng MyRng.Value = MyRng.Interior.ColorIndex Next MyRng End Sub 6.ワークシートに戻り、2で色付けしたセルを含むセル範囲を選択する 7.「開発」タブの「マクロ」をクリック 8.「Get_Color」が選択されていることを確認し、「実行」をクリック 戻り値が色番号です(塗りつぶしなしのセルは-4142)。

トピ内ID:7687261037

...本文を表示
[PR]
気に入ったトピを保存するといつでも読み返せる
気に入ったトピを保存するといつでも読み返せる
使用イメージ
使用イメージ

マイページ利用でもっと便利に!

お気に入り機能を使う ログイン
レス求!トピ一覧