Deleting blank values from an array

G

Guest

I have an array that gets populated with dates from various ranges in my
spreadsheet. In the process blank values also get included. Once filled, I
would like to sort the array with the earliest date in H(0) and the blank
ones deleted by redimensioning the array.
I figured out one way to sort but the blank ones are all in the lower
indexes with the sorted dates at the end.
Is there an easy way to delete the empty elements of the array either while
sorting or another routine after the sort ?
I used the sorting routines in this help site

http://support.microsoft.com/?kbid=213818
I tried a filter routine but it created an error
Thanks
 
N

norika

Assume Column D having empty cells want to delete entire row.

Sub Macro2()
Columns("D:D").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete
End Sub

norika
 
G

Guest

It seems that the easiest approach would be to prevent blank values from
getting added to the array in the first place. Failing that, one simple
solution is to transfer non-blank values from the original array to a second
dynamic array. Then use the second array and forget the first. I'm sure
someone has a more elegant solution. I think it would be more efficient to
sort afterwards.

'Where Arr is array containing blanks and Arr2 is dynamic array
ii = 0
For i = LBound(Arr) To UBound(Arr)
If Arr(i) <> "" Then
ReDim Preserve Arr2(ii)
Arr2(ii) = Arr(i)
ii = ii + 1
End If
Next


Regards,
Greg
 
G

Guest

Thanks norika for the response. I can't delete the rows in the spreadsheet
though.

Thanks Greg. Your routine will work. There will not be more than 80
elements in the array so it will be quick running. I will also try to
eliminate the blank entries before they are added to the array. So may be a
combination of both to work every time.

Any other ideas would be appreciated too. Always nice to have multiple
solutions.
 
A

Alan Beban

Rich said:
I have an array that gets populated with dates from various ranges in my
spreadsheet. In the process blank values also get included. Once filled, I
would like to sort the array with the earliest date in H(0) and the blank
ones deleted by redimensioning the array.
I figured out one way to sort but the blank ones are all in the lower
indexes with the sorted dates at the end.
Is there an easy way to delete the empty elements of the array either while
sorting or another routine after the sort ?
I used the sorting routines in this help site

http://support.microsoft.com/?kbid=213818
I tried a filter routine but it created an error
Thanks

If the functions in the freely downloadable file at
http:/home.pacbell.net/beban are available to your workbook

H = SubArray(H, ArrayCountIf(H, 0), UBound(H), 1, 1)

Alan Beban
 
D

Dana DeLouis

I tried a filter routine but it created an error

If you had trouble with the Filter command on a 1-Dim array, you may not
have set it up correctly.
See if there are any ideas here that may help.
Filter won't work with blanks, so I hope this gets fixed in a future version
of Excel.

Sub Demo()
Dim v As Variant
ReDim v(1 To 10)

Const Flag As String = "xxx"
Dim j As Long

'// Small 1-D array
For j = 1 To 10
v(j) = j
Next j

'// Make two elements blank!
v(3) = vbNullString
v(7) = vbNullString

'// Scan for blanks
For j = 1 To 10
If v(j) = vbNullString Then v(j) = Flag
Next j

v = Filter(v, Flag, False)
End Sub

HTH :>)
 
G

Guest

Thanks Dana, that looks like another good solution. I had taken Greg's code
and ran with it. A few name changes and a correction in my code and it works
great.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top