
Excel VBAでご教示ください。
オートフィルタの条件が2つあります。
1.セルG1に入っている基準日より、以前のもの(基準日は含めない)
2.ステータスが「完了」以外のもの
つまり、基準日がきているのに書類が完了していないものを抽出したい。
そして、抽出されたものにだけ黄色い色にしたい。
以下のVBAを作りましたが、該当する値がないとき(0件の時)全部に色が塗られてしまいました。
該当があるときはセルを塗る、該当なし0件の時には色は塗らない。
このようにするには、IF文などを使うしか方法がないのでしょうか。
Sub TEST9_2()
Dim kijyun As Long
kijyun = Range("E1").Value
Range("B2:E7").AutoFilter Field:=4, Criteria1:="<" & Cells(1, 7)
Range("B2:E7").AutoFilter Field:=3, Criteria1:="<>完了"
Range("B3:E7").Interior.ColorIndex = 6
End Sub

No.3ベストアンサー
- 回答日時:
IF文を使うのが一般的ですし可読性も高いと思います。
SUBTOTAL関数を使えばフィルター後に表示されているものについてのみ演算することができますので、その結果により色を塗るか塗らないかの指示をすればよいと思います。
通常、データ個数をだすのはCOUNTAですが、フィルター後のデータ個数をだすのがSUBTOTAL(3,範囲)になります。
例えば、H1セルに『=SUBTOTAL(3,B:B)』と入力しておけば、該当なしのときは見出し行のみが残るのでデータ個数は1になります。H1セルが1のときのみ色を塗らないようにすれば解決です。もちろん、これと同等のことをvbaで記述してもよいです。
No.2
- 回答日時:
>このようにするには、IF文などを使うしか方法がないのでしょうか。
IF文に限りませんが、条件を判定して、その条件によって異なる処理をさせたいのであれば、条件によって処理を分岐する命令を使うというだけのことです。
No.1
- 回答日時:
こんばんは
>IF文などを使うしか方法がないのでしょうか。
普通に処理するならそうでしょうね。
E列に必ず日付があるのなら、CountAで表示行を数えれば、表示行数を求められます。
他の方法としては、範囲に必ず表示されている行を含めておく(タイトル行、あるいは8行目とか)という方法も考えられます。
色付けしたら、その行(タイトル行など)の色は消すといった要領です。
あるいはループで1行ずつHidden属性を見て、色を付けるとか。
(最初のIF文で行うのと、あまり変わりませんけれど・・)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 前回質問の続きになりますが、下記マクロでシート1からシート2の抽出項目セルB3「りんご」とセルC2「 2 2022/12/02 17:37
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- その他(Microsoft Office) Excel フォントの色を変更する方法を教えてください 1 2023/12/09 23:02
- Visual Basic(VBA) 【VBA】飛び飛びの3セルに"完了"かもしくは"支援なし"の文字が入っていたら、計算を実行したい 2 2023/09/26 04:21
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセル オートフィルタで絞り込みをしたデータの色つけ
Excel(エクセル)
-
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
オートフィルターをかけ、#N/A以外で絞込みするVBA記述をご教示ください
Excel(エクセル)
-
-
4
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
5
VBAにてオートフィルターの条件に背景色","塗りつぶしなし"を指定したい"
Excel(エクセル)
-
6
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
7
EXCEL VBAで、セルの文字列の前後に文字を入力する方法は?
その他(Microsoft Office)
-
8
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
9
Excelで数値→文字列変換で指数表示になったものをいっぺんに直したい
Excel(エクセル)
-
10
Access VBAで行ラベルが定義されていないというエラーが出ます
Access(アクセス)
-
11
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
12
Excelで可視セルの行番号取得
Visual Basic(VBA)
-
13
エクセルVBAのエディターが上書きモード?に・・・・。
Excel(エクセル)
-
14
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
15
Offsetで可視セルだけを移動したい。
Excel(エクセル)
-
16
Access2010、値を入力したら自動保存の方法
Access(アクセス)
-
17
エクセル マクロ 範囲指定で、データの最終行・最終列を取得したい
Excel(エクセル)
-
18
IFステートの中にWithステートメントの始まり
Visual Basic(VBA)
-
19
VBAのオートフィルターで該当行がない場合に処理を止めたい
Excel(エクセル)
-
20
VBA 数値を文字列として貼付したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Photoshop CS3 オリジナルフィ...
-
エクセルの計算表の下向き三角...
-
=SUBTOTAL に =COUNTIF の機能...
-
データ抽出後の個数カウント。
-
Excel関数、何がいけないのかわ...
-
コードへ追記したら、特定のシ...
-
1行のVBAコードでフィルタの...
-
EXCELでの計算式を教えてください
-
エクセルオートフィルタで余計...
-
エクセルで、現住所の空欄セル...
-
Excel2003でオートフィルタを使...
-
エクセル2003で連番の入力の仕...
-
OpenOffice表計算ソフトにて質問
-
日付の異なる多数のデータの中...
-
EXCELで顧客情報抽出したい
-
Excelのデータで表を見やすいよ...
-
色フィルターをかけた状態で、...
-
オートフィルタで抽出した表の集計
-
エクセルでデータからのいろい...
-
文字列だけを抽出してリスト表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルオートフィルタで余計...
-
=SUBTOTAL に =COUNTIF の機能...
-
行番号の文字の色が青色の理由?
-
Excel関数、何がいけないのかわ...
-
教えて下さい!関数SUBTOTALとC...
-
色フィルターをかけた状態で、...
-
エクセルの計算表の下向き三角...
-
オートフィルタで抽出したデー...
-
エクセルで、桁数の異なるデー...
-
エクセルのフィルタをかけると...
-
オートフィルタをかけた表に一...
-
Excel2010 フィルタで抽出できない
-
エクセルのフィルタ リスト範...
-
エクセル:色の付いたデータを...
-
excelで奇数の行のみ削除したい
-
エクセルでのオートフィルタオ...
-
Excelのセルのデータ:年...
-
エクセルについて。 ソートで絞...
-
Excelでオートフィルタ時に交互...
-
5の倍数の日付だけを抽出したい
おすすめ情報