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

  tytuł wątku:
Wątki dyskusji

adres pierwszego wiersza po odfiltrowaniu


otwartyotwarty rozpoczął: nichu postów: 8



napisał: Stanislaw
postów: 109


umieszczony:
5 września 2005
21:08

  
Cytat:

sposob jest bardzo szybki i z tego co zauwazylem bardzo skuteczny

ilu ekspertów, tyle sposobów

Mogę zaoferować jeszcze inny sposób.
Powiedzmy, że Twoje dane znajdują się w arkuszu "Arkusz1"
w od kolumny A.

a chcesz je skopiować po przefiltrrowaniu do arkusza "Arkusz2"
do komórki "C3"

Można to zrobić za pomocą poniższego kodu:
Application.ScreenUpdating = False

If Worksheets("Arkusz1").FilterMode = True Then
    Worksheets("Arkusz1").Activate
    Range(Range("A2", Range("A2").End(xlDown)).SpecialCells(xlCellTypeVisible).Cells(1, 1), _
                      Range("A2").End(xlDown).End(xlToRight)).Copy
                                                
    Worksheets("Arkusz2").Activate
    ActiveSheet.Paste Range("C3")
    Application.CutCopyMode = False
End If

Application.ScreenUpdating = True


--
Stanislaw
napisał: nichu
postów: 11


umieszczony:
5 września 2005
20:01

  
A wiec na poczatek wytlumacze jak zrobilem to z tym filtrem.
A wiec gdy odfiltrowuje wg jakiegos kryterium to dane sa powiedzmy
w zakresie a45:a88
wtedy robie malo elegancki i profesjonalny trick (ale dzialajacy!!)
Range("a2").End(xlDown).Select
komorka_wyb_dost2 = Mid(ActiveCell.Address, 4, 5)
i mam adres ostatniej widocznej komorki czyli a88
i wtedy odejmuje ilosc widocznych wierszy i mam to co chcialem :)
sposob jest bardzo szybki i z tego co zauwazylem bardzo skuteczny;)

a informacja o pierwszym wierszu po odfiltrowaniu potrzebna mi bo
kopiuje dany zakres do innego arkusza i odpowiednio obrabiam
napisał: Stanislaw
postów: 109


umieszczony:
5 września 2005
11:33

  
A do czego praktycznie potrzebna Ci informacja
o nr pierwszego wiersza po przefiltrowaniu listy danych?

Być może dałoby się dało znależć jakieś inne rozwiązanie.

--
Stanislaw
napisał: Stanislaw
postów: 109


umieszczony:
5 września 2005
08:36

  
Zadałeś pytanie:
Cytat:

> jak odczytac adres pierwszego wiersza po odfiltrowaniu


a następnie jako rozwiązanie problemu zgłosiłeś:
Cytat:

> Znalazlem rozwiazanie:
> Wykorzystalem metode SUMY.POSREDNIE(3;ZAKRES)
> (ang. SUBTOTAL) 3 oznacza ze zlicza nie puste komorki
> no i funkcja zwraca ilosc widocznych niepustych komorek
> takze wtedy od wartosci ostatniego rzedu odejmuje ta liczbe i jest


Z tym, że
Cytat:

> funkcja zwraca ilosc widocznych niepustych komorek

oczywiście się zgadzam,

ale w jaki sposób otrzymać adres pierwszego wiersza po odfiltrowaniu
przez odjęcie od wartości ostatniego rzędu
wartości zwróconej przez formułę SUMY.POŚREDNIE(3;ZAKRES)
przyznam, że nie rozumiem.

Ale aby sprawę wyjaśnić podam przykład jak to zrobiłem:

w wierszu pierwszym nagłówek
a w wierszach: 2 - 17 dane

nazwę ZAKRES zdefiniowałem jako
=Arkusz1!$A$2:$A$17

Przed przefiltrowaniem formuła =SUMY.POŚREDNIE(3;ZAKRES)
zwraca 16
- wszystkie wiersze są widoczne

Natomiast po przefiltrowaniu
- formuła zwraca różne liczby,
ale w żaden sposób nie mogę dojść jak wyliczyłeś
adres pierwszego wiersza po odfiltrowaniu.

A może przyślesz przykładowy arkusz na priv?


Natomiast odnośnie powolnego działania funkcji
- to niestety wada tych funkcji
(napisanych przez użytkownika).

Natomiast znalazłem adres o autofiltrach
http://www.contextures.com/xlautofilter01.html

--
Pozdrawiam
Stanislaw
napisał: nichu
postów: 11


umieszczony:
4 września 2005
21:24

  
A wiec po pierwsze znow DZIEKI :)
po drugie moglbys mi powiedziec kiedy zle zadzialalo sumy.posrednie?
po trzecie Twoj sposob rzeczywiscie dobrze dziala tyle ze niestety
dosc wolno - mam lacznie jakies 55000 rekordow takze jak je wszystkie
przeszukuje to trwa bardzo dlugo...
napisał: Stanislaw
postów: 109


umieszczony:
4 września 2005
09:12

  
Mam inny sposób, bo ten z wykorzystaniem funkcji SUMY.POSREDNIE
wg mnie nie zwraca poprawnych wartości,
wystarczy wybierać różne kryteria aby się przekonać.


Wydaje mi się, że zwrócenie adresu pierwszego wiersza po odfiltrowaniu
nie jest możliwe do osiągnięcia za pomocą wbudowanych funkcji Excela.
Ale od czego VBA, polecam napisaną funkcję:

Function Pierwszy()

Dim i As Long

Application.Volatile

    For i = 2 To ActiveSheet.AutoFilter.Range.Rows.Count
        If ActiveSheet.AutoFilter.Range.Rows(i).EntireRow.Hidden = False Then
            Pierwszy = i
            Exit For
        End If
    Next i

End Function



--
Stanislaw
napisał: nichu
postów: 11


umieszczony:
3 września 2005
18:16

  
Znalazlem rozwiazanie:
Wykorzystalem metode SUMY.POSREDNIE(3;ZAKRES)
(ang. SUBTOTAL) 3 oznacza ze zlicza nie puste komorki
no i funkcja zwraca ilosc widocznych niepustych komorek
takze wtedy od wartosci ostatniego rzedu odejmuje ta liczbe i jest:)
no chyba ze jest latwiejszy sposob

OK starczy tego siedzenia przy VBA - ide na impreze :D
pozdrowienia dla wszystkich
napisał: nichu
postów: 11


umieszczony:
3 września 2005
17:58

  
I znow narodzil mi sie problem :)
nie wiem jak odczytac adres pierwszego wiersza po odfiltrowaniu
np robie filtr wg jednej z kolumn i pierwszy wiersz z danymi
nie jest w rzedzie 2 ale np w rzedzie 24
Czy ktos wie jak odczytac?
Probowalem z zaznaczeniem 1 rzedu i z SendKeys "{DOWN}" ale to nie dziala..


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z