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

#2 Re: Calc » Výpis jmen dle určitých kritérií » 4. 2. 2020 14:37:18

tak jsem tam hodil ještě jiná data, tady je trochu problém, přikládám soubor http://www.mp3stahuj.cz/zadani-slouceni … a-data.ods , je reálné to tady na těch datech nějak upravit nebo se to už lépe vymyslet nedá? děkuji

#3 Re: Calc » Výpis jmen dle určitých kritérií » 4. 2. 2020 13:46:20

Wow, na tom to příkladu to funguje perfektně. Vyzkouším to ještě na jiných datech, ale i tak už smekám klobouk a hluboce děkuji. smile

#4 Re: Calc » Výpis jmen dle určitých kritérií » 3. 2. 2020 20:37:31

kamlan napsal(a)
neutr napsal(a)

Podle mne je to nesprávně. Jak poznat, že že někdo má být v posledním sloupci sloučen - byť relativně sám se sebou - nebo nikoliv někde je jedno jméno, jinde nic a jinde zase třeba 3 sloučená jména.

Mám v tom též jistý zmatek, ale jde nejspíš o to, že je potřeba vyhledat ke kterému číslu jsou jaké osoby a pak do sloupce Sloučení vypsat pouze ty ostatní osoby s daným číslem; pokud je k danému číslu jen jedna osoba, tak se nic vepisovat nebude. Nebo jinak - bude se vepisovat jen pokud bude dané číslo duplikátní a pak tedy vepsat ostatní osoby přiřazené k tomu číslu.


Např. pro číslo 13 (řádky 15,58-60) jsou osoby Dáňa Zdeněk, Hejsek Lubomír, Jonášová Jana, Krupauer Miroslav. Na prvním řádku kde je třináctka (ř.15) je ve sloupci jméno Dáňa Zdeněk a do Sloučení tedy připsat ty zbylé se třináctkou což jsou tam uvedené Hejsek Lubomír, Jonášová Jana, Krupauer Miroslav. Na ř.58 je Hejsek Lubomír a ve Sloučení je tam Jonášová Jana, Krupauer Miroslav (obdobně pak na ř.59 i 60) -> ale myslím, že by tam správně měl být i ten Dáňa Zdeněk, tedy pokud by tam nebyl z důvodu toho, že u něj zároveň bylo číslo 12 -> což by byla další podmínka, osobu s více čísly tedy nevepisovat do těch co mají jen jedno číslo?


Na makro mi to přijde docela lehké, ale berou mě záda, tudíž dnes se tomu již nezavěnuji, jak v příštích dnech nevím, mám ty záda poslední týdny hodně nevypočitatelná.

ano, máte pravdu, ještě jsem doplnil Dáňu, skutečně mi vypadl

#6 Re: Calc » Výpis jmen dle určitých kritérií » 3. 2. 2020 15:03:19

Děkuji za vyčerpávající odpověď, je vidět, že víte o čem píšete. Bohužel data jsou takto jasně daná a já s tím nic nezmůžu smile Počítal jsem s nějakým makrem a pomocný sloupec by jistě nevadil, pokud by vše fungovalo. Případně pokud by se po provedení makra dal odstranit. Nebráním se ani nějaké drobnější finanční odměně, pokud by se Vám chtělo a povedlo se to rozběhnout.

#7 Re: Calc » Výpis jmen dle určitých kritérií » 3. 2. 2020 12:03:01

Omlouvám se, moje chyba, nesmí tam být ten člověk z toho řádku, v příkladu upraveno

#8 Calc » Výpis jmen dle určitých kritérií » 3. 2. 2020 10:57:33

davef6
Odpovědí: 14

Zdravím návštěvníky fóra,

