vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest wtorek, 14 maja 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

Filtrowanie ale nie ręczne


otwartyotwarty rozpoczął: Andrzej.T postów: 3



napisał: Andrzej.T
postów: 10


umieszczony:
17 września 2005
09:44

  
Działa po prostu super.
Ja oczywiście działałem na około z tabelami przestawnymi, a rozwiązanie P.Stanisława to dla mnie majstersztyk.

Wielkie dzięki przede wszystkim za naukę.

Panie Stanisławie:
nic tylko poradnik dla początkujących pisać z tymi przykładami.

Dzięki i życzę dalszych sukcesów !!!
napisał: Stanislaw
postów: 109


umieszczony:
16 września 2005
22:39

  
Dla danych w kolumnach: A:G

Sub Filtrowanie()

Dim wiersz_analizowany As Range
Dim imię As String
Dim nazwisko As String
Dim i As Long


Application.ScreenUpdating = False
    
Set wiersz_analizowany = Range(Cells(65536, "A").End(xlUp), _
                               Cells(65536, "A").End(xlUp).Offset(0, 6))
                                                              
    imię = wiersz_analizowany.Cells(1, 1).Value
nazwisko = wiersz_analizowany.Cells(1, 2).Value
                                   
Do While wiersz_analizowany.Row > 2
    Do While imię = wiersz_analizowany.Cells(1, 1).Offset(-1, 0).Value And _
         nazwisko = wiersz_analizowany.Cells(1, 1).Offset(-1, 1).Value
            For i = 3 To 7
                If wiersz_analizowany.Cells(1, i).Value <> "" Then
                   wiersz_analizowany.Cells(1, i).Cut
                   ActiveSheet.Paste wiersz_analizowany.Cells(0, i)
                End If
            Next i
         Set wiersz_analizowany = Range(wiersz_analizowany.Cells(1, 1).Offset(-1, 0), _
                                        wiersz_analizowany.Cells(1, 7).Offset(-1, 0))
         Rows(wiersz_analizowany.Cells(1, 1).Offset(1, 0).Row).Delete
    Loop
          Set wiersz_analizowany = Range(wiersz_analizowany.Cells(1, 1).Offset(-1, 0), _
                                         wiersz_analizowany.Cells(1, 7).Offset(-1, 0))
                                       
    imię = wiersz_analizowany.Cells(1, 1).Value
nazwisko = wiersz_analizowany.Cells(1, 2).Value
Loop

Application.ScreenUpdating = False
                              
End Sub



--
Stanislaw
napisał: Andrzej.T
postów: 10


umieszczony:
16 września 2005
10:41

  
Witam,

gorączkowo poszukuję rozwiązania problemu:

->pobieram dane do arkusza Excela;
->dane są wstawiane do arkusza wierszami tzn. np. wiersz 1 :
w kolumnie A: imię
w kolumnie B: nazwisko
w kolumnie C: wiek
w kolumnie D: stopień
itd.
->problem polega na tym, że dane są wstawiane do arkusza w taki sposób, że jest kilka takich samych wierszy gdzie powtarzają się dane w kolumnach A i B, tzn.np jest kilka razy podawane to samo imię i nazwisko ale dane klienta jak wiek,stopień itd. pojawiają się w innych wierszach.
Czyli dla jasności:
Kolumna A | Kolumna B | Kolumna C | Kolumna D | .... | Kolumna XX
-----------------------------------------------------------------
Vbmaniak | Excelowy | 18 | pusta | .... | pusta
Vbmaniak | Excelowy | pusta | dst | .... | pusta
Vbmaniak | Excelowy | pusta | pusta | .... | jakaś dana

Teraz z tego chciałbym ( oczywiście zakładamy, że kolumna A i B już w 100% odróżniają inne wiersze od siebie czyli dwóch takich samych Vbmaniaków Excelowych się nie pojawi ) przenieść dane do innego arkusza ale tak żeby był tylko jeden wiersz dla danych jednego gościa ale żeby w kolumnach od C co XX były zebrane niepuste dane ze wszystkich takich samych wierszy w kolumnie A i B.

Nie wiem, być może trochę zamieszałem ale chodzi mi o to aby arkusz gdzie wstawiam te dane tak porozrzucane w kilku wierszach był jedynym arkuszem gdzie robię coś manualnie a resztę już zrobił mój dosłownie drogi Excel 2003.

Kończąc wspomnę tylko, że nie śmiem prosić o gotowe rozwiązanie tylko o chasło czy da się to zrobić za pomocą wbudowanych fukncji Excela np WYSZUKAJ.PIONOWO czy POZIOMO, a może tabelą przestawną ?
Albo rad byłbym wielce z podpowiedzi : da się to zrobić najlepiej w VBA i kilka minimalnych podpowiedzi.

Z góry dziękuję za przeczytanie wątka i za ew.pomoc.
Sorry za laborat :)


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z