プロが教える店舗&オフィスのセキュリティ対策術

文字の色別に計算してくれる方法はありませんか?

例えば、同じ行や列で、青い色の数字だけを選んでオートSUM計算等をしてくれる方法です。

ご存知の方、宜しくお願いします。

これができればとっても仕事がラクになります。

A 回答 (7件)

結論からいうと


VBAを使う方法が最も効果的だと考えられます。

しかし、VBAを使わないのであれば、
ご質問者さんのコメントを読んでいて感じたのですが、
EXCELの問題ではなくBPRの問題でしょう。

「他の人が色を塗っている」理由が
「今年いるデータ」と「来年いるデータ」を識別するためだとすると

「色を塗る」かわりに
「今年いるデータ(数値)を入れたセル」の隣の列に「1」を
「来年いるデータ(数値)を入れたセル」の隣の列に「2」を
いれるというルールで表を作製することにして

数値のセルには「条件付き書式」を設定し
隣のセルに「1」が入力されると「赤」で
隣のセルに「2」が入力されると「黒」で
表示されるようにしておきます。
「1または2を入力した列」は入力後「非表示」
にしてしまいましょう。
こうすることで数値のセルについては
従来と変わらない表示になります。

作業負荷も「色を塗る」と「隣のセルに1または2を入れる」
ではそれほど差はないと考えられます。

こうしておけばご質問者が集計するときには、既に識別するための列がある訳ですから

>オートフィルタで1だけ表示、2だけ表示で合計

という方法が何の作業もなく直ちに実行可能ということになります。
    • good
    • 0
この回答へのお礼

最後までご親切にありがとうございました。

がんばります。

お礼日時:2005/12/19 14:39

#5です。


すみませんテストで入力したものをそのまま回答に使用してしまい
前後のつじつまがあわなくなってしまいました。

B101に
{=SUM(B1:B27*IF(WEEKDAY(A1:A27)=1,1,0))+SUM(B1:B27*IF(WEEKDAY(A1:A27)=7,1,0))}

はセルの範囲が誤りです。

B101に
{=SUM(B1:B100*IF(WEEKDAY(A1:A100)=1,1,0))+SUM(B1:B100*IF(WEEKDAY(A1:A100)=7,1,0))}

が前段の説明と合致した正しいセルの範囲です。
    • good
    • 0
この回答へのお礼

数値に赤や黒の色を付ける意味は、マイナスやプラスだからということではなく、赤は今年いるデータ、黒は来年いるデータみたいな分け方です。

