Retorna substring da célula do Excel

1

Estou tentando encontrar uma fórmula para extrair números de contas das células que podem conter informações adicionais. Um número de conta começará sempre com um "A" ou um "U" e depois terá 6 números, por ex. A123456 ou U654321.

Uma célula pode ter apenas o número da conta ou pode ter dados adicionais, por ex. "ADT DINHEIRO DEPÓSITO A235999" ou "FNB APP PAGAMENTO DE A230275"

    
por user2725402 22.10.2015 / 11:30

2 respostas

2

Esta é uma função alternativa que busca o inverso (primeira letra, que número), evita procurar em lugares onde o número não poderia caber e insensível a maiúsculas e minúsculas:

Public Function AccountNo(thiscell As Range) As String
    Dim numlen As Integer, cellText As String
    Dim i As Long, rest As String, firstletter As String

    AccountNo = ""
    numlen = 6
    cellText = thiscell.Text
    For i = 1 To Len(cellText) - numlen
        firstletter = UCase(Mid(cellText, i, 1))
        If (firstletter = "A" Or firstletter = "U") Then
            rest = Mid(cellText, i + 1, numlen)
            If IsNumeric(rest) Then
                AccountNo = firstletter & rest
                Exit Function
            End If
        End If
    Next i
End Function
    
por 22.10.2015 / 12:50
1

Esta UDF detecta o número da conta, não importa onde esteja:

Public Function accounts(cellText As String)
    accounts = ""
    numberlength = 6
    posText = 0
    lenText = Len(cellText)
    For i = 1 To lenText
        midText = Mid(cellText, i, numberlength)
        If IsNumeric(midText) = True Then
            posText = i
            letterText = Mid(cellText, posText - 1, 1)
            If (letterText = "A" Or letterText = "U") Then
                accounts = Mid(cellText, posText - 1, numberlength + 1)
                i = lenText
            End If
        End If
    Next i
End Function

Copie o código, abra o Visual Basic / Macros, em ThisWorkbook , insira um novo módulo e cole o código no lado direito.

Para usá-lo, se o texto estiver na célula A1 , então na célula B1 você tem que colocar =accounts(A1) .

    
por 22.10.2015 / 12:26