Přejít k hlavnímu obsahu

Najděte n-tý výskyt znaku v Excelu – 3 rychlé způsoby

Autor: Xiaoyang Naposledy změněno: 2024-04-24

Nalezení n-tého výskytu určitého znaku v textovém řetězci v Excelu může být užitečné zejména při analýze dat, kde může být nutné analyzovat řetězce nebo extrahovat informace na základě určitých oddělovačů nebo vzorů. Najdeme například 2. nebo 3. výskyt znaku "-" v textovém řetězci. Ukážu vám jednoduché techniky, jak tento úkol efektivně splnit.


Najděte n-tý výskyt znaku v textovém řetězci se vzorcem

Můžete vytvořit vzorec pro nalezení n-tého výskytu znaku. Postupujte prosím takto:

1. Zadejte nebo zkopírujte následující vzorec do buňky, kde chcete získat výsledek:

=FIND(CHAR(1),SUBSTITUTE(A2,"-",CHAR(1),2))
Poznámka: Ve výše uvedeném vzorci:
  • A2: Buňka obsahující řetězec.
  • -: Postava, kterou hledáte.
  • 2: 2. výskyt, který chcete najít, můžete změnit na 3,4...jak potřebujete.

2. Poté přetáhněte výplň vzorce dolů, aby se vzorec naplnil do dalších buněk a 2. pozice znaku – se zobrazí najednou, viz snímek obrazovky:

Vysvětlení vzorce:
  • NÁHRADNÍ nahradí n-tý výskyt znaku netisknutelným znakem (CHAR(1)).
  • HLEDAT hledá tento netisknutelný znak a udává pozici n-tého výskytu.

Najděte n-tý výskyt znaku v textovém řetězci pomocí Kutools pro Excel

Pokud nejste příznivcem používání vzorců nebo VBA, můžete zvážit vhodnou alternativu – Kutools pro Excel. V jeho skupinách Formule najdete užitečnou pomůcku – Najděte, kde se znak v řetězci objeví N-tý který rychle identifikuje a vrátí n-tou pozici libovolného znaku v buňce.

Po instalaci Kutools pro Excel, Klepněte na tlačítko Kutools > Pomocník vzorců > Pomocník vzorců k otevření Pomocník vzorců dialogové okno. Klikněte na buňku, kam chcete umístit výsledek. Poté postupujte následovně:

  1. vybrat Vyhledávání z rozevíracího seznamu Typ vzorce sekce;
  2. Vybrat Najděte, kde se znak v řetězci objeví N-tý in Vyberte vzorec sekce;
  3. Vyberte buňku, která obsahuje řetězec, který používáte, a poté zadejte určený znak a n-tý výskyt do textových polí v Zadání argumentů sekce;
  4. Konečně klikněte na tlačítko OK pro získání výsledku.

Najděte n-tý výskyt znaku v textovém řetězci pomocí funkce definované uživatelem

V této části prozkoumáme, jak vytvořit a použít UDF k nalezení n-tého výskytu znaku v Excelu, a poskytneme vám podrobného průvodce, který vám pomůže optimalizovat práci s daty.

  1. Podržte stisknuté tlačítko ALT + F11 klíče a otevře se Microsoft Visual Basic pro aplikace okno.
  2. klikněte Vložit > Modula vložte následující makro do okna modulu.
     Function FindN(sFindWhat As String, _
    sInputString As String, N As Integer) As Integer
    'Updateby Extendoffice
    Dim J As Integer
    Application.Volatile
    FindN = 0
    For J = 1 To N
    FindN = InStr(FindN + 1, sInputString, sFindWhat)
    If FindN = 0 Then Exit For
    Next
    End Function
  3. Poté zavřete okno vba. Vraťte se zpět do listu, zadejte do buňky následující vzorec a poté přetáhněte úchyt výplně dolů, abyste vyplnili vzorec do dalších buněk, viz snímek obrazovky:
    =FindN("-",A2,3)

  4. Související články:

    • Spočítejte počet výskytů slova ve sloupci
    • Pokud máte data sloupce, která obsahují některé duplicitní hodnoty, jak je ukázáno níže, a nyní chcete spočítat počet výskytů konkrétního slova v tomto sloupci. Nyní s tímto tutoriálem představuji některé triky, jak to rychle vyřešit v aplikaci Excel.
    • Extrahujte n-tý znak z řetězce
    • Obecně můžete chtít extrahovat řetězec po určitém znaku, ale v tomto případě chci extrahovat n-tý znak z řetězce, jak je uvedeno níže.
    • Extrahujte prvních/posledních n znaků z řetězce
    • Například v každé buňce je seznam s dlouhými řetězci a chcete z každého řetězce extrahovat pouze prvních n znaků, jako jsou první 3 znaky každého řetězce, a nyní můžete k řešení v aplikaci Excel použít následující metody .

