Como adicionar ou subtrair ou incrementar letras de coluna no Excel?

2

Estou procurando uma fórmula simples e versátil que permita que matemática simples seja feita em posições de colunas, retornando o código carta da coluna apropriada. Por exemplo:

  • Dada a coluna A, definida como +1, ela deve retornar B
  • Dada a coluna E, definida como -2, ela deve retornar C
  • Dada a coluna Y, definida como +3, ela deve retornar AB
  • Dada a coluna BAA, definida como -1, ela deve retornar AZZ
  • Dada a coluna C, definida como * 2, ela deve retornar F

Deve ser simples de modificar para ser relativo à coluna em que está ou para obter uma letra de coluna codificada ou obter uma letra de coluna de uma fórmula

Observe que a fórmula popular =CHAR(CODE(A1)+1) não funciona além de Z .

    
por user568458 30.01.2014 / 12:36

2 respostas

3

Aqui está o melhor que encontrei até agora:

=SUBSTITUTE(ADDRESS(1,( COLUMN() + 1 ),4),1,"")

A parte no meio marcada em negrito é a única parte que muda.

Neste exemplo, ele está tomando a coluna atual e adicionando 1, então retornando B se estiver na coluna A e AA se estiver na coluna Z .

Variantes de exemplo

Exemplo de adição a uma coluna fixa (adicionando 2 à coluna Z, retorna "AB"):

=SUBSTITUTE(ADDRESS(1,( COLUMN(Z1) + 2 ),4),1,"")

Exemplo lendo uma célula A1 que contém uma letra como texto a ser tratado como uma letra de coluna:

=SUBSTITUTE(ADDRESS(1,( COLUMN( INDIRECT(A1&1) ) + 1 ),4),1,"")

Exemplo lendo uma célula A1 que contém um número a ser tratado como uma coluna number ( por exemplo, se contiver 25, retornará AB):

=SUBSTITUTE(ADDRESS(1,( COLUMN( INDIRECT(A1&1) ) + 1 ),4),1,"")

Pesquisando células com indirect()

Se sua meta for procurar uma célula , por exemplo Usando indirect() , você pode pular o substitute() e apenas o pipe no número da linha. Por exemplo, se você quiser procurar a célula à direita da célula atual (aumentando assim a letra da célula em um e mantendo a linha igual):

=INDIRECT( ADDRESS( ROW(), ( COLUMN() + 1 ),4) )

Com base parcialmente sobre isso que tem uma fórmula útil para transpor para obter uma coluna de letras de coluna, incrementado cada linha.

    
por 30.01.2014 / 12:36
1

A maneira mais fácil de fazer isso é com um INDIRECT AND R1C1 estilo de referência

por exemplo =INDIRECT("R[1]C[1]",0) fará referência a +1 row e +1 column da célula atual.

=INDIRECT("RC[3]",0) irá para três colunas à direita, onde -3 vai para três colunas à esquerda.

Você pode usar alguns concatenate ou & para fazer referência a uma célula para iniciar ou aumentar, se desejar:

A1 =INDIRECT("RC["&A2&"]",0)

A2 = 1

B1 = x

então A1 = x

Quando você lança cell , row , column e address , fica mais complicado, mas o efeito é o mesmo.

    
por 30.01.2014 / 15:14