Obsah
V tomto návodu se podíváme na to, jak změnit čísla sloupců aplikace Excel na odpovídající abecední znaky.
Při sestavování složitých vzorců v aplikaci Excel můžete někdy potřebovat získat písmeno sloupce konkrétní buňky nebo z daného čísla. To lze provést dvěma způsoby: pomocí vestavěných funkcí nebo vlastních funkcí.
Jak převést číslo sloupce na abecedu (jednopísmenné sloupce)
Pokud se název sloupce skládá z jednoho písmene od A do Z, můžete jej získat pomocí tohoto jednoduchého vzorce:
CHAR(64 + col_number )Například pro převod čísla 10 na písmeno sloupce je vzorec následující:
=CHAR(64 + 10)
Je také možné zadat číslo do některé buňky a odkazovat na tuto buňku ve vzorci:
=CHAR(64 + A2)
Jak tento vzorec funguje:
Funkce CHAR vrací znak na základě kódu znaku v sadě ASCII. Hodnoty ASCII velkých písmen anglické abecedy jsou 65 (A) až 90 (Z). Chcete-li tedy získat kód znaku velkého písmene A, přičtěte 1 k 64; chcete-li získat kód znaku velkého písmene B, přičtěte 2 k 64 atd.
Jak převést číslo sloupce aplikace Excel na písmeno (libovolný sloupec)
Pokud hledáte univerzální vzorec, který funguje pro libovolný sloupec v aplikaci Excel (1písmenný, 2písmenný a 3písmenný), budete muset použít trochu složitější syntaxi:
SUBSTITUTE(ADRESA(1, col_number , 4), "1", "")S písmenem sloupce A2 má vzorec tento tvar:
=SUBSTITUTE(ADDRESS(1, A2, 4), "1", "")
Jak tento vzorec funguje:
Nejprve zkonstruujte adresu buňky s číslem sloupce, který vás zajímá. Za tímto účelem zadejte funkci ADDRESS následující argumenty:
- 1 pro row_num (na čísle řádku ve skutečnosti nezáleží, takže můžete použít libovolné).
- A2 (buňka obsahující číslo sloupce) pro column_num .
- 4 pro abs_num vrátit relativní odkaz.
S výše uvedenými parametry vrátí funkce ADDRESS jako výsledek textový řetězec "A1".
Protože potřebujeme pouze písmeno sloupce, odstraníme číslo řádku pomocí funkce SUBSTITUTE, která v textu "A1" vyhledá "1" (nebo jakékoliv číslo řádku, které jste natvrdo zadali do funkce ADDRESS) a nahradí ho prázdným řetězcem ("").
Získání písmene sloupce z čísla sloupce pomocí vlastní funkce Vlastní funkce
Pokud potřebujete pravidelně převádět čísla sloupců na abecední znaky, může vám vlastní uživatelsky definovaná funkce (UDF) výrazně ušetřit čas.
Kód funkce je poměrně jednoduchý a přímočarý:
Public Function ColumnLetter(col_num) ColumnLetter = Split(Cells(1, col_num).Address, "$" )(1) End FunctionZde používáme Buňky odkázat na buňku v řádku 1 a zadané číslo sloupce a Adresa vrátit řetězec obsahující absolutní odkaz na danou buňku (například $A$1). Funkce Split pak rozdělí vrácený řetězec na jednotlivé prvky pomocí znaku $ jako oddělovače a vrátí prvek (1), což je písmeno sloupce.
Vložte kód do editoru VBA a nový kód ColumnLetter Funkce je připravena k použití. Podrobný návod naleznete v článku: Jak vložit kód VBA do aplikace Excel.
Z pohledu koncového uživatele je syntaxe funkce jednoduchá:
ColumnLetter(col_num)Kde: col_num je číslo sloupce, které chcete převést na písmeno.
Váš skutečný vzorec může vypadat takto:
=ColumnLetter(A2)
A vrátí přesně stejné výsledky jako nativní funkce Excelu popsané v předchozím příkladu:
Jak získat písmeno sloupce určité buňky
Chcete-li identifikovat písmeno sloupce konkrétní buňky, použijte funkci COLUMN k získání čísla sloupce a toto číslo předejte funkci ADDRESS. Celý vzorec bude mít tento tvar:
SUBSTITUTE(ADRESA(1, SLOUPEC( cell_address ), 4), "1", "")Jako příklad uveďme písmeno sloupce buňky C5:
=SUBSTITUTE(ADRESA(1, SLOUPEC(C5), 4), "1", "")
Výsledek je samozřejmě "C" :)
Jak získat písmeno sloupce aktuální buňky
Pro zjištění písmene aktuální buňky je vzorec téměř stejný jako ve výše uvedeném příkladu. Jediný rozdíl je v tom, že funkce COLUMN() je použita s prázdným argumentem pro odkaz na buňku, ve které se vzorec nachází:
=SUBSTITUTE(ADRESA(1, SLOUPEC(), 4), "1", "")
Jak vytvořit odkaz na dynamický rozsah z čísla sloupce
Doufáme, že vám předchozí příklady poskytly nové náměty k přemýšlení, ale možná vás zajímá, jak je využít v praxi.
V tomto příkladu si ukážeme, jak použít vzorec "číslo sloupce na písmeno" pro řešení reálných úloh. Konkrétně vytvoříme dynamický vzorec XLOOKUP, který bude vytahovat hodnoty z určitého sloupce na základě jeho čísla.
Předpokládejme, že z níže uvedené vzorové tabulky chcete získat údaj o zisku pro daný projekt (H2) a týden (H3).
Pro splnění úkolu je třeba zadat XLOOKUPu rozsah, ze kterého má vracet hodnoty. Protože máme k dispozici pouze číslo týdne, které odpovídá číslu sloupce, převedeme nejprve toto číslo na písmeno sloupce a poté zkonstruujeme odkaz na rozsah.
Pro usnadnění si celý proces rozdělíme do tří snadno proveditelných kroků.
- Převod čísla sloupce na písmeno
U čísla sloupce H3 použijte již známý vzorec a změňte jej na abecední znak:
=SUBSTITUTE(ADRESA(1, H3, 4), "1", "")
Tip: Pokud číslo v datovém souboru neodpovídá číslu sloupce, nezapomeňte provést požadovanou opravu. Pokud bychom například měli data za 1. týden ve sloupci B, data za 2. týden ve sloupci C atd., pak bychom použili H3+1, abychom získali správné číslo sloupce.
- Vytvoření řetězce představujícího odkaz na rozsah
Chcete-li vytvořit odkaz na rozsah ve formě řetězce, spojte písmeno sloupce vrácené výše uvedeným vzorcem s číslem prvního a posledního řádku. V našem případě se datové buňky nacházejí v řádcích 3 až 8, proto použijeme tento vzorec:
=SUBSTITUTE(ADDRESS(1, H3, 4), "1", "") & "3:" & SUBSTITUTE(ADDRESS(1, H3, 4), "1", "") & "8"
Vzhledem k tomu, že H3 obsahuje znak "3", který se převede na znak "C", projde náš vzorec následující transformací:
="C"&"3:"&"C"&"8"
A vytvoří řetězec C3:C8.
- Vytvoření referenčního dynamického rozsahu
Chcete-li textový řetězec převést na platný odkaz, kterému Excel rozumí, vložte výše uvedený vzorec do funkce INDIRECT a poté jej předejte třetímu argumentu funkce XLOOKUP:
=XLOOKUP(H2, E3:E8, INDIRECT(H4), "Nenalezeno")
Chcete-li se zbavit další buňky obsahující řetězec návratového rozsahu, můžete vzorec SUBSTITUTE ADDRESS umístit do samotné funkce INDIRECT:
=XLOOKUP(H2, E3:E8, INDIRECT(SUBSTITUTE(ADDRESS(1, H3, 4), "1", "") & "3:" & SUBSTITUTE(ADDRESS(1, H3, 4), "1", "") & "8"), "Not found")
S naší vlastní funkcí ColumnLetter můžete získat kompaktnější a elegantnější řešení:
=XLOOKUP(H2, E3:E8, INDIRECT(ColumnLetter(H3) & "3:" & ColumnLetter(H3) & "8"), "Nenalezeno")
Takto se v Excelu vyhledává písmeno sloupce z čísla. Děkuji vám za přečtení a těším se na vás na našem blogu příští týden!
Cvičebnice ke stažení
Převod čísla sloupce Excelu na písmeno - příklady (.xlsm soubor)