Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2016)
セルの背景色を条件として集計したい
投稿日時: 21/02/02 17:05:46
投稿者: ippu

セルに入力された数値をそのセルに設定された背景色を条件に集計したいのですが、その方法があれば教えてください。
また、セルに設定された背景色の情報、たとえば色番号などは取得できるでしょうか。
よろしくお願いいたします。

回答
投稿日時: 21/02/02 17:12:28
投稿者: WinArrow
投稿者のウェブサイトに移動

背景色は、誰がどのような方法で、どのような条件で設定したものでしょうか?
もし、条件があるならば、その条件で集計することを検討しましょう。
人の感覚で設定した色は、あてにならないと考えた方がよいでしょう。

回答
投稿日時: 21/02/02 17:16:33
投稿者: WinArrow
投稿者のウェブサイトに移動

セルの背景色や文字色を取得するには
ユーザー定義関数を使用する方法があります。
でも、ユーザー定義関数は、あなたが作成することになります

投稿日時: 21/02/02 18:19:28
投稿者: ippu

 WinArrow様、早速のご教示ありがとうございます。
 たとえばA列に入力された数値を「年齢」として、男は青、女は赤を背景色として男女別の年齢総計を得たい場合、年齢データは一つの列で済み、条件「男・女」を新たな列に設ける必要がありません。視覚で概要がつかめるだけでなく数値も得ることができ一挙両得のような気がします。
 という理由で背景色は「人の感覚」ではなく、「記号・番号」で設定・取得することが出来ればいいかなと思った次第です。
「ユーザー定義関数を使用する方法があります」とご教示がありました。敷居が相当高そうです。ヒント&アドバイスをいただければありがたいです。

回答
投稿日時: 21/02/02 18:54:42
投稿者: WinArrow
投稿者のウェブサイトに移動

文章だけでは、理解することが難しいです。
分かるのは、A列が年齢ということだけで、
後はわかりません。「記号・番号」は、どこにあるのですか?
表のレイアウトを掲示してください。

回答
投稿日時: 21/02/02 19:01:40
投稿者: WinArrow
投稿者のウェブサイトに移動

言っておきますが、
Excelは表計算ソフトです。ワープロとは違います。
計算する対象は、「値」です。
データとして扱う場合は、
見た目を目的とした「色」「サイズ」など書式は計算としては対象外と考えたがよいでしょう。

投稿日時: 21/02/03 03:21:10
投稿者: ippu

WinArrow様、ご教示ありがとうございます。
下手な説明ですみません。
下表をイメージしての質問でした。
     
   (列)A (列)B
(行)1  20   11  (セル「A1」の背景色を「青」「B1」を「青」とする)
(行)2  21   12  (セル「A2」の背景色を「青」「B2」を「赤」とする)
(行)3  22   13  (セル「A3」の背景色を「赤」「B3」を「青」とする)
(行)4  23   14  (セル「A4」の背景色を「赤」「B4」を「赤」とする)
(行)5  24   15  (セル「A5」の背景色を「青」「B5」を「赤」とする)
 
(行)7  89 (セルの背景色が「青」の合計)
(行)8  86 (セルの背景色が「赤」の合計)
 
セル「A7」「A8」の値を得る方法をご教示ください。
よろしくお願いいたします。

投稿日時: 21/02/03 03:46:31
投稿者: ippu

追伸
たとえば セル「A7」の場合
=SUM(A1,A2,A5,B1,B3)
とすることも出来ると思いますが、その場合背景色の変更の都度この式を変更しなければなりません。
背景色を集計の条件にすることが出来れば、式を変更することなく背景色の変更を反映できるのではないかと思った次第です。
よろしくお願いいたします。

回答
投稿日時: 21/02/03 06:38:41
投稿者: WinArrow
投稿者のウェブサイトに移動

表のレイアウトをありがとうございます。
私のお願いが正しく伝わっていないようですね・・・
 
あなたは、
色がついている状態から、解決する方法を探っていますが
少し、時間を戻してみましょう。
 
再掲
>背景色は、誰がどのような方法で、どのような条件で設定したものでしょうか?
>もし、条件があるならば、その条件で集計することを検討しましょう。
>人の感覚で設定した色は、あてにならないと考えた方がよいでしょう。
 
この1行目に書いたあることに対する回答をお願いします。
 
最後の投稿に
色を変更した時の話が書かれています。
色を変更するトリガーは何でしょうか?
男が女に変わるわけはないですよね?
(最近は「不明」という性別もあるようですが・・・)
そうすると、色の付け間違いではないかと思います。
この情報だけで間違いを発見することができますか?
 
あなたが
>背景色は「人の感覚」ではなく、「記号・番号」で設定・取得することが出来ればいいかなと思った次第です。
正にこれです。
この「記号・番号」はどこにあるのでしょう?
「記号・番号」は、希望的観測ですか?
 
今迄の説明にはなかった、B列は何でしょうか?
 

回答
投稿日時: 21/02/03 09:06:53
投稿者: Suzu

引用:
 たとえばA列に入力された数値を「年齢」として、男は青、女は赤を背景色として男女別の年齢総計を得たい場合、年齢データは一つの列で済み、条件「男・女」を新たな列に設ける必要がありません。視覚で概要がつかめるだけでなく数値も得ることができ一挙両得のような気がします。

 
