デジタル推進課

KNIME・Excel Macro・Power Automateなど日々の業務で使用できる自動化ツールを中心に書き綴ります

KNIME - 文字数でセルをぶった切る ~Cell Splitter by position~

 

 

はじめに

今回は文字数を基準にしてセルを区切っていきたいと思います。固定長区切りのデータを取り込むときに使えます。

 

 今回のテーマ ~Cell Splitter~

覚えてほしいこと

固定長のデータを区切りたいときは、Digit数ではなく文字数で

 

やりたいこと

やりたいのは、固定長のデータを取り込んでテーブルの形にすることです。例えば、TeraPadを使うとデータのすぐ上に数字がありますよね。この数字(digit数)を基準にコラムを分けていきます。固定長のデータは、古いシステムからの出力データにありがちですね。

f:id:makkynm:20200711123050p:plain

固定長のデータを取り込む

Excelでは、データ>区切り位置から選択できる、「固定長フィールドのデータ」の区切り位置から区切れます。この操作の自動化がやりたいことです。

f:id:makkynm:20200711123207p:plain

Excel - 固定長のデータを取り込む

 

Cell Splitter By Positionの使い方

固定長のデータを取り込む際によく使用します。もちろん、他の用途でもOKです。注意点は、文字数で管理されているので、Digitではない点です。日本語は2digitですが、1文字としてカウントされます。

Workflow

まずFile Readerで固定長のデータを一つのコラムとして取り込み、そこから分割していきます。

f:id:makkynm:20200711124028p:plain

Workflow - Cell Splitter By Position

File ReaderのConfigureは下記のように、何も処理を行わないようにしています。

f:id:makkynm:20200711124521p:plain

Configure - File Reader



Confirm - Before After

 File Readerで1つのコラムとして取り込んだ情報を文字数を基準に3つのコラムに分割できていると思います。また、分割元コラムも残ります。

分割後のコラムは必ずStringになります。

f:id:makkynm:20200711124000p:plain

Confirm - Cell Splitter By Position

 

Configure

文字数の部分だけ気を付ければ、そこまで難しくはないと思います。

f:id:makkynm:20200711124959p:plain

Configure - Cell Splitter By Position
Step1 - Split indices 区切る位置を文字数で指定

今回のデータでは、文字数が8文字目が終わった後と12文字目が終わった後で区切り線を入れたいです。その文字数をカンマで区切って「8,12」という形で入力していきます。

f:id:makkynm:20200711125153p:plain

やりたいこと - 区切る文字数

 

Step2 - New column names コラム名の指定

次に区切られたあとのコラム名を指定します。今回は2つの位置で区切るので、3つの新しいコラムができると思います。なので、それらの新しいコラム名をカンマで区切って、「日付,社員番号,残業時間」という風に入力していきます。

 

Step3 - Target Column

Step1,2で指定した区切りを行いたいコラム名を指定します。今回はCol0が区切りたいコラムだったと思うので、Col0を指定します。

ここでの注意点は、分割対象のコラムはStringでないといけません。

 

 ちょっと一言

注意: 日本語が混じっているデータの区切り

先ほどから何度も「Digit数ではなく、文字数」 と繰り返してきました。これについて社員表の固定長のデータをもとに考えてみたいと思います。

前提として、全角は2digit、半角は1digitということを押さえておきましょう。つまり、全角の日本語は、半角英語2文字分の幅を取っているということです。

f:id:makkynm:20200711130740p:plain

前提 - 半角と全角

社員表のデータでは、都道府県の欄で、1文字差があります。この差を埋めるスペースが全角スペース1つなのか、半角スペース2つなのかでどう変わるかを見ていきます。Digit数は同じですね。

 

全角スペース1つの場合

f:id:makkynm:20200711131358p:plain

全角スペース1つの場合

f:id:makkynm:20200711131452p:plain

Configure - Cell Splitter By Position

はい、このようにきれいに区切れていますね。全角・半角が文字数でうまく合っていればきれいに区切れます。

f:id:makkynm:20200711131630p:plain

Confirm - Cell Splitter By Position

 

半角スペース2つの場合

f:id:makkynm:20200711131749p:plain

半角スペース2つの場合

このように、半角スペース2つだと、文字数が余計にカウントされてしまうため、うまく区切れません。

f:id:makkynm:20200711131828p:plain

Confirm - Cell Splitter By Position

ということで、文字数には気をつけましょう!


おわりに

 中級編もだいぶ増えてきましたね。もうほとんど使えるようになったのではないでしょうか。このブログが皆さんの業務効率化に少しでも役立っていれば時間をかけて書いている甲斐あるなーと思います!ではまた!

 

 

余談 

位置で離れてしまうというところから、おススメしたいのが「LION /ライオン 25年目のただいま」です。もう、あらすじで結論はほとんどわかるんですが、もうとてもとても感動します。25年間離れ離れってどんな気持ちなんでしょう。これ実話なんでさらに感動します。泣きたいときはぜひ。

LION /ライオン 25年目のただいま(吹替版)

LION /ライオン 25年目のただいま(吹替版)

  • 発売日: 2017/09/19
  • メディア: Prime Video
 
LION /ライオン 25年目のただいま(字幕版)

LION /ライオン 25年目のただいま(字幕版)

  • 発売日: 2017/09/19
  • メディア: Prime Video
 

www.youtube.com

 

 

参考リンク