2011-08-17 8 views
18

Poszukuję sposobu na utworzenie sumy roboczej (łącznie z bieżącym wierszem i powyżej) za pomocą odwołań do tabeli w tabeli Excel.Jak utworzyć sumę bieżącą przy użyciu odwołań opartych na tabeli Excel?

wiem jak to zrobić przy użyciu starych wiersz/kolumna oparciu sposób:
=SUM($A$2:$A2)

I wiem, jak wynieść całą kolumnę stosując strukturyzowane nazwy:
=SUM([WTaskUnits])

I wiem jak aby pobrać bieżącą komórkę za pomocą [#ThisRow], ale nie jestem pewien, jak uzyskać pierwszy wiersz tabeli, aby go użyć w SUM.

Odpowiedz

31

Właściwie to właśnie wymyśliłem jeden sposób wykonania tego przy użyciu INDEKSU, ale uważam, że powinien istnieć bardziej uporządkowany sposób odniesienia. Mimo to, dla innych, którzy chcą to zrobić oto co wymyśliłem:
=SUM(INDEX([WTaskUnits],1):[[#This Row],[WTaskUnits]])

używam INDEX, aby uzyskać pierwszą komórkę w kolumnie (równowartość $ A $ 2 w moim wierszu/przykład kolumna) i użyj [ #This Row], aby uzyskać komórkę w bieżącym wierszu (odpowiednik A2 w moim wierszu/kolumnie przykład).

+0

IMHO, to jeden z najlepszych sposób na radzenie sobie z problemem. Nie zapomnij przyjąć własnej odpowiedzi :) – JMax

+0

+1 za doskonałe rozwiązanie. – dav

+9

Możesz również użyć tego: = SUMA (INDEX ([WTaskUnits], 1): [@ WTaskUnits]) –

1

Nie jesteś pewien, co masz na myśli, mówiąc o bardziej uporządkowanej strukturze, tak jak to robisz. Można też po prostu uruchomić asortyment w komórce poniżej nagłówka tabeli:

OFFSET([[#Headers],[WTaskUnits]],1,0,1,1): 

Ale nie nazwałbym to bardziej uporządkowany, po prostu inna. Nie ma odniesienia do tabeli dla częściowego zakresu wierszy w kolumnach, więc moja sugestia byłaby zgodna z tym, co masz.

+0

Dzięki, jest miło dostać potwierdzenie. To trochę zaskakujące, że nie dodali trochę więcej wsparcia dla wierszy z ustrukturyzowanymi referencjami. Sądzę, że czuli, że używanie istniejących formuł, takich jak INDEX i OFFSET, wystarczyło. – studgeek

2
=SUM(OFFSET([WTaskUnits],0,0,ROW()-ROW([[#Headers],[Running Total]]))) 

Tabela ma dwie kolumny [WTaskUnits] i [Running Total]. Powyższy wzór sumuje zakres komórek zgodnie z wymaganiami.

Pierwsze argumenty funkcji PRZESUNIĘCIE definiują punkt początkowy sumy. Czwarty termin,

ROW()-ROW([[#Headers],[Running Total]] 

to przydatny idiom dla numeru bieżącego wiersza w tabeli.

2

Rozumiem, że to stara nitka, ale w końcu mam rozwiązanie, które chciałbym zaoferować.

=IF(ISNUMBER(OFFSET([@Balance],-1,0)),OFFSET([@Balance],-1,0)+[@Amount],[@Amount]) 

W przypadku, w pierwszym rzędzie, dane punkty przesunięcie nagłówka, która nie jest liczbą zatem rezultat jest jedynie kolumna Amount.

Pozostałe wiersze zawierają poprzedni numer Balance z bieżącego wiersza .

1

Uwaga: jeśli użyjesz = SUBTOTAL (109, ...) zamiast = SUMA (...), wtedy twoja formuła uszanuje filtry na stole.

0

tworzę bieżąca suma za pomocą programu Excel Pivot: Wartości

  • Sum -> Suma ...
  • Pokaż wartości jako -> Uruchamianie całkowity

moje 2 centy, 5 lat późno (a może brakuje punktu).

+0

Wygląda na to, że używasz tabeli przestawnej, w której program OP szuka rozwiązania dla zwykłej tabeli programu Excel (tzn. Nie jest to tabela przestawna). – dav

-1

Na stole stałym danych 1. goto ostatniej komórki z kolumny, która ma łącznymi IN 2. podsumy kolumnę, która ma danych w nim i bezwzględne odniesienie pierwszym rzędzie 3.KOPIA recepturę w pierwszym rzędzie

1

stosować następujący wzór:

=SUM(INDEX([Values],1) : [@Values]) 

w użycia indeksu zwraca pierwszą komórkę w kolumnie wartości, po prostu poprzez odnośnik strukturalny w bieżącym wierszu powrót na drugą komórkę w zakres, który chcemy zsumować.

Source

Powiązane problemy