Discussion:
[Excel] Sumowanie w autofiltrze
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
emel
2005-08-08 18:51:05 UTC
Permalink
Witam!

Mo¿e to g³upie pytanie, ale jako¶ nie bardzo wiem jak sobie poradziæ.
Jak spowodowaæ aby komórka podsumowuj±ca pod kolumn± sumowa³a tylko widoczne
komórki? Czêsto korzystam z autofiltra i bardzo by³yby mi potrzebne funkcje:
- zliczaj±ca widoczne komórki
- sumuj±ca warto¶ci w widocznych komórkach

Pomocy!

Emel
s***@op.pl
2005-08-08 19:21:22 UTC
Permalink
Post by emel
Witam!
Może to głupie pytanie, ale jakoś nie bardzo wiem jak sobie poradzić.
Jak spowodować aby komórka podsumowująca pod kolumną sumowała tylko widoczne
- zliczająca widoczne komórki
- sumująca wartości w widocznych komórkach
Pomocy!
Emel
Nie ma głupich pytań,
są tylko głupie odpowiedzi :-))


Zapoznaj się z funkcją SUMY.POŚREDNIE
jest stosowana w poleceniu Dane | Sumy pośrednie...
ale można użyć jej "ręcznie".

Np. gdybyś chciał zsumować liczby w obszarze C4:C24
to formuła wyglądałaby tak:
=SUMY.POŚREDNIE(9;C4:C24)

A jak byś zechciał wyliczyć ilość ilość komórek niepustych to
tak:
=SUMY.POŚREDNIE(3;C4:C24)

Pierwszy argument oznacza użytą funkcję przez funkcję
SUMY.POŚREDNIE
Nr dla poszczególnych funkcji znajdziesz w helpie.

Powodzenia.

__________
Stanislaw
emel
2005-08-09 17:58:57 UTC
Permalink
U�ytkownik <***@op.pl> napisa� w wiadomo�ci news:***@z14g2000cwz.googlegroups.com...

Zapoznaj siê z funkcj± SUMY.POŠREDNIE
jest stosowana w poleceniu Dane | Sumy po¶rednie...
ale mo¿na u¿yæ jej "rêcznie".

Np. gdyby¶ chcia³ zsumowaæ liczby w obszarze C4:C24
to formu³a wygl±da³aby tak:
=SUMY.POŠREDNIE(9;C4:C24)

A jak by¶ zechcia³ wyliczyæ ilo¶æ ilo¶æ komórek niepustych to
tak:
=SUMY.POŠREDNIE(3;C4:C24)

Pierwszy argument oznacza u¿yt± funkcjê przez funkcjê
SUMY.POŠREDNIE
Nr dla poszczególnych funkcji znajdziesz w helpie.

Powodzenia.

__________
Stanislaw
----------------------------------

Ale sumy.po¶rednie dzia³aj± zarówno w przypadku komórek ukrytych jak i
odkrytych.
A mnie zalezy aby suma dotyczy³a tylko widocznych komórek

emel
Stanislaw
2005-08-09 20:05:45 UTC
Permalink
A mnie zalezy aby suma dotyczyła tylko widocznych komórek
OK, nie ma sprawy.

Wspomniałeś o Autofiltrze, więc pomyślałem że chodzi o wiersze
ukrywane przy jego pomocy. W przypadku ukrycia wierszy zawartych w
liście danych za pomocą Autofiltra funkcja SUMY.POŚREDNIE działa
poprawnie, natomiast niepoprawnie w przypadku ukrycia wierszy w zwykły
sposób.

Aby obliczyć sumę wartości tylko z widocznych komórek, tj. z
pominięciem ukrytych należy posłużyć się funkcją użytkownika
"Sumuj_widoczne".
Funkcja pomija w sumowaniu komórki znajdujące się w ukrytych
wierszach i kolumnach.

Function Sumuj_widoczne(obszar As Range)

Dim sumowanie As Long
Dim komórka As Range

Application.Volatile

sumowanie = 0

For Each komórka In obszar
If IsNumeric(komórka.Value) Then
If Not komórka.EntireRow.Hidden And _
Not komórka.EntireColumn.Hidden Then _
sumowanie = sumowanie + komórka.Value
End If
Next komórka

Sumuj_widoczne = sumowanie

End Function

Każdorazowo po ukryciu w zwykły sposób wierszy/kolumn z obszaru
sumowania należy wcisnąć klawisz [F9] w celu przeliczenia arkusza.

Funkcja poprawnie oblicza sumę z pominięciem liczb znajdujących się
w ukrytych wierszach zarówno za pomocą Autofiltra jak i w zwykły
sposób.
__________
Stanislaw
Jacek
2005-08-11 12:44:25 UTC
Permalink
Stanislaw <***@op.pl> napisał(a):

Oczywiście zgadzam się ze Stanisławem. Ale ten problem można rozwiązać w
jeszcze jeden sposób. Otóż wystarczy zadeklarować zmienną statyczną (Static
Wylicz) i zadać: If ActiveCell.EntireRow.Hidden = True Then
ActiveCell.Offset(1,0).Select Else Wylicz = Wylicz + ActiveCell.Value... albo
jakoś tak ;)

--
pozdrowienia, Jacek
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Stanislaw
2005-08-11 15:15:39 UTC
Permalink
Witaj Jacek,

