Encontrando o número de caracteres específicos dentro de uma fórmula

2

Estou tentando encontrar o número de + em uma fórmula dentro de uma única célula no Excel.

Se fosse uma célula normal com texto no interior, isso seria bastante fácil. Mas devido às restrições do arquivo com o qual estou trabalhando, preciso manter a formatação da célula como ela é.

Resumindo:

  • Célula A1 : =123,12+234,45+790,44
  • Cell A2 : =2 , pois havia dois + encontrados na célula A1
por WouterB 04.07.2011 / 12:20

3 respostas

3

Você pode usar uma função vba personalizada (coloque este código em um módulo):

Option Explicit

Function countChar(cell As Range, pattern As String)
    countChar = UBound(Split(cell.Formula, pattern))
End Function

E, em seguida, use esta função em sua planilha:

=countChar(A1;"+")
    
por 04.07.2011 / 13:47
2

VBA

Crie uma função usando este código:

Function GETFORMULA(c As Range) As String
    If c.HasArray Then
        GETFORMULA = "{" & c.Formula & "}"
    ElseIf VarType(c) = vbString And Not c.HasFormula Then
        GETFORMULA = c.Value
    Else
        GETFORMULA = c.Formula
    End If
End Function

O ff. A fórmula exibirá o número de ocorrências de "+".

=LEN(GETFORMULA(cell))-LEN(SUBSTITUTE(GETFORMULA(cell),"+",""))  

Não-VBA

Realce as células que contêm fórmulas. Se você só precisa lidar com uma célula, basta adicionar um ' antes do = e pular o próximo passo.

Pressione Ctrl + H . Digite = no Localizar e '= em Substituir por . Isso irá converter a fórmula em texto.

Use essa fórmula em uma célula vazia para contar o número de ocorrências de "+".

=LEN(cell)-LEN(SUBSTITUTE(cell,"+",""))

Para reverter as células de volta ao modo como estavam, realce-as, pressione Ctrl + H e substitua '= por = . Isso fará com que a fórmula acima mostre 0.

    
por 04.07.2011 / 14:02
1

Esta função pegará a fórmula da célula que é passada para ela (que você chamaria de =NumPlus(A1) em sua planilha) e a percorrerá e contará os sinais de mais. Você pode modificá-lo levemente para pegar um caractere que deseja contar como argumento.

Option Explicit
Function NumPlus(cel As Variant) As Variant
    Dim formstr As String
    Dim i As Integer

    NumPlus = 0
    formstr = cel.Formula

    For i = 1 To Len(formstr)
        If Mid(formstr, i, 1) = "+" Then
            NumPlus = NumPlus + 1
        End If
    Next i
End Function
    
por 04.07.2011 / 13:47