Vzorec aplikace Excel: Rozdělení textu a čísel -

Obecný vzorec

=MIN(FIND((0,1,2,3,4,5,6,7,8,9),A1&"0123456789"))

souhrn

Chcete-li oddělit text a čísla, můžete použít vzorec založený na funkci FIND, MIN a LEN s funkcí LEFT nebo RIGHT podle toho, zda chcete extrahovat text nebo číslo. V zobrazeném příkladu je vzorec v C5:

=MIN(FIND((0,1,2,3,4,5,6,7,8,9),B5&"0123456789"))

který vrací 7, pozici čísla 3 v řetězci „jablka30“.

Vysvětlení

Přehled

Vzorec vypadá složitě, ale mechanika je ve skutečnosti docela jednoduchá.

Stejně jako u většiny vzorců, které rozdělují nebo extrahují text, je klíčové najít polohu hledané věci. Jakmile máte pozici, můžete použít jiné funkce k extrahování toho, co potřebujete.

V tomto případě předpokládáme, že čísla a text jsou kombinovány a že číslo se objeví za textem. Z původního textu, který se zobrazí v jedné buňce, chcete rozdělit text a čísla do samostatných buněk, například takto:

Originál Text Číslo
Jablka30 Jablka 30
broskve24 broskve 24
12. pomeranče pomeranče 12
broskve0 broskve 0

Jak je uvedeno výše, v tomto případě je klíčem najít počáteční pozici čísla, což můžete udělat s tímto vzorcem:

=MIN(FIND((0,1,2,3,4,5,6,7,8,9),A1&"0123456789"))

Jakmile budete mít pozici, extrahujete pouze text:

=LEFT(A1,position-1)

Chcete-li extrahovat pouze číslo, použijte:

=RIGHT(A1,LEN(A1)-position+1)

V prvním výše uvedeném vzorci používáme funkci FIND k vyhledání počáteční polohy čísla. Pro find_text používáme maticovou konstantu (0,1,2,3,4,5,6,7,8,9), což způsobí, že funkce FIND provede samostatné hledání každé hodnoty v maticové konstantě. Protože konstanta pole obsahuje 10 čísel, výsledkem bude pole s 10 hodnotami. Pokud je například původní text „jablka30“, výsledné pole bude:

(8,10,11,7,13,14,15,16,17,18)

Každé číslo v tomto poli představuje pozici položky v konstantě pole uvnitř původního textu.

Dále funkce MIN vrací nejmenší hodnotu v seznamu, což odpovídá pozici prvního čísla, které se objeví v původním textu. Funkce FIND v podstatě získá všechny pozice čísel a MIN nám dá pozici prvního čísla: všimněte si, že 7 je nejmenší hodnota v poli, což odpovídá pozici čísla 3 v původním textu.

Možná vás zajímá divná konstrukce pro within_text ve funkci find:

B5&"0123456789"

Tato část vzorce spojuje všechna možná čísla 0-9 s původním textem v B5. FIND bohužel nevrátí nulu, když není nalezena hodnota, takže je to jen chytrý způsob, jak se vyhnout chybám, které by mohly nastat, když číslo není nalezeno.

V tomto příkladu, protože předpokládáme, že se číslo v původním textu objeví vždy na druhém místě, funguje dobře, protože MIN vynutí pouze nejmenší nebo první výskyt čísla, které má být vráceno. Dokud se v původním textu objeví číslo, bude tato pozice vrácena.

Pokud původní text neobsahuje žádná čísla, bude vrácena falešná pozice rovnající se délce původního textu + 1. S touto falešnou pozicí výše uvedený LEVÝ vzorec stále vrátí text a pravý vzorec vrátí prázdný řetězec ("").

Dobré odkazy

Vzorec od Ricka Rothsteina v Mr Excel

Zajímavé články...