教えて下さい。お願いします。
3000件程のデータが入力されていて、セルの値の種類ごとに
セルの色で色分けされています。
これを、赤のセルは何件、青のセル何件、というふうに
関数を使用して集計するにはどうすればいいでしょうか。
色は全部で3種類と色がないもの、合計4種類です。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

----------------色番号を調べる関数------------------------------------------


Function iroban(iro)
iroban = iro.Interior.ColorIndex
End Function
-------------------ここまで----------------------------------------

-------------------色数カウント関数---------------------------
Function irosuu(gyoutou, gyoumatu, iroban)
For i = gyoutou.Row To gyoumatu.Row
If Cells(i, gyoumatu.Column).Interior.ColorIndex = iroban Then irosuu = irosuu + 1
Next
End Function
--------------------ここまで---------------------------------------

■「色を調べる関数」で調べたい色のセルを指定(色がなしの場合は-4142になります)

■「色数カウント関数」はカウントする列の行頭と行末のセルを指定。
「色を調べる関数」を入力したセルを指定するか、色番号を入力。

再計算はしてくれないのでユーザー関数の数式バーで、一部分をクリックして、[Enter]キーを押す必要があります。(マクロにしておくと楽だと思います)
    • good
    • 0
この回答へのお礼

お答えありがとうございます。大変参考になりました。
これを元に集計作業ができるようになりました。
ありがとうございました。

お礼日時:2001/04/06 14:09

こんにちは



>セルの値の種類ごとにセルの色で色分けされています。

とありますが、その色分けのルールで判定したほうが正確かつ早くないですか?


余計なアドバイスだったらすみません。
    • good
    • 0

あまり詳しくはないもので・・


>ユーザー関数を設定してセル上の値として表記したい
結果をセル上に出すだけでなく、関数もセル上に表記するということですか?
私が書いたものだとボタンと結果しかセルに出ませんね。
すみませんがわかりません。
範囲と色は引数として下記の関数になげれば良いと思います。
ちょっと改造が必要ですが・・
>色の指定のないセルもカウントしたいので


For i = 0 To 253 "行数を指定
in_color = ActiveCell.Interior.ColorIndex
Select Case in_color
Case 3
count1 = count1 + 1
Case 2


Case Else"Elseにはそれ以外(色に指定が無い)物が来ると思うんですがだめですかねー?
count2 = count2 + 1
End Select
Next
ActiveCell.Offset(0, 1).Value = count1"ちょっと変更しました
ActiveCell.Offset(0, 2).Value = count2

この回答への補足

お答えありがとうございます。
ちょっとやってみたのですが、上手く集計ができませんでした。
Worksheets("Sheet1").Range("K3").Activate '始める位置を指定
の「K3」というのは答えを表記したいセルの指定ですよね?
それと For i = 0 To 253 '行数を指定
は何の行数を指定するのでしょうか。すみません。VBAは初心者なので
よくわからないんです。
お答えいただいたプログラムをVBAで記載して、集計したい範囲を
ドラッグしてからコマンドボタンを押すと、「0」と「254」としか
(この場合、宣言している色は赤のみ)セルにでてきません。
もちろん、赤色のセルはいくつかあります。
私のやり方に問題があるのかもしれません。
それと、集計するデータの範囲とか、色とかがその都度違うのですが
その場合はVBのエディタでそれを変更することになりますよね。
となると、多少のVBの知識が必要となり、誰でもこれを使用できるわけでは
なくなってくるので、できれば、関数のマクロを組めればと思ったわけです。
もし、何か解決方法があるならばお手数ですが教えて下さい。

補足日時:2001/04/05 10:30
    • good
    • 0

エクセル上にコマンドボタンを配置してVBAを起動させます。


そのプロシージャに以下のようなプログラムを書けばできるのでは
ないかと思います。

Private Sub CommandButton1_Click()

Dim count1 As Long "色の数だけ宣言してください
Dim count2 As Long
Dim in_color As Long
Dim i As Long

count1 = 0
count2 = 0

Worksheets("Sheet1").Activate
Worksheets("Sheet1").Range("K3").Activate "始める位置を指定

For i = 0 To 253 "行数を指定
in_color = ActiveCell.Interior.ColorIndex
Select Case in_color "ColorIndexはヘルプで参照できます
Case 3         "3は赤です
count1 = count1 + 1"色の数だけSelect文を増やして下さい
Case Else
count2 = count2 + 1
End Select
ActiveCell.Offset(1, 0).Activate
Next

ActiveCell.Offset(1, 0).Activate
ActiveCell.Value = count1 "赤のセルの数を表示します
ActiveCell.Offset(0, 1).Activate
ActiveCell.Value = count2 "それ以外を表示します

End Sub

この回答への補足

