2012-08-29 24 views
6

Necesito una forma de contar números y letras por separado dentro de una celda.Excel - Conteo de letras y números por separado en una sola celda

Por ejemplo, si una célula contiene 1234567ABC I tienen que ser capaces de la producción de este como

  • "7 números" y
  • "3 Letters".

no puedo pensar en una manera de utilizar la función len() que funcionaría, y countif sólo cuenta las propias células.

Cualquier ayuda sería apreciada.

+0

Je, Excel. ¿Has intentado usar una macro? –

+0

¿Eso no me exigiría saber el código para contar los números y las letras individuales? – CvR

Respuesta

5

Si cada celda se llena solo con números y letras, una forma rápida de hacerlo es anidando una función sustituta 10 veces para eliminar los 10 caracteres numéricos. lo que te queda es solo alfa. Entonces puede len() el texto alfa/restar ese número de la longitud original para obtener la longitud numérica.

Suponiendo "1234567ABC" está en la celda A1:

Esta fórmula da el número de letras. (3)

=LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,0,""),1,""),2,""),3,""),4,""),5,""),6,""),7,""),8,""),9,"")) 

esta fórmula se obtiene el número total: (7)

=LEN(A1)-LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,0,""),1,""),2,""),3,""),4,""),5,""),6,""),7,""),8,""),9,"")) 

Si desea iniciar el manejo de los datos de otras maneras/ni más en profundidad, una solución de VBA probablemente será necesario.

Nota

Para cumplir con los requisitos en su puesto original, agregar este sufijo al final de las fórmulas anteriores:

=x & " Numbers/Letters" 

donde x = las dos fórmulas anteriores. esto agregará el texto después del número calculado.

Lectura adicional: Detalle

El siguiente enlace una VBA UDF que hace algo similar: http://www.mrexcel.com/forum/excel-questions/16364-how-remove-numbers.html

actualización adicional (lori_m gracias)

Esta fórmula es mucho más fácil leer/actualizar:

=SUM(LEN(A1)-LEN(SUBSTITUTE(A1,{1,2,3,4,5,6,7,8,9,0},""))) 
+0

¡Excelente, eso funciona como un encanto! ¡Gracias! – CvR

+4

Funciona en Excel 2007 en adelante pero que superaría la restricción de ocho funciones anidadas en versiones anteriores. Una alternativa para los números totales es: '= SUMA (LEN (A1) -LEN (SUSTITUTO (A1, {1,2,3,4,5,6,7,8,9,0}," "))) ' –

+0

¡¡¡Ah !!! Probé el {} con el sustituto y no funcionó, ¡me olvidé de resumirlo! (He estado demasiado ocupado hoy en el trabajo) lo agregaré como una actualización. Gracias lori. – danielpiestrak

2

Desde mi respuesta en Analyse format of alpha-numeric string:

Para una respuesta más detallada esta cadena 1234567ABC456 sería reportado como 7N3L3N

una expresión regular como esto hará el trabajo

  • prensa juntos ir al VBE
  • Módulo de inserción
  • copiar y pegar el siguiente código
  • prensa juntos para volver a Excel

continuación, puede utilizar la función (que también detecta las cadenas no válidas) dentro de Excel, es decir, en B1
=AlphaNumeric(A1)

enter image description here

Function AlphaNumeric(strIn As String) As String 
    Dim objRegex As Object 
    Dim objRegMC As Object 
    Dim objRegM As Object 
    Dim strOut As String 
    Set objRegex = CreateObject("vbscript.regexp") 
    With objRegex 
     .Global = True 
     .ignorecase = True 
     .Pattern = "[^\w]" 
     If .test(strIn) Then 
      AlphaNumeric = "One or more characters is invalid" 
     Else 
      .Pattern = "(\d+|[a-z]+)" 
      Set objRegMC = .Execute(strIn) 
      For Each objRegM In objRegMC 
       strOut = strOut & (objRegM.Length & IIf(IsNumeric(objRegM), "N", "L")) 
      Next 
      AlphaNumeric = strOut 
     End If 
    End With 
End Function 
Cuestiones relacionadas