View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
Tom Ogilvy Tom Ogilvy is offline
external usenet poster
 
Posts: 27,285
Default Import csv files, delete rows, arrange columns ....

Since the csv's are in a standard order, you can just put the required order
above the existing column headings, then sort left to right. That assumes
your headers are not really numbers. If they are numbers and you just want
to sort in numerical order, you don't need to add a dummy header.

The code would be

Range("A1").CurrentRegion.Sort _
Key1:=Range("A1"), Order1:=xlAscending, _
Header:=xlno,OrderCustom:=1, _
MatchCase:=False, Orientation:=xlLeftToRight

rwMin = Application.Match(application.Min(columns(3)), _
Columns(3),0)
rwMax = Appliction.Match(application.Max(columns(3)), _
Columns(3),0)

rows(rwMin).copy Destination:=worksheets("Main").Cells( _
rows.count,1).End(xlup)(2)
rows(rwMax).copy Destination:=worksheets("Main").Cells( _
rows.count,1).End(xlup)(2)


------
if you need to put in a row, then
Rows(1).Insert
Range("A1:AF1").Value = Array(16,3,9, . . .,2)

do the sort and copy

Rows(1).Delete



--
Regards,
Tom Ogilvy


"xadnora" wrote in message
...
I am importing 34 csv files (each into a different sheet) into one

workbook
with one "Main" sheet. e.g. "Main", "1", "2", ..... , "34". Once these

are
imported, I have to delete unwanted data from certain columns. Then

organize
the columns to a specific order to match the "Main" sheet. The column
heading is located in range("A16:AF16") on the csv imported tabs. Once it

is
arranged in this format, I have to find the max and min of certain columns
and select that corresponding row of data to copy to the "main" sheet. I
just need help getting started with the sorting process. This is what I

have
so far. TIA for any help you can provide.

Sub OpenCSVFiles()
Dim wks As Worksheet
Dim wkbk As Workbook
Dim rngchan As Range
Dim wksmain As Worksheet
Dim i As Integer

Set wksmain = Sheets("Main")

With Application.FileSearch
.NewSearch
.LookIn = "C:\test\csv"
.SearchSubFolders = False
.Filename = ".csv"
.MatchTextExactly = True
.FileType = msoFileTypeAllFiles
If .Execute() 0 Then
For i = 1 To .FoundFiles.Count
Set wkbk = Workbooks.Open(Filename:=.FoundFiles(i))

For Each wks In wkbk.Worksheets
dblLastRow = Range("A65535").End(xlUp).Row
Set rngchan = Range("A16:AF16")
wks.Copy after:=ThisWorkbook.Sheets(i) 'Change sheet name


Range("a1,b1,c1,d1,e1,h1,j1,m1,n1,v1:x1,z1,aa1:ad1 ,ai1,al1:aq1,ax1:ba1").Ent
ireColumn.Delete

This is where I need to arrange columns in a certain order from the column
heading in rngchan. In the "main" sheet it is in a certain order.

e.g.main
sheet 1,2,3,...34 and on csv tabs it is in 16,3,9,...2

Then I have to find max and min of column 3 and then copy those rows of

data
to the "main" sheet in a specified location.



Next wks
wkbk.Close
Next i
Else
MsgBox "There were no files found."
End If
End With
End Sub