Como incrementar string como AA para AB?

10

Eu tenho seqüências de caracteres no Excel como AAou XA.

Eu preciso incrementá-los assim:

Para AAna célula A1, estará ABna célula B1, ACna célula B2 e assim por diante.

Para XAna célula A1, estará XBna célula B1, XCna célula B2 e assim por diante.

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

Todas as dicas são bem-vindas.

Andy K
fonte
Does not work after Z? Você quer dizer depois AZouZZ
Dave
Oi Dave, eu tentei AB e tem procurado B desde então.
Andy K
Se isso tem alguma coisa a ver com a maneira como o Excel refere-se a células, considere evitá-lo, trabalhando com RC-notação:File > Options > Formulas >R1C1 reference style
Dirk Horsten
Oi Dirk, muito obrigado pelo conselho. No entanto, por que?
Andy K
1
Se você estava planejando usar as seqüências resultantes em uma INDIRECTfórmula, por exemplo, o comentário de @ DirkHorsten pode ser digno de nota.
precisa saber é o seguinte

Respostas:

11

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

=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

Convém adaptar esta fórmula para se adequar à sua apresentação específica. Observe que isso não funcionará além de "ZZ".

Atualização: bug corrigido

CallumDA
fonte
1
= SE (DIREITA (A1) = "Z", CHAR (CÓDIGO (ESQUERDA (A1)) + 1), ESQUERDA (A1)) e SE (DIREITA (A1) <> "Z", CHAR (CÓDIGO (DIREITA (A1)) ) 1), CHAR (65))
user26631
3

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

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 de $ ?? $ 1, extraímos as letras: 2 maneiras:

  1. Procure o segundo $ e recorte 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 1 e $ por nada na string

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

Escolha qual funciona melhor para você

SeanC
fonte
2
Você pode evitar a substituição de "$" incluindo o terceiro argumento opcional 4na ADDRESSfunção para fazê-lo retornar uma referência de célula relativa. Então você só precisa da fórmula:=SUBSTITUTE(ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1,4),"1","")
Excellll 23/01
2

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

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

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

Hannu
fonte
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 instruções if.

OU

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))
Nick Fleetwood
fonte
1

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

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

A fórmula acima retornará AAna primeira linha e ABna segunda linha e assim por diante.

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

=CONCATENATE(CHAR(INT(ROW()/26)+65),CHAR(MOD(ROW()-1,26)+65))
shA.t
fonte
1

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

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

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

Incremento você define quantos números você incrementará

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

Mais tarde, obtive valor de AT17com

=INDIRECT(AX17)

Feito !!!

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

Mark Twain
fonte
0

Aqui está 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))
Ivanoff
fonte
0

Preencher a coluna A (da linha 1) com números consecutivos começando de 0 a 100 [ou requisito de plantio direto]

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 da coluna B [até a linha que você preencheu na coluna A]

Isso funciona para 3 caracteres AAA a ZZZ

A fórmula precisa ser modificada conforme o número. de caracteres necessários (AA a ZZ / AAAAA a ZZZZZ / etc)

Sundar
fonte
0

Sei que isso está um pouco fora da questão principal, mas acho que responde à pergunta mais completa ... Se você tem uma letra em A1 e deseja que ela seja incrementada por um número em B1, a seguinte combinação de fórmulas a alcançará de letras simples para ZZ.

 =IF(LEN(A1)>1,IF((CODE(RIGHT(A1,1))+$B$1)>CODE("Z"),CHAR(CODE(LEFT(A1,1))+1)&CHAR(CODE(RIGHT(A1,1))-21),LEFT(A1,1)&CHAR(CODE(RIGHT(A1,1))+$B$1)),IF((CODE(A1)+$B$1)>CODE("Z"),"A"&CHAR(CODE(A1)-21),CHAR(CODE(A1)+$B$1)))

Copie-o na coluna e os resultados estão lá. Mude o número B5 e os resultados mudam.

Graham Porter
fonte
-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")))
user560874
fonte
2
Você pode por favor adicionar algumas explicações, estender a sua resposta
Romeo Ninov
-1

Para colunas, a seguir é 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))

user2459372
fonte
3
Não vejo como sua fórmula responde à pergunta "Como incrementar uma string como AA para AB?".
Máté Juhász