Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 586
Default Count non-zero values in a Array

I currently have the following code to count all the non-zero values in a
Array. Is there a cleaner way to do this?

Option Explicit

Dim PartRow(20) As Integer
Dim PartQty(20) as Single

Sub TestArray()

Dim i As Integer
Dim CounterRow As Integer
Dim CounterQty As Integer

For i = LBound(PartRow) To UBound(PartRow)
If PartRow(i) < 0 Then
CounterRow = CounterRow + 1
End If
Next i

For i = LBound(PartQty) To UBound(PartQty)
If PartQty(i) < 0 Then
CounterQty = CounterQty + 1
End If
Next i

If CounterRow = CounterQty Then
MsgBox "They equal; " & CounterRow
Else
MsgBox "They do NOT equal; " & CounterRow & " " & CounterQty
End If

End Sub

Thanks in Advance!
--
Cheers,
Ryan
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,452
Default Count non-zero values in a Array

If your arrays were variant arrays then you could do something like this:

Sub test()

Dim i As Long
Dim arr(0 To 3)

For i = 1 To 3
arr(i) = i
Next i

MsgBox Application.WorksheetFunction.CountA(arr)

End Sub

It would then leave out the empty array elements.
As you have declared as Integer and Single there always will be a zero in
the elements that have not been set, so the above won't work.
What is wrong with the code you got? It looks fine to me.


RBS


"RyanH" wrote in message
...
I currently have the following code to count all the non-zero values in a
Array. Is there a cleaner way to do this?

Option Explicit

Dim PartRow(20) As Integer
Dim PartQty(20) as Single

Sub TestArray()

Dim i As Integer
Dim CounterRow As Integer
Dim CounterQty As Integer

For i = LBound(PartRow) To UBound(PartRow)
If PartRow(i) < 0 Then
CounterRow = CounterRow + 1
End If
Next i

For i = LBound(PartQty) To UBound(PartQty)
If PartQty(i) < 0 Then
CounterQty = CounterQty + 1
End If
Next i

If CounterRow = CounterQty Then
MsgBox "They equal; " & CounterRow
Else
MsgBox "They do NOT equal; " & CounterRow & " " & CounterQty
End If

End Sub

Thanks in Advance!
--
Cheers,
Ryan


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 586
Default Count non-zero values in a Array

There is no error with the code I have and I am ok with using this code. I
just wanted to know if there was a cleaner or more efficient way of rewriting
the code such as using a function or something.
--
Cheers,
Ryan


"RB Smissaert" wrote:

If your arrays were variant arrays then you could do something like this:

Sub test()

Dim i As Long
Dim arr(0 To 3)

For i = 1 To 3
arr(i) = i
Next i

MsgBox Application.WorksheetFunction.CountA(arr)

End Sub

It would then leave out the empty array elements.
As you have declared as Integer and Single there always will be a zero in
the elements that have not been set, so the above won't work.
What is wrong with the code you got? It looks fine to me.


RBS


"RyanH" wrote in message
...
I currently have the following code to count all the non-zero values in a
Array. Is there a cleaner way to do this?

Option Explicit

Dim PartRow(20) As Integer
Dim PartQty(20) as Single

Sub TestArray()

Dim i As Integer
Dim CounterRow As Integer
Dim CounterQty As Integer

For i = LBound(PartRow) To UBound(PartRow)
If PartRow(i) < 0 Then
CounterRow = CounterRow + 1
End If
Next i

For i = LBound(PartQty) To UBound(PartQty)
If PartQty(i) < 0 Then
CounterQty = CounterQty + 1
End If
Next i

If CounterRow = CounterQty Then
MsgBox "They equal; " & CounterRow
Else
MsgBox "They do NOT equal; " & CounterRow & " " & CounterQty
End If

End Sub

Thanks in Advance!
--
Cheers,
Ryan



  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,452
Default Count non-zero values in a Array

Other than what I posted I can't think of any now.

RBS


"RyanH" wrote in message
...
There is no error with the code I have and I am ok with using this code.
I
just wanted to know if there was a cleaner or more efficient way of
rewriting
the code such as using a function or something.
--
Cheers,
Ryan


"RB Smissaert" wrote:

If your arrays were variant arrays then you could do something like this:

Sub test()

Dim i As Long
Dim arr(0 To 3)

For i = 1 To 3
arr(i) = i
Next i

MsgBox Application.WorksheetFunction.CountA(arr)

End Sub

It would then leave out the empty array elements.
As you have declared as Integer and Single there always will be a zero in
the elements that have not been set, so the above won't work.
What is wrong with the code you got? It looks fine to me.


RBS