Nejlepší nástroje pro produktivitu v kanceláři

🤖 Kutools AI asistent: Revoluční analýza dat založená na: Inteligentní provedení   |  Generovat kód  |  Vytvořte vlastní vzorce  |  Analyzujte data a generujte grafy  |  Vyvolejte funkce Kutools...
Populární funkce: Najít, zvýraznit nebo identifikovat duplikáty   |  Odstranit prázdné řádky   |  Kombinujte sloupce nebo buňky bez ztráty dat   |   Kolo bez vzorce ...
Super vyhledávání: Více kritérií VLookup    VLookup s více hodnotami  |   VLookup na více listech   |   Fuzzy vyhledávání ....
Pokročilý rozevírací seznam: Rychle vytvořte rozevírací seznam   |  Závislý rozbalovací seznam   |  Vícenásobný výběr rozevíracího seznamu ....
Správce sloupců: Přidejte konkrétní počet sloupců  |  Přesunout sloupce  |  Přepnout stav viditelnosti skrytých sloupců  |  Porovnejte rozsahy a sloupce ...
Doporučené funkce: Zaměření mřížky   |  Návrhové zobrazení   |   Velký Formula Bar    Správce sešitů a listů   |  Knihovna zdrojů (Automatický text)   |  Výběr data   |  Zkombinujte pracovní listy   |  Šifrovat/dešifrovat buňky    Odesílat e-maily podle seznamu   |  Super filtr   |   Speciální filtr (filtr tučné/kurzíva/přeškrtnuté...) ...
Top 15 sad nástrojů12 Text Tools (doplnit text, Odebrat znaky, ...)   |   50+ Graf Typ nemovitosti (Ganttův diagram, ...)   |   40+ Praktické Vzorce (Vypočítejte věk na základě narozenin, ...)   |   19 Vložení Tools (Vložte QR kód, Vložit obrázek z cesty, ...)   |   12 Konverze Tools (Čísla na slova, Přepočet měny, ...)   |   7 Sloučit a rozdělit Tools (Pokročilé kombinování řádků, Rozdělit buňky, ...)   |   ... a více

Rozšiřte své dovednosti Excel pomocí Kutools pro Excel a zažijte efektivitu jako nikdy předtím. Kutools for Excel nabízí více než 300 pokročilých funkcí pro zvýšení produktivity a úsporu času.  Kliknutím sem získáte funkci, kterou nejvíce potřebujete...

Popis


Office Tab přináší do Office rozhraní s kartami a usnadňuje vám práci

  • Povolte úpravy a čtení na kartách ve Wordu, Excelu, PowerPointu, Publisher, Access, Visio a Project.
  • Otevřete a vytvořte více dokumentů na nových kartách ve stejném okně, nikoli v nových oknech.
  • Zvyšuje vaši produktivitu o 50%a snižuje stovky kliknutí myší každý den!
Comments (28)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Your formula to find the Nth occurrence of a character in a string does not work. Using your example, adding 2 to the results of the imbedded find ensures a starting position for the initial find of a position beyond the 1st two c's but changing the +2 to +3 does not yield the position of the 4th "c", it simply starts the search one character deeper into the string and the result is still the 3rd "c". To find the 4th "c" the search must begin beyond the position of the 3rd "c". I look forward to your new solution.
This comment was minimized by the moderator on the site
Hello, David

Yes, as you said, the first formula does not work correctly, you can apply the second formula:
=FIND(CHAR(1),SUBSTITUTE(A2,"c",CHAR(1),2))

Note: The number "2" in the formula means the second "c", if you want to get the third, fourth "c", just change the number 2 to 3,4 as you need.
Please try, hope it can help you!
This comment was minimized by the moderator on the site
Find formula1 is imperfect. It will be a great help if it is removed. I have lost lot of time trying for 4th occurance of "a" in "vedanarayanan" Thanks.
This comment was minimized by the moderator on the site
To handle the exception of the formula, you can use same with if and iserro
=IF(ISERR(FIND("c",A1,FIND("c",A1)+2)),FIND("c",A1,FIND("c",A1)+0),FIND("c",A1,FIND("c",A1)+2))
This comment was minimized by the moderator on the site
"Substitute" lets you find the Nth occurrence of a term, so combine it with "find" as follows (where 5=5th occurrence):

