こんにちは!UiPath メンターです。
せっかくWebサイトから金額データを取ってきたのに、いざExcelで計算しようとしたら……
「¥1,980」
この「¥」や「,(カンマ)」がついているせいで、ロボットは「これは数字じゃなくて文字だ!」と判断し、計算エラーになってしまいます。
また、「受付番号:A-001」から「001」だけ欲しい時もありますよね。
今回は、取ってきたデータをロボットが扱いやすい形に加工する「文字列操作」のテクニックを学びます。
まるでハサミや糊を使って工作をするように、データを自由に操りましょう。
1. 余計な文字を消す・変える:.Replace
最もよく使うのがこれです。
WordやExcelの「置換(検索して置換)」と同じ機能です。
使い方
変数の後ろに .Replace("消したい文字", "新しい文字") をつけます。
実務での使用例:金額のクリーニング
変数 str_Price の中身が "¥1,980" だとします。
これを計算できる数字にするには、「¥」と「,」を消す(=空文字に置き換える)必要があります。
str_Price.Replace("¥", "").Replace(",", "")
解説:
.Replace("¥", "")で「¥」を「何もない(空)」に置き換えます。→ 結果"1,980"- さらに続けて
.Replace(",", "")で「,」を消します。→ 結果"1980"
これで純粋な数字の文字列になりました!
あとは前回学んだ Cint() を使えば、足し算も引き算も自由自在です。
2. 指定した記号で分割する:.Split
次は、「田中 太郎」のような氏名を、「田中」と「太郎」に分けたい時です。
この場合、間にある「スペース(空白)」を目印に、ハサミでチョキンと切ります。
使い方
変数の後ろに .Split("区切り文字"c)(何番目か) をつけます。
実務での使用例:苗字の抽出
変数 str_Name の中身が "田中 太郎" だとします。
- 苗字(左側)が欲しい:
str_Name.Split(" "c)(0) - 名前(右側)が欲しい:
str_Name.Split(" "c)(1)
解説:
" "c:「c」はChar(文字)の略で、UiPathのお作法としてつけます。(0):分割されたデータの「1つ目(0番目)」という意味です。
💡 メンターからのアドバイス:ファイル名にも使える!
ファイルパス "C:\Data\Report.xlsx" からファイル名の部分だけ欲しい場合、"\" マークで Split して、一番最後(Last)の要素を取る、という使い方もよくします。
3. 場所を指定して切り抜く:.Substring
最後は、「IDの先頭3桁だけ欲しい」といった場合です。
何文字目から、何文字分切り取るかを指定します。
使い方
変数の後ろに .Substring(開始位置, 文字数) をつけます。
実務での使用例:商品コードの抽出
変数 str_Code の中身が "2023-A01" だとして、先頭の「2023」が欲しい場合。
str_Code.Substring(0, 4)
解説:
0: 0文字目(一番最初)からスタート。4: 4文字分ゲットする。
⚠️ 注意:文字数オーバーに注意
データが「ABC」しかない(3文字)のに、.Substring(0, 5) (5文字取れ!)と命令すると、ロボットは「文字が足りません!」とエラーで止まります。
文字数が固定されているデータ(日付やIDなど)以外で使う時は注意が必要です。
4. 隠れた敵を倒す:.Trim
最後にもう一つだけ。
Webスクレイピングをしていると、見た目は "100" なのに、実は " 100 " のように見えないスペースが前後についていることがよくあります。
このスペースのせいで、If条件分岐の = "100" が一致せずに不具合が起きます。
これを防ぐために、取得したデータにはとりあえず .Trim をつける癖をつけましょう。
str_Result.Trim
これだけで、前後の余計な空白をきれいに削除してくれます。
今回のまとめ
文字列操作の「三種の神器」を覚えましょう。
| やりたいこと | 使う呪文 | 例 |
|---|---|---|
| 文字を消す・変える | .Replace | "¥100".Replace("¥", "") |
| 文字を分割する | .Split | "田中 太郎".Split(" "c)(0) |
| 部分的に切り取る | .Substring | "12345".Substring(0, 3) |
| 余白を削除 | .Trim | " 100 ".Trim |
次回は、応用編 第6回「データテーブル操作」。
Excelを開かずに、ロボットのメモリの中だけで「東京支店のデータだけに絞り込む(フィルタ)」や「データを結合する」といった高速処理を行う方法を学びます。
大量データを扱う業務には必須のスキルです!