お答えありがとうございます。
しかし、できることならば、ユーザー関数を設定して
セル上の値として表記したいのですが。
範囲と色の指定のできるユーザー関数です。
それと、色の指定のないセルもカウントしたいので
その場合はColorIndexでは指定できないので
どうしたらいいでしょうか。
全体から、色つきセルの合計を引けばいいんですが
できれば、その方法ではない方法でできないものかと・・。
お手数ですが、よろしければ教えて下さい。

補足日時:2001/04/04 12:59
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q動詞一覧・目的語一覧・補語一覧みたいな英語の詞・語ごとにずらーと並んだ

動詞一覧・目的語一覧・補語一覧みたいな英語の詞・語ごとにずらーと並んだサイトってないですか?

Aベストアンサー

動詞はともかく「目的語」とは「補語」というのは文における働きなので, そんな一覧を求めることがそもそも全く無意味.

QA1セルにAと入力すると、A2セルに3000A3セルに2000A4セルに1000と表示させたい。

A1セルに「A」と入力する1回だけで、
A2セルに「3000」
A3セルに「2000」
A4セルに「1000」
A5セルに「合計数字」を表示させたいのですが、
式をご教授願いたいです。

よろしくお願いします。

Aベストアンサー

D1:G3
A500030001000
B500300130
C1200800300
A1にA,B,Cのどれかを入れる。
A2に =VLOOKUP($A$1,$D$1:$G$2,ROW(),FALSE)と入れて、
A4まで(G-D-1列数だけの行数)式を複写する。
結果
A1がBの場合A1:A4は
B
500
300
130

A1の空白の場合に対処して
=IF(A1="","",VLOOKUP($A$1,$D$1:$G$2,ROW(),FALSE))
が良いでしょう。
(既回答とほぼ同じ式ですが、1箇所違うところがあります。)

Q新着順や新着順一覧を英語で書くと??

英語で新着順ってなんて書きますか?
HPに写真を載せていて
写真を新着順一覧に表示するスペースの名前を英語にすると、なんて書けばいいんでしょうか?
新着順や新着順一覧…という感じでお願いします。

Aベストアンサー

Sort by Date (日付順)というリンクが多いですね。

順番の切り替えに latest to earliest (最新から最古へ) とその逆を書いてある場合や、上向き三角▲と下向き三角▼のボタンを使っているところもあります。

到着というのをわざわざ盛り込んでいるところは少ないですが、長くても良いならば、Sort by Date arrived か Sort by Arrival Date とも書けます。

今回に写真という語も入れようとすると、Photos sorted by date (latest to earliest) のようになって見た目は冗長になってしまいます。

Qエクセルのマクロでセルごとに合計を出したい

マクロの組み立てで困っています。

シートにあらかじめ表を作っておき、一番下の行に「A列の合計」「B列の合計」「C列の合計」…とボタンを押すごとに合計が出るようにするのは可能でしょうか?

     A  B C D
 1   5  9  4  7
 2   8  2  6  1
 3   3  1  5  4
 4   7  8  2  3
 5            <-----合計値の行

さらにいうと、A~Dまでは月ごとのある数値の合計を出す列に分かれていて、1~5は日にちになっており、合計は月ごとに重ねて出せて行けたらな、と思っています。
説明が分かりにくかったら申し訳ありません。

色々なマクロの入力方法見て試しに入力したりしましたが、うまくいきませんでした;

Aベストアンサー

No4です。不正なデータ(数値にならないデータ)があるため、エラーになっています。
不正な箇所を検出時、そのセルの位置と内容を表示するようにしました。
それをみて、セルの内容を正しく修正してください
先ほどのマクロをいかのマクロで置き換えてください。


-----------------------------------------
Option Explicit

Sub ボタン1_Click()
Dim row, col As Long
Dim total As Variant
total = 0
For col = 2 To 13
If Cells(32, col).Value = "" Then
For row = 1 To 31
If IsNumeric(Cells(row, col).Value) = False Then
MsgBox (Cells(row, col).Address(False, False) & "のデータが不正")
MsgBox (Cells(row, col).Value)
Exit Sub
End If
total = total + Cells(row, col).Value
Next
Cells(32, col).Value = total
MsgBox (Chr(Asc("A") + col - 1) & "列の合計を算出")
Exit Sub
End If
Next
MsgBox ("空白の合計欄なし")
End Sub
--------------------------------

No4です。不正なデータ(数値にならないデータ)があるため、エラーになっています。
不正な箇所を検出時、そのセルの位置と内容を表示するようにしました。
それをみて、セルの内容を正しく修正してください
先ほどのマクロをいかのマクロで置き換えてください。


-----------------------------------------
Option Explicit

Sub ボタン1_Click()
Dim row, col As Long
Dim total As Variant
total = 0
For col = 2 To 13
If Cells(32, col).Value = "" Then
For row = ...続きを読む

QWindows7でプログラム一覧が英語表示される

Windows7でプログラム一覧が英語表示される

Windows7 Professionalを使っています。
最近気がついたのですが
普通ならプログラム一覧で
「アクセサリ」と表示されるはずの部分が
英語で「Accessories」と表示されるようになっていました。
メニュー自体もすべて英語で
たとえば「電卓」なら「Calculator」といった具合です。

ちなみに「ゲーム」は「Games」
「既定のプログラム」は「Default Programs」となっていますが
「スタートアップ」はそのままです。

ソフト自体に不具合はないのですが
何となく気になります。
かといって
名前を一つ一つ変更するのも面倒です。
簡単に元へ戻す方法がお分かりでしたら
よろしくお願いいたします。

Aベストアンサー

詳しくは分かりませんが、C:\Users\○○\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\AccessoriesにあるはずのDesktop.iniをうまく設定すればよいと思います。ちなみに○○はユーザー名です。

Qエクセル関数で0表示のセルの集計(合計)すると#VALUE!の表示が?

表題の通り0表示を ON OFF出来るような関数を使い(以下のもの)
=IF(ROUND(A1/2,0)=0,\"\",ROUND(A1/2,0))

セル毎の集計(合計)をしたのですが、
#VALUE!の表示が出ます。

意味は引数や演算子の種類が正しくない時に表示とあります。
解決の方策をお願いしたいのですが・・・

皆様の知恵をお借りしたく思い投稿致しました。

Aベストアンサー

> NO1さんの 補足説明に掲載しております。

No.1さんが回答されているように普通に足し算するのではなくてSUM関数で
集計を出すようにすればエラーが出なくなります。

B1からB10まで集計したいとしたら
=SUM(B1:B10)
です。
飛び飛びなら
=SUM(B1,B3,B5)
とかになります。

Qヘンな日本語英語の一覧があるサイト

ヘンな日本語英語の一覧があるサイトなんてご存知ありませんか?
ピアース、ピーマン、ビデオデッキ、シャーペンなど、実際には使われない英語がたくさん日本で使われていたりしますが、こういうリストが載っているサイトを探しています。

ご存知の方いらっしゃいましたら教えて下さいっ!
よろしくお願いしまっす!

Aベストアンサー

洋サイトですが

参考URL:http://www.engrish.com/

QExcelで集計部分を参照後、参照結果ごとに集計したい

Sheet1に以下のようなデータの表があります。
---------------------------
  A   B  
1 項目  数値1 
2 子   104  
3 子   126  
4 子    60  
5 丑    85  
6 丑   120  
7 丑   123  
8 寅   108  
9 寅    58  
10 寅    57  

---------------------------
同じシートのD列に「項目」を、E列に「合計」を算出し表示させたいのです
---------------------------
    D   E
1   項目  計算
2   子   290
3   丑   328
4   寅   223

---------------------------
ただし、「子丑寅」は毎回変わり、次回は「卯辰未」になったり
「あいう」になったり「ちゃちゅちょ」になったりと変化します。

その都度変化する項目名ごとに単純に集計をしたいということなんです。
ぜひ宜しくお願いいたします。

Sheet1に以下のようなデータの表があります。
---------------------------
  A   B  
1 項目  数値1 
2 子   104  
3 子   126  
4 子    60  
5 丑    85  
6 丑   120  
7 丑   123  
8 寅   108  
9 寅    58  
10 寅    57  

---------------------------
同じシートのD列に「項目」を、E列に「合計」を算出し表示させたいのです
---------------------------
    D   E
1   項目  計算
...続きを読む

Aベストアンサー

こんにちは。

 ピボットテーブルを使われたことはありますか?

 ピボットテーブルは[ツール]→[ピボットテーブルとピボットグラフレポート]からウィザード形式で実行できます。

 ピボットテーブルで「項目」を左の欄にドロップし、「数値1」をデータの欄に落とし、「数値1」の集計方法を「個数」から「合計」に変更すればよいと思います。

では。

Q色の名前は、日本語と英語のどちらを多く使う?・・・例えば「緑」と「グリーン」

「緑」と「グリーン」、「灰色」と「グレー」・・・

色の名前を言う時、日本語と英語のどちらを多く使いますか?

例えば、
・服の色は?
・車の色は?
・携帯機器(電話・プレイヤーなど)の色は?
どちらの表現を多く使いますか?

又、その他
「このもの(種類)は、日本語(英語)で言う」
「この色は、日本語(英語)で言う」
「殆ど、日本語(英語)で言う」
といったご回答も、歓迎します!

Aベストアンサー

じゃあいきましょか。英語です。私ら。

ピンク、ローズピンク、チェリーレッド、マローピンク、チリアンパープル、コスモス、チェリーピンク、ベビーピンク、ラムプラーローズ、ラズベリー、ローズマダー、カーマイン、パーシアンローズ、プラム、ガーネット、ピアニーレッド、プリムラ、コーラル、サルビア、マゼンダ、バーミリオン、シグナルレッド、ホビーレッド、ロブスター、ケチャップ、ファイヤー、スカーレット、バーミリオンレッド、ルビー、オペラ、ブリック。ベルベット。
以上赤系統。
日本にも古来のゆかしき呼び方はありますが、この点に関しましては英語に軍配をあげます。

グレーといいましても、シルバーホワイトグレー、パールグレー、オレンジグレー、イエローグレー、ブルーグレー、ピンクグレー、フレンチグレー、ミディアムグレー、グレー、ダークグレー、カーボングレー、チャーコールグレー、…あぁしんど。
私は日本男児ですが色名は英語です。

QExcelのマクロでセル内の数値によってセルの色分け

はじめまして。マクロ初心者です。
よろしくお願いいたします。

エクセルに入力されている数値によってセルを色分けしたいのです。
数値はこんなふうに入力されています↓

A0*22*33*44
             B1*22*33*44
A2*12*55*66               D1*77*22*88
             C1*12*55*66               E2*99*12*11 

こういったものが全部で1500行ほどです。
*は空白を表しています。
この中の、空白を入れて左から4つめの数字が2、5つめが2のときは赤、
左から4つめの数字が1、5つめの数字が2のときは青、
それ以外のときはそのまま…
といった具合に全部で5種類5色に色分けしたいのですが、どうにも能力が足りなくて困っています。
最初、自分なりにネット等参考にしながら「22という数値を含むセルは赤」といったように作ったのですが、
どうしても左から4文字目5文字目に限定しないと余計なセルにも色が付いてしまうのです。
もう2日も悩んでいますが、どうにも手も足も出ません。
ご指導いただけると本当に助かります。
どうぞよろしくお願いいたします。

はじめまして。マクロ初心者です。
よろしくお願いいたします。

エクセルに入力されている数値によってセルを色分けしたいのです。
数値はこんなふうに入力されています↓

A0*22*33*44
             B1*22*33*44
A2*12*55*66               D1*77*22*88
             C1*12*55*66               E2*99*12*11 

こういったものが全部で1500行ほどです。
*は空白を表しています。
この中の、空白を入れて左から4つめの...続きを読む

Aベストアンサー

こんにちは。

>こういったものが全部で1500行ほどです。
>*は空白を表しています。

間の空白が、半角であり、空白は1つであるという確約はないと思うのですね。
1500行で、数多くある場合は、そういうことを想定しないといけないような気がします。

私のコードの考え方は、空白で仕切られた4つの塊の文字列の2番目が、何であるかを検索しています。

確実に、その場所にあるというなら、
For Each c In rng で、
If Mid(c.Value, 4, 2) = 22 Then とすればよいです。

なお、色は、塗りつぶすなら、Interior の場合は、パステルカラー。Font なら、原色がよいです。

-----------------------------------------------
'Case のところに、数値と色を加えてください。

Sub TestMacro1()
  Dim rng As Range
  Dim c As Range
  Dim buf As Variant
  
  Set rng = ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants)
  Application.ScreenUpdating = False
  rng.Interior.ColorIndex = xlNone
  For Each c In rng.Cells
    '全角スペースを半角にする
    buf = Replace(Trim(c.Value), Space(1), Space(1), , , 1)
    'スペースが2個以上入ったものをひとつにする
    Do While InStr(1, buf, Space(2), 1) > 0
     buf = Replace(buf, Space(2), Space(1), , , vbTextCompare)
    Loop
    If UBound(Split(buf, Space(1))) > 0 Then
      buf = Split(buf, Space(1))
      '数値を探す(ここに入れる)
      Select Case Val(buf(1))
        Case 22: c.Interior.ColorIndex = 3 '赤(3), ローズ(38)-パステルカラー
        Case 12: c.Interior.ColorIndex = 5 '青(5), 水色(34)-パステルカラー
      End Select
    End If
    buf = Empty
  Next c
  Application.ScreenUpdating = True
End Sub

こんにちは。

>こういったものが全部で1500行ほどです。
>*は空白を表しています。

間の空白が、半角であり、空白は1つであるという確約はないと思うのですね。
1500行で、数多くある場合は、そういうことを想定しないといけないような気がします。

私のコードの考え方は、空白で仕切られた4つの塊の文字列の2番目が、何であるかを検索しています。

確実に、その場所にあるというなら、
For Each c In rng で、
If Mid(c.Value, 4, 2) = 22 Then とすればよいです。

なお、色は、塗りつぶすな...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング