2011-07-13 13 views
10

Mam tabelę podobną do bazy danych w programie Excel 2003, z pojedynczym wierszem nagłówka zawierającym AutoFiltery w wierszu 6 i danymi z wiersza 7 do wiersza-wiersza 160. Wiersze 1 - 5 to tytuł arkusza, tytuły grup kolumn i instrukcje, których nie mogę się pozbyć.Excel - SUM na końcu listy

Wyświetlane są również w tym obszarze SUM(X6:X160) i SUBTOTAL(109,X6:X160) dla kolumn numerycznych. Nie chcę wyświetlać tego na dole tabeli, ponieważ kilku użytkowników często dodaje wiersze do tej tabeli i regularnie niszczy te formuły.

Problem: gdy użytkownik doda dane do końca tabeli, należałoby zaktualizować formuły SUM i SUBTOTAL, aby rozszerzyć zakres, który - oczywiście, jest zapomniany.

Mogę samodzielnie rozszerzyć formuły, aby objąć wszystkie wiersze do 500 wierszy i ukryć pozostałe wiersze, aby użytkownik musiał "wstawić" wiersze po osiągnięciu widocznego końca tabeli - co z kolei zaktualizowałbym formuły, ale nie uważam tego za bardzo bezpieczny ... znając moich użytkowników.

Pytanie: Czy istnieje sposób, aby utworzyć sumę i SUBTOTAL z X6 "do końca kolumny X gdziekolwiek to jest"?

WNIOSEK

użyłem SUM (offset (....)), biorąc parametr „wysokość” z nowego pola w nagłówku, który wyświetla „liczbę rekordów” przez =COUNTA($A:$A)-1 (- 1 dla tekstu nagłówka kolumny, który również jest liczony), ponieważ z kontekstu biznesowego jasno wynika, że ​​kluczowa wartość musi istnieć w kolumnie A dla każdego ważnego rekordu danych, a żadne puste wiersze nie są dozwolone (mogę szkolić użytkowników co najmniej) - plus korzyść użytkownika polegająca nie tylko na wyświetlaniu SUMA, ale także na ilości COUNT rekordów w zamrożonym okienku nagłówka.

Odpowiedz

5

Korzystanie przesunięcie() i Count() wydaje się być najbardziej popularne, a jestem pewien, że najbardziej efektywne, aby użyć.

=SUM(OFFSET($X$6,0,0,COUNT($X$6:$X$1000))) 

Osobiście staram się używać pośrednich() wiele rzeczy. Prawdopodobnie działa wolniej, ale działa. Pomaga mi zobaczyć zakres, który jest tworzony. Ostrożnie, ponieważ część zakresu jest przechowywana w tekście, nie zaktualizuje się po przesunięciu formuły. To może cię podnieść. Tutaj i tak jesteś.

=SUM(INDIRECT("$X$6:$X$" & COUNT($X$6:$X$1000))) 

można wykorzystywać dynamiczne zakresy, które iDevlop zaznacza lub umieścić offset() lub pośrednich() wewnątrz Sum() jakbym zrobił.

czy inaczej chcesz być ostrożnym, ponieważ pośrednie() i offset()Volatile Functions. Które generalnie chcesz uniknąć.

Znalazłem również this guy, który używa Index() i match(), które nie są funkcjami lotne.

EDIT:

Myśląc o nim (bo po prostu nie na arkuszu kopalni) ..

warunkiem wiesz dane będą miały odpowiednią ilość, powiedzmy 1000, można po prostu użyć =SUM($X$6:$X$1000) i pominie puste pola, nawet dla Subtotal metody 1 lub 101 (średnia).

+0

+1 za podpowiedź na " Volatile Functions ".... nie wiedziałem tego. – MikeD

+0

PRZESUNIĘCIE przewraca się, jeśli masz puste komórki, gdy stracisz 1 wiersz z zakresu SUMMOWANE dla każdej pustej komórki. – pelms

5

Dobrze myślę, że można użyć czegoś podobnego = SUMA (C: C) do sumy wszystkich komórek w kolumnie C i będzie wykluczać tekst automatycznie próbowałem go i pracował

+0

Działa również z pustymi komórkami: ¬) – pelms

Powiązane problemy