Come aumentare la stringa come AA su AB?


10

Ho stringhe in Excel come AAo XA.

Ho bisogno di incrementarli in questo modo:

Per AAnella cella A1, sarà ABnella cella B1, ACnella cella B2 e così via.

Per XAnella cella A1, sarà XBnella cella B1, XCnella cella B2 e così via.

Ho provato il codice popolare =CHAR(CODE(A1)+1)ma non funziona dopo Z.

Eventuali suggerimenti sono ben accetti.


Does not work after Z? Intendi dopo AZoZZ
Dave il

Ciao Dave, ho provato AB e da allora cerca B.
Andy K,

Se questo ha qualcosa a che fare con il modo in cui Excel fa riferimento alle celle, considera di evitarlo lavorando con la notazione RC:File > Options > Formulas >R1C1 reference style
Dirk Horsten,

Ciao Dirk, molte grazie per il consiglio. Tuttavia perché?
Andy K,

1
Se stavi pianificando di utilizzare le stringhe risultanti in una INDIRECTformula, ad esempio, il commento di @ DirkHorsten potrebbe essere degno di nota.
CallumDA,

Risposte:


11

Prova questo: inserisci "AA" nella cella A1 e inserisci la seguente formula nella cella B1 e trascina attraverso

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

Aumenterà come segue: AA, AB, AC, ..., AZ, BA, BB, BC .... ecc

Potresti voler adattare questa formula per adattarla alla tua presentazione particolare. Si noti che questo non funzionerà oltre "ZZ".

Aggiornamento: bug corretto


1
= IF (RIGHT (A1) = "Z", CHAR (CODE (LEFT (A1)) + 1), LEFT (A1)) & IF (RIGHT (A1) <> "Z", CHAR (CODE (RIGHT (A1) ) +1), CHAR (65))
user26631

3

Possiamo usare lo stesso foglio di calcolo Excel per aiutare ad incrementare le lettere - l'incremento funzionerà da AaXFC

Per prima cosa crea il riferimento di cella: INDIRECT(A1&"1")
quindi trova l'indirizzo della colonna successiva su: ADDRESS(1,COLUMN(INDIRECT(A10&"1"))+1)

Quindi da $ ?? $ 1 estraiamo le lettere: 2 modi:

  1. Cerca il secondo $ e ritaglia il testo tra di loro

    =MID(ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1),2,FIND("$",ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1),2)-2)
    
  2. Sostituisci 1 e $ con niente nella stringa

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

Scegli quale funziona meglio per te


2
È possibile evitare la sostituzione "$" includendo il terzo argomento facoltativo 4nella ADDRESSfunzione per fare in modo che restituisca un riferimento di cella relativo. Quindi hai solo bisogno della formula:=SUBSTITUTE(ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1,4),"1","")
Eccellente il

2

Un altro esempio: digita questo nella cella A1, quindi copia la formula in una o tutte le celle.

= CAR (MOD (ROW (A1) -1; 26) +65) & CAR (MOD (COLONNA (A1) -1; 26) +65)

Inteso come esempio di come si possa pensare al problema.


2

Questo verrà ripristinato su "A" quando raggiunge "Z"

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

Puoi costruirlo oltre a questo con più istruzioni if.

O

Ho appena scritto questa formula per qualcosa di simile:

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))

1

Come altra soluzione per esso con l'utilizzo ADDRESS()è:

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

La formula sopra restituirà AAin prima riga e ABin seconda riga e così via.

Anche con l'utilizzo della matematica la formula è:

=CONCATENATE(CHAR(INT(ROW()/26)+65),CHAR(MOD(ROW()-1,26)+65))

1

Ho usato questo codice per ottenere l'indirizzo della cella

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

Questo esempio è per AT17l'indirizzo della cella.

Incrementi definisci quanti numeri incrementerai

Ho scritto questo codice nella cella Ax17.

Più tardi ho ottenuto il valore di AT17con

=INDIRECT(AX17)

Fatto !!!

Ora puoi incrementare le colonne anziché le righe !!!


0

Ecco la mia soluzione (la cella 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))

0

Riempi la colonna A (dalla riga 1) con numeri consecutivi che iniziano da 0 a 100 [o fino al requisito]

Riempi la cella B1 con la formula seguente

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

Copia la formula da B1 ad altre righe nella colonna B [fino alla riga che hai riempito la colonna A]

Funziona con 3 caratteri da AAA a ZZZ

La formula deve essere modificata al n. dei caratteri richiesti (da AA a ZZ / da AAAAA a ZZZZZ / ecc.)


0

So che questo è leggermente fuori dalla domanda principale, ma penso che risponda alla domanda più completa ... Se hai una lettera in A1 e desideri che venga tratteggiata da un numero in B1, la seguente combinazione di formula lo raggiungerà da lettere singole 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)))

Copialo nella colonna e i risultati ci sono. Cambia il numero B5 e i risultati cambiano.


-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")))

2
Puoi per favore aggiungere alcune spiegazioni, estendere la tua risposta
Romeo Ninov,

-1

Per le colonne, la seguente è la soluzione giusta.

= IF (LEN (ADDRESS (1, COLONNA ())) = 4, MID (ADDRESS (1, COLONNA ()), 2,1), MID (ADDRESS (1, COLONNA ()), 2,2))


3
Non vedo come la tua formula risponda alla domanda "Come aumentare la stringa come da AA ad AB?".
Máté Juhász,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.