![]() |
| If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. |
|
|||||||
|
|
Thread Tools | Display Modes |
|
#1
|
|||
|
|||
|
In VBA, how can I count the filled cells in a column until
the first empty cell? Thanks for any help, folks. =dman= |
| Ads |
|
#2
|
|||
|
|||
|
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= > |
|
#3
|
|||
|
|||
|
In >, 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= |
|
#4
|
|||
|
|||
|
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 >, 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= > |
|
#5
|
|||
|
|||
|
In >, Ron
Coderre > 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 >, 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= > > |
|
#6
|
|||
|
|||
|
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 >, Ron > Coderre > 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 >, 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= > > > > |
|
#7
|
|||
|
|||
|
In >, Ron
Coderre > 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") ;-> |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Macro Request: Fill in empty cells with previous Filled cell in column | Artis | Excel Worksheet Functions | 2 | June 25th 07 08:30 PM |
| How do I get a count of number of cells filled in? | Meenie | Excel Discussion (Misc queries) | 3 | January 10th 07 09:16 PM |
| Copy Data From Filled to Empty Cells | Sheikh Saadi | Excel Discussion (Misc queries) | 0 | November 10th 05 07:21 PM |
| Can I count how many grey-filled cells are in a row ? | AnthonyG | Excel Worksheet Functions | 1 | February 4th 05 10:08 AM |
| Count Rang of Filled-In Cells | Ginger | Excel Worksheet Functions | 3 | December 22nd 04 08:15 PM |