"RyanH" wrote in message
...
I currently have the following code to count all the non-zero values in
a
Array. Is there a cleaner way to do this?

Option Explicit

Dim PartRow(20) As Integer
Dim PartQty(20) as Single

Sub TestArray()

Dim i As Integer
Dim CounterRow As Integer
Dim CounterQty As Integer

For i = LBound(PartRow) To UBound(PartRow)
If PartRow(i) < 0 Then
CounterRow = CounterRow + 1
End If
Next i

For i = LBound(PartQty) To UBound(PartQty)
If PartQty(i) < 0 Then
CounterQty = CounterQty + 1
End If
Next i

If CounterRow = CounterQty Then
MsgBox "They equal; " & CounterRow
Else
MsgBox "They do NOT equal; " & CounterRow & " " & CounterQty
End If

End Sub

Thanks in Advance!
--
Cheers,
Ryan




  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 783
Default Count non-zero values in a Array

Your code below treats blanks (i.e., array elements with no value) as 0,
but array elements that contain blank strings (i.e., array element="")
not as 0. Is that your intent?

It also treats 0,1,2,3,4 and 1,2 3 4 0 as "They equal"; is that also
your intent?

Alan Beban

RyanH wrote:
I currently have the following code to count all the non-zero values in a
Array. Is there a cleaner way to do this?

Option Explicit

Dim PartRow(20) As Integer
Dim PartQty(20) as Single

Sub TestArray()

Dim i As Integer
Dim CounterRow As Integer
Dim CounterQty As Integer

For i = LBound(PartRow) To UBound(PartRow)
If PartRow(i) < 0 Then
CounterRow = CounterRow + 1
End If
Next i

For i = LBound(PartQty) To UBound(PartQty)
If PartQty(i) < 0 Then
CounterQty = CounterQty + 1
End If
Next i

If CounterRow = CounterQty Then
MsgBox "They equal; " & CounterRow
Else
MsgBox "They do NOT equal; " & CounterRow & " " & CounterQty
End If

End Sub

Thanks in Advance!



  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 586
Default Count non-zero values in a Array

I am curious if there is a more efficient way of counting the number of
non-zero values in each of my arrays. I currently loop through them as you
can see below. I didn't know if there was a function of some typr of
something like that.


--
Cheers,
Ryan


"Alan Beban" wrote:

Your code below treats blanks (i.e., array elements with no value) as 0,
but array elements that contain blank strings (i.e., array element="")
not as 0. Is that your intent?

It also treats 0,1,2,3,4 and 1,2 3 4 0 as "They equal"; is that also
your intent?

Alan Beban

RyanH wrote:
I currently have the following code to count all the non-zero values in a
Array. Is there a cleaner way to do this?

Option Explicit

Dim PartRow(20) As Integer
Dim PartQty(20) as Single

Sub TestArray()

Dim i As Integer
Dim CounterRow As Integer
Dim CounterQty As Integer

For i = LBound(PartRow) To UBound(PartRow)
If PartRow(i) < 0 Then
CounterRow = CounterRow + 1
End If
Next i

For i = LBound(PartQty) To UBound(PartQty)
If PartQty(i) < 0 Then
CounterQty = CounterQty + 1
End If
Next i

If CounterRow = CounterQty Then
MsgBox "They equal; " & CounterRow
Else
MsgBox "They do NOT equal; " & CounterRow & " " & CounterQty
End If

End Sub

Thanks in Advance!


  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 783
Default Count non-zero values in a Array

RyanH wrote:
I am curious if there is a more efficient way of counting the number of
non-zero values in each of my arrays. I currently loop through them as you
can see below. I didn't know if there was a function of some typr of
something like that.


To suggest a reply I need answers to the questions I posted to you
previously:

"Your code . . . treats blanks (i.e., array elements with no value) as
0, but array elements that contain blank strings (i.e., array
element="") not as 0. Is that your intent?

It also treats 0,1,2,3,4 and 1,2 3 4 0 as "They equal"; is that also
your intent?"

Alan Beban
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 values in array of data where no blanks in one column CW Excel Worksheet Functions 4 April 21st 10 12:43 PM
How to Reference an Array to Count Values? Mashuganah Excel Discussion (Misc queries) 6 December 4th 09 04:33 PM
Count certain values in numeric array avi Excel Programming 4 March 24th 08 08:02 AM
Count quanity of values in an Array Simon Shaw Excel Programming 3 July 12th 05 03:12 AM
Count how many different text values in an array. OVERLOAD Excel Worksheet Functions 3 April 14th 05 04:12 PM


All times are GMT +1. The time now is 03:46 AM.

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

About Us

"It's about Microsoft Excel"