< návrat zpět
MS Excel
Téma: setřídění vzestupně-sestupně 
Zaslal/a fortes 19.10.2018 18:56
dobrý den, dotaz na setřídění buněk. potřebuju setřídit buňky dle datumu v dané buňce "L3,L12,L21"a další. , ale s tím že na tento datum je vázaná oblast buněk"a1:m8,a10:m17,a19:a26" včetně obrázku. viz příklad v souboru, takhle to potřebuju setřídit cca 300 záznamů. děkuji za radu
Příloha:  41693_ukazka.zip (18kB, staženo 34x)
41693_ukazka.zip (18kB, staženo 34x) 
  
  
  
elninoslov(20.10.2018 10:22)#041696 
Možno aj takto, ale pozor, používa sa rovnako veľká oblasť vpravo, kde sa premiestnia zoradené oblasti, a pôvodné stĺpce (už bez oblastí) sa celé zmažú. Vyskúšajte.
Sub ZoradSkupiny()
Dim Col As Collection, Riadkov As Long, Skupin As Long, i As Long, c, Datum As Date, Dat(), Z As Boolean, OldRng As String
 
 Set Col = New Collection
 With ThisWorkbook.ActiveSheet
 Riadkov = .Cells(Rows.Count, 2).End(xlUp).Row + 2
 Skupin = Riadkov \ 9
 If Riadkov / 9 <> Skupin Then MsgBox "Oblasti niesú rovnomerné! Koniec.": Exit Sub
 ReDim Dat(1 To Riadkov, 1 To 1)
 Dat = .Cells(1, 12).Resize(Riadkov).Value
 
 For i = 1 To Skupin
 Datum = Dat((i - 1) * 9 + 3, 1)
 Z = False
 If Col.Count > 0 Then
 For Each c In Col
 If c(0) > Datum Then Col.Add Array(Datum, i), Before:=CStr(c(1)): Z = True: Exit For
 Next c
 If Z = False Then Col.Add Array(Datum, i), CStr(i)
 Else
 Col.Add Array(Datum, i), CStr(i)
 End If
 Next i
 
 With Application: .ScreenUpdating = False: .EnableEvents = False: .Calculation = xlCalculationManual: End With
 OldRng = Selection.Address
 .Cells(1, 1).Resize(, 13).Copy
 .Cells(1, 14).Resize(, 13).PasteSpecial Paste:=xlPasteColumnWidths
 
 Riadkov = 0
 For Each c In Col
 .Cells((c(1) - 1) * 9 + 1, 1).Resize(9, 13).Cut
 .Cells(Riadkov * 9 + 1, 14).Resize(9, 13).Insert Shift:=xlDown
 Riadkov = Riadkov + 1
 Next c
 
 .Columns(1).Resize(, 13).EntireColumn.Delete
 
 With Application: .ScreenUpdating = True: .EnableEvents = True: .Calculation = xlCalculationAutomatic: End With
 .Range(OldRng).Select
 End With
 
 Set Col = Nothing
End SubPříloha:  41696_zoradenie-oblasti.zip (25kB, staženo 33x)
41696_zoradenie-oblasti.zip (25kB, staženo 33x) citovatfortes(20.10.2018 10:58)#041697 
super skvělé, mnohokrát děkuji. funguje přesně jak potřebuju.
citovatelninoslov(20.10.2018 11:11)#041698 
Keď na to ešte tak pozerám, pridajte na koniec tohto riadku:
If Z = False Then Col.Add Array(Datum, i)
ešte ", CStr(i)", teda:
If Z = False Then Col.Add Array(Datum, i), CStr(i)citovatfortes(20.10.2018 11:49)#041699 
OK, ještě se zeptám, pokud ty buňky nebudou začínat od řadku 1, ale od řádku 12 ? kde tohle můžu změnit nebo přidat ?
citovatelninoslov(20.10.2018 17:31)#041700 
Tu máte zmenenú verziu, nielen od 12. riadku, ale aj predpokladám potrebu uchovania tých 11 riadkov nad tým, a zároveň upravený proces zoradenia.
A čo tam chcete vyčarovať s tými ostatnými makrami ?
Příloha:  41700_zoradenie-oblasti.zip (30kB, staženo 32x)
41700_zoradenie-oblasti.zip (30kB, staženo 32x) citovatfortes(20.10.2018 17:57)#041701 
děkuju super, jelikož ty data jsem měl dřív nějak zapsané, chtěl jsem je dát do nového formátu, takže ty makra co jsou v souboru je ve většině pokus-omyl. vždycky něco najdu a snažím se aplikovat a i pochopit fungování, někdy se zadaří jindy ne.
citovat