Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1923 / 13645 ツリー ←次へ | 前へ→

【71021】オートフィルター後 F列の検索し件数を表示 catcom 12/1/26(木) 13:42 質問[未読]
【71024】Re:オートフィルター後 F列の検索し件数を... kanabun 12/1/26(木) 15:16 回答[未読]
【71028】Re:オートフィルター後 F列の検索し件数を... catcom 12/1/26(木) 19:38 お礼[未読]
【71029】Re:オートフィルター後 F列の検索し件数を... kanabun 12/1/26(木) 20:07 発言[未読]

【71021】オートフィルター後 F列の検索し件数を...
質問  catcom E-MAIL  - 12/1/26(木) 13:42 -

引用なし
パスワード
   EXCEL2003を使ってます。


オートフィルターでA列を 000000を取り除いたものを表示した後、
可視できる件数をメッセージボックスで表示させ、
さらに、F列に残っている 000の件数をカウントしたいのですが、
うまくいきません。
現在はF列にCOUNTIFを使ってみたのですが、
カウントがうまくいきません。
条件付き書式でやっても正確なカウントをしなかったです。

Selection.AutoFilter Field:=1, Criteria1:="<>000000", Operator:=xlAnd
  

Dim cnt1 As Long
  cnt1 = Range("a1:a" & Cells(65530, 1).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Count

Dim cnt2 As Long
  cnt2 = Range("f1:f" & Cells(65530, 1).End(xlUp).Row).SpecialCells(xlCellTypeVisible).CountIf("f1:f", "000", 0)

  
  MsgBox "行数:" & cnt1 & _
    Chr(10) & _
    "000: " & cnt2
下記はオートフィルターを掛けた後 F列に 000が1件入っているので 
カウントを1件で表示させたいです。
A    B    c    D     E    F    G    H
120101    0000000    0    000000    00    001    00000  00
120110    0000000    0    000000    00    001    00000    00
120111    0000000    0    000000    00    000    00000    00

宜しくおねがいします。

【71024】Re:オートフィルター後 F列の検索し件数...
回答  kanabun  - 12/1/26(木) 15:16 -

引用なし
パスワード
   ▼catcom さん:
>オートフィルターでA列を 000000を取り除いたものを表示した後、
>可視できる件数をメッセージボックスで表示させ、
>さらに、F列に残っている 000の件数をカウントしたいのですが、

●参考1  (セルの値が「テキスト」のとき)
Sub try1()
 With Range("A1").CurrentRegion
   .Worksheet.AutoFilterMode = False
   .AutoFilter Field:=1, Criteria1:="<>*000000*"
   .AutoFilter Field:=6, Criteria1:="=*000*"
   MsgBox .Columns(1).SpecialCells(xlVisible).Count - 1
   .AutoFilter
 End With
End Sub

●参考2 (セルの値が「数値」で表示形式が "000000"や "000"のとき)
Sub try2()
 With Range("A1").CurrentRegion
   .Worksheet.AutoFilterMode = False
   .AutoFilter Field:=1, Criteria1:=">0"
   .AutoFilter 6, ">=0", xlAnd, "<=0"
   MsgBox .Columns(1).SpecialCells(xlVisible).Count - 1
   .AutoFilter
 End With
End Sub

【71028】Re:オートフィルター後 F列の検索し件数...
お礼  catcom E-MAIL  - 12/1/26(木) 19:38 -

引用なし
パスワード
   ありがとうございます。
参考になりました。

【71029】Re:オートフィルター後 F列の検索し件数...
発言  kanabun  - 12/1/26(木) 20:07 -

引用なし
パスワード
   ▼catcom さん:
> With Range("A1").CurrentRegion
>    .Worksheet.AutoFilterMode = False
>    .AutoFilter Field:=1, Criteria1:="<>000000"
>    .AutoFilter Field:=6, Criteria1:="=000"
>    cnt2 = .Columns(1).SpecialCells(xlVisible).Count
>    .AutoFilter
> End With
> 
> With Range("A1").CurrentRegion
>    .Worksheet.AutoFilterMode = False
>    .AutoFilter Field:=1, Criteria1:="<>000000"
> 
> Dim cnt1 As Long
>   cnt1 = Range("a1:a" & Cells(65530, 1).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Count
> End With
>   
>   MsgBox "行数:" & cnt1 & _
>     Chr(10) & _
>     "000: " & cnt2 - 1
> 
> にやってみたらできました。

そうですか、
ということは、

> Dim cnt1 As Long
 Dim cnt2 As Long
> With Range("A1").CurrentRegion
>    .Worksheet.AutoFilterMode = False
>    .AutoFilter Field:=1, Criteria1:="<>000000"
    cnt1 = .Columns(1).SpecialCells(xlVisible).Count - 1
>    .AutoFilter Field:=6, Criteria1:="=000"
>    cnt2 = .Columns(1).SpecialCells(xlVisible).Count - 1
>    .AutoFilter
> End With
 MsgBox "行数:" & cnt1 & vbLf & _
>     "000: " & cnt2

ってことです。よね?

1923 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free