Strona 1 z 1

Jak połączyc dwa wiersze gdy są dwie takie same wartości ?

: śr sty 29, 2014 12:49 am
autor: nowicjusz
W jaki sposób mogę połączyć dane z tabeli A:G i tabeli I:M na zasadzie takiej :
jeżeli w wierszu A1:G1 komórka B1=I1 i E1=J1 wtedy wynikiem jest zakres A1:G1 & K1:M1 w innym przypadku puste pole lub 0
Jak połączyć dwa wiersze w jeden je żeli wiersz pierwszy ma dwie wspólne wartości ?

Re: Jak połączyc dwa wiersze gdy są dwie takie same wartośc

: śr sty 29, 2014 1:49 am
autor: Jan_J
Rozumiem, że pytanie dotyczy danych z tych samych wierszy w dwóch tabelach. Formuła macierzowa

Kod: Zaznacz cały

=IF((B1=I1)*(E1=J1);TRANSPOSE(INDEX(A1:M1;{1;2;3;5;6;7;11;12;13})); TRANSPOSE({0;0;0;0;0;0;0;0;0}))
Takie formuły zatwierdza się <Ctrl+Shift+Enter>. Można je kopiować z obszaru do obszaru, ale nie można przeciągać.
Pierwszy {...} jest listą numerów elementów jakie należy pobrać z pasującego wiersza. Drugi {...} jest listą elementów wstawianych w sytuacji awaryjnej. TRANSPOSE użyłem, żeby wynik mieścił się w wierszu a nie w kolumnie.

Po polsku nazwy funkcji są inne:
TRANSPOSE -> TRANSPONUJ
IF -> JEŻELI
INDEX -> INDEKS

Re: Jak połączyc dwa wiersze gdy są dwie takie same wartośc

: śr sty 29, 2014 11:06 am
autor: nowicjusz
ta formuła działa - dziękuję
Mam jedno pytanie czy ona nie jest równoznaczna z taką :

=Jeżeli(I(B1=I1;E1=J1);A1&" "&B1&" "&C1&" "&D1&" "&E1&" "&F1&" "&G1&" "&K1&" "&L1&" "&M1;0) ???

Na zdjęciu przedstawiam łączenie dwóch tabel w ten sposób w jaki chcę
gdzie jedna tabela jest w zakresie A6:G1000 a druga transportowana
poziomo .

Taki efekt jest zadowalający lecz połączenie 1000 wierszy z drugą
tabelą która zawiera 1500 wierszy ( nawet jej całkowicie nie wkleję gdyż arkusz jest zbyt wąski )
obciąż mi komputer i nie jestem w stanie wykonać obliczeń.

Pozatym drugim problemem jest ustawienie wyników w jednej kolumnie .
Muszę kopiować wszystkie w ten sposób obliczone komórki do notatnika
usówać " 0 " lub spację czy separator ( w zależności co wstawię w sytuacji gdy obliczenia nie spełniają kryteriów )
Następnie ustawić wyniki tak aby tworzyły kolumny o identycznych odstępach i każdą z tych kolumn
przekopiować do jednej kolumny - czasochłonne męczące i uciążliwe .


Czy jest jakiś sposób aby wyniki uzyskać w jednej kolumnie ?
Puste miejsca bez problemu usunę poprzez załóżenie filtra standardowego
i wybór niepustych komórek .
Wszystkie będą zaczynały się w jednej komórce więc puste ominę a niepute przekompiuję celem dalszej analizy.

Re: Jak połączyc dwa wiersze gdy są dwie takie same wartośc

: śr sty 29, 2014 5:09 pm
autor: Jan_J
nowicjusz pisze:[...] czy ona nie jest równoznaczna z taką :

=Jeżeli(I(B1=I1;E1=J1);A1&" "&B1&" "&C1&" "&D1&" "&E1&" "&F1&" "&G1&" "&K1&" "&L1&" "&M1;0) ???
Nie, bo moja robi kopię wiersza tabeli, a Twoja łączy rubryki w jeden tekst.
Taki efekt jest zadowalający lecz połączenie 1000 wierszy z drugą
tabelą która zawiera 1500 wierszy ( nawet jej całkowicie nie wkleję gdyż arkusz jest zbyt wąski )
obciąż mi komputer i nie jestem w stanie wykonać obliczeń.
Moja propozycje pracuje na synchronicznych wierszach. Przetworzenie 1500 wierszy współbieżnie to nie problem w arkuszu.
Jeżeli tabele różnią się długością, to ja rozumiem, że chcesz dopasować dany wiersz do innego w drugiej tabeli. Powstaną pytania: czy jest to jednoznaczne, i co zrobić, jeżeli nie jest. Poza tym jest to operacja na 1500 x 1000 = 1500000 możliwości, i sugeruję użycie bazy danych, w której łączenie różnych tabel załatwia się od ręki operacją JOIN.
Pozatym drugim problemem jest ustawienie wyników w jednej kolumnie .
Muszę kopiować wszystkie w ten sposób obliczone komórki do notatnika
usówać " 0 " lub spację czy separator ( w zależności co wstawię w sytuacji gdy obliczenia nie spełniają kryteriów )
Następnie ustawić wyniki tak aby tworzyły kolumny o identycznych odstępach i każdą z tych kolumn
przekopiować do jednej kolumny - czasochłonne męczące i uciążliwe .
No bo pytałeś o synchroniczne operacje, a wychodzi na to, że musisz dopasowywać.
Czy jest jakiś sposób aby wyniki uzyskać w jednej kolumnie ?
Puste miejsca bez problemu usunę poprzez załóżenie filtra standardowego
i wybór niepustych komórek .
Wszystkie będą zaczynały się w jednej komórce więc puste ominę a niepute przekompiuję celem dalszej analizy.
Aj, jeżeli coś wymaga ręcznych ingerencji, to znaczy że jest źle zaprojektowane.

