「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) アイエルアイ総合研究所 無断転載を禁じます