Hej Emma, Hmm, men det är väl ändå inte det samma som ASCII? Emma, Tackar!ASCII-sortering i Excel
Jag har strängar som innehåller versaler, gemener, siffror och "_" i en
allsköns blandning. Dessa ska nu sorteras efter ASCII-tabellen.
Jag har använt mig av range.sort, efter de kolumner som ska sorteras,
men får det inte att bli korrekt. Vad är det jag har missat? Vad är
sorteringsordningen nu?
Min kod för sortering ser ut som följer:
<code>
Call xlsheet.Range(startrad & ":" & (ledigRad)).Sort( _
key1:=xlsheet.Range(hittaKol(sortKol1, startrad, xlsheet).Cells.Address), ORDER1:=xlAscending, _
key2:=xlsheet.Range(hittaKol(sortKol2, startrad, xlsheet).Cells.Address), ORDER2:=xlAscending, _
key3:=xlsheet.Range(hittaKol(sortkol3, startrad, xlsheet).Cells.Address), ORDER3:=xlAscending, _
matchcase:=False)
</code>
/EmmaSv: ASCII-sortering i Excel
XL:s sorteringsordning:
- Text sorteras enligt följande (och text som inkluderas siffror):
0-9 Mellanslag ! " $ % & () *,./:;?@[\]^_'{|}~+<=>
a-ö
- Logiska värden
- Felmeddelanden
- Tomma celler
Per se är sorteringsfunktionen inte skifteskänslig - hör av dig om du vill veta mer om om skifteskänslig sortering.
Förresten, du kan också experimentera med:
Option Compare Binary
Mvh
XL-DennisSv: ASCII-sortering i Excel
Jag behöver en sortering som görs i ASCII - måste jag skriva den själv
innifrån VB, där jag använder min kod som synes ovan?
/EmmaSv: ASCII-sortering i Excel
Ähum, tydligen läste jag något annat inlägg än ditt...
Med Option Compare Binary är sorteringen strikt baserad på ASCII-koden för varje individuellt tecken.
För korrekt sortering måste du nog läsa in hela listan osorterad och sortera den i VB/VBA
<code>
Sub Sortera()
Dim vaListan As Variant
Dim vaLista1 As Variant
vaListan = Application.Transpose(Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Value)
QuickSort vaListan, LBound(vaListan, 1), UBound(vaListan, 1)
Cells(1, 1).Resize(UBound(vaListan, 1) - LBound(vaListan, 1) + 1, 1).Value = _
Application.Transpose(vaListan)
End Sub
Public Function Large(vArr(), kth)
vArr1 = vArr
QuickSort vArr1, 1, UBound(vArr1) - LBound(vArr1) + 1
Large = vArr1(UBound(vArr1) - kth + 1)
End Function
Sub QuickSort(SortArray, L, R)
Dim i, j, X, Y
i = L
j = R
X = SortArray((L + R) / 2)
While (i <= j)
While (SortArray(i) < X And i < R)
i = i + 1
Wend
While (X < SortArray(j) And j > L)
j = j - 1
Wend
If (i <= j) Then
Y = SortArray(i)
SortArray(i) = SortArray(j)
SortArray(j) = Y
i = i + 1
j = j - 1
End If
Wend
If (L < j) Then Call QuickSort(SortArray, L, j)
If (i < R) Then Call QuickSort(SortArray, i, R)
End Sub
</code>
Not: Transpose-funktionen är begränsad till ca 5000 poster.
Det är väl ungefär så här långt som mina kunskaper kring ASCII-sortering sträcker sig :-)
Mvh
Förkyld XL-DebbisSv: ASCII-sortering i Excel
Har sett att man kan använda OrderCustom ifall man lägger in en ASCII-
lista i Excel. Fast det var just det jag ville slippa. Får se om vi kan lösa
det på något annat sätt. Tack så mycket för koden och tipsen så länge!
Krya på dig!
/Emma