=FIND(CHAR(1),SUBSTITUTE(A1,"c",CHAR(1),5))
This comment was minimized by the moderator on the site
Excellent! I am glad I scrolled up to review other comments after posting my own.
This comment was minimized by the moderator on the site
This is the correct answer! please replace this whole article with this one line of code.....
This comment was minimized by the moderator on the site
The first formula is completely useless and wrong but it works just correct for this example as the first and second "c"s are adjacent. The correct formula is:


For 2nd occurence -
=FIND("c",A1,FIND("c",A1)+1)

For 3rd occurence -
=FIND("c",A1,FIND("c",A1,FIND("c",A1)+1)+1) and so on...
This comment was minimized by the moderator on the site
Absolutely agree. The +2, or +3 etc.....entirely depends on the spacing between the n and (n+1) occurences of "c". Thus you would have to manually adjust for every cell if you were trying to copy this formula down a column for instance. Essentially the same as manually counting.


Ex. Let's try to find the 4th occurrence of "c" in cell A1 using the provided formula. Per the article we should use +3 in our nested FIND function to find the 4th occurrence.


Text in Cell A1:

"cab car abc cole cube"

Manually counting, the 4th occurrence is the "c" in cole in the character position of 13.


=FIND("c",A1,FIND("c",A1)+3)

The nested function, FIND("c",A1) will find the first occurrence of "c" in position 1.

Therefore,

FIND("c",A1)+3 = 1+3 = 4

Plugging that back into our formula,

=FIND("c",A1,FIND("c",A1)+3) = FIND("c",A1,1+3) = FIND("c",A1,4)

This new formula will look for the first occurrence of "c" beginning from character position 4. The 4th character in the string is the space just after cab.

Therefore, the formula will find the "c" in car and return the value of 5 for our formula. As we know from manually counting we are looking for 13 as the output.
This comment was minimized by the moderator on the site
The firs formula works correct in my version, in the note, it has explained how to find the third or forth or nth "c".

Note: You can change the 2 in the formula based on your needs. For example, if you want to find the fourth position of "c", you can change the 2 to 3. And if you want to find the first position of "c", you shuold change 2 to 0.
This comment was minimized by the moderator on the site
Try to find out the position of the second c with the first sentence of my above comment as the string using the first formula. You'll get to know how correct it is!
This comment was minimized by the moderator on the site
Hello all,

I have a text in an Excel cell " BY TRANSFER-NEFT*HDFC0000001*N08745987123546*J0032331*KUMAR--"

I need a function to extract just "N08745987123546"

Thanks
This comment was minimized by the moderator on the site
Hello, do you want to extract the numbers after No and the number of numbers are fixed? If so, you can use Kutools for Exccel's Extract text function, type No????to extract.
This comment was minimized by the moderator on the site
HI ALL,
I have a text in an Excel cell " BY TRANSFER-NEFT*HDHC0065431*N053112345624801*K0038331*krishna--"
I need a function to extract just "N053112345624801"
This comment was minimized by the moderator on the site
Formula 1 doesn't work on fourth, fifth, sixth etc. so (+3,4,5) will always show third position of letter "c" which is 19 second formula is working though.
This comment was minimized by the moderator on the site
Hello all, I have a text in an Excel cell "23 floyd lane, longville,KN 14564" I need a function to extract just "longville" Thanks
This comment was minimized by the moderator on the site
If you must use a function, try: =TRIM(MID(A1,SEARCH(",",A1)+1,SEARCH("!@#",SUBSTITUTE(A1,",","!@#",2))-SEARCH(",",A1)-1)) Otherwise, you might consider Data > Text to Columns > Delimited (using a comma as the separator).
This comment was minimized by the moderator on the site
Try this: =INDEX(SMALL(IF(MID(A1,MATCH(ROW(INDIRECT(1&":"&LEN(A1))),ROW(INDIRECT(1&":"&LEN(A1))),0),1)="c",MATCH(ROW(INDIRECT(1&":"&LEN(A1))),ROW(INDIRECT(1&":"&LEN(A1))),0),""),MATCH(ROW(INDIRECT(1&":"&LEN(A1)-LEN(SUBSTITUTE(A1,"c","")))),ROW(INDIRECT(1&":"&LEN(A1)-LEN(SUBSTITUTE(A1,"c","")))),0)),2) where "c" is the character required and 2 is the position. Note this is an array formula.
This comment was minimized by the moderator on the site
this is simpler: =INDEX(SMALL(IF(MID(A1,ROW(INDIRECT(1&":"&LEN(A1))),1)="c",ROW(INDIRECT(1&":"&LEN(A1))),""),ROW(INDIRECT(1&":"&LEN(A1)-LEN(SUBSTITUTE(A1,"c",""))))),2)
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations