|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
「StiLL」 デザイン情報184 StiLLコマンド--固定長のテキストデータ(文字列)から任意の部分を取り出す |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
【テーマ】テキストファイルから読込んだ固定長のデータから任意の文字列(項目データ)を取り出す方法をご紹介します。 |
|
|
【方法】文字操作を行うExcel関数(MIDB、LEFTB、RIGHTBなど)を使って取り出します。これを「セルデータコピー(MakeBtCellCopy)」で対象範囲にコピーする方法と「Excelデータ抽出(MakeBtRecordQuery)」を使う方法で処理の自動化が図れます。 |
|
|
【参考】「セルデータコピー(MakeBtCellCopy)」
の実行結果を値にする方法については「ご参考までに」をご覧ください。 |
|
|
|
|
対応Ver. :StiLL-XV1.0
以降
対応種類:StiLL Std・Dev・Pro |
|
|
対応Ver. :StiLL-XV1.0
以降
対応種類:StiLL Std・Dev・Pro |
|
|
対応Ver. :StiLL-XV1.0
以降
対応種類:StiLL Std・Dev・Pro |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
■ 今回の内容 |
|
|
|
|
|
|
|
|
テキストファイルなどから読込まれた文字列(固定長)から項目値として任意の部分を取り出す手順についてご紹介します。 |
|
|
|
先ずは
MIDB、LEFTB、RIGHTBなどの Excel関数操作が基本となりますのでここでしっかり覚えておきましょう。 |
|
|
|
文字列を取り出す式をStiLLボタン「セルデータコピー(MakeBtCellCopy)」
または 「Excelデータ抽出(MakeBtRecordQuery)」を |
|
|
|
使うことで複数行のテキストデータから必要な項目値を取り出す処理を自動化することができて大変便利です。 |
|
|
|
|
|
|
|
|
■ Excel関数(文字列操作)のおさらい |
|
|
|
|
|
|
例)下図のようにセルE15に商品コード、商品名、単価の各項目がそれぞれ5桁、8桁、4桁で構成された |
|
|
|
|
固定長のテキストデータがあるとします。 |
|
|
|
|
セルE15="A0001カキ 120
" (商品名、単価の余白はスペース) |
|
|
|
|
|
|
|
|
|
(テキストデータのメージ) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
このデータから各項目の値を取り出す関数の使い方について説明します。 |
|
|
|
|
|
|
|
|
|
1.セルG15に商品コード(5桁)を取り出す:文字列の左端から文字数を取り出す場合はLEFT関数が使えます。 |
|
|
|
セルG15=LEFTB(E15,5) ・・・ "A0001"
が取り出されます。 |
|
|
|
|
またMID関数を使って取り出すこともできます。 |
|
|
|
|
セルG15=MIDB(E15,1,5) ・・・ "A0001" が取り出されます。 |
|
|
|
|
|
|
|
|
|
2.セルH15に商品名を取り出す:文字列の間にある文字を取り出す場合はMID関数を使います。 |
|
|
|
|
セルH15=MIDB(E15,6,8) ・・・ "カキ " が取り出されます。 |
|
|
|
|
※商品名が始まる桁位置は6桁目、また商品名は8桁なので上記のようになります。 |
|
|
|
|
|
|
|
|
|
なお商品名の余白(スペース)を除く場合はTRIM関数を併用します。 |
|
|
|
|
セルH15=TRIM(MIDB(E15,6,8)) ・・・ "カキ"
が取り出されます。 |
|
|
|
|
|
|
|
|
|
|
3.セルI15に単価(4桁)を取り出す:文字列の右端から文字数を取り出す場合はRIGHT関数が使えます。 |
|
|
|
セルI15=RIGHTB(E15,4) ・・・ ”120
” が取り出されます。 |
|
|
|
|
またMID関数を使って取り出すこともできます。 |
|
|
|
|
セルI15=MIDB(E15,14,4) ・・・ ”120 ” が取り出されます。 |
|
|
|
|
|
|
|
|
|
なお数値として取り出す場合は以下のように1をかけることで数値に変換されます。 |
|
|
|
|
セルI15=RIGHTB(E15,4)*1 ・・・ 120
が取り出されます。 |
|
|
|
|
|
|
|
|
|
■
「セルデータコピー(MakeBtCellCopy)」 を使った設定方法 |
|
|
|
|
|
|
|
|
セルE16以降のテキストデータから「セルデータコピー(MakeBtCellCopy)」を使って各項目の値を取り出す設定を説明します。 |
|
|
|
下図は前段で示した式をセル(G15,H15,I15)それぞれに入力して14行目に項目名を設定した状態を示しています。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
このセルG15からI15に入力した式をG16からI19の対象範囲(紫枠)に「セルデータコピー(MakeBtCellCopy)」でコピーします。 |
|
|
|
貼り付け種類は「数式」(赤枠)を選択します。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
上図の設定を行い実行することで複数行のテキストデータを対象として各行の複数項目の値を取得することができます。 |
|
|
|
(実行結果) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
緑枠内に式が設定されます。 |
|
|
|
|
|
|
|
■
「Excelデータ抽出(MakeBtRecordQuery)」を 使った設定方法 |
|
|
|
|
|
|
「Excelデータ抽出(MakeBtRecordQuery)」を使って同様の処理を行うことができます。 |
|
|
|
|
|
|
|
設定イメージを図示します。 (「出力セル位置」をK列からとします) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
「項目式範囲」は下図の「項目式作成」を行った4項目分の設定範囲を指定します。(参照:式の設定イメージ) |
|
|
|
「項目式作成」の設定では下図のように「商品コード」「商品名」「単価」(赤枠)を手入力して新規に作成します。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
項目を新規に作成したときは、下の「該当無」(紫枠)をチェックします。 |
|
|
|
|
|
|
|
次に項目式欄に式を入力します。 |
|
|
|
|
入力する式は「Excel関数(文字列操作)のおさらい」で設定した式と基本的には同じです。 |
|
|
|
|
ただし参照するData項目のセル位置がN列に変わりますので注意してください。 |
|
|
|
|
|
|
|
(式の設定イメージ) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
※上図の式(’==で始まる式)は結果を値で返す設定です。 |
|
|
|
|
|
|
|
設定後「Excelデータ抽出」ボタンをクリックすると複数行のテキストデータから同時に複数項目の値を取得することができます。(青枠内) |
|
|
|
(実行結果のイメージ) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
※青枠内:「Excelデータ抽出(MakeBtRecordQuery)」
の実行結果。 |
|
|
|
|
緑枠内:前段での「セルデータコピー(MakeBtCellCopy)」
の実行結果。 |
|
|
|
|
|
|
|
|
|
■ ご参考までに |
|
|
|
|
|
|
|
|
1.「セルデータコピー(MakeBtCellCopy)」 の実行結果を値にする場合は、もう一つ「セルデータコピー(MakeBtCellCopy)」 を使って |
|
|
|
「元データ範囲」と「出力セル位置」を同じセルG15からI19にして、貼り付け種類を「値」にしてコピーします。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(各ボタンの設定内容の詳細はStiLLヘルプをご確認ください) |
|
|
|
Copyright(C)
アイエルアイ総合研究所 無断転載を禁じます |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|