Najlepiej zamiast dziubdziać w arkuszu przyjrzyj się relacyjnym bazom danych.

Re: Jak połączyc dwa wiersze gdy są dwie takie same wartośc

: śr sty 29, 2014 5:59 pm
autor: nowicjusz
Wszystko rozumiem , dziękuję za obszerne tłumaczenie ; postaram się zapoznać z bazami danych i operacją Join .

Dodam tylko tak ogólnie że chodzi o połączenie pierwszego wiersza z tabeli 1 z każdym wierszem z tabeli 2 potem drugiego wiersza z tabeli 1 z każdym wierszem
z tabeli 2 i w końcu ostatniego wiersza z tabeli 1 z każdym wierszem z tabeli 2 pod warunkiem że :

Komórka 1 tabela 1 = komórka 1 tabela 2 i komórka 2 tabela 1 = komórka 2 tabela 2
Inaczej mówiąc jeśli są dwa arkusze : arkusz X1 i arkusz X2 i w każdym z nich tabele ,
Tabela X1.A1:G1000
Tabela X2.A1:E1500

Tak tabele mają różne długości i te powiedzmy 500 wierszy z krótszej tabeli można zastąpić liczbą 99 ( będzie to neutralna liczba której nie ma w bazie )

Porównywane komórki A1 i B1 w arkuszu X1 i A1 i B1 w arkuszu X2 mają takie same wartości tzn w jednym i drugim na te 1500 i 1000 wierszy będzie np
10 różnych liczb : 1 10 20 30 32 33 34 35 36 37 i żadnych inny nie będzie - będą to takie same liczby w obu arkuszach i jeżeli jedna i druga liczba jest w jednym i drugim arkuszu wtedy łącze cały wiersz z arkusza X1 z trzema ostatnimi liczbami z porównywanego wiersza z arkusza drugiego X2 i otrzymuję ciąg 10 liczb

Wiem że dziubdzianie jest do niczego :) lecz moja wiedza na temat baz danych tak samo do niczego więc robię co mogę

Re: Jak połączyc dwa wiersze gdy są dwie takie same wartośc

: śr sty 29, 2014 10:07 pm
autor: Jan_J
W arkuszu istnieją funkcje wyszukujące (podaj.pozycję, wyszukaj), które w pewnym zakresie umożliwiają dopasowywanie wierszy w dwóch tabelach/obszarach. Dopasowanie ze względu na klucz złożony (dwie kolumny) nie jest oczywiste, i wymaga wektorowej składni formuł. Być może także będą potrzebne pomocnicze kolumny.
Przy tym dopasowywanie nie wymaga jednakowej długości obu tabel. Tak że pomysł z neutralną wartością 99 niczego nie upraszcza.

W systemie relacyjnym

Kod: Zaznacz cały

select * from tabela1 join tabela2 on tabela1.pole1 = tabela2.pole1 and tabela1.pole2 = tabela2.pole2
albo

Kod: Zaznacz cały

select * from tabela1 join tabela2 using (pole1, pole2)
Ot, i cała filozofia. Prawie cała, bo jeszcze kolumny musimy wybrać.

Re: Jak połączyc dwa wiersze gdy są dwie takie same wartośc

: czw sty 30, 2014 1:00 am
autor: nowicjusz
Dziękuję za rozwiązanie :

Dostosowałem się i zastosowałem :

SELECT "Tabela3"."1","Tabela3"."2","Tabela3"."3", "Tabela3"."4", "Tabela3"."5", "Tabela3"."6", "Tabela3"."7", "Tabela4"."10" , "Tabela4"."11", "Tabela4"."12" FROM "Tabela3" join "Tabela4" on "Tabela3"."3" = "Tabela4"."8" and "Tabela3"."5" = "Tabela4"."9"

U mnie działa i chyba nie ma błędu ? Nie znam się i ucze - to moje pierwsze zajęcie z baza danych ale działa :)

Dzięki - " dziubdzianie jest do niczego "