Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 17
Default Count occurrences of filename in column

I want to use VBA to count the occurrences of a filename in column M,
such as "myfile.xls". Problem is, each time the name appears (after
the first one), it'll include a number, like "myfile(2).xls", "myfile
(3).xls", and so on. Also, I can't just count occurrences of the name
because it could appear as a non-filename ("myfile"), without the .xls
extension, and I don't want to count that. When I have finished
counting them, I want to add another instance, with a higher number
than the existing ones, also in column M. I've been experimenting
with Find and FindNext (because that's faster than looking for
"myfile" and ".xls" in each cell of column M. Any help would be
appreciated!
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 8,520
Default Count occurrences of filename in column

Try the below...Columns(13) refer to Column M...

Sub Macro2()
Dim varFound As Variant, strAddress As String
Dim intFileNum As Integer, intFileCount As Integer, intLargeFileNum As Integer

With Worksheets("Sheet1").Columns(13)
Set varFound = .Find("myfile", , xlValues, xlPart)
If Not varFound Is Nothing Then
strAddress = varFound.Address
Do
If InStr(1, varFound, ".xl", vbTextCompare) 0 Then
intFileCount = intFileCount + 1
If InStr(varFound, "(") Then
intFileNum = Split(Mid(varFound, InStr(varFound, "(") + 1), ")")(0)
End If
If intFileNum intLargeFileNum Then intLargeFileNum = intFileNum
End If
Set varFound = .FindNext(varFound)
Loop While Not varFound Is Nothing And _
varFound.Address < strAddress
End If
End With

MsgBox "FileCount: " & intFileCount & vbLf & _
"LatestFile: " & intLargeFileNum
End Sub

If this post helps click Yes
---------------
Jacob Skaria


"Lucky" wrote:

I want to use VBA to count the occurrences of a filename in column M,
such as "myfile.xls". Problem is, each time the name appears (after
the first one), it'll include a number, like "myfile(2).xls", "myfile
(3).xls", and so on. Also, I can't just count occurrences of the name
because it could appear as a non-filename ("myfile"), without the .xls
extension, and I don't want to count that. When I have finished
counting them, I want to add another instance, with a higher number
than the existing ones, also in column M. I've been experimenting
with Find and FindNext (because that's faster than looking for
"myfile" and ".xls" in each cell of column M. Any help would be
appreciated!
.

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 17
Default Count occurrences of filename in column

Thanks, Jacob. Your sub works well, too. Now I have two good ones to
choose from. I presume Find and Find Next will be a little faster
than the other method. I also like your Split better than the way I
did it. By the way, I don't have a Yes button to click.
  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 11,501
Default Count occurrences of filename in column

Hi,

Try this

lastrow = Cells(Cells.Rows.Count, "M").End(xlUp).Row
Set MyRange = Range("M1:M" & lastrow)
For Each c In MyRange
If UCase(Left(c, 6)) = "MYFILE" And _
UCase(Right(c, 4)) = ".XLS" Then
Count = Count + 1
End If
Next


Mike

"Lucky" wrote:

I want to use VBA to count the occurrences of a filename in column M,
such as "myfile.xls". Problem is, each time the name appears (after
the first one), it'll include a number, like "myfile(2).xls", "myfile
(3).xls", and so on. Also, I can't just count occurrences of the name
because it could appear as a non-filename ("myfile"), without the .xls
extension, and I don't want to count that. When I have finished
counting them, I want to add another instance, with a higher number
than the existing ones, also in column M. I've been experimenting
with Find and FindNext (because that's faster than looking for
"myfile" and ".xls" in each cell of column M. Any help would be
appreciated!
.

  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 17
Default Count occurrences of filename in column

Thanks, Mike. Yours doesn't use Find and FindNext, but it's cleaner
than what I have, so I'll probably use it. One little problem is that
if one of the occurrences if removed for some reason, then the count
will be off. For instance, if the highest numbered entry is
"myfile(8).xls" and for some reason "myfile(4).xls" has been removed,
then just counting and adding 1 would duplicate one. Only 7 would be
counted, and "myfile(8).xls" would be added again. So, I have to use
something like

If InStr(Cells(g, "h"), "myfile") = 1 And InStr(Cells(g, "h"),
".xls") 0 Then
myStart = InStr(Cells(g, "h"), "(")
If myStart 0 Then myEnd = InStr(Cells(g, "h"), ")")
If myEnd 0 Then
nbrstr = Mid(Cells(g, "h"), myStart + 1, myEnd -
1)
If Val(nbrstr) biggest Then biggest = Val
(nbrstr)
End If
End If

Then, I have to add 1 to the biggest and use that for the next one.
Not really hard to do, but it does slow down things a bit. Only way I
know to do it,though. Any ideas on this? Thanks again!


  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 21
Default Count occurrences of filename in column

If you want to speed it up you can go through an array instead of going
through the cells:

Dim R As Long, Values As Variant
Values = Range("H1:H" & UsedRange.Rows.Count) 'or whatever your range is
For R = 1 To UBound(Values, 1)
If InStr(Values(R, 1), "something") Then DoSomething
Next R

Stefano

"Lucky" wrote:

Thanks, Mike. Yours doesn't use Find and FindNext, but it's cleaner
than what I have, so I'll probably use it. One little problem is that
if one of the occurrences if removed for some reason, then the count
will be off. For instance, if the highest numbered entry is
"myfile(8).xls" and for some reason "myfile(4).xls" has been removed,
then just counting and adding 1 would duplicate one. Only 7 would be
counted, and "myfile(8).xls" would be added again. So, I have to use
something like

If InStr(Cells(g, "h"), "myfile") = 1 And InStr(Cells(g, "h"),
".xls") 0 Then
myStart = InStr(Cells(g, "h"), "(")
If myStart 0 Then myEnd = InStr(Cells(g, "h"), ")")
If myEnd 0 Then
nbrstr = Mid(Cells(g, "h"), myStart + 1, myEnd -
1)
If Val(nbrstr) biggest Then biggest = Val
(nbrstr)
End If
End If

Then, I have to add 1 to the biggest and use that for the next one.
Not really hard to do, but it does slow down things a bit. Only way I
know to do it,though. Any ideas on this? Thanks again!
.

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

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


Similar Threads
Thread Thread Starter Forum Replies Last Post
Count how many occurrences Sunnyskies Excel Discussion (Misc queries) 3 March 17th 09 01:11 PM
Count Occurrences In A Column, Then Display In A Table Paperback Writer Excel Discussion (Misc queries) 3 September 14th 07 03:41 PM
Need column evaluated to count total of occurrences of "Y". How? learning Excel Worksheet Functions 2 June 12th 06 01:55 AM
Count Number of Occurrences in a Column anniejhsu Excel Worksheet Functions 7 May 31st 06 09:29 AM
Count occurrences of values in a column??!! me123 Excel Worksheet Functions 5 May 10th 06 08:24 PM


All times are GMT +1. The time now is 11:19 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"