Extraindo Texto (Letra Maiúscula)

1

Eu faço o download do histórico de transações bancárias e gostaria de extrair o nome dos clientes que estão localizados no final da linha de descrição. Algumas linhas têm uma ou duas palavras precedendo os nomes do cliente. Como posso extrair todos os nomes maiúsculos.

Também preciso extrair o valor transferido do texto e convertê-lo em números.

DESCRIPTION                                                     AMOUNT
TRSF E-BANKING DB 2701/FTSCY/WS95051 12000.00 JAMES BOND        12,000.00 DB
TRSF E-BANKING CR 2701/FTSCY/WS95051 10000.00 deposit CHRISTINE 10,000.00 CR
TRSF E-BANKING CR 2701/FTSCY/WS95051 25025.00 AMANDA B GREEN    25,025.00 CR
TRSF E-BANKING CR 2701/FTSCY/WS95051 5000.00 msn1888 JOSH BROWN  5,000.00 CR
TRSF E-BANKING CR 2701/FTSCY/WS95051 1000.00 topup CHRISTINE     1,000.00 CR

Resultado:

CUSTOMER      TRANSFER
JAMES BOND    12,000
CHRISTINE     10,000
AMAND B GREEN 25,025
JOSH BROWN     5,000
CHRISTINE      1,000
TOTAL         53,025
    
por harimin 01.02.2016 / 11:11

1 resposta

4

Usando macros / VBA:

Public Function extract_name(transaction As String)
    Dim WordArray() As String
    WordArray() = Split(transaction, " ")
    firstName = WordArray(5)
    extract_name = firstName
    extract_name_uc = UCase(extract_name)
    If extract_name = extract_name_uc Then
        topBound = 5
    Else
        topBound = 6
    End If
    extract_name = ""
    For i = topBound To UBound(WordArray)
        tempValue = WordArray(i)
        If IsNumeric(tempValue) Then
            i = UBound(WordArray)
        Else
            extract_name = extract_name & " " & tempValue
        End If
    Next i
    extract_name = Trim(extract_name)
End Function

Public Function extract_amount(transaction As String)
    Dim WordArray() As String
    WordArray() = Split(transaction, " ")
    extract_amount = WordArray(UBound(WordArray) - 1)
End Function

Existem duas funções extract_name e extract_amount .

Abra o VBA com ALT + F11, insira um módulo em ThisWorkbook e cole o código no lado direito.

Supondo que TRSF E-BANKING DB 2701/FTSCY/WS95051 12000.00 JAMES BOND 12,000.00 DB esteja na célula A2 , então:

B2 =extract_name(A2) e C2 =extract_amount(A2) .

    
por 01.02.2016 / 11:42