Forum Coders' city Strona Gwna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UytkownicyUytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj si, by sprawdzi wiadomociZaloguj si, by sprawdzi wiadomoci   ZalogujZaloguj 

Potrzebuj szybkiej odpowiedzi na moje pytanie... Zasady

[EXCEL] Optymalizacja kodu operacji na tabeli przestawnej

Id do strony Poprzedni  1, 2, 3

 
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Oprogramowanie biurowe
Zobacz poprzedni temat :: Zobacz nastpny temat  
Autor Wiadomo
karolinavb
Site Admin


Doczy: 25 Maj 2005
Posty: 7870

PostWysany: Czw Cze 28, 2018 7:29 pm      Temat postu: Odpowiedz z cytatem Pisownia

Cytat:
czy w tym przypadku auto filtr mona poda warunek by mi tylko przefiltrowao okrelonego klienta :)?
Cytat:
porwnywanie w ptli FOR uywaem w moim pliku
Na przykad jak w zaczniku...
Warunki filtrowania i przycisk w arkuszu wynik.
Reszta wg hurgadion...



przempat_filter_formula.rar
 Opis:

Pobierz
 Nazwa pliku:  przempat_filter_formula.rar
 Wielko pliku:  520.08 KB
 Pobierano:  4 raz(y)

Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
hurgadion



Doczy: 06 Kwi 2011
Posty: 852
Skd: Web :)

PostWysany: Pi Cze 29, 2018 11:46 am      Temat postu: Odpowiedz z cytatem Pisownia

looknij, porwnaj, ewentualnie wycignij wnioski... ^^
Kod:

Sub Customer_tab()
Dim a&, i&, x&, tbl, tb, w

x = 1
a = Cells(Rows.Count, 1).End(xlUp).Row
tb = Range("A1:Q" & a).Value
w = Cells(2, "T").Value
ReDim tbl(1 To 5, 1 To x)
For i = 1 To a
   If tb(i, 2) = w Then
      ReDim Preserve tbl(1 To 5, 1 To x)
      tbl(1, x) = tb(i, 1)
      tbl(2, x) = tb(i, 3)
      tbl(3, x) = tb(i, 7)
      tbl(4, x) = tb(i, 9)
      tbl(5, x) = tb(i, 13)
      x = x + 1
   End If
Next i

Cells(2, "AA").Resize(UBound(tbl, 2), 5) = Application.Transpose(tbl)
End Sub


_________________
miasto nauki praktycznej
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Odwied stron autora Numer GG
przempat



Doczy: 03 Kwi 2006
Posty: 103
Skd: Polkowice

PostWysany: Pon Lip 02, 2018 1:45 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Cze

Dziki wielkie wam obojga za okaza pomoc!!
Oczywicie sprawdz oba przykady i postaram sie dopasowa pod swoje potrzeby :)

kilka dni wyjtych miaem przez delegacj i sprawy rodzinne ale od jutra wracam do pliku i zaczynam prac nad popraw dziaania:)

Co do przykadu z Tablicami
Kod:


ReDim tbl(1 To 5, 1 To x)

.
.
.

Cells(2, "AA").Resize(UBound(tbl, 2), 5) = Application.Transpose(tbl)




dlaczego zwikszasz ilo kolumn w tablicy a nastpnie wstawiasz dane do komrki przez Transpozycje?

Jeszcze przed waszymi przykadami staraem si zrobi co w podobie do twojego kodu jednak miaem problem ze zmian wielkoci dynamicznej tablicy jednak za kadym razem staraem si ustali ilo kolumn na 5 a zmieni ilo wierszy i mi wywalao bd nie wiedziaem dlaczego :(

Kod:

Option Base 1

Sub Customer()
im a As Integer, x As Integer, i As Integer, k As Integer
Dim arrTAB() As Variant
Dim myArry(1 To 5) As Variant
Dim Ite As String
Dim xCUST As String, xITEM As String
Dim xShipTo As Integer
Dim xDate As Date
Dim cust$, ship$, ile$
x = 2
i = 1


Erase arrTAB()
ReDim rrTAB(i To 5, 1 To 5)

For k = 1 To Arkusz1.Range("S1").Value


a = Arkusz1.Cells(Rows.Count, 21).End(xlUp).Row
Arkusz1.Range("U1:Y" & a).ClearContents


cust = Arkusz1.Cells(1 + k, 20).Value

    Do Until xCUST = cust
    xCUST = Arkusz1.Cells(x, 1).Value
  
    Loop
    
i = 1


        
            Do While xCUST = cust
        
    
          ReDim Preserve arrTAB(1 To 5, i To 5)
             arrTAB(i, 1) = Arkusz1.Cells(x, 7)
             arrTAB(i, 2) = Arkusz1.Cells(x, 2)
             arrTAB(i, 3) = Arkusz1.Cells(x, 3)
             arrTAB(i, 4) = Arkusz1.Cells(x, 9)
             arrTAB(i, 5) = Arkusz1.Cells(x, 13)
      
            
             x = x + 1
             i = i + 1
            
            
             xCUST = Arkusz1.Cells(x, 1).Value
            
            Loop
            
            Arkusz1.Range(Cells(2, 21), Cells(UBound(arrTAB), 25)) = arrTAB
'------------ procedura kreowania raportu --------------------
      call CreateReport

    Erase arrTAB()
Next k
        
  
        
        
        
End Sub





Gdzie popeniaem bd? I czy trzeba to przez transpozycje zrobi tak jak u Ciebie?

Chyba znalazem odpowied na jednej ze stron :)
Cytat:

