Kama Jansen

Kama Jansen Student, Akademia
Medyczna w
Amsterdamie

Temat: transpozycja

Witam poszukuje rozwiazania dla nastepujacego problemu. Potrzebuje przeksztalcic tabele w ten sposob zeby w kolumnie pierwszej nie bylo powtorzen, ale jednoczesnie po usunieciu dane z kolumny drugiej przesunely sie do trzeciej czy czwartej kolumny. PRoblem jest trudniejszy gdyz przed kazda transpozycja trzeba sprawdzac Date, jesli roznica w datach jest wieksza niz rok, pozostaje bez zmian!
Oto moj przyklad: kolumna pierwsza ID, kolumna druga Data, wyglada to tak:
ID Data
6451 27-10-2011
6646 26-10-2011
6646 16-11-2011
6611 21-10-2011
6611 21-10-2011
7165 29-12-2011
7165 01-02-2012
7165 11-06-2012
7044 12-01-2012
7044 24-10-2012
7229 12-02-2012
7229 01-03-2014

Po transformacji mialoby to wygladac tak:
6451 27-10-2011 - ta kolumna pozostaje jak byla bo ID jest pojedyncze
6646 26-10-2011 16-11-2011 - ID bylo dwa razy wiec druga linia zostala usunieta a Data przeszla do kolumny trzeciej
6611 21-10-2011 21-10-2011 - tu tak samo z dwoch lini jest jedna i Data z tej skasowanej przeszla do kolumy trzeciej
7165 29-12-2011 01-02-2012 11-06-2012 - tu bylo trzy razy te same ID wiec dwie linie zniknely i Daty przeszly do kolumny trzeciej i czwartej
7044 12-01-2012 - tu pozostalo bez zmian!!!! UWAGA!! mimo ze ID jest dwa razy takie samo musi pozostac bez zmian bo roznica miedzy datami jest wiecej niz rok!
7044 24-10-2014

Czy ktos wie jak to zrobic w Excelu?
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: transpozycja

Kama J.:
Czy ktos wie jak to zrobic w Excelu?
Tak. Program w vba. pętelka z 2 warunkami + sortowanie i usuwanie zbędnych wierszy, albo wpisywanie danych do innego arkusza.
Kama Jansen

Kama Jansen Student, Akademia
Medyczna w
Amsterdamie

Temat: transpozycja

Dzieki za reakcje Slawomir, mozesz ten kod tu napisac?
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: transpozycja

Kama J.:
Dzieki za reakcje Slawomir, mozesz ten kod tu napisac?
Jasne. Jeżeli wskażesz z posty z dowolnego forum w których komuś pomagasz.
Te fora są od pomagania i dzielenia się wiedzą, a nie pisania gotowców na zaliczenia studiów.
Andy L.

Andy L. ITM, VUB

Temat: transpozycja

Kama J.:
przed kazda transpozycja trzeba sprawdzac Date, jesli roznica w datach jest wieksza niz rok, pozostaje bez zmian!
7165 29-12-2011
7165 01-02-2012
7165 11-06-2012
Po transformacji mialoby to wygladac tak:
7165 29-12-2011 01-02-2012 11-06-2012 - tu bylo trzy razy te same ID wiec dwie linie zniknely i Daty przeszly do kolumny trzeciej i czwartej

A co w przypadku, gdy
pozycja 1: 7165 29/12/2011
pozycja 2: 7165 01/02/2012
pozycja 3: 7165 31/12/2012

poz.1 i poz.2 - mniejsza niż rok
poz. 2 i poz.3 - mniejsza niż rok
poz. 1 i poz.3 - wieksza niż rok

i co? przechodzi czy zostaje?

edit:
czy jednocześnie i tu i tu? :-)Ten post został edytowany przez Autora dnia 05.08.15 o godzinie 21:58
Kama Jansen

Kama Jansen Student, Akademia
Medyczna w
Amsterdamie

Temat: transpozycja

Dzieki Andy za pomyslenie nad problemem, chodzi o sprawdzanie tylko czy rok odstepu jest pomiedzy kolejnymi datami. Wiec rok rozniczy miedzy 1 a 2 data i potem rok roznicy miedzy 2 a 3 i potem miedzy 3 a 4 np. Jesli jest roznica w kolejno po sobie nastepujacych latach rok to to sie liczy, inaczej nie.
Kama Jansen

Kama Jansen Student, Akademia
Medyczna w
Amsterdamie

Temat: transpozycja

Sławomir B.:
Kama J.:
Dzieki za reakcje Slawomir, mozesz ten kod tu napisac?
Jasne. Jeżeli wskażesz z posty z dowolnego forum w których komuś pomagasz.
Te fora są od pomagania i dzielenia się wiedzą, a nie pisania gotowców na zaliczenia studiów.


Niestety nie mam swoich postow w ktorych komos pomagam. Na co dzien nie mam za bardzo czasu na siedzenie na forach teraz jednak myslalam ze moze ktos mi bedzie w stanie szybko pomoc. Na co dzien jestem doktorem na akademi medycznej w amsterdamie i moj kolega kardiochirug zamiast dostarczyc mi dane z przeprowadzonych operacji w odpowiednim formacie wlasnie dostarczyl mi jeden wielki plik excel z tysiacem przeprowadzonych operacji. Myslalam ze moze ktos bedzie w stanie pokazac mi szybki sposob na transpozycje tego zebym mogla dokonac dalszych analiz. Wyniki naszych analiz i porownanie z 19 szpitalami kardio-chirurgicznymi z calej holandii sa do obejrzenia na stronie: http://meetbaarbeter.com / boek2014. Pozdrawiam
Andy L.

Andy L. ITM, VUB

Temat: transpozycja

Kama J.:
Dzieki Andy za pomyslenie nad problemem, chodzi o sprawdzanie tylko czy rok odstepu jest pomiedzy kolejnymi datami. Wiec rok rozniczy miedzy 1 a 2 data i potem rok roznicy miedzy 2 a 3 i potem miedzy 3 a 4 np. Jesli jest roznica w kolejno po sobie nastepujacych latach rok to to sie liczy, inaczej nie.

wystarczy gdy zmieni się kolejność wpisów (pozycja 1 zostanie przeniesiona na pozycję 2 , po sortowaniu ) i już cała robota o kant .... potłuc bo wynik nijak nie pasuje do tego gdy zrobisz to bez sortowania. Brak powtarzalności wyników (inaczej: brak wstępnych założeń) a chyba jest to ważne w kardiochirurgowaniu :-))). Chyba bym nie wybrał tego szpitala (akademii) :P
Zdefiniuj twarde założenia bo na tej podstawie cokolwiek można zacząć robić, obojętnie czy formułami czy VBA. Formuła wychodzi trochę dłuuuga :) więc skłaniam się do opcji Sławka - VBA.

edit:
ale jeżeli chcesz się bawić formułami to możesz wykorzystać:
IF(), COUNTIF(), YEARFRAC(), IFERROR(), AND()
z adresowaniem mieszanym i zabawą z operatorami, wstępnie sortując tabelę po ID i po dacie. Bez tego chyba się nie da.
Rozwiązań jest prawdopodobnie kilka jeżeli nie kilkanaście.
Na bazie powyższych funkcji można osiągnąć to co zamierzasz.
RMB i Open in new tab "transpozycja" :-) można było pokusić się o eliminację takich samych dat ale już mi się nie chciało.
ps.
a na stronie i w książce nie ma nawet śladu jak wyglądają dane w tym wielkim arkuszu excela :-)Ten post został edytowany przez Autora dnia 08.08.15 o godzinie 12:47
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: transpozycja

Kama J.:
Sławomir B.:
Kama J.:
Dzieki za reakcje Slawomir, mozesz ten kod tu napisac?
Jasne. Jeżeli wskażesz z posty z dowolnego forum w których komuś pomagasz.
Te fora są od pomagania i dzielenia się wiedzą, a nie pisania gotowców na zaliczenia studiów.


Niestety nie mam swoich postow w ktorych komos pomagam. Na co dzien nie mam za bardzo czasu na siedzenie na forach teraz jednak myslalam ze moze ktos mi bedzie w stanie szybko pomoc. Na co dzien jestem doktorem na akademi medycznej w amsterdamie i moj kolega kardiochirug zamiast dostarczyc mi dane z przeprowadzonych operacji w odpowiednim formacie wlasnie dostarczyl mi jeden wielki plik excel z tysiacem przeprowadzonych operacji. Myslalam ze moze ktos bedzie w stanie pokazac mi szybki sposob na transpozycje tego zebym mogla dokonac dalszych analiz. Wyniki naszych analiz i porownanie z 19 szpitalami kardio-chirurgicznymi z calej holandii sa do obejrzenia na stronie: http://meetbaarbeter.com / boek2014. Pozdrawiam
Spoko. Przelej 50pln na http://www.pajacyk.pl/#kontakt i wyślij mi potwierdzenie na mail: slawomirbroda@gmail.com to napiszę Ci ten skrypt.

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: transpozycja

Wojciech G.:
Można też tak ;) :
http://www.goldenline.pl/grupy/Komputery_Internet/afin...
Można?
A jak zrealizowany zostanie warunek:
"7044 12-01-2012 - tu pozostalo bez zmian!!!! UWAGA!! mimo ze ID jest dwa razy takie samo musi pozostac bez zmian bo roznica miedzy datami jest wiecej niz rok"

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: transpozycja

Wojciech G.:
Sławomir B.:
Wojciech G.:
Można też tak ;) :
http://www.goldenline.pl/grupy/Komputery_Internet/afin...
Można?
A jak zrealizowany zostanie warunek:
"7044 12-01-2012 - tu pozostalo bez zmian!!!! UWAGA!! mimo ze ID jest dwa razy takie samo musi pozostac bez zmian bo roznica miedzy datami jest wiecej niz rok"
Pewnie jakiś HAVING aboco, ... HAVING MAX()-MIN(), po to te zabawki zostały wymyślone.
Nadal chętnie zobaczę jak robi Pan ten warunek używając having.

Wojciech Gardziński

Wypowiedzi autora zostały ukryte. Pokaż autora
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: transpozycja

Wojciech G.:
Pięć dych na pajacyka.
Sławomir B.:
...
Pewnie jakiś HAVING aboco, ... HAVING MAX()-MIN(), po to te zabawki zostały wymyślone.
Nadal chętnie zobaczę jak robi Pan ten warunek używając having.
Ale ja nie chcę gotowego rozwiązania, tylko zwykły opis jak having zapewni wymaganą zmienność w poziomie agregacji danych.
Przemysław Zasadowski

Przemysław Zasadowski
Technolog-konstrukto
r, Odlewnia Żeliwa
Lisie Kąty

Temat: transpozycja

Witam,
przepraszam za moją pierwszą błędną wiadomość. Niepoprawnie odczytałem zadanie.
Plik z rozwiązaniem w http://www.speedyshare.com/BSs45/Dane.xlsx.

Założyłem, że nie ma więcej jak 4 rekordów pod jednym ID. Jeżeli tak jest, a sprawdzisz to tabelą przestawną, to musisz rozszerzyć formuły o kolejne kolumny. Jeżeli jest ich dużo więcej jak 4, to moje rozwiązanie jest niepraktyczne. Jeśli jest 4 lub mniej, to po wrzuceniu danych i rozsunięciu formuł filtruj bez pustych i masz wyniki.

PozdrawiamTen post został edytowany przez Autora dnia 13.08.15 o godzinie 13:27
Andy L.

Andy L. ITM, VUB

Temat: transpozycja

a gdzie warunek:
" Jesli jest roznica w kolejno po sobie nastepujacych latach rok to to sie liczy, inaczej nie. "
bo przy różnicy większej niż rok w twoim excelu otrzymuję:

7165 01-02-2012 2012-02-01
7165 11-06-2013 -36-41 #VALUE! #VALUE! #VALUE! #VALUE! #VALUE!

poza tym założyłeś, że daty źródła są tekstem a nie datą (format) i w przypadku jeżeli data jest datą CONCATENATE() łączy prawdziwą postać daty czyli liczbę.

w twoim excelu zaznacz B9, naciśnij F2, klepnij EnterTen post został edytowany przez Autora dnia 14.08.15 o godzinie 00:13
Przemysław Zasadowski

Przemysław Zasadowski
Technolog-konstrukto
r, Odlewnia Żeliwa
Lisie Kąty

Temat: transpozycja

Andy,
po pierwsze zakładająca temat popełniła błąd we własnym opisie. Istnieje różnica między danymi jakie wstawiła a ich opisem.
7044 12-01-2012
7044 24-10-2012

Raz jest rok 2012, raz 2014.
7044 12-01-2012 - tu pozostalo bez zmian!!!! UWAGA!! mimo ze ID jest dwa razy takie samo musi pozostac bez zmian bo roznica miedzy datami jest wiecej niz rok!
7044 24-10-2014

Po drugie przedstawiłem rozwiązanie na podstawie danych jakie miałem. W naszej dyskusji ważne jest jak rozwiązać problem, a nie to jaki jest format komórki w pliku źródłowym (którego nie ma).

Formuły w mojej ocenie rozwiązują problem. Jeżeli różnica jest mniejsza niż rok przenoszą do kolejnych kolumn. Jeżeli jest większa zostawiają w następnej linii. Poprawnie rozwiązuje to ostatnia linia, gdzie różnica jest większa niż rok. Stestuj to zmieniając gdzieś datę by był więcej niż rok. Zobaczysz co się stanie :-)
PozdrawiamTen post został edytowany przez Autora dnia 14.08.15 o godzinie 07:15
Andy L.

Andy L. ITM, VUB

Temat: transpozycja

wlaśnie zmieniłem w proponowanej komórce B9 i uzyskałem to co pokazałem. Plikiem źródłowym (na którego podstawie napisałem to co napisałem) był twój plik Dane-1.xlsx i dlatego piszę o formacie komórki.
W twoim pliku daty mają format tekstu, spróbuj zmienić formatowanie z Date na Number, bedziesz miał cały czas datę a tak być nie powinno. To raz, a dwa to ID moga sie powtarzać, daty również i daty mogą byc wieksze, równe bądź mniejsze od poprzednich - datego potrzebne jest sortowanie.

mimo wszystko proponuję jednak abyś ty przetestował: w twoim excelu zaznacz B9, naciśnij F2, klepnij Enter i zobacz co uzyskasz.

Excel przy ręcznym wpisywaniu daty automatycznie formatuje na Date a pozostałe komórki które nie były edytowane mają nadal format Text.
Poza tym możesz napisać w jakim celu zmieniasz kolejność z dd-mm-yyyy na yyyy-mm-dd ? Tak z ciekawości chciałbym wiedzieć :)

edit:
tak naprawdę to ta kolumna (u ciebie C) jest zupełnie niepotrzebna bo wszystko działa bez tych zamian miejsc - wg. twoich formuł :) I daty w colB mogą być jako daty i równiez mogą być tekstem. Te concatenate() wprowadza niepotrzebne zamieszanie.
Mankamentem twojego rozwiązania (wg. mnie) jest to, że formuły są "nieprzenoszalne" bez ich edycji i odwołują się do uzyskanego w poprzednim kroku wyniku i nie uwzględniasz lat przestępnych.
zmodyfikowany plik Dane-1Ten post został edytowany przez Autora dnia 14.08.15 o godzinie 09:02
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: transpozycja

Wojciech G.:
Pięć dych na pajacyka.
Sławomir B.:
...
Pewnie jakiś HAVING aboco, ... HAVING MAX()-MIN(), po to te zabawki zostały wymyślone.
Nadal chętnie zobaczę jak robi Pan ten warunek używając having.
Doczekam się tego wyjaśnienia co miał Pan na myśli, czy mogę przyjąć, że brak odpowiedzi to przyznanie mi racji, że jednak się nie da?

Następna dyskusja:

Transpozycja tablicy do tab...




Wyślij zaproszenie do