
数値がランダムに入っている表に条件付き書式で指定の数式に合致するとセルを色塗りするよう設定しあります。その色塗りしたセルをカウントするにはどうすればよいか検索していましたら、下記にマクロでの手法が説明されていましたが、マクロに詳しくないので、どう利用したらよいかわかりません。
http://keep-on.com/excelyou/1999lng4/199908/9908 …
たとえば、A1:Y30の範囲の表があるとして、1行ごとに色塗りしたセルをカウントしたいです。Z1,Z2,Z3,Z4...にそれぞれ結果が表示されるようにするには、上記のマクロ(もしくは違う方法)をどのように使用したらよいんでしょうか?
ちなみに1列おきにカウントしたくない列が入っているので、COUNTIF関数を使わないでやりたいんです。色のついたセルを定義してやる方法もありましたが、条件付き書式では不可能とわかりましたので、上記の方法しかないのかなと思うんですが。詳しい方、教えてください。
No.4ベストアンサー
- 回答日時:
>ちなみに1列おきにカウントしたくない列が入っているので、..
>また、一行おきにカウントしたくない列が含まれているというのは..
>「一行おきに」色つきセルをカウントというのは..
..ぅーん.. -"-
「1行おき」かつ「1列おき」にカウント対象外セルがある、という意味ですかね?
つまり
B2,D2,F2,H2,J2,L2,N2,P2,R2,T2,V2,X2
B4,D4,F4,H4,J4,L4,N4,P4,R4,T4,V4,X4
...?
Z1はさっきの数式で
Z2=SUMPRODUCT((A2:Y2>=$AA$1-5)*(A2:Y2<=$AA$1+5)*MOD(COLUMN(A2:Y2),2)+(A2:Y2>=$AA$1+25)*(A2:Y2<=$AA$1+35)*MOD(COLUMN(A2:Y2),2))
Z1:Z2をZ30までコピー。
1行おきではなく全行で偶数列がカウント対象外ならZ2の式をZ1:Z30コピーで。
マクロにしたところで
Sub try()
Dim i As Long
Dim j As Long
Dim c As Long
Dim x
With Sheets("SheetX")
x = .Range("AA1").Value
For i = 1 To 30
c = 0
For j = 1 To 25 'Step 2
If (i Mod 2) Or (j Mod 2) Then
With .Cells(i, j)
If (((x - 5) <= .Value) And (.Value <= (x + 5))) Or _
(((x + 25) <= .Value) And (.Value <= (x + 35))) Then
c = c + 1
End If
End With
End If
Next
.Cells(i, 26).Value = c
Next
End With
End Sub
>標準モジュールに張り付けて実行すればOK..
というわけにはいかないですけどね。要件を整理しなきゃ。
「一行おき」と補足に書いたのは間違いでした。最初の質問に書いた通り「1列おき」にしたかったのです。それも偶数列に。混乱させてしまいすみませんでした。
書いていただいた数式で試したら奇数列のみカウントされたので、自分で調べて手直ししたらできました‼↓(MODに=0を入れました)
=SUMPRODUCT((A1:Y1>=$AA$1-5)*(A1:Y1<=$AA$1+5)*(MOD(COLUMN(A1:Y1),2)=0)+(A1:Y1>=$AA$1+25)*(A1:Y1<=$AA$1+35)*(MOD(COLUMN(A1:Y1),2)=0))
もう諦めようと思っていましたが、本当に助かりました。ご親切に教えてくださり、本当にありがとうございました!
No.5
- 回答日時:
つまり、
> ちなみに1列おきにカウントしたくない列が入っているので、
「1行おきに」のカウントですね?
だとすると
Sub Sample()
Dim myCnt As Long '変数を長整数型で宣言
Dim i As Long, J As Long
Columns(26).Delete
For i = 1 To 30 Step 2
myCnt = 0
For j = 1 To 25
Cells(i, j).Select
If Application.Evaluate(Cells(i, j).FormatConditions.Item(1).Formula1) = True _
Or Application.Evaluate(Cells(i, j).FormatConditions.Item(2).Formula1) = True Then
myCnt = myCnt + 1
End If
Next j
Cells(i, 26) = myCnt
Next i
End Sub
> やってみたのですが、Z列すべてに「13」が入力されてしまいます。
> これを標準モジュールに張り付けて実行すればOK、という形でご回答いただければ大変助かります。
「作らされている」感が満載なので、これを以って私は本件からは撤退します。
あとは適宜応用するなり、親切な回答者さまの回答をお待ち下さい。
No.3
- 回答日時:
>これを標準モジュールに張り付けて実行すればOK、という形でご回答いただければ大変助かります。
いやそこまでしなくてもZ1セルに数式
=SUMPRODUCT((A1:Y1>=$AA$1-5)*(A1:Y1<=$AA$1+5)+(A1:Y1>=$AA$1+30-5)*(A1:Y1<=$AA$1+30+5))
以下Z30までコピー、という話なんですが。
この回答への補足
試しにやって気づきましたが、これだと、一列おきに入っているカウントしたくないところも入りますよね。だから、色付きセルのみカウントできるマクロが知りたかったのです。
補足日時:2013/06/18 23:03No.2
- 回答日時:
「条件付き書式」の結果、色が塗られたセルをカウントするには。
通常の書式設定で色が塗られたセルをカウントする方法と同じやり方ではできません。
# ウラ技的に書式を固定してあげればできない事はないですが
# それはおいといて。
「条件付き書式」の対象セル範囲を調べて「条件付き書式」の「条件」がTRUEかどうか調べると良いです。
提示されたリンク先記事はその方針で組まれたコードです。
>数値がランダムに入っている表に条件付き書式で
>指定の数式に合致するとセルを色塗りするよう設定しあります。
その指定の数式を提示してみてください。
その数式が前もってわかってるなら、「条件付き書式」を調べなくても
元のセル範囲をその数式で判定してあげれば良いです。
ちなみに、Excelのバージョンはなんでしょう?
この回答への補足
回答ありがとうございます。
条件付き書式には、下記の条件2つが設定されています。(パターン色:黄色)
=AND(A1>=$AA$1-5,A1<=$AA$1+5)
=AND(A1>=$AA$1+30-5,A1<=$AA$1+30+5)
また、一行おきにカウントしたくない列が含まれているというのは、下記の異なる条件2つを設定しているためです。
=AND(B1>=$AB$1-5,B1<=$AB$1+5)
=AND(B1>=$AB$1-7,B1<=$AB$1+7)
ただ、こちらは、パターン色でなくて、フォント色でも対応できるので、「一行おきに」色つきセルをカウントというのはしなくても大丈夫です。(が、こちらもパターン色で表示して、一行おきに(最初の2つ条件の黄色セルだけ)カウントできれば、もっと助かります。)
エクセルのバージョンは2003です。
これを標準モジュールに張り付けて実行すればOK、という形でご回答いただければ大変助かります。
よろしくお願いします。
No.1
- 回答日時:
正直なところを言わせて頂くと
> マクロに詳しくないので、どう利用したらよいかわかりません。
なら、マクロは使わないほうが良いですよ。
理解できないものを理解できないまま使っても後の応用は出来ません。
手直しも出来ませんし、自分好みにカスタマイズすることも出来ませんから。
踏まえて、「マクロの使い方」までお教えするつもりはありませんが、
わかりやすく(?)注釈をつけたコードです。
難しい文は使っていないつもりです。
Sub Sample()
Dim myCnt As Long '変数を長整数型で宣言
Dim i As Long, J As Long
Columns(26).Delete '念のため、26列目(X列)を削除
For i = 1 To 30 ' 変数iの範囲は1~30(後に行指定に使用)
myCnt = 0 ' 変数myCntを初期化(0にする)
For j = 1 To 25 Step 2 ' 変数jの範囲は1~25(後に列指定に使用) 周期は「2」、つまり「1列おき」に処理)
If Cells(i, j).FormatConditions.Count > 0 Then ' i行j列に「一つ以上の条件付書式が設定」されていたら
myCnt = myCnt + 1 '変数myCntに「1」を加算
End If ' 条件終了
Next j ' jに「2」(Stepで指定した数)を加算して、繰り返し(上限の25に達したら繰り返し終了)
Cells(i, 26) = myCnt ' i行26列目にmyCntの値を入力
Next i ' iに「1」を加算して、繰り返し(上限の30に達したら繰り返し終了)
End Sub 'マクロ終了
重ねて言いますが、理解できないなら使わないほうが良いですよ。
私が「悪質な回答者」なら、このマクロでファイルを壊す可能性もあるのですから。
(そんな無益なことはしないですけどね。)
マクロの使い方、命令文の意味などは、別途コツコツ勉強なさって下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 昨日、質問した件『VBA にて、条件付き書式で背景色を設定しているセルの範囲で、背景色付きのセルをカ 4 2022/04/07 14:39
- Excel(エクセル) 【Excel質問】 「本日の日付」から指定条件を満たす営業日経過後の日数を表示させる関数式 3 2022/06/06 23:28
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- Excel(エクセル) 重複しているか否かをソートせずに判断する方法ありますか? 2 2022/07/06 21:16
- Excel(エクセル) エクセルで条件付き書式を使わずにセルの文字の色を変える方法を教えて下さい 8 2023/07/28 01:15
- Visual Basic(VBA) VBA にて、条件付き書式で背景色を設定しているセルの範囲で、背景色付きのセルをカウントできる、VB 2 2022/04/06 21:33
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Excel(エクセル) countif関数について質問 4 2022/06/14 12:11
このQ&Aを見た人はこんなQ&Aも見ています
-
VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc
Visual Basic(VBA)
-
条件付き書式の色付きセルのカウント方法について
Excel(エクセル)
-
エクセル 条件付き書式で色をつけたセルの個数を数えたいです。 ネットで調べてcountcolorAも
Excel(エクセル)
-
-
4
VBA にて、条件付き書式で背景色を設定しているセルの範囲で、背景色付きのセルをカウントできる、VB
Visual Basic(VBA)
-
5
EXCEL 条件書式で反応したものだけCOUNTしたい
Excel(エクセル)
-
6
条件付書式で色づけしたセルの数をカウントしたい
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数について
-
エクセル GROUPBY関数について...
-
Excelで4択問題を作成したい
-
エクセルの複雑なシフト表から...
-
エクセル
-
Amazonでマイクロソフトオフィ...
-
エクセルシートの見出しの文字...
-
グループごとの個数をカウント...
-
【マクロ】変数に入れるコード...
-
エクセルのリストについて
-
【マクロ】別ファイルへマクロ...
-
グループごとの人数のカウント
-
エクセルについて
-
グループごとの人数のカウント
-
【マクロ】左のブックと右のブ...
-
【マクロ】元データと同じお客...
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報