View Single Post
  #8   Report Post  
Posted to microsoft.public.excel.misc
Dave Peterson Dave Peterson is offline
external usenet poster
 
Posts: 35,218
Default Inconsistent Sorting

Yep. I wasn't sure how many columns to sort or what column to sort by. I
created a couple of variables and adjusted the code for the number of columns
but forgot the key column (something shiny distracted me!).

But I did use them in the followup!

Sandy Mann wrote:

Dave,

And I sorted by column A (KeyCol = 1).


You don't actually seem to use KeyCol in you code, just DIM it and assign
it.

--
HTH

Sandy
In Perth, the ancient capital of Scotland
and the crowning place of kings


with @tiscali.co.uk

"Dave Peterson" wrote in message
...
Maybe...

Is your data in column A text or formulas? Are those blanks really empty
cells?

If you column A contains Text and those are really empty cells in column
A, you
could try this:

Option Explicit
Sub testme()
Dim myRngToSort As Range
Dim myBigRng As Range
Dim myPiecesRng As Range
Dim myArea As Range
Dim wks As Worksheet
Dim TotalColsToSort As Long
Dim KeyCol As Long

Set wks = Worksheets("sheet1")

With wks
TotalColsToSort = 12
KeyCol = 1

Set myBigRng = .Range("a1", .Cells(.Rows.Count, "A").End(xlUp))

Set myPiecesRng = Nothing
On Error Resume Next
Set myPiecesRng = myBigRng.Cells.SpecialCells(xlCellTypeConstants)
On Error GoTo 0

If myPiecesRng Is Nothing Then
MsgBox "No constants in column A!"
Exit Sub
End If

For Each myArea In myPiecesRng.Areas
With myArea
'come down 2 rows to avoid the headings
Set myRngToSort _
= .Resize(.Rows.Count - 2, TotalColsToSort).Offset(2,
0)
myRngToSort.Sort key1:=.Columns(1), order1:=xlAscending, _
header:=xlNo
End With
Next myArea
End With

End Sub

I sorted A:L (that's what "TotalColsToSort = 12" did).

And I sorted by column A (KeyCol = 1).

If you're new to macros, you may want to read David McRitchie's intro at:
http://www.mvps.org/dmcritchie/excel/getstarted.htm

Saxman wrote:

I need to sort columns of data, but in batches on the same worksheet.
e.g. There will always be a heading on row 1, followed by a sub-heading
on row. Then follows data on rows 3 - 10. Finally, a blank line (row
11).

In this example the next batch of data commences on row 12 (heading) and
row 13 (sub-heading), followed by 13 lines of data (rows 14 - 25). As
above, a blank line finishes the sequence on row 26.

1 Heading
2 Sub-heading
3 Data
4 Data
5 Data
6 Data
7 Data
8 Data
9 Data
10 Data
11 Blank
12 Heading
13 Sub-heading
14 Data
15 Data
16 Data
17 Data
18 Data
19 Data
20 Data
21 Data
22 Data
23 Data
24 Data
25 Data
26 Blank

The data part of the worksheet always varies, which is my problem. Data
can be anything from 1 to 40 lines. Could some code be created which
would recognise the blank line and sort each batch of data by a chosen
column?

The data represents horses in a race, which varies from day to day.


--

Dave Peterson


--

Dave Peterson