• ベストアンサー

マクロ 書式の条件に合致したら〇をつける

添付をご覧ください。 A~C列、D~F列、G~I列、それぞれの3グループのうち、1行ずつで、色塗りがあり、かつ太字フォントがあれば、J列に〇を付けるというマクロが知りたいです。添付の例だとJ10に〇が付きます。分かりにくいですが、赤と緑のフォントが太字で、どちらも含める、色は3色あり、すべて含める、としたいので、「色塗りで太字なら、」で大丈夫です。エクセル2013使用です。

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (793/1659)
回答No.3

すみません。行数を9行に指定したテスト版を載せました。 本番はこっちです。 ScreenUpdatingを加えて、Toの後を変更しただけですが。 ' Sub Macro1() '   Dim IY As Long   Dim IXL As Integer   Dim IXG As Integer   Dim LFlag As Boolean   Dim GFlag As Boolean '   Application.ScreenUpdating = False '   For IY = 1 To Cells(Rows.Count, "A").End(xlUp).Row     LFlag = True '     For IXL = 1 To 9 Step 3       GFlag = False '       For IXG = IXL To IXL + 2         With Cells(IY, IXG).DisplayFormat         GFlag = GFlag Or .Font.Bold And .Interior.Pattern = xlSolid         End With       Next IXG       LFlag = LFlag And GFlag     Next IXL     Cells(IY, "J") = Mid("〇", LFlag + 2)   Next IY End Sub

honeybeans
質問者

お礼

できました。早々にありがとうございました!!!!

honeybeans
質問者

補足

すみません、まだ本番のにはバージョンが古くて使えてないのですが(家のエクセル2007)、職場の2010ではテスト版で確認できました。でも、本番のデータは、条件付き書式で色塗りと太字を設定しているので、もしかして、この作成していただいたものは、使えないですか? 違うマクロ(色付きセルカウント)を作ってやってみたら、条件付き書式で表示された塗りはカウントしないようでした。こちらはどうでしょうか?

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • SI299792
  • ベストアンサー率47% (793/1659)
回答No.4

このマクロなら、条件付き書式でも大丈夫なはずです。 違うマクロとは、どのようなマクロでしょうか。 普通の、ネット上に転がっているマクロでは、条件付き書式はカウントしません。 DisplayFormatを付けると、条件付き書式をカウントしてくれます。 Cells(IY, IX).Interior.Color 条件付き書式でつけた背景色は見ない Cells(IY, IX).DisplayFormat.Interior.Color 条件付き書式でつけた背景色を見る 違うマクロなら、別の質問を立ち上げた方がよいかと思います。 ついでに、前回上げたプログラムはわかりにくかったと思います。 If文を書くのが面倒になり、あのような書き方をしてしまいました。あれは邪道です。気になるなら、     Cells(IY, "J") = Mid("〇", LFlag + 2) を '     If LFlag Then       Cells(IY, "J") = "〇"     Else       Cells(IY, "J").ClearContents     End If に書き換えてください。

参考URL:
https://msdn.microsoft.com/ja-jp/library/office/ff838814.aspx
honeybeans
質問者

お礼

分かりました。別のマクロとはDisplayFormatを付けないでInterior.Colorとしたやつです。安心しました。いろいろ教えて下さり、ありがとうございました。

すると、全ての回答が全文表示されます。
  • SI299792
  • ベストアンサー率47% (793/1659)
回答No.2

' Option Explicit ' Sub Macro1() '   Dim IY As Long   Dim IXL As Integer   Dim IXG As Integer   Dim LFlag As Boolean   Dim GFlag As Boolean '   For IY = 1 To 9     LFlag = True '     For IXL = 1 To 9 Step 3       GFlag = False '       For IXG = IXL To IXL + 2         With Cells(IY, IXG).DisplayFormat         GFlag = GFlag Or .Font.Bold And .Interior.Pattern = xlSolid         End With       Next IXG       LFlag = LFlag And GFlag     Next IXL     Cells(IY, "J") = Mid("〇", LFlag + 2)   Next IY End Sub 前回のmt2015さんの回答を参考に作りました。 前回の質問を探したのですが、質問履歴を公開にしておいた方が答えやすかったです。

参考URL:
https://okwave.jp/qa/q9343411.html
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.1

画像では、ぼやけて、色など判別できないので、言っていることが、わかりにくい。 とうぜん回答したら、回答者側でテストをしたいが、サンプルデータを作ってテストしたいが、作れないとか、作るのに手数がかかる。 簡略化して、10セルぐらいまでのデータを作るための詳細文章と、データ(書式)例を、質問者側で作って、各セルのセルの表示形式についても、 VBAの色コードなども、調べて説明し、質問すべきだろう。列数なども6列に短縮して、該当と非該当の例を数行を作る。 質問に書かないのは、手抜きだと思う。回答者ばかりが回答するのに、しんどい。 条件も箇条書きすれば、説明する訓練に役立つと思う。 (1)検索操作の、書式(表示形式)指定ができるのは知っているか。 それをVBA化できないか。操作のマクロの記録で。 あるいは各セルについて、セルの表示形式を、 (A)文字の色と(B)太字BOLDかどうか、AND条件で聞けばしまいではないのか。 行単位らしいが、列では3ブロック(3列のX3)か判定関係の記述をはっきりせよ。 そもそも、どれだけやってみたのか、少しもやらないで質問に投げだしていないか。

honeybeans
質問者

補足

画像を拡大をクリックすれば、はっきり見えると思いますが。 条件付き書式で色塗りとフォントの設定してありますが、80パターンぐらいの設定がされているので、マクロでこのようにやる方が簡単なのです。 前に少し教えていただいたので、それをもとに調べてやってみましたが、私には難しくてできませんでした。 3グループともに塗りありで太字のセルがある場合、その行に〇を付ける、ということです。

すると、全ての回答が全文表示されます。

関連するQ&A