Jak zwiększyć ciąg znaków jak AA do AB?


10

Mam ciągi w programie Excel, takie jak AAlub XA.

Muszę zwiększyć je w ten sposób:

W AAkomórce A1 będzie to ABkomórka B1, ACkomórka B2 i tak dalej.

W XAkomórce A1 będzie to XBkomórka B1, XCkomórka B2 i tak dalej.

Próbowałem popularny kod, =CHAR(CODE(A1)+1)ale nie działa po Z.

Wszelkie wskazówki są mile widziane.


Does not work after Z? Masz na myśli po AZlubZZ
Dave

Cześć Dave, próbowałem AB i od tego czasu szukałem B.
Andy K

Jeśli ma to coś wspólnego ze sposobem, w jaki Excel odwołuje się do komórek, rozważ unikanie tego, pracując z notacją RC:File > Options > Formulas >R1C1 reference style
Dirk Horsten

Cześć Dirk, wielkie dzięki za radę. Ale dlaczego?
Andy K

1
Jeśli planujesz na przykład wykorzystać wynikowe ciągi znaków w INDIRECTformule, komentarz @ DirkHorsten może być wart uwagi.
CallumDA

Odpowiedzi:


11

Spróbuj tego: umieść „AA” w komórce A1 i wprowadź następującą formułę do komórki B1 i przeciągnij przez

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

Przyrost będzie następował: AA, AB, AC, ..., AZ, BA, BB, BC .... itd

Możesz dostosować tę formułę do swojej konkretnej prezentacji. Pamiętaj, że to nie zadziała po „ZZ”.

Aktualizacja: naprawiony błąd


1
= JEŻELI (PRAWO (A1) = „Z”, ZNAK (KOD (LEWY (A1)) + 1), LEWY (A1)) i JEŻELI (PRAWY (A1) <> „Z”, ZNAK (KOD (PRAWY (A1)) ) +1), CHAR (65))
użytkownik26631

3

Możemy użyć samego arkusza kalkulacyjnego Excel, aby pomóc zwiększyć litery - przyrost będzie działał od AdoXFC

Najpierw utwórz odwołanie do komórki: INDIRECT(A1&"1")
następnie znajdź adres następnej kolumny nad: ADDRESS(1,COLUMN(INDIRECT(A10&"1"))+1)

Następnie z $ ?? $ 1 wydobywamy litery: 2 sposoby:

  1. Poszukaj drugiego $ i wytnij tekst między nimi

    =MID(ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1),2,FIND("$",ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1),2)-2)
    
  2. Zamień 1 i $ na nic w ciągu

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

Wybierz, który z nich najbardziej Ci odpowiada


2
Możesz uniknąć podstawiania „$”, włączając opcjonalny trzeci argument 4w ADDRESSfunkcji, aby zwracał względne odwołanie do komórki. Potrzebujesz zatem wzoru:=SUBSTITUTE(ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1,4),"1","")
Excellll,

2

Kolejny przykład: wpisz to w komórce A1, a następnie skopiuj formułę do dowolnej lub wszystkich komórek.

= ZNAK (MOD (WIERSZ (A1) -1; 26) +65) i ZNAK (MOD (KOLUMNA (A1) -1; 26) +65)

Przeznaczony jako przykład tego, jak można myśleć o problemie.


2

Spowoduje to zresetowanie do „A”, gdy osiągnie „Z”

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

Możesz budować poza tym, używając więcej instrukcji if.

LUB

Właśnie napisałem tę formułę dla czegoś podobnego:

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

Innym rozwiązaniem tego przy użyciu ADDRESS()jest:

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

Powyższa formuła powróci AAw pierwszym i ABdrugim rzędzie i tak dalej.

Przy użyciu matematyki formuła jest:

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

1

Użyłem tego kodu, aby uzyskać adres komórki

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

Ten przykład dotyczy AT17adresu komórki.

Przyrost określasz, ile liczb chcesz zwiększyć

Napisałem ten kod w komórce Ax17.

Później uzyskałem wartość AT17z

=INDIRECT(AX17)

Gotowy !!!

Teraz możesz zwiększać kolumny zamiast wierszy !!!


0

Oto moje rozwiązanie (komórka A1 zawiera „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

Wypełnij kolumnę A (od rzędu 1) kolejnymi liczbami, zaczynając od 0 do 100 [lub do wymagania]

Wypełnij komórkę B1 poniższym wzorem

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

Skopiuj formułę z B1 do innych wierszy w kolumnie B [do wiersza wypełnionego w kolumnie A]

Działa to dla 3 znaków AAA do ZZZ

Formuła musi zostać zmodyfikowana zgodnie z nr. wymaganych znaków (AA do ZZ / AAAAA do ZZZZZ / itp.)


0

Wiem, że jest to nieco poza głównym pytaniem, ale myślę, że odpowiada na pełniejsze pytanie ... Jeśli masz literę w A1 i chcesz, aby była ona powiększona o cyfrę w B1, następująca kombinacja formuł osiągnie to z pojedyncze litery do 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)))

Skopiuj go w dół kolumny i tam są wyniki. Zmień numer B5, a wyniki się zmienią.


-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
Czy możesz dodać wyjaśnienia, poszerz swoją odpowiedź
Romeo Ninov,

-1

W przypadku kolumn poniższe rozwiązanie jest właściwym rozwiązaniem.

= JEŻELI (DŁUGOŚĆ (ADRES (1, KOLUMNA ())) = 4, MID (ADRES (1, KOLUMNA ()), 2,1), MID (ADRES (1, KOLUMNA ()), 2,2))


3
Nie rozumiem, jak formuła odpowiada na pytanie „Jak zwiększyć ciąg znaków jak AA do AB?”.
Máté Juhász
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.