Obtenha o conteúdo de uma célula de acordo com os números de linha e coluna


96

Quero obter o conteúdo de uma célula de acordo com seu número de linha e coluna. O número da linha e da coluna são armazenados em células (aqui B1, B2). Eu sei que as seguintes soluções funcionam, mas elas parecem um pouco malucas.

Sol 1

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

Sol 2

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

Não existe método menos prolixo? (como = CellValue (linha, col) ou qualquer outro)?

Editar / Esclarecimento: Eu só quero usar as fórmulas da planilha do Excel. Sem VBA. Resumindo, procuro praticamente o equivalente do método VBA Cells () como uma fórmula do Excel.


Podemos ter um pouco mais de contexto? Você está usando apenas fórmulas do Excel? VBA? Algum outro método?
Saladin Akara

Respostas:


141

Você não precisa da parte CELL () de suas fórmulas:

=INDIRECT(ADDRESS(B1,B2))

ou

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

ambos funcionarão. Observe que INDIRECTe OFFSETsão funções voláteis. As funções voláteis podem retardar o cálculo porque são calculadas a cada recálculo.


Isso é útil o suficiente para que eu gostaria de vê-lo editado para ter o número certo de parênteses de fechamento.
Wyck

6
Dada a popularidade desta pergunta / resposta, seria ótimo ter uma pequena frase aqui sobre o que é uma função volátil .
LondonRob

Observe que com a segunda forma, dependendo de $ a $ 1, é necessário que você não mova $ a $ 1 de nenhuma forma nas edições posteriores da planilha.
Erk

INDIRECT+ ADDRESSé o caminho a seguir. O Excel na minha língua se traduz OFFSETem 2 palavras separadas por um ponto. Isso é o pior (junto com tremas nos nomes das funções)!
Bitterblue

29

Tente = índice (ARRAY, ROW, COLUMN)

onde: Array: seleciona a planilha inteira Row, Column: Suas referências de linha e coluna

Isso deve ser mais fácil de entender para quem está olhando a fórmula.


2

Demorei um pouco, mas foi assim que o tornei dinâmico. Não depende de uma tabela ordenada.

Comecei com uma coluna de nomes de estado (Coluna A) e uma coluna de aeronaves em cada estado (Coluna B). (A linha 1 é uma linha de cabeçalho).

Encontrar a célula que contém o número de aeronaves foi:

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

Coloquei isso em uma célula e dei um nome a essa célula, "StateRow" Então, usando as dicas acima, acabei com o seguinte:

=INDIRECT(ADDRESS(StateRow,1))

Isso retorna o nome do estado do valor dinâmico na linha "StateRow", coluna 1

Agora, como os valores na coluna de contagem mudam ao longo do tempo conforme mais dados são inseridos, eu sempre sei qual estado tem mais aeronaves.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.