他の列に赤なら1、黒なら2みたいな列作って、オートフィルタで1だけ表示、2だけ表示で合計もとめたほうが無難でしょうかね…(泣

お礼日時:2005/12/18 19:31

>例えば…赤色の数値と黒色の数値が一つの列にランダムで入っておりまして…



ご質問者がお使いになっている表をお作りになったのはご質問者自身ですか?
ご質問者がお使いになっている表がどのように作成されているか不明ですが、
以下のどちらでしょうか?

(1)数値を入力したあと、人手で色をつけている
(2)赤い数字、黒い数字は数値を入力すると
自動的に色がつくように作製されている

(1)の場合
皆さんのご回答のようにVBAを使うぐらいしか思いつきません。

(2)の場合で条件付書式でフォントの色を変えている場合
#3さん、#4さんの方法でもフォントカラーを識別することが
できないように思います。
しかし、自動的に色がつく条件さえわかれば
ご質問者の望んでいるようなことが可能になります。

ただし、表をお作りになったのはご質問者自身でない場合
この条件を自分で調べなければなりません。
#1さんの回答は
赤い数字がマイナス、黒い数字がプラスの例だということになります。

条件がどのようなものか不明ですが、
仮に数値が赤色になる条件が○○○○○だとして

>赤色なら「1」、黒色なら「2」みたいな識別する列を設けてやる

という手段を自動的にやらせます。

たとえばA1からZ100まで既にデータが入っているとして
B列の赤い数字だけを集計するために
AA1に「=B1*(IF(○○○○○,1,0))」を入力し、
AA100までコピーします。
AA101に「=SUM(AA1:AA100)」を記述すれば合計が出ます。
同様に
数値が黒色になる条件が△△△△△だとして
B列の黒い数字だけを集計するために
AB1に「=B1*(IF(△△△△△,1,0))」を入力し、
AB100までコピーします。
AB101に「=SUM(AB1:AB100)」を記述すれば合計が出ます。

仮にA列には日付けが入っていてB列の数値はA列の曜日によって
色が変えられており、
土曜、日曜が赤い数字
それ以外の曜日が黒い数字で表示されるように作製されている場合
上記の例では
AA1には=B1*(IF(OR(WEEKDAY(A1)=1,WEEKDAY(A1)=7),1,0))
という式を入力してコピーすることになります。

この場合、平日の合計、土日の合計が計算できることになります。

なお、AA列、AB列といった作業列を使わず配列数式を使って
B101に
{=SUM(B1:B27*IF(WEEKDAY(A1:A27)=1,1,0))+SUM(B1:B27*IF(WEEKDAY(A1:A27)=7,1,0))}
をCTRLキーとSHFTキーを押しながらENTERを押して入力することで
({}は配列数式として入力した結果であり、括弧を入力するわけではありません)
ここに土曜・日曜の合計を表示させるというテクニックもあります。
    • good
    • 0
この回答へのお礼

>(1)数値を入力したあと、人手で色をつけている

です。

他の方が色を塗ったものを集計して1つの表にしています…。やっぱりVBAしかなさそうですねぇ…

お礼日時:2005/12/18 19:26

ツールーマクローVBEの画面の画面を出し、挿入-標準モジュールの画面で


Function clr(A)
clr = A.Font.ColorIndex
End Function
を貼り付けます。
例データ
A1:A10
1-4105
2-4105
33
4-4105
5-4105
6-4105
73
8-4105
9-4105
0-4105
A3とA7のフォント色が赤になってます。
B1には
=clr(A1)
と入れてB10まで式を複写します。結果上記の通り。
たとえばA13に
=SUMIF(B1:B10,3,A1:A10)
と入れると、結果10=3+7になりました。
配列数式などで、作業列B列を使わない方法を模索しましたが失敗。
全てをVBAで計算するのも簡単ですが、>VBAはまったく知識がありません、とのことなので、VBA関連は最小限3行にしました。
    • good
    • 0
この回答へのお礼

すごく親切に書き込んくれてありがとうございます!! ちょっとやってみます…

お礼日時:2005/12/18 19:22

> やはり他の列を設けて、赤色、黒色で識別するコード


> みたいなのを追加してやるしかないのでしょうか~

通常は、色を付けるにあたっての条件で式を組んでいきます。そちらなら複雑になっても、とりあえず標準のもので計算可能です。(ランダムなら無理ですが・・・。)

とりあえず、モジュール化してみました。

標準モジュールを追加して

Function usCSum(usRage As Range, _
Optional usCage As Range) As Long

Dim usSum As Long
Dim usObj As Range
Dim usColor As Double

If usCage Is Nothing Then
usColor = 0
Else
usColor = usCage.Font.Color
End If

usSum = 0

For Each usObj In usRage
With usObj
If .Font.Color = usColor Then
usSum = usSum + usObj
End If
End With
Next usObj

usCSum = usSum

End Function



=usCSum(計算したいエリア,計算した色のフォントが付いているセル)

=usCSum(A1:A5,A4)

見たいな感じで計算は可能ですが、お勧めはしません。
    • good
    • 0
この回答へのお礼

な、なるほど…(謎

お礼日時:2005/12/18 19:20

標準的に計算を実施するなら、ある程度色を付けた条件で計算をすることは#1さんのご指摘どおり可能です。



ユーザが手で色を付けたのであれば、VBAでユーザ関数化するしかないでしょうね。

VBAは、ある程度作成できますか?
    • good
    • 0
この回答へのお礼

VBAはまったく知識がありません…(泣

やはり他の列を設けて、赤色、黒色で識別するコードみたいなのを追加してやるしかないのでしょうか~

お礼日時:2005/12/17 17:01

色はセルの書式設定によるものであることはご存知かと思います。


そして関数はセルに入力された数値や文字列に対するものであることもご存知かと思います。
したがって、通常のやり方ではセルの色で関数を制御することはできません。

色をつけた条件はなんでしょう?
たとえばマイナスを赤、プラスを青にしたとかであれば、色ではなくその条件で計算できます。

たとえば、 =SUMIF(A1:A100,"<0",A1:A100)  でA1からA100の中でマイナスのものだけを合計できます。
    • good
    • 0
この回答へのお礼

例えば…赤色の数値と黒色の数値が一つの列にランダムで入っておりまして…

その中で、赤色の数値だけの合計を求める みたいなのをやりたいのです…(悲

赤色なら「1」、黒色なら「2」みたいな識別する列を設けてやるしかないのでしょうか?

お礼日時:2005/12/17 17:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています