Innehållsförteckning
I den här handledningen ska vi se hur du ändrar Excel-kolonnumren till motsvarande alfabetiska tecken.
När du bygger komplexa formler i Excel kan du ibland behöva få fram en kolumnbokstav från en specifik cell eller från ett givet tal. Detta kan göras på två sätt: genom att använda inbyggda funktioner eller en egen funktion.
Hur konverterar man kolonnnummer till alfabet (kolumner med en enda bokstav)?
Om kolumnnamnet består av en enda bokstav, från A till Z, kan du få fram det genom att använda den här enkla formeln:
CHAR(64 + col_number )Om du till exempel vill konvertera talet 10 till en kolumnbokstav är formeln:
=CHAR(64 + 10)
Det är också möjligt att ange ett tal i en cell och hänvisa till den cellen i formeln:
=CHAR(64 + A2)
Hur denna formel fungerar:
CHAR-funktionen returnerar ett tecken baserat på teckenkoden i ASCII-uppsättningen. ASCII-värdena för de stora bokstäverna i det engelska alfabetet är 65 (A) till 90 (Z). För att få teckenkoden för versal A adderar du alltså 1 till 64, för att få teckenkoden för versal B adderar du 2 till 64 och så vidare.
Hur man konverterar Excel-kolonnummer till bokstav (vilken kolumn som helst)
Om du letar efter en mångsidig formel som fungerar för alla kolumner i Excel (1 bokstav, 2 bokstäver och 3 bokstäver) måste du använda en lite mer komplex syntax:
SUBSTITUT(ADRESS(1, col_number , 4), "1", "")Med kolumnbokstaven i A2 får formeln följande form:
= SUBSTITUT(ADRESS(1, A2, 4), "1", "")
Hur denna formel fungerar:
Först konstruerar du en celladress med det aktuella kolumnnumret. För detta anger du följande argument till ADDRESS-funktionen:
- 1 för row_num (radnumret spelar egentligen ingen roll, så du kan använda vilket som helst).
- A2 (cellen med kolumnnumret) för kolumn_nummer .
- 4 för abs_num argumentet för att återge en relativ referens.
Med ovanstående parametrar returnerar ADDRESS-funktionen textsträngen "A1" som resultat.
Eftersom vi bara behöver en kolumnbokstav tar vi bort radnumret med hjälp av funktionen SUBSTITUTE, som söker efter "1" (eller vilket radnummer som helst som du har hårdkodat i ADDRESS-funktionen) i texten "A1" och ersätter det med en tom sträng (""").
Få fram kolumnbokstav från kolumnnummer med hjälp av anpassad funktion Anpassad funktion
Om du regelbundet behöver konvertera kolumnnummer till alfabetiska tecken kan en anpassad användardefinierad funktion (UDF) spara mycket tid.
Koden för funktionen är ganska enkel och okomplicerad:
Public Function ColumnLetter(col_num) ColumnLetter = Split(Cells(1, col_num).Address, "$" )(1) End FunctionHär använder vi Celler för att hänvisa till en cell i rad 1 och det angivna kolumnnumret och Adress för att returnera en sträng som innehåller en absolut referens till den cellen (t.ex. $A$1). Funktionen Split delar sedan upp den returnerade strängen i enskilda element med $-tecknet som separator, och vi returnerar element (1), som är kolumnbokstaven.
Klistra in koden i VBA-redigeraren, och din nya ColumnLetter Funktionen är redo att användas. Detaljerad vägledning finns i: Hur man infogar VBA-kod i Excel.
Ur slutanvändarens synvinkel är funktionens syntax så här enkel:
ColumnLetter(col_num)Var col_num är det kolumnnummer som du vill omvandla till en bokstav.
Din verkliga formel kan se ut på följande sätt:
=SkolumnLetter(A2)
Den ger exakt samma resultat som de Excel-funktioner som vi diskuterade i det föregående exemplet:
Hur får man fram kolumnbokstaven i en viss cell
För att identifiera en kolumnbokstav i en specifik cell använder du COLUMN-funktionen för att hämta kolumnnumret och använder det numret i ADDRESS-funktionen. Den fullständiga formeln får denna form:
SUBSTITUTE(ADRESS(1, KOLUMN( cell_address ), 4), "1", "")Låt oss till exempel hitta en kolumnbokstav i cell C5:
=SUBSTITUT(ADRESS(1, KOLUMN(C5), 4), "1", "")
Resultatet är naturligtvis "C" :)
Hur man får fram kolumnbokstaven i den aktuella cellen
För att räkna ut bokstaven i den aktuella cellen är formeln nästan densamma som i exemplet ovan. Den enda skillnaden är att funktionen COLUMN() används med ett tomt argument för att hänvisa till cellen där formeln finns:
=SUBSTITUTE(ADDRESS(1, COLUMN(), 4), "1", "")
Hur man skapar en referens för dynamiskt intervall från kolumnnummer
Förhoppningsvis har de tidigare exemplen gett dig några nya tankeställare, men du kanske undrar hur de praktiska tillämpningarna ser ut.
I det här exemplet visar vi hur du kan använda formeln "kolumnnummer till bokstav" för att lösa verkliga uppgifter. Vi skapar särskilt en dynamisk XLOOKUP-formel som hämtar värden från en specifik kolumn baserat på dess nummer.
Anta att du vill få fram en vinstsiffra för ett visst projekt (H2) och en viss vecka (H3) från exempeltabellen nedan.
För att utföra uppgiften måste du ge XLOOKUP ett intervall som det ska återge värden från. Eftersom vi bara har veckonumret, som motsvarar kolumnnumret, ska vi först konvertera det numret till en kolumnbokstav och sedan konstruera intervallreferensen.
För att göra det enklare kan vi dela upp hela processen i tre lättförståeliga steg.
- Konvertera ett kolumnnummer till en bokstav
Med kolumnnumret i H3 använder du den redan välkända formeln för att ändra det till ett alfabetiskt tecken:
= SUBSTITUT(ADRESS(1, H3, 4), "1", "")
Tips: Om numret i ditt dataset inte stämmer överens med kolumnnumret, se till att göra den nödvändiga korrigeringen. Om vi till exempel hade data för vecka 1 i kolumn B, data för vecka 2 i kolumn C och så vidare, skulle vi använda H3+1 för att få fram det korrekta kolumnnumret.
- Konstruera en sträng som representerar en intervallreferens
För att skapa en intervallreferens i form av en sträng sammanfogar du kolumnbokstaven som returneras av formeln ovan med det första och sista radnumret. I vårt fall finns datacellerna i raderna 3 till 8, så vi använder den här formeln:
=SUBSTITUTE(ADDRESS(1, H3, 4), "1", "") & "3:" & SUBSTITUTE(ADDRESS(1, H3, 4), "1", "") & "8"
Eftersom H3 innehåller "3", som omvandlas till "C", genomgår vår formel följande omvandling:
="C"&"3:"&"C"&"8"
Och producerar strängen C3:C8.
- Gör en referens för det dynamiska området.
Om du vill omvandla en textsträng till en giltig referens som Excel kan förstå, kan du använda ovanstående formel i funktionen INDIRECT och sedan skicka den till det tredje argumentet i XLOOKUP:
=XLOOKUP(H2, E3:E8, INDIRECT(H4), "Ej funnen")
Om du vill bli av med en extra cell som innehåller strängen för returområdet kan du placera formeln SUBSTITUTE ADDRESS i själva INDIRECT-funktionen:
=XLOOKUP(H2, E3:E8, INDIRECT(SUBSTITUTE(ADDRESS(1, H3, 4), "1", "") & "3:" & SUBSTITUTE(ADDRESS(1, H3, 4), "1", "") & "8"), "Not found")
Med vår anpassade ColumnLetter-funktion kan du få en mer kompakt och elegant lösning:
=XLOOKUP(H2, E3:E8, INDIRECT(ColumnLetter(H3) & "3:" & ColumnLetter(H3) & "8"), "Not found")
Så här hittar du en kolumnbokstav från ett tal i Excel. Tack för att du läste och jag ser fram emot att se dig på vår blogg nästa vecka!
Arbetsbok för övning för nedladdning
Excel-kolumnnummer till bokstav - exempel (.xlsm-fil)