dポイントプレゼントキャンペーン実施中!

お世話になっております。
EXCELにてA列に品名、B列~H列に商品についての情報を反映します。
その際、B列~H列の情報により、条件にそぐわないものをグレーにします(表参照)。

この場合、1行目にフィルターをかけ、B列から順に色フィルター>塗りつぶしなしでグレーを含む行を非表示にすることができることは存じているのですが、このグレーを含む品目行を「一括」で非表示にすることは可能でしょうか?

できれば、その手法を教えていただけるとありがたいです。
何卒よろしくお願いいたします。

「EXCELにて複数列を同条件(色)で一括」の質問画像

質問者からの補足コメント

  • 先ほど、いただいた内容をVBAに反映させてみました。
    ですが、編集・実行後(応答なし)と出てしまいます。。

    https://gyazo.com/a5c0fb770ac8b5766475a80903d283ef
    上記のとおりです。
    (3~の行目の数値は変更させていただきました。)

    どこか変更・修正すべき点がございますでしょうか?
    ご確認いただけるとありがたいです。

    何卒よろしくお願いいたします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2015/10/30 18:39

A 回答 (4件)

No.2です。



補足のサイトのコードを拝見しました。
確認です。

>For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row

>For i = 5 To Cells(Rows.Count, "A").End(xlUp).Row
となっているので、A5セル以降A列の最終行までで良いのですね?
(1行目~4行目は何もしません)


>For j = 2 To 8

>For j = 5 To 29
というコトは、E列~AC列までとなりますが、
これもよいのですね?
(A~D列・AD列以降は無視)

①・②で間違いないのであれば
その範囲内で「25%灰色」のセルが一つでもあればその行は非表示になるはずです。

※ それでも反応がない場合、考えられる原因としては
「灰色」が「25%灰色」ではなく「他の灰色」になっている可能性があります。

試しに灰色に塗りつぶされているセルを一つ選択し↓の3行のマクロを実行してみてください。

Sub カラーインデックス確認()
MsgBox Selection.Interior.ColorIndex
End Sub

灰色のカラーインデックス番号が表示されるはずですので「15」でない場合は
>If Cells(i, j).DisplayFormat.Interior.ColorIndex = 15 Then
の「15」の部分を実際のカラーインデックス番号に変更しマクロを実行してみてください。

とりあえずはこの程度で・・・m(_ _)m
    • good
    • 0

グレーにするセルの条件を式などで定義できるなら、フィルタオプションを使う方法があります。



また、これ1回きりではなく今後も同様のフィルタリングを繰り返すなら最初だけ1列ずつフィルタリングし、その状態をユーザー設定のビューに登録しておけば次回からはそこから登録した名前を選べば一気にフィルタリングできます。

…地味な方法だからあんまり興味持たれないだろうなぁ。

グレーにする基準が機械的でないならできませんけど。
    • good
    • 0

こんばんは!



VBAでの一例です。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → エクセル画面に戻り(VBE画面を閉じて)マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub Sample1() 'この行から
Dim i As Long, j As Long, myRng As Range
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row '2行目~A列最終行まで//
For j = 2 To 8 'B列~H列まで//
If Cells(i, j).DisplayFormat.Interior.ColorIndex = 15 Then '←25%灰色//
If myRng Is Nothing Then
Set myRng = Cells(i, j)
Else
Set myRng = Union(myRng, Cells(i, j))
End If
Exit For
End If
Next j
Next i
If Not myRng Is Nothing Then
myRng.EntireRow.Hidden = True
End If
End Sub 'この行まで//

※ グレーは「25%灰色」としています。(15が25%灰色のカラーインデックスになります)
40%灰色は 48
50%灰色は 16
に変更してください。

尚、再表示のコードも必要かと思います。
↓のコードが再表示になります。

Sub 再表示()
ActiveSheet.Rows.Hidden = False
End Sub

こんな感じではどうでしょうか?m(_ _)m
この回答への補足あり
    • good
    • 1

このアドインでできますね。


http://www.freeformat.co.jp/AddInIndex.htm?FFFun …

自力でやりたいなら
https://oshiete.goo.ne.jp/qa/3801652.html
    • good
    • 0

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

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


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