¿Cómo incrementar cadenas como AA a AB?

10

Tengo cadenas en Excel como AAo XA.

Necesito incrementarlos así:

Para AAen la celda A1, estará ABen la celda B1, ACen la celda B2 y así sucesivamente.

Para XAen la celda A1, estará XBen la celda B1, XCen la celda B2 y así sucesivamente.

Probé el código popular =CHAR(CODE(A1)+1)pero no funciona después de Z.

Cualquier sugerencia es bienvenida.

Andy K
fuente
Does not work after Z? ¿Te refieres a después AZoZZ
Dave
Hola Dave, he probado AB y ha estado buscando B desde entonces.
Andy K
Si esto tiene algo que ver con la forma en que Excel se refiere a las celdas, considere evitarlo trabajando con la notación RC:File > Options > Formulas >R1C1 reference style
Dirk Horsten
Hola Dirk, muchas gracias por el consejo. Sin embargo, ¿por qué?
Andy K
1
Si planea utilizar las cadenas resultantes en una INDIRECTfórmula, por ejemplo, entonces vale la pena señalar el comentario de @ DirkHorsten.
CallumDA

Respuestas:

11

Pruebe esto: ponga "AA" en la celda A1 e ingrese la siguiente fórmula en la celda B1 y arrastre

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

Se incrementará de la siguiente manera: AA, AB, AC, ..., AZ, BA, BB, BC .... etc.

Es posible que desee adaptar esta fórmula para adaptarse a su presentación particular. Tenga en cuenta que esto no funcionará más allá de "ZZ".

Actualización: error corregido

CallumDA
fuente
1
= SI (DERECHA (A1) = "Z", CHAR (CÓDIGO (IZQUIERDA (A1)) + 1), IZQUIERDA (A1)) Y SI (DERECHA (A1) <> "Z", CHAR (CÓDIGO (DERECHA (A1) ) +1), CHAR (65))
usuario26631
3

Podemos usar la propia hoja de cálculo de Excel para ayudar a incrementar las letras: el incremento funcionará de AaXFC

Primero cree la referencia de celda: INDIRECT(A1&"1")
luego busque la dirección de la siguiente columna sobre: ADDRESS(1,COLUMN(INDIRECT(A10&"1"))+1)

Luego de los $ ?? $ 1 extraemos las letras: 2 formas:

  1. Busca el segundo $ y corta el texto entre ellos.

    =MID(ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1),2,FIND("$",ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1),2)-2)
    
  2. Reemplace el 1 y $ con nada en la cadena

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

Elige cuál funciona mejor para ti

SeanC
fuente
2
Puede evitar la sustitución "$" incluyendo el tercer argumento opcional 4en la ADDRESSfunción para que devuelva una referencia de celda relativa. Entonces solo necesita la fórmula:=SUBSTITUTE(ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1,4),"1","")
Excellll
2

Otro ejemplo: escriba esto en la celda A1, luego copie la fórmula en una o todas las celdas.

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

Pensado como un ejemplo de cómo uno puede pensar sobre el problema.

Hannu
fuente
2

Esto se restablecerá a "A" cuando llegue a "Z"

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

Puede construir más allá de eso con más declaraciones if.

O

Acabo de escribir esta fórmula para algo similar:

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
fuente
1

Como otra solución para usarlo ADDRESS()es:

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

La fórmula anterior volverá AAen la primera fila y ABen la segunda fila, y así sucesivamente.

También con el uso de las matemáticas, la fórmula es:

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

Usé este código para obtener la dirección del celular

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

Este ejemplo es para AT17la dirección de la celda.

Incremento, usted define cuántos números incrementará

Escribí este código en la celda Ax17.

Más tarde obtuve valor de AT17con

=INDIRECT(AX17)

Hecho !!!

¡Ahora puedes incrementar columnas en lugar de filas!

Mark Twain
fuente
0

Aquí está mi solución (la celda A1 contiene "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
fuente
0

Rellene la columna A (de la fila 1) con números consecutivos que comienzan con 0 a 100 [o hasta el requisito]

Rellene la celda B1 con la siguiente fórmula

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

Copie la fórmula de B1 a otras filas en la Columna B [hasta la fila que ha llenado la Columna A]

Esto funciona para 3 caracteres AAA a ZZZ

La fórmula necesita ser modificada según el no. de caracteres necesarios (AA a ZZ / AAAAA a ZZZZZ / etc.)

Sundar
fuente
0

Sé que esto está ligeramente fuera de la pregunta principal, pero creo que responde a la pregunta más completa ... Si tiene una letra en A1, y desea que sea un paso en un número en B1, la siguiente combinación de fórmula lo conseguirá desde letras individuales a 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)))

Cópielo en la columna y los resultados están ahí. Cambie el número B5 y los resultados cambian.

Graham Porter
fuente
-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")))
usuario560874
fuente
2
¿Puede por favor agregar algunas explicaciones, extender su respuesta
Romeo Ninov
-1

Para las columnas, la siguiente es la solución correcta.

= SI (LEN (DIRECCIÓN (1, COLUMNA ())) = 4, MEDIA (DIRECCIÓN (1, COLUMNA ()), 2,1), MEDIA (DIRECCIÓN (1, COLUMNA ()), 2,2))

usuario2459372
fuente
3
No veo cómo su fórmula responde a la pregunta "¿Cómo incrementar cadenas como AA a AB?".
Máté Juhász