PC Review


Reply
Thread Tools Rate Thread

Count filled data rows until empty

 
 
Dallman Ross
Guest
Posts: n/a
 
      20th Aug 2007
In VBA, how can I count the filled cells in a column until
the first empty cell? Thanks for any help, folks.

=dman=
 
Reply With Quote
 
 
 
 
=?Utf-8?B?Um9uIENvZGVycmU=?=
Guest
Posts: n/a
 
      20th Aug 2007
Hi, dman

I'm not sure what all the rules are, but try this:

Function CountContiguous(rStartCell As Range) As Long
Dim lngVal As Long
With WorksheetFunction
If .CountA(rStartCell) = 0 Then
'StartCell is Blank
lngVal = 0
ElseIf .CountA(rStartCell.Offset(RowOffset:=1)) = 0 Then
'Cell immediately below StartCell is blank
lngVal = 1
Else
lngVal = .CountA(Range(rStartCell, rStartCell.End(Direction:=xlDown)))
End If
End With
CountContiguous = lngVal
End Function

Note: That UDF considers cells containing only an apostrophe (') or an empty
text string ("") as non-blank.

Test it with this:
Sub TestCountContig()
MsgBox CountContiguous(ActiveCell)
End Sub

Is that something you can work with?
***********
Regards,
Ron

XL2003, WinXP


"Dallman Ross" wrote:

> In VBA, how can I count the filled cells in a column until
> the first empty cell? Thanks for any help, folks.
>
> =dman=
>

 
Reply With Quote
 
Dallman Ross
Guest
Posts: n/a
 
      20th Aug 2007
In <faannr$esn$(E-Mail Removed)>, Dallman Ross <dman@localhost.>
spake thusly:

> In VBA, how can I count the filled cells in a column until
> the first empty cell? Thanks for any help, folks.


Man, but it is amazingly quiet in here. I am having a monologue
lately.

After much scrambling around on the net I came up with this, thanks
in no small part to the great MVP tip pages over at ozgrid.com.

Particularly helpful was http://www.ozgrid.com/VBA/VBALoops.htm

So here is what I have:

Public Function RcountTillBlank()
Cells.Find(What:="", After:=[A1], LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase _
:=False, SearchFormat:=False).Activate
RcountTillBlank = ActiveCell.Row - 1
End Function


That works and I like it. But if anybody can tell me how to make it
take an argument for the range to start the search from, that would be
super. Or any other comments about the above, for that matter.

=dman=
 
Reply With Quote
 
=?Utf-8?B?Um9uIENvZGVycmU=?=
Guest
Posts: n/a
 
      20th Aug 2007
If you want a function that give you the count of contiguous, non-blank
cells, beginning with a StartCell....

Put this code in a General Module:

Function CountContiguous(rStartCell As Range) As Long
Application.Volatile
Dim lngVal As Long

With WorksheetFunction
If .CountA(rStartCell) = 0 Then
'StartCell is Blank
lngVal = 0
ElseIf .CountA(rStartCell.Offset(RowOffset:=1)) = 0 Then
'Cell immediately below StartCell is blank
lngVal = 1
Else
lngVal = .CountA(Range(rStartCell, rStartCell.End(Direction:=xlDown)))
End If
End With
CountContiguous = lngVal
End Function

Then....in your worksheet

This formula returns the count:
B1: =countcontiguous(A1)

With
A1: Alpha
A2: Bravo
A3: Charlie
A4: Delta
A5: 1
A6: 2
A7: 3

In the above case, the formula returns 7

With this data
A1: Alpha
A2: Bravo
A3: Charlie
A4: (blank)
A5: 1
A6: 2
A7: 3

the formula returns 3

With this data:
A1: Alpha
A2: (blank)
A3: Charlie
A4: (blank)
A5: 1
A6: 2
A7: 3

the formula returns 1

And if A1 is blank, the formula returns 0

Does that help?
***********
Regards,
Ron

XL2003, WinXP


"Dallman Ross" wrote:

> In <faannr$esn$(E-Mail Removed)>, Dallman Ross <dman@localhost.>
> spake thusly:
>
> > In VBA, how can I count the filled cells in a column until
> > the first empty cell? Thanks for any help, folks.

>
> Man, but it is amazingly quiet in here. I am having a monologue
> lately.
>
> After much scrambling around on the net I came up with this, thanks
> in no small part to the great MVP tip pages over at ozgrid.com.
>
> Particularly helpful was http://www.ozgrid.com/VBA/VBALoops.htm
>
> So here is what I have:
>
> Public Function RcountTillBlank()
> Cells.Find(What:="", After:=[A1], LookIn:=xlFormulas, LookAt _
> :=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase _
> :=False, SearchFormat:=False).Activate
> RcountTillBlank = ActiveCell.Row - 1
> End Function
>
>
> That works and I like it. But if anybody can tell me how to make it
> take an argument for the range to start the search from, that would be
> super. Or any other comments about the above, for that matter.
>
> =dman=
>

 
Reply With Quote
 
Dallman Ross
Guest
Posts: n/a
 
      20th Aug 2007
In <38E1D4C2-273D-4E58-9B02-(E-Mail Removed)>, Ron
Coderre <(E-Mail Removed)> spake thusly:

> If you want a function that give you the count of contiguous, non-blank
> cells, beginning with a StartCell....
>
> Put this code in a General Module:


That's super, Ron! Thanks a bunch. Perfect.

One small remaining question: what is a "General"
Module, as opposed to the typical modules I've been using?

Okay, two questions. Why are we making it Application.Volatile?
It seems to work fine without that for my purposes.

=dman=

===========================
> Function CountContiguous(rStartCell As Range) As Long
> Application.Volatile
> Dim lngVal As Long
>
> With WorksheetFunction
> If .CountA(rStartCell) = 0 Then
> 'StartCell is Blank
> lngVal = 0
> ElseIf .CountA(rStartCell.Offset(RowOffset:=1)) = 0 Then
> 'Cell immediately below StartCell is blank
> lngVal = 1
> Else
> lngVal = .CountA(Range(rStartCell, rStartCell.End(Direction:=xlDown)))
> End If
> End With
> CountContiguous = lngVal
> End Function
>
> Then....in your worksheet
>
> This formula returns the count:
> B1: =countcontiguous(A1)
>
> With
> A1: Alpha
> A2: Bravo
> A3: Charlie
> A4: Delta
> A5: 1
> A6: 2
> A7: 3
>
> In the above case, the formula returns 7
>
> With this data
> A1: Alpha
> A2: Bravo
> A3: Charlie
> A4: (blank)
> A5: 1
> A6: 2
> A7: 3
>
> the formula returns 3
>
> With this data:
> A1: Alpha
> A2: (blank)
> A3: Charlie
> A4: (blank)
> A5: 1
> A6: 2
> A7: 3
>
> the formula returns 1
>
> And if A1 is blank, the formula returns 0
>
> Does that help?
> ***********
> Regards,
> Ron
>
> XL2003, WinXP
>
>
> "Dallman Ross" wrote:
>
> > In <faannr$esn$(E-Mail Removed)>, Dallman Ross <dman@localhost.>
> > spake thusly:
> >
> > > In VBA, how can I count the filled cells in a column until
> > > the first empty cell? Thanks for any help, folks.

> >
> > Man, but it is amazingly quiet in here. I am having a monologue
> > lately.
> >
> > After much scrambling around on the net I came up with this, thanks
> > in no small part to the great MVP tip pages over at ozgrid.com.
> >
> > Particularly helpful was http://www.ozgrid.com/VBA/VBALoops.htm
> >
> > So here is what I have:
> >
> > Public Function RcountTillBlank()
> > Cells.Find(What:="", After:=[A1], LookIn:=xlFormulas, LookAt _
> > :=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase _
> > :=False, SearchFormat:=False).Activate
> > RcountTillBlank = ActiveCell.Row - 1
> > End Function
> >
> >
> > That works and I like it. But if anybody can tell me how to make it
> > take an argument for the range to start the search from, that would be
> > super. Or any other comments about the above, for that matter.
> >
> > =dman=
> >

 
Reply With Quote
 
=?Utf-8?B?Um9uIENvZGVycmU=?=
Guest
Posts: n/a
 
      20th Aug 2007
A "General Module" is just a regular module.....as opposed to a workbook
module, worksheet module, or class module.

In my brief testing of the function, it didn't seem to always recalculate.
After I put the Application.Volatile statement in, it worked fine for me. If
you really don't need it, comment it out.

Does that help?
***********
Regards,
Ron

XL2003, WinXP


"Dallman Ross" wrote:

> In <38E1D4C2-273D-4E58-9B02-(E-Mail Removed)>, Ron
> Coderre <(E-Mail Removed)> spake thusly:
>
> > If you want a function that give you the count of contiguous, non-blank
> > cells, beginning with a StartCell....
> >
> > Put this code in a General Module:

>
> That's super, Ron! Thanks a bunch. Perfect.
>
> One small remaining question: what is a "General"
> Module, as opposed to the typical modules I've been using?
>
> Okay, two questions. Why are we making it Application.Volatile?
> It seems to work fine without that for my purposes.
>
> =dman=
>
> ===========================
> > Function CountContiguous(rStartCell As Range) As Long
> > Application.Volatile
> > Dim lngVal As Long
> >
> > With WorksheetFunction
> > If .CountA(rStartCell) = 0 Then
> > 'StartCell is Blank
> > lngVal = 0
> > ElseIf .CountA(rStartCell.Offset(RowOffset:=1)) = 0 Then
> > 'Cell immediately below StartCell is blank
> > lngVal = 1
> > Else
> > lngVal = .CountA(Range(rStartCell, rStartCell.End(Direction:=xlDown)))
> > End If
> > End With
> > CountContiguous = lngVal
> > End Function
> >
> > Then....in your worksheet
> >
> > This formula returns the count:
> > B1: =countcontiguous(A1)
> >
> > With
> > A1: Alpha
> > A2: Bravo
> > A3: Charlie
> > A4: Delta
> > A5: 1
> > A6: 2
> > A7: 3
> >
> > In the above case, the formula returns 7
> >
> > With this data
> > A1: Alpha
> > A2: Bravo
> > A3: Charlie
> > A4: (blank)
> > A5: 1
> > A6: 2
> > A7: 3
> >
> > the formula returns 3
> >
> > With this data:
> > A1: Alpha
> > A2: (blank)
> > A3: Charlie
> > A4: (blank)
> > A5: 1
> > A6: 2
> > A7: 3
> >
> > the formula returns 1
> >
> > And if A1 is blank, the formula returns 0
> >
> > Does that help?
> > ***********
> > Regards,
> > Ron
> >
> > XL2003, WinXP
> >
> >
> > "Dallman Ross" wrote:
> >
> > > In <faannr$esn$(E-Mail Removed)>, Dallman Ross <dman@localhost.>
> > > spake thusly:
> > >
> > > > In VBA, how can I count the filled cells in a column until
> > > > the first empty cell? Thanks for any help, folks.
> > >
> > > Man, but it is amazingly quiet in here. I am having a monologue
> > > lately.
> > >
> > > After much scrambling around on the net I came up with this, thanks
> > > in no small part to the great MVP tip pages over at ozgrid.com.
> > >
> > > Particularly helpful was http://www.ozgrid.com/VBA/VBALoops.htm
> > >
> > > So here is what I have:
> > >
> > > Public Function RcountTillBlank()
> > > Cells.Find(What:="", After:=[A1], LookIn:=xlFormulas, LookAt _
> > > :=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase _
> > > :=False, SearchFormat:=False).Activate
> > > RcountTillBlank = ActiveCell.Row - 1
> > > End Function
> > >
> > >
> > > That works and I like it. But if anybody can tell me how to make it
> > > take an argument for the range to start the search from, that would be
> > > super. Or any other comments about the above, for that matter.
> > >
> > > =dman=
> > >

>

 
Reply With Quote
 
Dallman Ross
Guest
Posts: n/a
 
      21st Aug 2007
In <183F83EF-FC1C-4A9B-98A7-(E-Mail Removed)>, Ron
Coderre <(E-Mail Removed)> spake thusly:

> A "General Module" is just a regular module.....as opposed to a
> workbook module, worksheet module, or class module.
>
> In my brief testing of the function, it didn't seem to always
> recalculate. After I put the Application.Volatile statement in,
> it worked fine for me. If you really don't need it, comment it
> out.
>
> Does that help?


Yuppers. It's super, Ron. Thanks again.

=dman= (now wondering if your last name means "coder") ;->
 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Hpw do I delete multiple empty rows found between filled rows? Bill Microsoft Excel Worksheet Functions 1 15th Nov 2009 12:52 AM
How to count # of "non-empty" rows of data FSPH Microsoft Excel Programming 2 6th Sep 2009 03:27 AM
Empty rows count Paul Microsoft Excel Worksheet Functions 4 14th Aug 2008 08:36 PM
Print data filled rows only Cricket Microsoft Excel Worksheet Functions 2 22nd Jun 2008 05:54 AM
Copy Data From Filled to Empty Cells =?Utf-8?B?U2hlaWtoIFNhYWRp?= Microsoft Excel Misc 0 10th Nov 2005 07:21 PM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 06:14 AM.