Filtering A List

kenodahilan
06-04-2003, 11:31 PM
how can i filter a list using combobox .... then then copy the filtered list to new range

attached is the sample...

italkid
06-05-2003, 01:39 AM
Hmmm,i assume that you want an unique list of all the districts in
ComboBox1 so...
In this example i did put an CommandButton on sheet "MMSC".
(the button is not needed but only as an example).

Private Sub CommandButton1_Click()
Dim R As Range, UniqVal As Variant
Dim UniqList As New Collection

ComboBox1.Clear 'clear the combo otherwise we gonna add items each time we run the code

On Error Resume Next

For Each R In Sheets("Data").Range("C2", Sheets("Data").Range("C2").End(xlDown))
UniqList.Add R.Value, CStr(R.Value) 'create a collection of unique values
Next R

For Each UniqVal In UniqList
ComboBox1.AddItem UniqVal 'put each of the collection values in the combo list
Next UniqVal

End Sub

Don't know how you add the districts name in sheet "Data" but the best way is using validation so the districts names are always written the same.
(since you want to make an unique list of them)
Now you've got an unique list its easy to write them down on a sheet.
Could do it in the same loop in which you fill the combobox...

kenodahilan
06-05-2003, 03:41 AM
thanks a lot for the help ....
i put the code in "Private Sub Workbook_Open()" so that everytime i open it, it'll populate the combobox ...

but how can i copy the filtered school code, name, and competitors to MMSC sheet ...

need hlp pls ... i'm new on this

tinyjack
06-05-2003, 04:27 AM
thanks a lot for the help ....
i put the code in "Private Sub Workbook_Open()" so that everytime i open it, it'll populate the combobox ...

but how can i copy the filtered school code, name, and competitors to MMSC sheet ...

need hlp pls ... i'm new on this
This should do what you want:


Private Sub ComboBox1_Change()

'Turn off screenupdating
Application.ScreenUpdating = False

Dim R As Range
Dim ListRow As Integer

ListRow = 9

'Remove old data from table
While Not IsEmpty(Cells(ListRow, 1))
Range(Cells(ListRow, 1), Cells(ListRow, 3)).ClearContents
ListRow = ListRow + 1
Wend

ListRow = 9

'Loop through data and copy to output table
For Each R In Sheets("Data").Range("C2", Sheets("Data").Range("C2").End(xlDown))
'Have we got a match to the ComboBox
If R.Value = ComboBox1.Value Then
'Put into column 1 the data from 2 cells to the left of the district,etc
Cells(ListRow, 1).Value = R.Offset(0, -2).Value
Cells(ListRow, 2).Value = R.Offset(0, -1).Value
Cells(ListRow, 3).Value = R.Offset(0, 1).Value
'Increase ListRow so we write into the next blank line
ListRow = ListRow + 1
End If
Next R

'Turn screenupdating back on
Application.ScreenUpdating = True

End Sub

kenodahilan
06-05-2003, 04:56 AM
well .... you are a genius ....

it solved my problem .... the boss will not be angry with me when he comes in :)

thanks a lot for the help

italkid
06-05-2003, 09:07 AM
Some minor modifications on TinyJack's code :

Private Sub ComboBox1_Change()
Dim R As Range, ListRow As Integer

Application.ScreenUpdating = False

Range("A9:C25").ClearContents 'Empty the Table on sheet "MMSC"
'avoid using loops as much as possible an this is only 1 line of code
ListRow = 9

'Loop through data and copy to output table
For Each R In Sheets("Data").Range("C2", Sheets("Data").Range("C2").End(xlDown))
'Have we got a match to the ComboBox
If R.Value = ComboBox1.Value Then
'Put into column 1 the data from 2 cells to the left of the district,etc
Cells(ListRow, 1).Value = R.Offset(0, -2).Value
Cells(ListRow, 2).Value = R.Offset(0, -1).Value
Cells(ListRow, 3).Value = R.Offset(0, 1).Value
'Increase ListRow so we write into the next blank line
ListRow = ListRow + 1
End If
Next R

Application.ScreenUpdating = True

End Sub

kenodahilan
06-05-2003, 07:11 PM
good point italkid .... thanks ....

another one ... is there a way to show on the chart only the ones on the list/table?

e.g. if there are 5 schools only 5 bars in the chart and if there are 3 schools only 3 bars will be shown in the chart ...

italkid
06-06-2003, 12:36 AM
Hmmm,took a look at your sheet and played around with the schools
(adding and deleting some),and the chart seems to work properly so...?
3 schools = 3 bars,4 schools gives 4 bars etc.
Don't see anything wrong.

kenodahilan
06-06-2003, 04:34 AM
it's working fine i know ... but what if i add new schools ...

e.g. 10 schools for every district ...

is it possible to autolink the chart to whatever number of schools there is on the list?

kenodahilan
06-06-2003, 05:38 AM
additional ....

is it possible not to plot the blank cells?

italkid
06-06-2003, 10:07 AM
Ahhhh,shure...
Sorry i misunderstand your question this morning (for me).
For somebody awake it whas an obvious question but i at that time
came just back from my work (8:30 AM !!).
So i edited the Combobox_Change code and you can implement it as it is
in your project.

Private Sub ComboBox1_Change()
Dim Ch As Chart
Dim Vr As Range, Xr As Range
Dim R As Range, ListRow As Integer

Application.ScreenUpdating = False

Range("A9:C25").ClearContents 'Empty the Table on sheet "MMSC"

ListRow = 9

'Loop through data and copy to output table
For Each R In Sheets("Data").Range("C2", Sheets("Data").Range("C2").End(xlDown))
'Have we got a match to the ComboBox
If R.Value = ComboBox1.Value Then
'Put into column 1 the data from 2 cells to the left of the district,etc
Cells(ListRow, 1).Value = R.Offset(0, -2).Value
Cells(ListRow, 2).Value = R.Offset(0, -1).Value
Cells(ListRow, 3).Value = R.Offset(0, 1).Value
'Increase ListRow so we write into the next blank line
ListRow = ListRow + 1
End If
Next R

Set Xr = Range("A9", Range("A9").End(xlDown))
Set Vr = Range("C9", Range("C9").End(xlDown))
Set Ch = Sheets("MMSC").ChartObjects(1).Chart

With Ch
.SeriesCollection(1).XValues = Xr
.SeriesCollection(1).Values = Vr
End With

Application.ScreenUpdating = True

Set Xr = Nothing
Set Vr = Nothing
Set Ch = Nothing

End Sub

As long as you don't replace the table on sheet "MMSC" the code will work.

kenodahilan
06-06-2003, 09:44 PM
geez ... i just got back to work ...

from the looks of it ....

it's working perfectly now

thanks for all the help on my project .... GOD bless you!

EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum