Sławomir Broda

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

Temat: Odpiwotowywanie danych

Wojciech G.:
Sławomir B.:
eeee, szkoda klawiatury
Co, aptekę zamknęli i nie ma antybiotyku? Szkoda. Są, na szczęście, apteki 24/7.
Podawałem już kiedyś Panu porównanie rozmowy z szanownym Panem do gry z gołębiem w szach.
Znów się Pan narobił na szachownicę i cieszy się z wygranej.
Sławomir Broda

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

Temat: Odpiwotowywanie danych

Andrzej O.:
Wojciech G.:
Ciekaw jestem kiedy Afin będzie posiadał nowatorskie mnożenie?
W następnym dodatku. Ale tylko w opcji payperview :).
Wojciech Gardziński

Wojciech Gardziński Mieć rację godzinę
wcześniej niż inni:
przez godzinę być
...

Temat: Odpiwotowywanie danych

Sławomir B.:
Andrzej O.:
Wojciech G.:
Ciekaw jestem kiedy Afin będzie posiadał nowatorskie mnożenie?
W następnym dodatku. Ale tylko w opcji payperview :).
Panie Szanowny, a właściwie Panowie Szanowni!
Jak Pan piszesz, że się Pan nie będziesz odzywał, TO PAN SIĘ NIE ODZYWAJ! Dotrzymaj Pan wreszcie słowa!
Sławomir Broda

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

Temat: Odpiwotowywanie danych

Przy okazji potwór w vba :).

Sub unpivot_data()
With Application
w = .InputBox("Podaj zakres danych wiersza.", "Wiersze", , , , , , 64)
z = .InputBox("Podaj zakres danych kolumny do konsolidacji.", "Kolumny", , , , , , 64)
Set wyjscie = .InputBox("Podaj zakres wyjscia.", "Wyjscie", , , , , , 8)
End With

nazwa = InputBox("Podaj nazwę zakresu", "Wiersz", "Miesiąc")
ikol = UBound(w, 2) + 2
iwie = (UBound(z, 1) - 1) * UBound(z, 2)
ReDim wynik(0 To iwie, 1 To ikol)

For k = LBound(w, 2) To UBound(w, 2)
wynik(0, k) = w(1, k)
Next k

wynik(0, k) = nazwa
wynik(0, k + 1) = "Wartość"

For i = LBound(z, 1) + 1 To UBound(z, 1)
For j = LBound(z, 2) To UBound(z, 2)

wyj = ((i - 2) * 12) + j

For l = LBound(w, 2) To UBound(w, 2)
wynik(wyj, l) = w(i, l)
Next l

wynik(wyj, l) = z(1, j)
wynik(wyj, l + 1) = z(i, j)


Next j
Next i

Set ZakresDocelowy = Range(wyjscie, Cells(wyjscie.Row + iwie, wyjscie.Column + ikol - 1))

ZakresDocelowy.Value = wynik



End Sub

Sławomir Broda

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

Temat: Odpiwotowywanie danych

Wojciech G.:
Sławomir B.:
Andrzej O.:
Wojciech G.:
Ciekaw jestem kiedy Afin będzie posiadał nowatorskie mnożenie?
W następnym dodatku. Ale tylko w opcji payperview :).
Panie Szanowny, a właściwie Panowie Szanowni!
Jak Pan piszesz, że się Pan nie będziesz odzywał, TO PAN SIĘ NIE ODZYWAJ! Dotrzymaj Pan wreszcie słowa!
A gdzie ja napisałem, że nie będę się odzywał ?
Stefan Trygiel

Stefan Trygiel Analityk Finansowy,
KLIMEX

Temat: Odpiwotowywanie danych

Wojciech G.:
Sławomir B.:
Andrzej O.:
Wojciech G.:
Ciekaw jestem kiedy Afin będzie posiadał nowatorskie mnożenie?
W następnym dodatku. Ale tylko w opcji payperview :).
Panie Szanowny, a właściwie Panowie Szanowni!
Jak Pan piszesz, że się Pan nie będziesz odzywał, TO PAN SIĘ NIE ODZYWAJ! Dotrzymaj Pan wreszcie słowa!


złość piękności szkodzi :). To ja pisałem, że się nie będę odzywał... żartowałem. Nie mogę się nie odzywać jak czytam o tak przełomowych wynalazkach.

Proponuję kolejne wynalazki i odkrycia: siła ciążenia, teoria względności, elektryczność.... albo może komputer panowie ponownie wynajdą?
Wojciech Gardziński

Wojciech Gardziński Mieć rację godzinę
wcześniej niż inni:
przez godzinę być
...

Temat: Odpiwotowywanie danych

Stefan T.:
złość piękności szkodzi :)
Przekonałeś mnie Bluzgusie, już się nie denerwuję, żeby ocalić.
To ja pisałem, że się nie będę odzywał... żartowałem.
Ach, prawda, prawda...
Już nic nie wiem, nic nie rozumiem... Może cały Ty jesteś jakimś wielkim żartem? Tylko kogo?
Nie mogę się nie odzywać jak czytam o tak przełomowych wynalazkach.
Kto każe się odzywać, skoro nie możesz się nie odzywać?

Proponuję kolejne wynalazki i odkrycia: siła ciążenia, teoria względności, elektryczność.... albo może komputer panowie ponownie wynajdą?
Nie, no jest wynalazek, który chciałbym wynaleźć - pałkę na Was.

PS
Ponieważ imć Łukasz jest niemożliwie upierdliwy, jego wrzutki trafiają bezpośrednio na śmietnik.Ten post został edytowany przez Autora dnia 03.06.13 o godzinie 16:36
Łukasz D.

Łukasz D. ITdoors.pl

Temat: Odpiwotowywanie danych

Wojciech G.:
Stefan T.:
złość piękności szkodzi :)
Przekonałeś mnie Bluzgusie, już się nie denerwuję, żeby ocalić.
To ja pisałem, że się nie będę odzywał... żartowałem.
Ach, prawda, prawda...
Już nic nie wiem, nic nie rozumiem... Może cały Ty jesteś jakimś wielkim żartem? Tylko kogo?
Nie mogę się nie odzywać jak czytam o tak przełomowych wynalazkach.
Kto każe się odzywać, skoro nie możesz się nie odzywać?

Proponuję kolejne wynalazki i odkrycia: siła ciążenia, teoria względności, elektryczność.... albo może komputer panowie ponownie wynajdą?
Nie, no jest wynalazek, który chciałbym wynaleźć - pałkę na Was.

PS
Ponieważ imć Łukasz jest niemożliwie upierdliwy, jego wrzutki trafiają bezpośrednio na śmietnik.

To straszne...myśli Pan, że to pomoże dalej naginać rzeczywistość?
Łukasz D.

Łukasz D. ITdoors.pl

Temat: Odpiwotowywanie danych

P.S. Znów Pan się mija z prawdą. Bo inaczej w jaki sposób opublikowałem te posty?

Bezpośrednio to co najwyżej trafiają tam gdzie je wpisze. Do śmietnika to przenosi je Pan.
Sławomir Broda

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

Temat: Odpiwotowywanie danych

Wojciech G.:
Stefan T.:
PS
Ponieważ imć Łukasz jest niemożliwie upierdliwy,
W porównaniu z Panem ? Czy ze średnią krajową ?
Sławomir Broda

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

Temat: Odpiwotowywanie danych

Dlaczego w jakiś złośliwy sposób nie skomentował Pan mojego kodu ?
Ps.: Poniżej nowsza wersja.

Sub unpivot_data()
With Application
w = .InputBox("Podaj zakres danych wiersza.", "Wiersze", , , , , , 64)
z = .InputBox("Podaj zakres danych kolumny do konsolidacji.", "Kolumny", , , , , , 64)
Set wyjscie = .InputBox("Podaj zakres wyjscia.", "Wyjscie", , , , , , 8)
End With

nazwa = InputBox("Nazwa zakresu konsolidacji.", "Wyjscie", "Miesiąc")
extra_n = InputBox("Extra nazwa", "Extra", "MPK")
extra = InputBox("Extra", "Extra", "O810")
ikol = UBound(w, 2) + 2
iwie = (UBound(z, 1) - 1) * UBound(z, 2)
ReDim wynik(0 To iwie, 0 To ikol)

wynik(0, 0) = extra_n
For k = LBound(w, 2) To UBound(w, 2)
wynik(0, k) = w(1, k)
Next k

wynik(0, k) = nazwa
wynik(0, k + 1) = "Wartość"

For i = LBound(z, 1) + 1 To UBound(z, 1)
For j = LBound(z, 2) To UBound(z, 2)

wyj = ((i - 2) * 12) + j

wynik(wyj, 0) = extra

For l = LBound(w, 2) To UBound(w, 2)
wynik(wyj, l) = w(i, l)
Next l

wynik(wyj, l) = z(1, j)
wynik(wyj, l + 1) = z(i, j)


Next j
Next i
sht = wyjscie.Parent.Name
Set ZakresDocelowy = Sheets(sht).Range(wyjscie, Sheets(sht).Cells(wyjscie.Row + iwie, wyjscie.Column + ikol))

ZakresDocelowy.Value = wynik



End Sub
Wojciech Gardziński

Wojciech Gardziński Mieć rację godzinę
wcześniej niż inni:
przez godzinę być
...

Temat: Odpiwotowywanie danych

Sławomir B.:
Dlaczego w jakiś złośliwy sposób nie skomentował Pan mojego kodu ?
A dlaczego miałbym go krytykować? Jest to jednym z wielu rozwiązań - ma te same wady, co rozwiązanie w czystym E. i jest pewnikiem o niebo lepsze, niż wynalazki fabryki Plususa - bo właśnie nie potrzebuje owej fabryki.
Ja ten kod na pewno sprawdzę i pewnie kiedyś napiszę jakiś swój - bo temat bywa potrzebny, a to rozwiązanie z tp strasznie ukryte. Alternatywa "kup sobie SSISa (SQLSa), a potem ITka, żeby ci to zrobił" nie wchodzi w grę.
Sławomir Broda

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

Temat: Odpiwotowywanie danych

Wojciech G.:
Sławomir B.:
Dlaczego w jakiś złośliwy sposób nie skomentował Pan mojego kodu ?
A dlaczego miałbym go krytykować? Jest to jednym z wielu rozwiązań - ma te same wady, co rozwiązanie w czystym E. i jest
A ile ma zalet w stosunku do czystego sql'a czy Afina.
pewnikiem o niebo lepsze, niż wynalazki fabryki Plususa - bo właśnie nie potrzebuje owej fabryki.
Ja ten kod na pewno sprawdzę i pewnie kiedyś napiszę jakiś swój - bo temat bywa potrzebny, a to rozwiązanie z tp strasznie ukryte. Alternatywa "kup sobie SSISa (SQLSa), a potem ITka, żeby ci to zrobił" nie wchodzi w grę.
Oczywiście, że nikt z odrobiną rozumu nie kupi wielkiego narzędzie po to żeby odpiwotowywać parę tabelek.
Z drugiej strony było by idiotyzmem bawić się w sklejki sql'a czy vba mając gotowe rozwiązania w swoim systemie.
Łukasz D.

Łukasz D. ITdoors.pl

Temat: Odpiwotowywanie danych

Wojciech G.:
Sławomir B.:
Dlaczego w jakiś złośliwy sposób nie skomentował Pan mojego kodu ?
A dlaczego miałbym go krytykować? Jest to jednym z wielu rozwiązań - ma te same wady, co rozwiązanie w czystym E. i jest pewnikiem o niebo lepsze, niż wynalazki fabryki Plususa - bo właśnie nie potrzebuje owej fabryki.
Ja ten kod na pewno sprawdzę i pewnie kiedyś napiszę jakiś swój - bo temat bywa potrzebny, a to rozwiązanie z tp strasznie ukryte. Alternatywa "kup sobie SSISa (SQLSa), a potem ITka, żeby ci to zrobił" nie wchodzi w grę.

Wszystko się już Panu miesza. Pan stwierdził, że w ETL nie da się tego w ogóle zrobić. Ja Panu pokazałem, że się da. I tyle. Całą resztę teorii dorabia Pan "na poczekaniu".
Wojciech Gardziński

Wojciech Gardziński Mieć rację godzinę
wcześniej niż inni:
przez godzinę być
...

Temat: Odpiwotowywanie danych

Patrz poniżej.

Opcja arkuszowego odpiwotowywania danych tabelarycznych jest już w standardzie AFINA.Ten post został edytowany przez Autora dnia 10.06.13 o godzinie 17:39
Wojciech Gardziński

Wojciech Gardziński Mieć rację godzinę
wcześniej niż inni:
przez godzinę być
...

Temat: Odpiwotowywanie danych

Odpiwotuj sobie tabelkę!
http://afin.net/webcasts/HowTo_UnpivotDataWithoutSql.swf

Odwpiwotowywanie = tworzenie tabeli jednowymiarowej (miara + 2 atrybuty) z tabeli dwuwymiarowej (miara w tabelarycznym rozbiciu na 2 atrybuty)Ten post został edytowany przez Autora dnia 10.06.13 o godzinie 17:41
Marcin Szewczyk

Marcin Szewczyk kontroler finansowy

Temat: Odpiwotowywanie danych

