[[20041109223626]] 『可視セルのカウント方法』(ゆうみん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『可視セルのカウント方法』(ゆうみん)

早速質問させていただきます。

G列には名前が並んでいます(1行目はタイトルです)。都合で非表示にしている行もあります。この非表示の部分は対象にせずG列の名前が書いてある最後の行の一つ下のセルに名前のカウント数を表示したいのですが、どうすればいいか具体的にご教授おねがいします。


 検索ぐらいしてください。
 こちらのマクロを変更すればいいと思います。(wizik)
[[20031004125333]] 『表示されたセルだけの合計』(どんぐり) 

 一応、検索でそちらを見てはいました。で、以下のように書いてみたのですが上手くいきません。

Dim i As Long

     i = Range("G1").CurrentRegion.Rows.Count

    Range("G" & i + 1).Formula = "=SUBTOTAL(3,G:G)-1"

VBAを始めて間もないので初歩的なミスが多いかと思いますが、よろしくお願いします。m(__)m
(ゆうみん)


 >都合で非表示にしている行もあります。
 これはオートフィルタで非表示にしているんですか? (wizik)

いえ。指定した値が含まれている行をhiddenで非表示にしています。以下の様にです。

Dim myRange As Range

    For Each myRange In Range("B:B")
     If myRange.Value = "0" Then
      myRange.EntireRow.Hidden = True
     End If
  Next myRange

 >指定した値が含まれている行をhiddenで非表示にしています。
 じゃあ、SUBTOTALではダメでしょう。

 リンク先のケンさんのマクロを少し変更しました。 (wizik)

 Function MYSUM(adr As Range) As Double
     Dim C As Range
     Dim tol As Double

     Application.Volatile
     tol = 0

     For Each C In adr
         If Not Rows(C.Row).Hidden And Not IsEmpty(C.Value) Then tol = tol + 1
     Next
     MYSUM = tol
 End Function


回答が出ているようですが、下記でもOKかと思います。(なお)

Sub test()

lastrow = Cells(Rows.Count, 7).End(xlUp).Row

For i = 2 To lastrow

   If Rows(i).Hidden = False Then
     n = n + 1

    End If

     Next

Cells(lastrow + 1, 7) = n

End Sub


 なおさんのでいくと空白セルまでカウントされるので、その分を考慮する必要がありそうですね。
 ※横やりではありませんので、ご気分を害されないようにm(._.)m ペコッ

 Sub test()
 '変数宣言
 Dim i As Long, n As Long, Lastrow As Long
 '定数宣言
 Const MyC As Long = 7 '基準列(G)
 Const MyR As Long = 2 'カウント開始行(2)

 Lastrow = Cells(Rows.Count, MyC).End(xlUp).Row
 For i = MyR To Lastrow
     If Rows(i).Hidden = False And Not IsEmpty(Cells(i, MyC).Value) Then
         n = n + 1
     End If
     Next
 Cells(Lastrow + 1, MyC) = n
 End Sub

 (川野鮎太郎)


 (なお)です。
名前が並んでいます-----------
  とありましたので、名前が連続している(空白セルがない)と思っていました。
  空白がある場合は、 「   And Cells(i, 7) <> "" 」を追加すればOKかと。  

Sub test()

lastrow = Cells(Rows.Count, 7).End(xlUp).Row

For i = 2 To lastrow

   If Rows(i).Hidden = False And Cells(i, 7) <> "" Then
     n = n + 1

    End If

     Next

Cells(lastrow + 1, 7) = n

End Sub


お礼が遅くなりまして。皆様、本当にありがとうございました。
こんな風にするのかと、とても勉強になりましたm(__)m(ゆうみん)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.