Excel上で出来る事 を前提にするならば 考え方としては です。
 
入力されている値 を元に 背景色を設定する は 条件付書式 にて対応できます。
 
 【条件に合ったセルの書式を設定する】
 https://www.moug.net/tech/exopr/0070005.html
 
 
逆に、背景色を元に 判定を行う は 今の Excelの一般関数には用意されていません。
 
今と言ったのは、昔の機能には存在し、互換機能として残してある機能ではありますが
名前の定義が必要であったり、特殊な方法となります。
 
 【色のついたセルをカウント・集計】
 http://miyahorinn.fc2web.com/faq/faq030.html
 
 
どちらかといえば、マクロを使用し、ユーザー定義関数を使用したほうが、まだ一般的と思います。
 【セルの色を取得するユーザー関数】
 https://kokodane.com/mini_macro-55.htm
 
 
どちらも、マクロを使わないユーザーにとっては特殊な方法には変わりありませんので
条件付書式にて色を設定し、計算の方は SUMIF関数を使用する の方が
Excelの一般機能のみで済みますので、推奨いたします。

回答
投稿日時: 21/02/03 10:49:36
投稿者: WinArrow
投稿者のウェブサイトに移動

私的には、掲示されたけの表では、何にも使えないと思います。
まだ、データがあるものと思います。
A列が年齢というのはわかりますが、
例え性別を色で判別できたとしても、
それで何を判断(何かのアクションにつなげる)しようとしているのか?
数値はともかく、どのような項目があるのか
本当の表を掲示したほうがよいと思います。

投稿日時: 21/02/03 11:12:38
投稿者: ippu

WinArrow様
舌足らずで申し訳ありません。
・「男女」 例えとして使いました。1種類でも2種類以上でも構いません
・トリガー 任意の時点で集計したい数値の入ったセルを選んで塗りつぶす
・列B  列数は問いません
・番号  ACCESSでは、フォームのラベルコントロールあるいはテキストボックスコントロールの「背景       色」はBackColorプロパティ(Long型の数値)により取得・設定ができるようです。このLong型の      数値を「番号」と表現してしまいました。
Excelで「背景色」をLong型の数値(例16777215)で取得できれば、
例えばSUMIF()などのような関数の"集計の条件"で(仮にですが)
 =SUMIF(a1:z100,"BackColor=16777215"[,a1:z100])
のようにできないものかと思った次第です。
 
Suzu様
アドバイスありがとうございます。
ご教示の場所で勉強させていただき、その上で改めてお伺いさせていただきたいと思います。

回答
投稿日時: 21/02/03 16:05:24
投稿者: WinArrow
投稿者のウェブサイトに移動

SUMIF関数を使えばよいことはわかっていますが、
肝心の色が目視だけで設定しているのであれば、
その値は確実性がないと思います。
ユーザー定義関数は、敷居が高い、
というから、
1種類でも2種類でも関係ありませんが、
何を根拠に背景色を設定しているか?
 
という質問に答えてくれません。
どうも、話し合いがかみ合っていないようですね・・・・
 
肝心なことを隠しているのであれば、
サポートが難しです。

回答
投稿日時: 21/02/03 16:52:30
投稿者: Suzu

引用:
ACCESSでは、フォームのラベルコントロールあるいはテキストボックスコントロールの「背景色」はBackColorプロパティ(Long型の数値)により取得・設定ができるようです。このLong型の数値を「番号」と表現してしまいました。
Excelで「背景色」をLong型の数値(例16777215)で取得できれば、
例えばSUMIF()などのような関数の"集計の条件"で(仮にですが)
 =SUMIF(a1:z100,"BackColor=16777215"[,a1:z100])
のようにできないものかと思った次第です。

 
Access のフォーム/レポートでは、コントロールのプロパティー値を
コントロールソースに
=Forms![フォーム名]![コントロール名].BackColor
の様にすれば取得できます。
(それともVBAで取得する話でしょうか? であれば、ExcelでVBAを使用しても良いのでは?)
 
また、テーブル/クエリ ではどうですか?取得できますか?
背景色の設定が無い訳ではありません。存在はしていますが取得できません。
 
Accessでは、テキストボックス等のコントロール/フィールドに対しての設定であり、
レコード毎の設定ではありません。
 
Excelでは、セル一つ一つに対し設定可能です。
 
何が言いたいかと言うと、
「Accessのフォームに出来るんだからExcelでも出来るでしょ」は通じません。
 
できる事を踏まえた上で、どのような手法にて実現するか を決めましょう。

投稿日時: 21/02/03 23:18:49
投稿者: ippu

WinArrow様
Suzu様
 
「背景色を元に 判定を行う は 今の Excelの一般関数には用意されていない」こと、よくわかりました。
 
Suzu様ご教示の http://miyahorinn.fc2web.com/faq/faq030.html によれば、この件は
「よく相談掲示板に挙げられる問題」のようです。
近い将来この機能が「Excelの一般関数」に加えられることを、多くのExcelユーザーと共に期待したいと思います。
 
ご丁寧なご教示に感謝申し上げます。