Nie mogę wymyślić, jak skopiować formułę, używając kombinacji odniesień bezwzględnych i względnych oraz odniesień do nazw arkuszy.
Mam arkusz będący podsumowaniem pozostałych arkuszy w książce, przy czym każdy arkusz składowy reprezentuje miesiąc w roku. Muszę wypełnić arkusz podsumowania, kopiując komórki z odniesieniami do innych arkuszy. Kolumny z formułami muszą odzwierciedlać powiązane kolumny ze stałego wiersza na każdym arkuszu, podczas gdy wiersz z formułą musi odzwierciedlać wybór arkusza. Nazwy arkuszy oparte są na nazwie miesiąca.
Skoroszyt ma jeden arkusz na każdy miesiąc roku, styczeń, luty itd. Każdy z tych arkuszy jest identyczny i pobieram wartości z wiersza podsumowania miesiąca (wiersz 4) arkusza każdego miesiąca. Wiersz podsumowania zawiera sumy miesięczne dla różnych kategorii księgowych w kolejnych kolumnach rozpoczynających się w kolumnie E.
Każdy wiersz arkusza podsumowania zawiera wiersz podsumowania z powiązanego arkusza miesiąca.
Innymi słowy, mam to: komórka E5
jest =IF(Jan!E4>0,Jan!E4," ")
i chcę, aby komórka pod nią ( E6
) była =IF(Feb!E4>0,Feb!E4," ")
.
Wtedy komórka „F5” (po prawej stronie E5
) będzie =IF(Jan!F4>0,Jan!F4," ")
.
Załączam zrzuty ekranu strony podsumowującej i jednego z miesięcznych arkuszy.
źródło
Odpowiedzi:
Odpowiedź Rey Juny wyjaśnia, jak to zrobić za pomocą tabeli odnośników. Oto alternatywne podejście do uzyskiwania adresów referencyjnych bez tabeli odnośników. Ogólna struktura formuły jest podobna. Wiele z tego jest podyktowanych przez przetłumaczenie lokalizacji formuł na odwołania do komórek (zwróć uwagę, że tłumaczenia lokalizacji w moich formułach mogą teraz nieco różnić się od Reya, ponieważ opis w pytaniu nieco się zmienił).
Opis w pytaniu zmienił się, więc użyję nieco innej metody dla opcji POŚREDNIE. INDIRECT ma funkcję, która pozwala na odwoływanie się do komórek w tak zwanym formacie R1C1, co jest przydatne przy tego rodzaju wymaganiach. Możesz łatwo podać numery wierszy i kolumn oraz wykonać adresowanie względne.
INDIRECT ma opcjonalny ostatni parametr używany do wskazywania stylu odwołań do komórek. Jeśli ma wartość FAŁSZ lub
0
oznacza adresowanie w stylu R1C1. W ciągu INDIRECTR4C[0]
odnosi się do wiersza 4 i tej samej kolumny co formuła (przesunięcie zera).W przeciwnym razie główna różnica polega na tym, jak uzyskać nazwy arkuszy za pomocą formuły zamiast wyszukiwania.
Kluczem do tego jest ta formuła:
Wiersz minus 4 został wyjaśniony powyżej, tłumacząc lokalizację formuły na liczbę miesięcy. Musimy przekształcić numer miesiąca w datę, która przypada w tym miesiącu (który może być w dowolnym roku, potrzebujemy tylko dnia w roku). Czyni to mnożenie przez 28. Wszystkie miesiące oprócz lutego w roku bez przestępowania mają więcej niż 28 dni, ale to wystarcza, aby zagwarantować, że wynikowa liczba dni będzie w odpowiednim miesiącu.
(Należy pamiętać, że ta sztuczka działa w przypadku tłumaczenia 1-12 na styczeń-grudzień, ale musiałaby zostać poprawiona, jeśli twój miesiąc początkowy jest inny niż styczeń lub masz wiele kolejnych lat; nie możesz po prostu dostosować przesunięcia wiersza. Zobacz załącznik poniżej.)
Funkcja TEKST formatuje wynik jako trzyliterowy skrót miesiąca.
Podsumowując, faktyczna formuła jest następująca:
Możesz skopiować i wkleić tę formułę do komórki E5, a następnie po prostu skopiować i wkleić lub przeciągnąć, aby wypełnić macierz. Nie trzeba dostosowywać formuły, chyba że zmieni się układ arkusza roboczego.
Dodatek: Jeśli Twoje miesiące przebiegają inaczej niż styczeń-grudzień (np. Lata obrachunkowe) i / lub masz wiele kolejnych lat, oto kolejna sztuczka polegająca na użyciu konwersji pokazanej powyżej skrótu liczby miesięcy na miesiące.
MOD(ROW()+5,12)
. Rezultat jest taki, że każdy wiersz wskazuje właściwy numer miesiąca.TEXT(MOD(ROW()+5,12)*28,"mmm")
.źródło
0
pierwszy dzień, który Excel widzi w grudniu poprzedniego roku, a reszta miesięcy wypadłaby dobrze. W przypadku lat innych niż styczeń-grudzień trzeba będzie zmodyfikować formułę, aby poprawnie przełożyć liczby wierszy na dni przypadające we właściwym miesiącu. To tylko sztuczka, która działa przy produkcji Jan-Deca.Takie podejście wymaga listę skróconych nazw miesięcy, które umieszczone w komórkach
A1
poprzezA12
arkusza że nazwieListMo
, jak poniżej:Oto formuła, która trafiłaby do Twojej komórki
E7
:=IF(INDIRECT(INDEX(ListMo!$A$1:$A$12,ROW()-6,) & "!E" & COLUMN()-1)>0,INDIRECT(INDEX(ListMo!$A$1:$A$12,ROW()-6,) & "!E" & COLUMN()-1)," ")
Wyjaśnienie
INDEX(ListMo!$A$1:$A$12,ROW()-6,)
Index
pozwala wybrać jeden element z tablicy / listy.Row()
zwraca tylko numer wiersza, w którym znajduje się formuła, i-6
jest to przesunięcie potrzebne, aby wiersz 7 był równy pierwszemu elementowi na liście „Jan”.COLUMN()-1
Podobnie jak
Row()
,Column()
zwróci numer kolumny, w której znajduje się twoja formuła, i-1
jest to przesunięcie potrzebne do uzyskania kolumnyE
lub 5, aby równa się 4 wE4
.Indirect
pozwala umieścić cały ten tekst razem,&
a następnie przeczytać go jako odwołanie do komórki.W przypadku komórki
E7
wyglądałoby to tak:INDIRECT(INDEX(ListMo!$A$1:$A$12,1) & "!E" & 4)
co wtedy byłoby równeJan!E4
.Indirect
Formuła musi się odbywać dwa razy, ponieważ to odwołanie do komórki jest używany dwa razy w formule.Wszystko to pozwala ci przeciągnąć formułę w prawo, a jednocześnie uzyskać odwołanie do komórki, aby przejść w dół, co nie jest domyślnym zachowaniem podczas przeciągania formuł w programie Excel. Przeciągnięcie formuły w dół powoduje teraz wybranie nazwy następnego arkusza, a nazw arkuszy nie można zwiększać domyślnie.
źródło
E7
odwoływała się do arkusza miesiąca,E4
a komórka po prawej stronieE7
, czyliF7
do, by odwoływała się do arkusza miesiącaE5
. Właśnie to osiąga. Jeśli po prostu przeciągnieszE4
odniesienie w prawo bezINDIRECT
, otrzymasz odniesienie doF4
. Nie jestem też pewien, co rozumiesz przez „pierwszą kolumnę”. Masz na myśli komórkęE1
?E5
zamiast, to będzieROW()-4
. A teraz, gdy przeczytałem wszystkie twoje komentarze,E
wE5
jest kolumna i będzie ona przeglądać kolumnęE
na arkuszu miesiąca. Masz na myśli „pierwszy rząd”? Jeśli tak, to czy rząd nie5
byłby twoim pierwszym rzędem?Znak $ w adresie komórki naprawia odwołanie do komórki lub wiersza. Jeśli masz na przykład na myśli odwołanie do komórki w wierszu 4 i skopiowanie tej formuły, możesz odwołać się do komórki E 4 USD. Gdy zostanie to skopiowane w dół kolumny, da to zawsze 4 USD. Skopiowanie go w wierszu daje 4 USD, 4 USD, 4 USD.
Jeśli konstruujesz coś w odniesieniu do kolumny miesięcy (poza schematem), możesz odnosić się do czegoś takiego (IF A1 = E 4 USD ...). To po skopiowaniu w dół zmieniłoby
1
tak, aby wskazywało na A2, A3, ... które zawierałyby miesiące. E4 nadal działałby jako zmienna testowa, ale w następnej kolumnie (po skopiowaniu kolumny) będzie to 4 F $, co wskazuje na nowy test.źródło