» »

Excel VBA sortiranje vrstic

Excel VBA sortiranje vrstic

korenje3 ::

A kdo ve kako bi lahko sortiral vrstice v tabeli, če imam array s ciljno in začetno vrstico?
Npr. array: Sort(1) = 5 (kar pomeni da mora biti trenutna vrstica 5 v 1 vrsti.)
Pa ustvarjanje pomožnih kolon odpade, tako da mora biti sortiranje opravljeno znotraj vba s pomožnimi arrayji, rekurzivno ipd...

Testni podatki:
dim DataBody as Range (databody ima 10 vrstic)
ReDim Sorted(1 To 10)
Sorted(1) = 5
Sorted(2) = 4
Sorted(3) = 7
Sorted(4) = 6
Sorted(5) = 1
Sorted(6) = 2
Sorted(7) = 10
Sorted(8) = 8
Sorted(9) = 3
Sorted(10) = 9
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W
  • spremenil: korenje3 ()

ejresnevem ::

ce potrebujes samo namig:
https://docs.microsoft.com/en-us/office...

ce pa isces celotno resitev, pa ne vem...
ne bi smel biti poseben napor, ali?

korenje3 ::

Problem je ker se zaporedje sproti spreminja.
Bom probal s collection, ki ima zapise začetnega stanja.
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W

ejresnevem ::

nic hudega, ce se collections spreminja (domnevam, da govoris o Sorted array), zadevo loci na procesirne enote, in jo klices tudi N-krat za O-spremembambi tudi znotraj ene sekunde, ce je potrebno; pac loci funkcije (imena abstrahirana) na GetData(), SortData(), GetSortedArray() in, najbolj pomembna, SetData(data(), sortedArray()) v smislu SetData(SortData(GetData()), GetSortedArray()); vsako od teh funkcij pripravi kot je potrebno... v taksne stvari se redko spusca, ker mora poznati tvoj kontekst, analiziranje problema na javnem forumu je pa tudi zgodba zase. torej, dobis lahko samo neko abstraktno resitev/napotek, za katero pa se mi ne zdi, da JE ravno neka jedrska it fizika, ali?

PS: torej, dvojna negacija, nisem prebral vsega niti svojega :)

Zgodovina sprememb…

korenje3 ::

Sem tako naredil:
v array 1. poz: začetna vrstica, 2. poz: ciljna vrstica
Collection sem uporabil kot pomožno zadevo (kot virtualna excel kolona).

    Sorted.Add Array(1, 10)
    Sorted.Add Array(2, 2)
    Sorted.Add Array(3, 4)
    Sorted.Add Array(4, 3)
    Sorted.Add Array(5, 5)
    Sorted.Add Array(6, 6)
    Sorted.Add Array(7, 1)
    Sorted.Add Array(8, 7)
    Sorted.Add Array(9, 8)
    Sorted.Add Array(10, 9)
    For i = 1 To Sorted.Count
        TableData.Rows(i).Columns(2).Value2 = i
    Next
    Call RecurSort(TableData, Sorted)

Private Sub RecurSort(ByRef TableData As Range, ByVal Sorted As collection)
    Dim temp1 As Variant
    For i = 1 To Sorted.Count
        For j = 1 To Sorted.Count
            If i = Sorted(j)(0) Then
                temp1 = Sorted(j)
                If temp1(1) = Sorted.Count Then
                    Sorted.Add item:=temp1
                    If j <> temp1(1) Then
                        TableData.Rows(j).Cut
                        TableData.Rows(temp1(1) + 1).Insert shift:=xlDown
                    End If
                Else
                    Sorted.Add item:=temp1, before:=temp1(1)
                    If j <> temp1(1) Then
                        TableData.Rows(j).Cut
                        TableData.Rows(temp1(1)).Insert shift:=xlDown
                    End If
                End If
                Sorted.Remove j + IIf(temp1(1) < j, 1, 0)
                Exit For
            End If
        Next
    Next
End Sub
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W

Zgodovina sprememb…

  • spremenil: korenje3 ()

ejresnevem ::

osebno bi tole drugace strukturiral (kot napisano 16:20), ce pa dobis ustrezne rezultate, pa se ne daj motiti...


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

vba array

Oddelek: Programiranje
12849 (542) Vazelin
»

[C#] sortiranje priimkov po slovenski abecedi

Oddelek: Programiranje
61463 (1274) mihies
»

[Java] Podatkovni tip

Oddelek: Programiranje
233509 (3161) piki12
»

[VB express edition] problem

Oddelek: Programiranje
71270 (1173) frudi
»

sortirni algoritem v Cju

Oddelek: Programiranje
61358 (1210) GaPe

Več podobnih tem