cieszę się, że zabrałeś głos, bo Emel na razie się nie odezwał
- mam nadzieję, że jest usatysfakcjonowany,
a zawsze miło, gdy ktoś zauważy próby znalezienia rozwiązania
problemu i podsunie jeszcze lepszy sposób.

Próbowałem rozwinąć Twój pomysł,
(szkoda, że sam nie doprowadziłeś go do końca :)

Nasunęło mi się jednak parę uwag:

Trudno mi się wypowiedzieć czy proponowane zastosowanie zmiennej
statycznej zamiast zwykłej jest potrzebne, skoro wystarcza deklaracja
zwykłej zmiennej - wydaje mi się to niepotrzebnym komplikowaniem
sprawy - ale w tej sprawie chętnie usłyszałbym zdanie Expertów
Excela.

Natomiast, wydaje mi się zupełnie zbyteczne korzystanie z polecenia
ActiveCell.Offset(1,0).Select

Bo po pierwsze, polecenie sprawdzałoby tylko komórki w danej kolumnie
- biorąc pod uwagę tylko ukryte wiersze, natomiast moja funkcja
bierze pod uwagę także ukryte kolumny.

Po drugie stosowanie metody "Select" w procedurach zwykle nie jest
polecane ze względu na zbyteczne zaznaczanie komórek, co wydłuża
czas działania. Zastosowanie jej w funkcji też pewnie nie jest
najbardziej optymalnym rozwiązaniem.

___________
Pozdrawiam
Stanislaw
emel
2005-08-11 20:41:19 UTC
Permalink
Dziêkujê wszystkim, którzy zabrali g³os w mojej sprawie. Rozwi±zania
dzia³aj± i s± w pe³ni staysfakcjonuj±ce.
--
pozdrawiam

emel
Jacek
2005-08-14 08:19:03 UTC
Permalink
Post by Stanislaw
Application.Volatile
A tak z ciekawości - do czego służy Volatile? Jakoś nigdy tego nie używałem, w
Helpie przeczytałem, ale jakoś zrozumieć nie mogę? ;)
--
pozdrowienia, Jacek
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Stanislaw
2005-08-14 16:29:31 UTC
Permalink
Mogę powiedzieć jedynie jak ja to rozumiem
=> metoda Volatile jest odpowiedzialna
za kontrolowanie przelicznia funkcji napisanej przez użytkownika.


Użycie Volatile wymusza przeliczanie tej funkcji za każdym razem,
gdy którakolwiek komórka w arkuszu zostanie zmieniona/przeliczona.


Przykład
--------
Function Przelicz()

Application.Volatile

Przelicz = Rnd

End Function

Powyższa funkcja zwracająca liczbę losową,
wyświetla inny wynik za każdym razem,
gdy tylko któraś komórka arkusza zostanie zmieniona/przeliczona,
oraz po wciśnięciu klawisza [F9].


Function Przelicz_2()

Przelicz = Rnd

End Function

Natomiast funkcja "Przelicz_2" nie zmienia wyniku
po zmianie/przeliczeniu innych komórek w arkuszu,
ani po wciśnięciu klawisza [F9].

Zmienia wynik w komórce dopiero po poddaniu jej edycji
np. [F2] i [Enter]
lub po wciśnięciu klawiszy [Ctrl+Alt+Enter].

Domyślnym argumentem metody Volatile jest "True",
czyli można było również napisać w kodzie
Application.Volatile True
ale ponieważ jest to argument dmyślny więc można go było
pominąć.

Użyłem metody Volatile w funkcji Sumuj_widoczne
aby przeliczała wynik każdorazowo po ukryciu/odkryciu wierszy/kolumn.

Nie do końca to mi się udało, ponieważ mimo zastosowania Volatile
jest jeszcze potrzebne wciśnięcie klawisza [F9]
do otrzymania poprawnego wyniku
- przynajmniej tak jest w Excelu 2002.
Ale bez zastosowania tej metody w celu przeliczenia funkcji
konieczne było wciskanie klawiszy [Ctrl+Alt+Enter].

__________
Stanislaw

Tajan
2005-08-12 05:21:23 UTC
Permalink
Witanm!

W artykule news:ddaqsr$hvv$***@inews.gazeta.pl,
niejaki(a): emel z adresu <***@gazje_tka.net> napisał(a):

(....)
Ale sumy.pośrednie działają zarówno w przypadku komórek ukrytych jak i
odkrytych.
A mnie zalezy aby suma dotyczyła tylko widocznych komórek
Tytyłem uzupełnienia ...
W Excel 2003 (nie wiem jak jest w XP) funkcja SUMY.POŚREDNIE może także ignorować komórki ukryte poleceniem Ukryj.
W takim przypadku używa się numerów funkcji od 101 do 111.

Tajan
Stanislaw
2005-08-12 06:31:21 UTC
Permalink
W Excelu 2002 (z Office'a XP) numery funkcji zawierają się od nr 1 do
11.

_________
Stanislaw
Tajan
2005-08-12 08:17:02 UTC
Permalink
Witam!
Post by Stanislaw
W Excelu 2002 (z Office'a XP) numery funkcji zawierają się od nr 1 do
11.
Coś późno poszli chłopaki od Billa po rozum do głowy ...:-)

Tajan
Loading...