Saltar al contenido principal

Encuentre la enésima aparición de un carácter en Excel: 3 formas rápidas

Encontrar la enésima aparición de un carácter específico dentro de una cadena de texto en Excel puede ser particularmente útil en el análisis de datos, donde es posible que necesite analizar cadenas o extraer información basada en ciertos delimitadores o patrones. Por ejemplo, busquemos la segunda o tercera aparición del carácter "-" en una cadena de texto. Demostraré técnicas sencillas para realizar esta tarea de manera eficiente.


Encuentre la enésima aparición de un carácter en una cadena de texto con fórmula

Puedes elaborar una fórmula para encontrar la enésima aparición de un personaje. Por favor haz lo siguiente:

1. Ingrese o copie la siguiente fórmula en una celda donde desea obtener el resultado:

=FIND(CHAR(1),SUBSTITUTE(A2,"-",CHAR(1),2))
Note: En la fórmula anterior:
  • A2: la celda que contiene la cadena.
  • -: El personaje que buscas.
  • 2: La segunda aparición que deseas encontrar, puedes cambiarla a 2… según lo necesites.

2. Luego, arrastre el relleno de fórmula hacia abajo para completar la fórmula en otras celdas, y la segunda posición del carácter se muestra a la vez, vea la captura de pantalla:

Explicación de la fórmula:
  • SUSTITUIR reemplaza la enésima aparición del carácter con un carácter no imprimible (CHAR(1)).
  • ENCONTRAR busca este carácter no imprimible, dando la posición de la enésima aparición.

Encuentre la enésima aparición de un carácter en una cadena de texto con Kutools para Excel

Si no le gusta usar fórmulas o VBA, podría considerar una alternativa conveniente: Kutools for Excel. Dentro de sus grupos de Fórmulas, encontrará una utilidad útil: Encuentra dónde aparece el personaje enésimo en una cadena que identifica y devuelve rápidamente la enésima posición de cualquier carácter en una celda.

Después de instalar Kutools para Excel, haga clic Kutools > Ayudante de fórmula > Ayudante de fórmula para abrir el Ayudante de fórmula caja de diálogo. Haga clic en una celda donde desea colocar el resultado. Luego, haz lo siguiente:

  1. Seleccione Lookup de la lista desplegable de Tipo de fórmula sección;
  2. Elige Encuentra dónde aparece el personaje enésimo en una cadena in Elige una fórmula sección;
  3. Seleccione la celda que contiene la cadena que utiliza, luego escriba el carácter especificado y la enésima aparición en los cuadros de texto del Entrada de argumentos sección;
  4. Por último, haz clic OK Botón para obtener el resultado.
Tips: Interesado en esta característica, por favor haga clic para descargar para obtener una prueba gratuita durante 30 días.

Encuentre la enésima aparición de un carácter en una cadena de texto con la función definida por el usuario

En esta sección, exploraremos cómo crear y usar una UDF para encontrar la enésima aparición de un carácter en Excel, brindando una guía paso a paso para ayudarlo a optimizar el manejo de sus datos.

  1. Mantenga pulsado el botón ALT + F11 llaves, y abre el Microsoft Visual Basic para aplicaciones ventana.
  2. Haga Clic en recuadro > Móduloy pegue la siguiente macro en la ventana del módulo.
     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. Luego, cierre la ventana de vba. Regrese a la hoja de trabajo, ingrese la siguiente fórmula en una celda y luego arrastre el controlador de relleno hacia abajo para completar la fórmula en otras celdas, vea la captura de pantalla:
    =FindN("-",A2,3)

  4. Artículos relacionados:

    • Contar el número de apariciones de una palabra en una columna.
    • Si tiene una columna de datos que incluye algunos valores duplicados como se muestra a continuación, lo que quiere hacer ahora es contar el número de apariciones de una palabra específica en esta columna. Ahora con este tutorial, presento algunos trucos para resolverlo rápidamente en Excel.
    • Extraer un enésimo carácter de una cadena
    • En general, es posible que desees extraer una cadena después de un carácter específico, pero en este caso, quiero extraer el enésimo carácter de una cadena como se muestra a continuación.
    • Extraiga los primeros/últimos n caracteres de la cadena
    • Por ejemplo, hay una lista con cadenas largas en cada celda y desea extraer los primeros n caracteres de cada cadena solamente, como los primeros 3 caracteres de cada cadena, y ahora puede usar los siguientes métodos para resolverlo en Excel .

Las mejores herramientas de productividad de oficina

🤖 Asistente de IA de Kutools: Revolucionar el análisis de datos basado en: Ejecución inteligente   |  Generar codigo  |  Crear fórmulas personalizadas  |  Analizar datos y generar gráficos  |  Invocar funciones de Kutools...
Características populares: Buscar, resaltar o identificar duplicados   |  Eliminar filas en blanco   |  Combine columnas o celdas sin perder datos   |   Ronda sin fórmula ...
Super búsqueda: Búsqueda virtual de criterios múltiples    Búsqueda V de valores múltiples  |   VLookup en varias hojas   |   Búsqueda difusa ....
Lista desplegable avanzada: Crear rápidamente una lista desplegable   |  Lista desplegable dependiente   |  Lista desplegable de selección múltiple ....
Administrador de columnas: Agregar un número específico de columnas  |  Mover columnas  |  Toggle Estado de visibilidad de columnas ocultas  |  Comparar rangos y columnas ...
Características destacadas: Enfoque de cuadrícula   |  Vista de diseño   |   Gran barra de fórmulas    Administrador de hojas y libros de trabajo   |  Biblioteca de Recursos (Texto automático)   |  Selector de fechas   |  Combinar hojas de trabajo   |  Cifrar/descifrar celdas    Enviar correos electrónicos por lista   |  Súper filtro   |   Filtro especial (filtro negrita/cursiva/tachado...) ...
Los 15 mejores conjuntos de herramientas12 Texto Herramientas (Añadir texto, Quitar caracteres, ...)   |   50+ Tabla Tipos (Diagrama de Gantt, ...)   |   40+ Práctico Fórmulas (Calcular la edad según el cumpleaños, ...)   |   19 Inserción Herramientas (Insertar código QR, Insertar imagen desde la ruta, ...)   |   12 Conversión Herramientas (Números a palabras, Conversión de Moneda, ...)   |   7 Fusionar y dividir Herramientas (Filas combinadas avanzadas, Células partidas, ...)   |   ... y más

Mejore sus habilidades de Excel con Kutools for Excel y experimente la eficiencia como nunca antes. Kutools for Excel ofrece más de 300 funciones avanzadas para aumentar la productividad y ahorrar tiempo.  Haga clic aquí para obtener la función que más necesita...

Descripción


Office Tab lleva la interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil

  • Habilite la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
  • Abra y cree varios documentos en nuevas pestañas de la misma ventana, en lugar de en nuevas ventanas.
  • ¡Aumenta su productividad en un 50% y reduce cientos de clics del mouse todos los días!
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