From: Mr. IT Mr. on
Greetings!

I am working in a good IT company under the quality management team. May I
ask how can I automatically sort an array of records using macros based on
categories and heirarchy of scores? Then generate a separate sheet for it as
well?

Here is a simple example of a record array found in sheet1 named as "DATA":

A B C
PARTICIPANT CATEGORY POINTS
1 Malaysia W 87,000
2 Indonesia X 12,000
3 Singapore Y 98,000
4 Thailand Z 15,000
5 Hong-Kong Y 58,000
6 Japan W 108,000
7 Russia X 33,000
8 China Z 72,000

I simply need to automatically generate two more sheets: Sheet 2 as
"GroupsWX" which will contain all entries having categories 'W' and 'X' and
Sheet 3 as "GroupsYZ" which will contain all entries having categories 'Y'
and 'Z'.

These two computer-generated sheets will display Columns A and C in
descending order; without having the need to separate 'W' from 'X' or 'Y'
from 'Z'.

Thank you very much and God Bless to you, your family, and your company =)\

Regards, Mr. IT
From: marcus on
Hello Mr IT

This should do what you want, in terms of splitting the data into two
sheets. The sort assumes you start putting data in Range A1 and the
data is presented in a structured manner.

Take care

Marcus


Sub CopytoSheet()
Dim RngCell As Range
Dim MyList() As Variant
Dim res As Variant
Dim lw As Long
Dim X As Range
Dim ws As Worksheet

lw = Range("B" & Rows.Count).End(xlUp).Row
MyList() = Array("W", "X")

Set X = Range("B2:B" & lw)
For Each RngCell In X
res = Application.Match(RngCell.Value, MyList, 0)
If IsError(res) Then
RngCell.EntireRow.Copy Sheets("Sheet3"). _
Range("A65536").End(xlUp).Offset(1, 0)
Else
RngCell.EntireRow.Copy Sheets("Sheet2"). _
Range("A65536").End(xlUp).Offset(1, 0)
End If
Next RngCell

'Sort the ranges
For Each ws In ThisWorkbook.Worksheets
If ws.Name = "Sheet2" Or ws.Name = "Sheet3" Then

With ws.Range("A1").CurrentRegion
.Sort Key1:=.Cells(2, "A"), Order1:=xlDescending,
Header:=xlYes
End With

End If
Next

End Sub