Only the upper bound of the last dimension in a multi-dimensional array can be changed.


Jeszcze raz dziki i na pewno si odezw :) !

Pozdro

_________________
..:: Dopki mj szef myli e ja duo zarabiam -
dopty ja bd tak robi eby on mysla e ja duo robi ::.. ;)
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Wylij email Numer GG
hurgadion



Doczy: 06 Kwi 2011
Posty: 852
Skd: Web :)

PostWysany: Pon Lip 02, 2018 4:03 pm      Temat postu: Odpowiedz z cytatem Pisownia

jako to tak jest, mona zmienia jeden wymiar, nie wiem w sumie dlaczego s takie ograniczenia, i to nie jedyne... w VBA praca na tablicach jest bardzo sztywna... ale na poczatek spoko, ale jak si chcesz nauczy programowania, to we si za porzdniejsze rodowisko do programowania, a jak chcesz mie w miar dobre narzdzie do Analizy Danych, zainteresuj si Sparkiem... :)
_________________
miasto nauki praktycznej
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Odwied stron autora Numer GG
przempat



Doczy: 03 Kwi 2006
Posty: 103
Skd: Polkowice

PostWysany: Pon Lip 02, 2018 6:12 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Hej
niestety u mnie w firmie tylko Excel albo Access do dyspozycji i dozwolony. Wic musz dziaa w tym co mam :) jednak dziki za kolejn wskazwk :) na pewno zobacz na Sparki ;)
Wydaje mi si, e do tego akurat zadania arkusz wystarczy tylko troch trzeba si pobawi.

Dziaam dalej jak bd mia kopoty to dam zna, jednak widz znaczn popraw szybkoci in bawienie si w sortowanie tabeli przestawnej :)


Podoba mi si tez to co Karolina podaa za co dzikuj, bd testowa rwnie :)


Pozdrawiam

_________________
..:: Dopki mj szef myli e ja duo zarabiam -
dopty ja bd tak robi eby on mysla e ja duo robi ::.. ;)
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Wylij email Numer GG
karolinavb
Site Admin


Doczy: 25 Maj 2005
Posty: 7870

PostWysany: Pon Lip 02, 2018 7:57 pm      Temat postu: Odpowiedz z cytatem Pisownia

Cytat:
If tb(i, 2) = w Then
ReDim Preserve tbl(1 To 5, 1 To x)
Przecie mona na wstpie policzy ile jest komrek spenia ten warunek i wcale nie trzeba wtedy ReDim i Transpose ?
Do przempat
Cytat:
ReDim Preserve arrTAB(1 To 5, i To 5)

Ciekawe, gdy i np =100 to ... jak gdzie to ma by wpisane do komrek ?
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
przempat



Doczy: 03 Kwi 2006
Posty: 103
Skd: Polkowice

PostWysany: Wto Lip 10, 2018 9:10 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Cze

@ Karolina jak najbardziej masz racj, jak si doszkoliem odnonie tablic to i dla mnie to moje pytanie jest teraz zgoa troch dziwne :) bo niby jak to mialo dziaa ? :)

Bazujc na waszych podpowiedziach, udao mi si zmieni / zoptymalizowa kod i to nie tylko w kwestii tabel przestawnych z ktrych zrezygnowaem, ale w innych czciach kodu rwnie.
Efekt, ktry uzyskaem jest zadowalajcy, moe nie super bupper szybki, ale...
wykonanie raportu dla wszystkich klientw
byo avg 2:00 - 2:30sec
jest avg 0:17 - 0:19 sec

efekt odczuwalny :)
Dzikuj wam za pomoc !!!!

Obecnie mcz si nad fragmentem aktualizacji istniejcego ju raportu, ktry by pod przyciskiem "update" w moim przykadzie gdy raport jest ju utworzony.
Problem, ktrego nie potrafi jak na razie rozgry, to aktualizacja danych przez przeszukanie istniejcych ju nr items , customer oraz shipto i dodanie do nich kolumny z nowym nie istniejcym wczeniej w raporcie a pojawiajcym si w nowych danych rdowych, do tej pory takie wystpienie item, customer oraz shipto, w starym rozwizaniu wstawiam na koniec raportu w ostatni nie wypeniana kolumn.
Jednak cay raport przy pierwszym uruchomieniu wykonuje si z uwzgldnieniem 4 pierwszych znakw item i grupuje je w raporcie by byy obok siebie kolumna obok kolumny jeli rne to rozdziela je.
Jak dochodzi nowy to musia bym wstawi kolumn w odpowiedniej czci raportu gdzie items s pogrupowane po 4 pierwszych cyfrach, rozpozna nowy i wstawi kolumn w odpowiednim miejscu i tu mam problem.
Jak sobie nie poradz to pozwol sobie napisa i poprosi was o pomoc :)

pozdrawiam Przemek

_________________
..:: Dopki mj szef myli e ja duo zarabiam -
dopty ja bd tak robi eby on mysla e ja duo robi ::.. ;)
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Wylij email Numer GG
Wywietl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Oprogramowanie biurowe Wszystkie czasy w strefie CET (Europa)
Id do strony Poprzedni  1, 2, 3
Strona 3 z 3

 
Skocz do:  
Moesz pisa nowe tematy
Moesz odpowiada w tematach
Nie moesz zmienia swoich postw
Nie moesz usuwa swoich postw
Nie moesz gosowa w ankietach
Moesz dodawa zaczniki na tym forum
Moesz pobiera pliki z tego forum




Debug: strone wygenerowano w 0.12803 sekund, zapytan = 13
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |