Pobierz zawartość komórki, podając numery wierszy i kolumn

96

Chcę uzyskać zawartość komórki, podając jej numer wiersza i kolumny. Numer wiersza i kolumny są przechowywane w komórkach (tutaj B1, B2). Wiem, że poniższe rozwiązania działają, ale wydaje się, że są trochę zepsute.

Sol 1

=CELL("contents",INDIRECT(ADDRESS(B1,B2)))

Sol 2

=CELL("contents",OFFSET($A$1, B1-1,B2-1))

Czy nie ma mniej szczegółowej metody? (na przykład = CellValue (row, col) lub cokolwiek)?

Edycja / wyjaśnienie: Chcę tylko użyć formuł arkusza programu Excel. Brak VBA. Krótko mówiąc, szukam odpowiednika metody VBA Cells () jako formuły programu Excel.

Philipp
źródło
Czy możemy uzyskać trochę więcej kontekstu? Czy używasz tylko formuł programu Excel? VBA? Jakaś inna metoda?
Saladin Akara

Odpowiedzi:

141

Nie potrzebujesz części CELL () w swoich formułach:

=INDIRECT(ADDRESS(B1,B2))

lub

=OFFSET($A$1, B1-1,B2-1)

będą działać. Zauważ, że obie INDIRECTi OFFSETsą funkcjami nietrwałymi. Funkcje ulotne mogą spowolnić obliczenia, ponieważ są obliczane przy każdym przeliczeniu.

Charles Williams
źródło
Jest to na tyle przydatne, że chciałbym, aby było edytowane, aby mieć odpowiednią liczbę zamykających nawiasów.
Wyck
6
Biorąc pod uwagę popularność tego pytania / odpowiedzi, wspaniale byłoby zamieścić tutaj krótkie zdanie o tym, czym jest zmienna funkcja .
LondonRob
Zwróć uwagę, że w przypadku drugiego formularza, w zależności od $ a $ 1, wymagane jest, aby nie przenosić $ a $ 1 w żaden sposób w późniejszych edycjach arkusza.
Erk,
INDIRECT+ ADDRESSto droga do zrobienia. Excel w moim języku tłumaczy się OFFSETna 2 słowa oddzielone kropką. To jest najgorsze (razem z umlautami w nazwach funkcji)!
Bitterblue
29

Try = index (ARRAY, ROW, COLUMN)

gdzie: Array: wybierz cały arkusz. Row, Column: Twoje odwołania do wierszy i kolumn

Powinno to być łatwiejsze do zrozumienia dla tych, którzy patrzą na wzór.

Albert Shenko
źródło
2

Zajęło mi to trochę czasu, ale oto jak nadałem mu dynamikę. Nie zależy od posortowanej tabeli.

Najpierw zacząłem od kolumny nazw stanów (kolumna A) i kolumny samolotów w każdym stanie (kolumna B). (Wiersz 1 to wiersz nagłówka).

Znalezienie komórki zawierającej numer samolotu wyglądało następująco:

=MATCH(MAX($B$2:$B$54),$B$2:$B$54,0)+MIN(ROW($B$2:$B$54))-1

Włożyłem to do komórki, a następnie nadałem tej komórce nazwę „StateRow”. Następnie, korzystając ze wskazówek z góry, skończyłem z tym:

=INDIRECT(ADDRESS(StateRow,1))

Zwraca nazwę stanu z wartości dynamicznej w wierszu „StateRow”, kolumna 1

Teraz, gdy wartości w kolumnie zliczania zmieniają się w czasie wraz z wprowadzaniem większej ilości danych, zawsze wiem, w którym stanie jest najwięcej samolotów.

user3573562
źródło