![テキストの抽出(大文字)](https://rvso.com/image/1482495/%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%AE%E6%8A%BD%E5%87%BA%EF%BC%88%E5%A4%A7%E6%96%87%E5%AD%97%EF%BC%89.png)
銀行取引履歴をダウンロードし、説明行の末尾にある顧客の名前を抽出したいと思います。一部の行では、顧客の名前の前に 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
マクロ/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
extract_name
と の2 つの機能があります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)
。