2012-08-29 10 views
6

Ho bisogno di un modo per contare numeri e lettere separatamente all'interno di una cella.Excel - Conteggio di lettere e numeri separatamente in una singola cella

Ad esempio, se una cella contiene 1234567ABC Ho bisogno di essere in grado di trasmettere questo come

  • "7 Numbers" e
  • "3 Letters".

non riesco a pensare ad un modo per utilizzare la funzione len() che avrebbe funzionato, e countif conta solo le cellule stesse.

Qualsiasi aiuto sarebbe apprezzato.

+0

Eh, Excel. Hai provato a utilizzare una macro? –

+0

Non mi richiederebbe ancora di conoscere il codice per contare i singoli numeri e lettere? – CvR

risposta

5

Se ogni cella è riempito solo con numeri e lettere, un modo rapido non vba per raggiungere questo obiettivo è annidare una funzione sostitutiva 10 volte per rimuovere i 10 caratteri numerici. quello che ti rimane è solo alpha. Quindi è possibile len() il testo alfa/sottrarre quel numero dalla lunghezza originale per ottenere la lunghezza numerica.

Supponendo "1234567ABC" è nella cella A1:

Questa formula dà il numero di lettere. (3)

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

Questa formula dà i numeri totali: (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,"")) 

Se si desidera avviare la gestione dei dati in altri modi/più in profondità, una soluzione di VBA sarà probabilmente necessario.

Nota

Per soddisfare i requisiti nel tuo post originale, aggiungere questo suffisso al termine delle formule di cui sopra:

=x & " Numbers/Letters" 

dove x = queste due formule. questo aggiungerà il testo dopo il numero calcolato.

Letture consigliate: dettagli

Il seguente link un'UDF VBA che fa qualcosa di simile: http://www.mrexcel.com/forum/excel-questions/16364-how-remove-numbers.html

ulteriore aggiornamento (lori_m grazie)

Questa formula è molto più facile da lettura/aggiornamento:

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

Eccellente, funziona come un fascino! Grazie! – CvR

+4

Funziona in Excel 2007 in poi ma supererebbe gli otto limiti di funzionalità annidati nelle versioni precedenti. Un'alternativa per i numeri totali è: '= SUM (LEN (A1) -LEN (SOSTITUTO (A1, {1,2,3,4,5,6,7,8,9,0}," "))) ' –

+0

Ah !!! Ho provato il {} con il sostituto e non ha funzionato, ho dimenticato di riassumerlo! (Sono stato troppo impegnato oggi al lavoro) aggiungerò questo come aggiornamento. Grazie Lori. – danielpiestrak

2

Dalla mia risposta in Analyse format of alpha-numeric string:

Per una risposta più dettagliata questa stringa 1234567ABC456 verrebbe segnalata come 7N3L3N

Un'espressione regolare come questo farà il lavoro

  • stampa insieme andare VBE
  • Inserire Modulo
  • copia e incolla il codice qui sotto
  • stampa insieme per tornare a Excel

quindi è possibile utilizzare la funzione (che rileva anche le stringhe non valide) all'interno di Excel, vale a dire in 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 
Problemi correlati