Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 31. 7. 2009 01:41:08

marshall
Člen
Registrace: 15. 10. 2004
Příspěvků: 7

Seřazení 100 listů podle numerického pole B20

dobrý den,

hledal jsem %subj a nějak to nevidím. Potřebuji seřadit zhruba stovku listů v jednom souboru  s obsahem podle numerické hodnoty v buňce B20 od největší do nejmenší. Buňka je formátována jako měna. Za návod budu vděčný.

děkuji

marshall

Editoval marshall (31. 7. 2009 01:41:31)

Offline

#2 31. 7. 2009 06:24:29

Ondra.kl
Člen
Registrace: 30. 9. 2008
Příspěvků: 933

Re: Seřazení 100 listů podle numerického pole B20

Tak nějak mi není jasné co vlastně chcete. B20 je jedna buňka =  není na ní co řadit. Kdyby jste to chtěl řadit podle sloupce B tak vím, ale takhle ...

Offline

#3 2. 8. 2009 19:31:25

marshall
Člen
Registrace: 15. 10. 2004
Příspěvků: 7

Re: Seřazení 100 listů podle numerického pole B20

v každém listu má ta buňka B20 jinou hodnotu. a podle hodnoty v té buňce se snažím ty listy seřadit. od největšího k nejmenšímu. nebo obráceně.

Offline

#4 2. 8. 2009 20:47:10

hanus
Člen
Místo Olomouc
Registrace: 29. 11. 2006
Příspěvků: 573
Web

Re: Seřazení 100 listů podle numerického pole B20

Myslím si, že jedinou možností je napsat odpovídající makro.

Offline

#5 2. 8. 2009 20:49:44

marshall
Člen
Registrace: 15. 10. 2004
Příspěvků: 7

Re: Seřazení 100 listů podle numerického pole B20

škoda, to nezvládnu. nechám to sekretářku udělat ručně. bude mít radost :-)

Offline

#6 2. 8. 2009 21:37:56

hanus
Člen
Místo Olomouc
Registrace: 29. 11. 2006
Příspěvků: 573
Web

Re: Seřazení 100 listů podle numerického pole B20

Vy třeba ne, ale někdo jiný určitě. Moc složité to nebude. Snadno jsem našel makro na seřazení dle názvu listů:
http://www.openofficetips.com/blog/arch … ing_s.html

Po drobné úpravě by to fungovalo, jak potřebujete. Monenátlně ale nemám čas se tím zabývat.

Offline

#7 3. 8. 2009 07:24:53

hanus
Člen
Místo Olomouc
Registrace: 29. 11. 2006
Příspěvků: 573
Web

Re: Seřazení 100 listů podle numerického pole B20

Tak jsem s tím chvíli zápasil, přece jen ty objekty v OOo nejsou moc intuitivní.
Není to moc blbuvzdorné, takže v buňce B20 na všech listech musí být číslo nikoli text, jinak to bude blbnout.
Makro je:

Sub SortSheetsByValue
    Dim oSheets
    Dim oSheet1 as Variant
    Dim oSheet2 as Variant
    Dim i As Integer
    Dim swap As Boolean

    oSheets = ThisComponent.Sheets

    If oSheets.getCount() > 1 Then 'Sorting for more than one sheet
        Do
            swap = False 'We continue bubble sort passes until no more swaps
            For i = 0 to oSheets.getCount()-2
                oSheet1 = oSheets.getByIndex(i)
                oSheet2 = oSheets.getByIndex(i+1)
                Sheet1Value = oSheet1.getCellbyPosition(1,19).Value
                Sheet2Value = oSheet2.getCellbyPosition(1,19).Value
                If Sheet1Value > Sheet2Value Then
                    oSheets.moveByName(oSheets.getByIndex(i+1).Name,i)
                    swap = True
                End If
            Next
        Loop Until swap = False
    End If

End Sub


Praktická ukázka pak:
http://ooo.e-hanus.cz/Razeni_listu.01.ods

A chtěl jste to vlastně řadit sestupně, takže se v podmínce "If Sheet1Value > Sheet2Value Then" akotár přehodí relační operátor na <
Doplněno je to v:
http://ooo.e-hanus.cz/Razeni_listu.02.ods

Editoval hanus (3. 8. 2009 07:33:16)

Offline

Zápatí