Como incrementar string como AA para AB?

9

Eu tenho strings no Excel como AA ou XA .

Eu preciso incrementá-los assim:

Para AA na célula A1, será AB na célula B1, AC na célula B2 e assim por diante.

Para XA na célula A1, será XB na célula B1, XC na célula B2 e assim por diante.

Eu tentei o código popular =CHAR(CODE(A1)+1) , mas não funciona depois de Z.

Quaisquer sugestões são bem-vindas.

    
por Andy K 22.01.2015 / 11:40

10 respostas

10

Tente isto: coloque "AA" na célula A1 e insira a seguinte fórmula na célula B1 e arraste entre

=IF(RIGHT($A1,1)="Z", CHAR(CODE(LEFT(A1,1))+1),LEFT(A1,1))&CHAR(65+MOD(CODE(RIGHT(A1,1))+1-65,26))

Aumentará da seguinte forma: AA, AB, AC, ..., AZ, BA, BB, BC .... etc

Você pode querer adaptar essa fórmula para se adequar à sua apresentação específica. Por favor, note que isto não funcionará após "ZZ".

Atualização: bug corrigido

    
por 22.01.2015 / 12:00
3

Podemos usar a própria planilha do Excel para ajudar a incrementar as letras - o incremento funcionará de A a XFC

Primeiro, crie a referência da célula: INDIRECT(A1&"1")
Em seguida, encontre o endereço da próxima coluna sobre: ADDRESS(1,COLUMN(INDIRECT(A10&"1"))+1)

Então, a partir do $ ?? $ 1, extraímos as letras: 2 maneiras:

  1. Procure o segundo $ e retire o texto entre eles

    =MID(ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1),2,FIND("$",ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1),2)-2)
    
  2. Substitua o 1 e o $ por nada na string

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

Escolha qual funciona melhor para você

    
por 23.01.2015 / 16:43
2

Outro exemplo: digite isso na célula A1 e copie a fórmula para qualquer uma ou todas as células.

=CHAR(MOD(ROW(A1)-1;26)+65)&CHAR(MOD(COLUMN(A1)-1;26)+65)

Pretendido como um exemplo de como alguém pode pensar sobre o problema.

    
por 23.01.2015 / 21:42
2

Isso será redefinido para "A" quando atingir "Z"

=IF(A1="Z", "A", CHAR(CODE(A1)+1))

Você pode construir além disso com mais declarações if.

OR

Acabei de escrever esta fórmula para algo semelhante:

IF(RIGHT(C2,1)="Z",IF(RIGHT(C2,2)="ZZ","A",CHAR(CODE(MID(C2,5,1))+1)),MID(C2,5,1))&IF(RIGHT(C2,1)="Z","A",CHAR(CODE(MID(C2,6,1))+1))
    
por 08.02.2016 / 03:23
1

Como outra solução para isso com o uso de ADDRESS() é:

=MID(ADDRESS(1,26+ROW()),2,2)

A fórmula acima retornará AA na primeira linha e AB na segunda linha e assim por diante.

Também com o uso de matemática, a fórmula é:

=CONCATENATE(CHAR(INT(ROW()/26)+65),CHAR(MOD(ROW()-1,26)+65))
    
por 08.02.2016 / 10:22
1

Eu usei este código para obter o endereço da célula

=ADDRESS(ROW($AT$17),COLUMN($AT$17)+Increment,4,1)

Este exemplo é para AT17 endereço da célula.

Incrementar você define quantos números você irá incrementar

Eu escrevi este código na célula Ax17 .

Mais tarde, obtive o valor de AT17 com

=INDIRECT(AX17)

Feito !!!

Agora você pode incrementar colunas em vez de linhas !!!

    
por 12.06.2016 / 00:57
0

Aqui está a minha solução (a célula A1 contém "AA"):

=IF(CHAR(CODE(RIGHT(A2;1))+1)="[";CHAR(CODE(LEFT(A2;1))+1);CHAR(CODE(LEFT(A2;1))))&IF(CHAR(CODE(RIGHT(A2;1))+1)="[";CHAR(65);CHAR(CODE(RIGHT(A2;1))+1))
    
por 25.07.2017 / 09:11
0

Preencha a Coluna A (da linha 1) com números consecutivos começando com 0 a 100 [ou até requisito]

Preencha a célula B1 com a fórmula abaixo

=CONCATENATE(CHAR(MOD(QUOTIENT(A1,26*26),26)+65),CHAR(MOD(QUOTIENT(A1,26),26)+65),CHAR(MOD(A1,26)+65))

Copie a fórmula de B1 para outras linhas na Coluna B [até a linha que você preencheu a Coluna A]

Isso funciona para 3 caracteres AAA a ZZZ

A fórmula precisa ser modificada de acordo com o no. caracteres necessários (AA a ZZ / AAAAA a ZZZZZ / etc)

    
por 31.05.2018 / 16:34
-1
=IF(AND(LEN(G1)=1,G1="Z"), "AA", IF(LEN(G1)=1, CHAR(CODE(G1)+1), IF(RIGHT(G1,1)<>"Z", LEFT(G1,1)&CHAR(CODE(RIGHT(G1,1))+1), CHAR(CODE(G1)+1)&"A")))
    
por 18.02.2016 / 23:54
-1

Para Colunas, a abaixo é a solução certa.

= SE (LEN (ENDEREÇO (1, COLUNA ())) = 4, MID (ENDEREÇO (1, COLUNA ()), 2,1), MID (ENDEREÇO (1, COLUNA ()), 2,2 )

    
por 24.05.2018 / 12:08