poprosím o řešení mého menšího problému s výpisem jmen dle určitých kritérií pomocí makra. Mám soubor (http://mp3stahuj.cz/zadani-slouceni-jmen.ods), kde je první sloupec s čísly a druhý se jmény. Jde o to, pokud má více osob stejné číslo, vypsat do 3tího sloupce vždy to číslo a jméno osoby, která má stejné číslo, ale není na tom procházeném řádku. V souboru je 4. sloupec, jak by to mělo vypadat, snad je to z toho pochopitelné. Nějak to nemohu dát dohromady a pro některé uživatele tady by to mohla být rychlovka. Díky všem, co se pokusí.

#9 Re: Calc » Vynechání určitých řádků při opisu do dalšího listu - VYŘEŠENO » 11. 10. 2019 07:18:27

Zdravím pánové, koukám že se tu diskuse trochu rozrostla smile Měl jsem možnost to odzkoušet až nyní. Řešení od neutr funguje skvěle, moc děkuji.

Takhle by to nešlo. Když byste si udělal tabulku podle vnořeného cyklu, tak byste si uvědomil že se jedná o tabulku X*Y, takže i tam musí být místo tvrdého čísla sloupce proměnná obecného typu. Podle ní se přiřazuje do sloupce Ale to je jenom jedna věc.

ano, to je pravda

Děkuji oběma za řešení a snahu wink mějte se fajn

#10 Re: Calc » Vynechání určitých řádků při opisu do dalšího listu - VYŘEŠENO » 10. 10. 2019 08:31:33

Děkuji za trpělivost, ale nevím jestli jsme se správně pochopili. Jde mi pouze o zkopírování řádků z jednoho listu do druhého, kde ve zdrojovém listu je sloupec (viz. můj první kód) oSheet2.getCellByPosition(8,j), který nabývá hodnot "d", "o", "n", "a" a "prázdná buňka". Záznamy se překopírují do druhého listu, ale pouze řádky, kde bude v prvním listu na oSheet2.getCellByPosition(8,j) jen "d", "a", "o". Problém je, že mi v mém kódu vznikají prázdné řádky na místě kde je "n" nebo "prázdná buňka" po překopírování do druhého listu. Toho se potřebuji zbavit. I tento poslední kód mi tam nechává prázdné řádky smile

#11 Re: Calc » Vynechání určitých řádků při opisu do dalšího listu - VYŘEŠENO » 9. 10. 2019 11:19:00

Díky za rady, zkoušel jsem vnořený cyklus, ale nefunguje to podle mých představ a pak i řešení co psal neutr, ale zdá se, že to nedám dohromady, i když na tom asi nic nebude. Našel by se nějaký "dobrák", který mi ukáže řešení v tom kompletním kódu?

#12 Calc » Vynechání určitých řádků při opisu do dalšího listu - VYŘEŠENO » 8. 10. 2019 14:51:41

davef6
Odpovědí: 13

Zdravím, mám soubor s několika listy a přepisuji makrem data z jednoho listu do druhého, ale při určité podmínce dojde k vynechání některých řádků. Nedaří se mi udělat to, aby v koncovém listu nebyly mezi daty prázdné řádky, poradí někdo jak na to?

Sub Start
    Dim sVar, sVal, svall, Old as string
    Dim iVar, iVal, iVall, iDelenec, iDelitel as Long
    iVar = GetLastRow(1)
    oSheet1 = thisComponent.Sheets(1)
    oSheet2 = thisComponent.Sheets(2)
    oSheet3 = thisComponent.Sheets(3)
    iVal = iVar
    For j = 1 To iVar
    For i = 0 To 9
    If InStr(oSheet2.getCellByPosition(8,j).String, "d") > 0 OR InStr(oSheet2.getCellByPosition(8,j).String, "o") > 0 or InStr(oSheet2.getCellByPosition(8,j).String, "a") > 0 Then
        Select Case i
            Case 0
            oSheet3.getCellByPosition(i,j).Formula = "=$slouceni.C"&(j+1)
            Case 1
            oSheet3.getCellByPosition(i,j).Formula = "=$slouceni.D"&(j+1)
            Case 2
            oSheet3.getCellByPosition(i,j).Formula = "=$slouceni.P"&(j+1)
            Case 3
            oSheet3.getCellByPosition(i,j).Formula = "=$slouceni.G"&(j+1)
            Case 4
            oSheet3.getCellByPosition(i,j).Formula = "=$slouceni.K"&(j+1)
            Case 5
            oSheet3.getCellByPosition(i,j).Formula = "=$slouceni.L"&(j+1)
            Case 6
            oSheet3.getCellByPosition(i,j).Formula = "=$slouceni.M"&(j+1)
            Case 7
            oSheet3.getCellByPosition(i,j).Formula = "=$slouceni.F"&(j+1)
            oSheet3.getCellByPosition(i,j).CellBackColor = RGB(238,238,238)
            Case 8
            oSheet3.getCellByPosition(i,j).Formula = "=$slouceni.N"&(j+1)
            Case 9
            oSheet1.getCellByPosition(23,j).Formula = "=IF($udaje_pro_druzstvo.I"&(j+1)&"="&Chr(34)&"d"&Chr(34)&";1;0)"
            oSheet3.getCellByPosition(i,j).Formula = "=$udaje_pro_druzstvo.I"&(j+1)
        End Select
    Else
        *****  něco  *****
    EndIf
    Next i
    Next j
end Sub

díky

#13 Re: Calc » Řazení sloupců - VYŘEŠENO » 24. 9. 2019 07:23:08

Díky, už mi to funguje, používal jsem to trochu jinak, než bylo potřeba

#14 Re: Calc » Řazení sloupců - VYŘEŠENO » 23. 9. 2019 13:21:30

Díky, funguje to, ale seřadí to pouze ten jeden sloupec a ostatní nechá na místě a pak data nesedí. Potřeboval bych, aby to dělalo to stejné, jako když označím celý sloupec a dám seřadit z-a, vyskočí dialogové okno rozsah řazení a tam je tlačítko rozšířit výběr. Po kliknutí se přehází i celé řádky a i v ostatních listech. Nyní mám toto:

Sub sortingData
	Dim Doc As Object
	Dim Sheet As Object
	Dim oCell As Object
	Dim SortRange As Object
	Dim oSortDesc(1) As New com.sun.star.beans.PropertyValue
	Dim oSortField(0) As New com.sun.star.table.TableSortField
	Doc = ThisComponent
	Sheet = Doc.Sheets(1)
	SortRange = Sheet.getCellRangeByName("F2:F"&GetLastRow(1)+1)
	oSortField(0).Field = 0
	oSortField(0).IsAscending = false
	oSortField(0).FieldType = com.sun.star.table.TableSortFieldType.AUTOMATIC  
	oSortDesc(0).Name = "SortFields"
	oSortDesc(0).Value = oSortField
	oSortDesc(1).Name = "ContainsHeader"
	oSortDesc(1).Value = False
	SortRange.sort(oSortDesc)  
End Sub

Function GetLastRow(ByVal i as integer) 'Čte zadaný list podle pořadí v sešitě = proměnná "i"
Dim x as integer 'x je nyní 0 - tedy první sloupec "A"
oSheet = ThisComponent.getSheets().getByIndex(i)
oTargetCell = oSheet.getCellByPosition(x, 0) 
If IsNull(oTargetCell) then
GetLastRow =oTargetCell.getRangeAddress.EndRow
Else 
oCursor = oSheet.createCursorByRange(oTargetCell) 
oCursor.gotoEnd 
GetLastRow = oCursor.getRangeAddress.EndRow  
End if 
End Function

#15 Calc » Řazení sloupců - VYŘEŠENO » 23. 9. 2019 11:22:32

davef6
Odpovědí: 4

Zdravím,

řeším teď jeden menší problém a věřím, že tady mi s ním tady bude schopen někdo poradit. Mám soubor ve kterém je několik listů. Ve druhém listu je sloupec, který potřebuji seřadit sestupně od nejvyššího čísla, ale zároveň aby se to řazení dostalo i do listu 3 a 4, kde je sloupec ze druhého listu vložen jako např. =$list2.F2. Samozřejmě je podmínka, aby i ostatní sloupce se seřadili. Jak na to makrem? Toto se děje po několika dalších věcech, které dělá makro, jen mi jen čistě o řazení. Díky za nakopnutí

Zápatí

Používáme FluxBB