テキストの抽出(大文字)


1

銀行取引履歴をダウンロードして、Description行の末尾にある顧客の名前を抽出したいと思います。行によっては、顧客の名前の前に1つまたは2つの単語があります。すべて大文字の名前を抽出する方法

また、テキストから転送された金額を抽出し、それを数値に変換する必要があります。

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

結果:

CUSTOMER      TRANSFER
JAMES BOND    12,000
CHRISTINE     10,000
AMAND B GREEN 25,025
JOSH BROWN     5,000
CHRISTINE      1,000
TOTAL         53,025

1
こんにちは !データがどのようにフォーマットされているかは完全には明らかではありません。2つの列ヘッダーがありますが、7つの列がある可能性があります。多くのスペースで区切られたデータを含む1つの列があると思うので、実際には2列しかありません。このデータのレイアウトを確認するために質問を編集してください。また、これまでに試した方法や試した方法を確認してください。
Jonno

正規表現アドインを使用することをお勧めします。これは無料で、最も直接的なソリューションを提供します。しかしながら、より具体的な助けを与えるために、私は彼のコメントでJonnoの質問に対する答えを持っている必要があります
Máté Juhász

私はたった2つの列を持っています、最初の列DESCRIPTIONはそれに長い区切られたデータを持っています。 2列目のAMOUNTはテキストの末尾にDB / CRがあるテキストです(12,000.00 DBなど)。
harimin

回答:


4

マクロ/ 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

2つの機能があります extract_name そして extract_amount

Alt + F11でVBAを開き、下にモジュールを挿入します。 このワークブック そして右側にコードを貼り付けます。

それを仮定して TRSF E-BANKING DB 2701/FTSCY/WS95051 12000.00 JAMES BOND 12,000.00 DB セル内にある A2 その後:

B2 =extract_name(A2) そして C2 =extract_amount(A2)


あなたが同じことをしなかった理由はありますか -1 からトリック extract_amountextract_nameextract_name = WordArray(-2)
rishimaharaj

1
金額の位置は常に同じです。名前の位置は、各行で同じではありません。それ以外にも、1つのフィールドと2つまたは3つのフィールドを使用することがあります。
jcbermu

マクロを試しましたが失敗しました。ダウンロード可能なExcelファイルにしてください。ありがとう
harimin

@hariminあなたはそれからダウンロードすることができます http://www.filedropper.com/extract_1 。ファイルを開くと、Excelはマクロを実行する許可を要求します。
jcbermu

ファイルをダウンロードしましたが、以前に試したとおり、マクロを実行できませんでした。気にしないのなら、リンクをたどって私があなたのファイルにコピーした元のデータを見てください。 filedropper.com/filemanager/…
harimin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.