Just nu i M3-nätverket
Jump to content

Sortering av hela kolumner


short

Recommended Posts

Jag har ett antal kolumner som jag vill sortera efter en sträng som står i huvudet på kolumnen. Jag vill sedan låta kolumnerna byta plats. Jag har testa med UCase men det verkar inte fungerar inte när det gäller strängar som kan innehålla litet vad som helst.

Jag har också försökt med denna kod

Sheets("Lager").Range("A1").Select
For a = 1 To 9
   If ActiveCell.Offset(1, a) > ActiveCell.Offset(1, a + 1) Then Exit For
   Columns(a).Select
Next a
  End Sub

Koden verkar fungera en gång men vid nästa jämförelse åker man ur for trots att det som läses i cellerna redan stå i bokstavsording. Hur kan det komma sig????

[inlägget ändrat 2009-03-24 18:43:21 av short]

[inlägget ändrat 2009-03-24 18:44:50 av short]

Link to comment
Share on other sites

jag greppar inte vad det är du vill göra... ge ett bra exempel

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Link to comment
Share on other sites

Låt oss säga att du har multiplikationstabellen i kolumner på ett excelark. I huvudet på varje kolumn står det "2" för tvåans tabell osv. Tänk dig att kolumnerna hanat i oordning så att efter 5 står 3:ans tabell. Du gör ett program som läser kolumnhuvudet och vill då stoppa in 3:ans tabell mella 2 0ch 4 dvs "på plats". Hela kolumnen ska följa med. Ta sedan samma exempel och ersätt huvudet med en sträng och gör samma sak så att kolumnerna kommer i stigande ordning efter kolumnhuvudet.

 

 

 

Link to comment
Share on other sites

Aha, du vill flytta runt hela kolumners värden baserat på rubriken.

 

Undrar om det inte är lättast då att transponera hela tabellen, sortera den på första kolumnen och sedan transponera tillbaka den?

 

Typ:

Sub MySorter()
   'hitta område, kopiera
   Blad1.Range("A1").CurrentRegion.Copy
   'klistra in allt och transponera
   Blad2.Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
       False, Transpose:=True
   'sortera på första kolumnen, ingen rubrikrad
   Blad2.Range("A1").CurrentRegion.Sort key1:=Blad2.Range("A1"), order1:=xlAscending, Header:=xlNo
   'kopiera
   Blad2.Range("a1").CurrentRegion.Copy
   'klistra in allt
   Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
       False, Transpose:=True
   'ta bort tempdata
   Blad2.Range("A1").CurrentRegion.ClearContents
   'tömma clipboard
   Application.CutCopyMode = False
End Sub

där dina ursprungstabell finns på blad1 i cell A1

Du har ett tomt blad vid namn Blad2 dit en temporär tabell kan kopieras. Kommentarer i koden över vad som sker.

 

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

 

[inlägget ändrat 2009-03-25 08:31:05 av Monshi]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...