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

#1 19. 6. 2017 10:47:52

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 488

rozdvojení tabulky, nevyřešeno ale uzavřeno :-)

Ahoj, nemáte někdo návod na takovouhle věc? Potřebuji z tabulky dejme tomu ve sloupcích G a H udělat tabulku ve sloupci A takto: A1=G1; A2=H1; A3=G2; A4=H2; A5=G3; A6=H3 atd. Umím to pomocí složitějších vzorců, ale zajímalo by mne zda to nelze nějakým prostý tažením nebo kopírováním. Nějak se mi to nedaří.

Editoval ludviktrnka (20. 6. 2017 08:40:20)


LibreOffice 5.2.2.2

Offline

#2 19. 6. 2017 11:26:49

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,287

Re: rozdvojení tabulky, nevyřešeno ale uzavřeno :-)

Jestli tomu dobře rozumím tak se střídají 2 různé cíle. Jednou je to buňka v "G" a pak v "H". problém je v tom že záznamy ve sloupci A rostou dvakrát rychleji :
A1 čte z G1
A2 čte z H1
A3 čte z G2
A4 čte z H2
A5 čte z G3
A6 čte z H3
     Tedy vytvořit na toto vzorec který by se kopíroval tažením je asi opravdu machrovinka. Nicméně by to šlo pomocí INT a MOD. MOD (modulo) otestuje zda je řádek sudý nebo lichý a podle toho načte buď G, nebo H. INT(ROW()/2) zjistí jaký řádek v G, H se má číst.
     Já se dnes dostanu domů až později odpoledne a tak nebude asi moc času (mám také několik restů byl jsem pryč 4 dny). Také si stejně myslím že byste si mohl poradit sám. Pokud se nepletu ve jménu funkce tak Indirect, nebo Match nakrmený pomocí Address(INT(ROW()/2);7(8),4). mělo by to být zabaleno v IF(MOD(ROW();2)=1(0);...;...)

Editoval neutr (19. 6. 2017 11:28:24)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 19. 6. 2017 13:18:45

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 488

Re: rozdvojení tabulky, nevyřešeno ale uzavřeno :-)

Jak jsem psal vzorci to umím, jde mi o nějakou metodu "inteligentního roztažení" či kopírování. Ale možná to ani nejde. Jen jsem si říkal že třeba nějakou vychytávku neznám. (Jinak vzorcem to řeším pomocí index s řádkem a sloupcem závislým na ROW(), není to až takový problém, jen se ptám na jiný způsob bez potřeby vzorců)


LibreOffice 5.2.2.2

Offline

#4 19. 6. 2017 19:09:46

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 488

Re: rozdvojení tabulky, nevyřešeno ale uzavřeno :-)

... jinak tedy mám pocit že co se týká prodloužení řady je Calc v LO docela hloupej. Například roztažení řady:
1
1
2
2
atd. 3,3,4,4 ....
je prostě nemožné stále se snaží o nějaké vylomeniny (hlavně opakování daného čísla 3x a nikoli 2x), vůbec nechápu jaké to má zásady. Říkal jsem si že pokud se mi toto podaří, třeba by se podařilo i to pratažení "obkročného" vzorce. Ale nepodařilo se ani jedno.


LibreOffice 5.2.2.2

Offline

#5 19. 6. 2017 20:24:00

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,287

Re: rozdvojení tabulky, nevyřešeno ale uzavřeno :-)

Já mám zkušenost že normální vzorec mohu kopírovat tažením za růžek. Ale pokud potřebujete něco jako když se vkládají za sebou dny v týdnu - pak musíte vytvořit svůj "řazený seznam". Tedy NÁSTROJE > MOŽNOSTI > LIBRE OFFICE (AOO) > CALC > ŘAZENÉ SEZNAMY.
     Ovšem to musíte vykoumat. Některé věci se musí zadat textovým řetězcem (Po,Út,St,...) nebo podobně měsíce. Takže jsem skeptický k tomu snadnému řešení.


     Osobně bych to řešil také někdy pomocí 4 pomocných sloupců v prvním hodnota z G a vedle číslo řádku pro G. Ve třetím sloupci obsah H a číslo řádku jako G+1 ve čtvrtém sloupci. Druhý řádek by načítal jako číslo řádku předchozí + 2.
     Když se toto snadné řešení vykopíruje tak aby to byly jen hodnoty. Vystříhne se H(+ řádek pro H) a vloží se pod hodnoty G (+ řádek pro G). Pak stačí seřadit podle řádků a vložit do "A". Tak a nebo použijeme vzorec. (Ve vzorci může být také OFFSET - podle mne je to vzorcem docela technické a tažením za růžek se to dá kopírovat.)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#6 19. 6. 2017 23:47:28

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 756

