Excel VBA質問箱 IV

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

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


12116 / 13646 ツリー ←次へ | 前へ→

【12253】オートフィルタ後の行数をカウントしたい だめだこりゃ 04/3/28(日) 13:27 質問
【12254】Re:オートフィルタ後の行数をカウントしたい だめだこりゃ 04/3/28(日) 13:42 質問
【12258】Re:オートフィルタ後の行数をカウントしたい ichinose 04/3/28(日) 21:15 回答
【12259】Re:オートフィルタ後の行数をカウントしたい IROC 04/3/28(日) 23:05 回答
【12260】Re:オートフィルタ後の行数をカウントしたい Jカーター 04/3/29(月) 7:19 回答
【12294】Re:オートフィルタ後の行数をカウントしたい だめだこりゃ 04/3/30(火) 1:21 お礼
【12296】Re:オートフィルタ後の行数をカウントしたい Jカーター 04/3/30(火) 7:16 発言

【12253】オートフィルタ後の行数をカウントしたい
質問  だめだこりゃ  - 04/3/28(日) 13:27 -

引用なし
パスワード
   オートフィルタをかけて抽出した後の行数をカウントする方法が分かりません。

Range("a2").CurrentRegion.Rows.Count

のようにおこなうと抽出前のデータの行数をカウントしてしまいます・・・
やり方後存知の方いらっしゃいましたら是非教えてください!
お願いします。

【12254】Re:オートフィルタ後の行数をカウントし...
質問  だめだこりゃ  - 04/3/28(日) 13:42 -

引用なし
パスワード
   すみません。
Range("a2", Range("a2").End(xlDown)). _
      SpecialCells(xlCellTypeVisible).Count
のようにやったらできました。

でも、抽出後1件もデータがない場合、件数が65300件とかになっちゃいます。
もとのデータの行数が見出し行も含めて237行あるので、それが何か影響しているのでしょうか?

1件もデータがない場合は0件にしたいのですがいい方法がありましたら是非教えてください。

【12258】Re:オートフィルタ後の行数をカウントし...
回答  ichinose  - 04/3/28(日) 21:15 -

引用なし
パスワード
   ▼だめだこりゃ さん:
こんばんは。

>すみません。
>Range("a2", Range("a2").End(xlDown)). _
>      SpecialCells(xlCellTypeVisible).Count
>のようにやったらできました。
>
>でも、抽出後1件もデータがない場合、件数が65300件とかになっちゃいます。
>もとのデータの行数が見出し行も含めて237行あるので、それが何か影響しているのでしょうか?
>
>1件もデータがない場合は0件にしたいのですがいい方法がありましたら是非教えてください。

抽出後1件もデータがない場合、
Range("a2", Range("a2").End(xlDown))だとデータ入力セルの最終行を取得していませんね!!
End(Xlup)だと取得してくれます。

'===================================================================
Sub test()
  With Range("a1", Range("a" & Rows.Count).End(xlUp))
   If .Count > 1 Then
    MsgBox .SpecialCells(xlCellTypeVisible).Count - 1
   Else '元々A列に見出し以外にデータがない場合
    MsgBox 0
    End If
   End With
End Sub

確認してみて下さい。

【12259】Re:オートフィルタ後の行数をカウントし...
回答  IROC  - 04/3/28(日) 23:05 -

引用なし
パスワード
   これは如何でしょうか?

  MsgBox ActiveSheet.UsedRange.Columns(1).Rows.Count - 1 _
  & " 件中 " & _
  ActiveSheet.UsedRange.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1 _
  & " 件です。"

【12260】Re:オートフィルタ後の行数をカウントし...
回答  Jカーター  - 04/3/29(月) 7:19 -

引用なし
パスワード
   おじゃまします。

Specialcellsを一個のセルに使うと不具合が出ます。
(Endプロパティは可視セルに対応してしまいますので)

また
Usedrangeは正確な範囲はとれない場合があります。

そこで
フィルタ後であることを利用して

Sheet1.Autofilter.range.Columns(1).Specialcells(xlcelltypevisible).count

としてはどうでしょう?

【12294】Re:オートフィルタ後の行数をカウントし...
お礼  だめだこりゃ  - 04/3/30(火) 1:21 -

引用なし
パスワード
   ichinoseさん、IROCさん、Jカーターさん、教えてくださりどうもありがとうございました!

皆様が教えてくださった方法で試してみたところ、意図した動きになりました。

Sheet1.Autofilter.range.Columns(1).Specialcells(xlcelltypevisible).count

とのJカーターさんのやりかたがシンプルでいいなと思うものの、初心者なので意味がよく分かりません・・・(笑)

【12296】Re:オートフィルタ後の行数をカウントし...
発言  Jカーター  - 04/3/30(火) 7:16 -

引用なし
パスワード
   こんにちは。
>初心者なので意味がよく分かりません・・・(笑)
初心者でもヘルプで調べることは出来ると思いますけど (?)
なんでも初心者を理由にするのはちょっと疑問です。

>Sheet1                Sheet1の
>.Autofilter             オートフィルタオブジェクトの
>.range                Rangeプロパティの
>.Columns(1)             一列目の
>.Specialcells(xlcelltypevisible)   可視セルの
>.count                セルの数

という感じです。

まず分からないことがあったらヘルプ をおすすめします。

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