
Všeobecný vzorec
=MIN(FIND((0,1,2,3,4,5,6,7,8,9),A1&"0123456789"))
Zhrnutie
Na oddelenie textu a čísel môžete použiť vzorec založený na funkcii FIND, MIN a LEN s funkciou LEFT alebo RIGHT podľa toho, či chcete extrahovať text alebo číslo. V zobrazenom príklade je vzorec v C5:
=MIN(FIND((0,1,2,3,4,5,6,7,8,9),B5&"0123456789"))
ktorá vráti 7, pozíciu čísla 3 v reťazci „jablká30“.
Vysvetlenie
Prehľad
Vzorec vyzerá zložito, ale mechanika je v skutočnosti celkom jednoduchá.
Rovnako ako u väčšiny vzorcov, ktoré rozdeľujú alebo extrahujú text, je kľúčom nájsť polohu hľadanej položky. Keď budete mať pozíciu, môžete pomocou ďalších funkcií extrahovať to, čo potrebujete.
V takom prípade predpokladáme, že čísla a text sú spojené a že číslo sa objaví za textom. Z pôvodného textu, ktorý sa zobrazuje v jednej bunke, chcete rozdeliť text a čísla do samostatných buniek, napríklad takto:
Originál | Text | Číslo |
Jablká30 | Jablká | 30 |
broskyne24 | broskyne | 24 |
pomaranče12 | pomaranče | 12 |
broskyne0 | broskyne | 0 |
Ako už bolo uvedené vyššie, kľúčom v tomto prípade je vyhľadanie počiatočnej polohy čísla, čo môžete urobiť pomocou tohto vzorca:
=MIN(FIND((0,1,2,3,4,5,6,7,8,9),A1&"0123456789"))
Keď budete mať pozíciu, na extrahovanie iba textu použite:
=LEFT(A1,position-1)
Ak chcete extrahovať iba toto číslo, použite:
=RIGHT(A1,LEN(A1)-position+1)
V prvom vyššie uvedenom vzorci používame na nájdenie začiatočnej polohy čísla funkciu FIND. Pre text find_text používame konštantu poľa (0,1,2,3,4,5,6,7,8,9), čo spôsobí, že funkcia FIND vykoná samostatné vyhľadávanie každej hodnoty v konštante poľa. Pretože konštanta poľa obsahuje 10 čísel, výsledkom bude pole s 10 hodnotami. Ak je napríklad pôvodný text „jablká 30“, výsledné pole bude:
(8,10,11,7,13,14,15,16,17,18)
Každé číslo v tomto poli predstavuje pozíciu položky v konštante poľa v pôvodnom texte.
Ďalej funkcia MIN vráti najmenšiu hodnotu v zozname, ktorá zodpovedá pozícii prvého čísla, ktoré sa objaví v pôvodnom texte. Funkcia FIND v podstate získa všetky číselné pozície a MIN nám dá prvú číselnú pozíciu: všimnite si, že 7 je najmenšia hodnota v poli, ktorá zodpovedá pozícii čísla 3 v pôvodnom texte.
Možno by vás zaujímalo, aká zvláštna je konštrukcia pre within_text vo funkcii find:
B5&"0123456789"
Táto časť vzorca spája všetky možné čísla 0-9 s pôvodným textom v B5. FIND bohužiaľ nevráti nulu, keď sa nenájde hodnota, takže je to len šikovný spôsob, ako sa vyhnúť chybám, ktoré by mohli nastať, keď sa číslo nenájde.
V tomto príklade, pretože predpokladáme, že číslo sa v pôvodnom texte vždy zobrazí ako druhé, funguje to dobre, pretože MIN vynúti vrátenie iba najmenšieho alebo prvého výskytu čísla. Pokiaľ sa v pôvodnom texte objaví číslo, daná pozícia sa vráti.
Ak pôvodný text neobsahuje žiadne čísla, vráti sa falošná pozícia rovná dĺžke pôvodného textu + 1. S touto falošnou pozíciou LEVÝ vzorec vyššie vráti text a PRAVÝ vzorec prázdny reťazec („“).