Re: rozdvojení tabulky, nevyřešeno ale uzavřeno :-)

Pro inspiraci (chce to ještě pár věcí ošetřit - hodnota místo pole, více oblastí, ...). Zadává se maticově :

Function Pole2Vektor(vRange() as Variant, optional PoRadcich as boolean, optional DoSloupce as boolean) as variant
Dim k&
Dim vBunka as variant

	If IsMissing (PoRadcich) Then PoRadcich = true
	If IsMissing (DoSloupce) Then DoSloupce = true
	If PoRadcich Then vRange = Transpose(vRange)

	k = (UBound(vRange()) - LBound(vRange()) + 1) *(UBound(vRange(), 2) - LBound(vRange(), 2) + 1)
	Dim Vysledek(1 to k, 1 to 1) as variant

	k = 0
	For Each vBunka in vRange
		k = k + 1
	Vysledek(k, 1) = vBunka
	next
	
	If not DoSloupce Then Vysledek() = Transpose(Vysledek())
	
	Pole2Vektor = Vysledek
End Function

Function Transpose(v() as variant) as variant
Dim i%, j%
Dim d( LBound(v(), 2) to UBound(v(), 2), LBound(v()) to UBound(v())) as variant

	For i = LBound(v()) to UBound(v())
		For j = LBound(v(), 2) to UBound(v(), 2)
			d(j, i) = v(i, j)
		Next
	Next

	Transpose = d
End Function

Offline

#7 20. 6. 2017 06:40:41

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,287

Re: rozdvojení tabulky, nevyřešeno ale uzavřeno :-)

Tak jsem se dostal domů a konečně mohl otestovat vzorec :

=IF(MOD(ROW();2)=1;INDIRECT(ADDRESS(INT(ROW()/2)+1;7;4));INDIRECT(ADDRESS(INT(ROW()/2);8;4)))

     Stačí ho vložit do buňky ve sloupci A a kopírovat tažením za růžek, nebo klasicky. Ovšem je to něco mimo Vaši představu. Snad jen to dát například do automatických oprav - nahrazovat například heslo "MojeRozdělení" za vzorec. Také by šlo udělat funkci podobně jak píše "lp." už třeba s tím, že funkce najde konec a rovnou to vykopíruje.


PS :
Vzorec startuje korektně na lichém řádku - nejlépe v prvním. Ve třetím už pracuje o dva řádku posunutý dolů (první dva řádky obsahují nulu a správné hodnoty jsou od 3. řádku). při startu na 5. řádku už vynechává 4 řádky.

Editoval neutr (20. 6. 2017 07:53:43)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#8 20. 6. 2017 08:39:18

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 488

Re: rozdvojení tabulky, nevyřešeno ale uzavřeno :-)

to lp: super, funguje to nádherně. Nemyslím sice že to použiji, mám k maticím jejichž výsledkem je zase matice takový opatrný vztah, prostě s tím neumím dobře pracovat, ale jak říkám, výsledek je přesný.


To téma jsem založil hlavně proto že jsem myslel že někde opomíjím nějakou možnost "inteligentního tažení vzorce", ostatní možnosti mě až tak netrápí, ale maticové makro je rozhodně inspirativní, to moc neumím.

abych to ukončil použil jsem už na začátku takovýto resp. podobný vzorec:
=INDEX($G$1:$H$100;ROUNDUP(ROW()/2);IF(ISODD(ROW());1;2))


ale myslím, že by stálo za to, aby calc uměl lépe analyzovat raztahovanou oblast jednoduchých vzorců a odhadovat logické pokračování řady, zas tak velká matematika to není.


EDIT: a ještě abych přiblížil praktické užití. Jde o tabulku kde je název stroje, pronajatý čas a pronajatá vzdálenost. Každá položka, tedy čas a vzdálenost jsou samostatné položky faktury, proto je potřeba z toho udělat tabulku stroj1 čas, stroj1 vzálenost, stroj2 čas, stroj2 vzdálenost atd. pěkně pod sebou. Myslím že spousta méně zkušených uživatelů prostě napíše vzorce ručně, což opravdu není ideál.

Editoval ludviktrnka (20. 6. 2017 08:50:06)


LibreOffice 5.2.2.2

Offline

Zápatí