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

#1 3. 5. 2013 09:43:12

cervicek
Člen
Registrace: 18. 4. 2013
Příspěvků: 7

Karteziánsky súčin - VYŘEŠENÝ

Zdravim potreboval by som poradit ako vytvorit Karteziánsky súčin dvoch stlcov mam napriklad stlpce

farba:               velkost:                vysledok:
   cierna                          s                          cierna s
   modra                           m                          cierna m   
   biela                           l                          cierna l
   cervena                         xl                         cierna xl
                                                              modra  s
                                                              modra  m 
                                                              modra  l
                                                              modra  xl
                                                              atd...

pouzivam to dost casto cize idealne by bolo automatizovane riesenie teda len vlozit vstupne stlpce a hned mat vysledok, alebo co najjednoduchsie.
ci bude vysledok v jednom stlpci alebo v dvoch mi je jedno.

dakujem

Editoval cervicek (7. 5. 2013 13:57:39)

Offline

#2 3. 5. 2013 10:45:06

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

Re: Karteziánsky súčin - VYŘEŠENÝ

Možná myslíte tohle
(pro slučování Buněk A1 a B1 ve kterých jsou údaje) a 2 uvozovky - mezi kterými je mezera)

=A1&" "&B1

nebo tohle

=CONCATENATE(A1;" ";B1)

V obou případech stačí tvar vzorce, ale je to lepší načíst do paměti a vložit zpět jen jako "hodnoty", tedy jen čísla a text.
   Pokud by to byly jen číselné hodnoty, tak to lze udělat jako formát čísla: - číslo1 (mezera) číslo2 a je to zase jen číslo, se kterým se dá pracovat.

Editoval neutr (3. 5. 2013 10:55:32)


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

Offline

#3 3. 5. 2013 11:28:27

cervicek
Člen
Registrace: 18. 4. 2013
Příspěvků: 7

Re: Karteziánsky súčin - VYŘEŠENÝ

toto mi je jasne ale to nemyslim, ak poznate SQL syntax myslim toto:
ak mate dve tabulky farba a velkost potom:

select nazov.farba, nazov.velkost from farba,velkost;(bez joinu)

teda chcem aby vysledok bol vsetky hodnoty z prveho stlpca s hodnotami z druheho stlpca.

Offline

#4 3. 5. 2013 12:03:21

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

Re: Karteziánsky súčin - VYŘEŠENÝ

Aha - jde tedy vlastně o relaci X:Y. Jde to určitě makrem, ale také nejspíš maticovým vzorcem. Tedy u maticového vzorce bych to musel asi zkoušet dost dlouho. V malíku (poznámkách) to má možná jenom lp.


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

Offline

#5 3. 5. 2013 12:10:54

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

Re: Karteziánsky súčin - VYŘEŠENÝ

Pokud to mají být jen vzorečky a data jsou ve sloupcích A a B

Ve sloupečku C: =INDEX($A$2:$A$5;(ROW()-ROW($C$2))/ROWS($B$2:$B$5)+1)
Ve sloupečku D: =INDEX($B$2:$B$5;MOD((ROW()-ROW($D$2));ROWS($A$2:$A$5))+1)

Offline

#6 3. 5. 2013 12:30:50

cervicek
Člen
Registrace: 18. 4. 2013
Příspěvků: 7

Re: Karteziánsky súčin - VYŘEŠENÝ

toto je tiez riesenie len to prehodit do calc-u

http://tootrickybyfar.blogspot.sk/2010/ … excel.html

ale aj tie vzorceky su super dakujem

Offline

#7 3. 5. 2013 14:46:34

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

Re: Karteziánsky súčin - VYŘEŠENÝ

Vloudila se chyba, druhý vzorec je chybně, má být

lp. napsal(a)

Ve sloupečku C: =INDEX($A$2:$A$5;(ROW()-ROW($C$2))/ROWS($B$2:$B$5)+1)
Ve sloupečku D: =INDEX($B$2:$B$5;MOD((ROW()-ROW($D$2));ROWS($B$2:$B$5))+1)


Přehlédl jsem automatizaci, můžete zkusit něco jako:

function KartSoucin(A as variant,B as variant, optional spojka as string) as variant
dim pole() as variant
dim dimA as long
dim dimB as long
dim i as long
dim j as long
dim l as long

	if IsMissing(spojka) then spojka = " "

	dimA = ubound(A,1) - lbound(A,1) + 1
	dimB = ubound(B,1) - lbound(B,1) + 1
	ReDim pole(1 to dimA*dimB,1 to 1)
	
	l = 1
	for i = lbound(A,1) to ubound(A,1)
		for j = lbound(B,1) to ubound(B,1)
			pole(l,1) = A(i,1) & spojka & B(j,1)
			l = l + 1
		next j
	next i
    KartSoucin = pole
end function

Funkce bere sloupce a spojí je přes volitelně zadávaný parametr spojka. Musí se zadávat jako matice (ctrl-shift-enter). Nic nekontroluje, ...

Offline

#8 3. 5. 2013 14:49:50

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

Re: Karteziánsky súčin - VYŘEŠENÝ

cervicek napsal(a)

toto je tiez riesenie len to prehodit do calc-u
http://tootrickybyfar.blogspot.sk/2010/ … excel.html

To řešení je hooodně pomalé v excelu i v calcu.

Offline

#9 7. 5. 2013 13:56:08

cervicek
Člen
Registrace: 18. 4. 2013
Příspěvků: 7

Re: Karteziánsky súčin - VYŘEŠENÝ

opravene vzorce su uplne super trosku som ich vylepsil a problem je vyrieseny este raz dik

stlpec C=INDEX(INDIRECT("$A$2:$A$"&$A$1);(ROW()-ROW($C$2))/ROWS(INDIRECT("$B$2:$B$"&$B$1))+1)
stlpec D=INDEX(INDIRECT("$B$2:$B$"&$B$1);MOD((ROW()-ROW($D$2));ROWS(INDIRECT("$B$2:$B$"&$B$1)))+1)

kde a1 =COUNTA(A2:A500)+1 ,a    b1 =COUNTA(B2:B500)+1

Offline

Zápatí