Wojciech G.:
Odwpiwotowywanie = tworzenie tabeli jednowymiarowej (miara + 2 atrybuty) z tabeli dwuwymiarowej (miara w tabelarycznym rozbiciu na 2 atrybuty)

Może Pan podać opis algorytmu? Użył Pan czystego SQL czy połączenia SQL i VBA? Szukałem w necie rozwiązania tego problemu przy pomocy czystego SQL ale z tego co tam widziałem to raczej uciążliwe i nie widziałem rozwiązania "dynamicznego".

Poza tym czy Pana algorytm obsługuje tabele o liczbie wymiarów większej niż 2? Np. jeśli w wierszu będzie równocześnie konto i MPK a w kolumnach lata?
Wojciech Gardziński

Wojciech Gardziński Mieć rację godzinę
wcześniej niż inni:
przez godzinę być
...

Temat: Odpiwotowywanie danych

Marcin S.:
Wojciech G.:
Odwpiwotowywanie = tworzenie tabeli jednowymiarowej (miara + 2 atrybuty) z tabeli dwuwymiarowej (miara w tabelarycznym rozbiciu na 2 atrybuty)

Może Pan podać opis algorytmu? Użył Pan czystego SQL czy połączenia SQL i VBA? Szukałem w necie rozwiązania tego problemu przy pomocy czystego SQL ale z tego co tam widziałem to raczej uciążliwe i nie widziałem rozwiązania "dynamicznego".
Opis algorytmu wisiał przez dni parę w moim wiżualbejziku, który teraz przeniosłem do AFINA
"leć po tablicy danych i sczytuj odpowiednio nagłówki tabeli". Wiżualbejzikus zapodał tu jakąś fabrykę wiżualbejzikową, bo on myśli, że mu płacą za komplikowanie świata. A świat (danych) jest (stosunkowo) prościutki, trzeba tylko spojrzeć nań z pewnym dystansem. No, parę doświadczeń też się przyda...

Poza tym czy Pana algorytm obsługuje tabele o liczbie wymiarów większej niż 2? Np. jeśli w wierszu będzie równocześnie konto i MPK a w kolumnach lata?
W algorytmie VBA będzie to trochę trudne (jeśli komórki będą scalone, jeśli nie, to bajka), ale, pewnikiem, możliwe.

W podanym na pierwszym filmie algorytmie SQL możliwe jest wszystko - sam przecież mówiłem o wielu (>2) wymiarach: Folderach, skoroszytach, arkuszach, podwójnych nagłówkach, A NAWET WIELU WYMIARACH W JEDNYM POLU (!), np. konto księgowe.
Marcin Szewczyk

Marcin Szewczyk kontroler finansowy

Temat: Odpiwotowywanie danych

Wojciech G.:
W podanym na pierwszym filmie algorytmie SQL możliwe jest wszystko - sam przecież mówiłem o wielu (>2) wymiarach: Folderach, skoroszytach, arkuszach, podwójnych nagłówkach, A NAWET WIELU WYMIARACH W JEDNYM POLU (!), np. konto księgowe.

Jeśli dobrze rozumiem w pierwszym filmie algorytm był połączeniem SQL i VBA. A w drugim filmie mamy do czynienia z czystym VBA?
Wojciech Gardziński

Wojciech Gardziński Mieć rację godzinę
wcześniej niż inni:
przez godzinę być
...

Temat: Odpiwotowywanie danych

Marcin S.:
Wojciech G.:
W podanym na pierwszym filmie algorytmie SQL możliwe jest wszystko - sam przecież mówiłem o wielu (>2) wymiarach: Folderach, skoroszytach, arkuszach, podwójnych nagłówkach, A NAWET WIELU WYMIARACH W JEDNYM POLU (!), np. konto księgowe.

Jeśli dobrze rozumiem w pierwszym filmie algorytm był połączeniem SQL i VBA. A w drugim filmie mamy do czynienia z czystym VBA?
Co do drugiego - oczywiście.

A co do pierwszego - trudno nazwać ALGORYTMEM VBA proste uruchamianie SQLków przez program VBA. VBA tylko uruchamia, sam algorytm jest w SQL.
Ja rozumiem, że SQL jest językiem deklaratywnym i całość powinna się dać zapisać w JEDNYM zdaniu SQL... ale tak wychodzi, że jest lepiej.

To tak, jakby procedury w SQL Server-ze nazywać algorytmami SQL i SQLS.
Nie, to są algorytmy w SQL, URUCHAMIANE TYLKO metodami krokowymi.



Wyślij zaproszenie do