「StiLL」 デザイン情報231 StiLLコマンド-- セル内改行データを簡単に取り出す(StiLL関数:Sepa)
                             
  【テーマ】
1つのセル内に入力された複数のデータを取り出すのに苦労していませんか?
今回はセル内改行されているデータの取り出しをExcelデータ抽出(BtRecordQuery)ボタンとStiLL関数の組み合わせで行う方法をご紹介いたします。
    【方法】
Excelデータ抽出ボタンの項目式にStiLLで用意されたSepa 関数を使います。
引数は文字列 , 抽出位置 , 区切り文字 の3つを指定します。
    【参考】
検索条件などでデータ抽出する場合は元データとの位置関係が崩れますので元データを直接参照する項目式は設定できません。
StiLLボタン「Excelデータ取得(BtMerge)」ボタンでも同様の設定で処理することができます。
 
           
                             
■ 今回の内容                        
下図のようにセル内で改行されているデータから簡単に個々の項目を取り出す方法についてご説明します。
(元データ)
画面の領域
(出力結果イメージ)
画面の領域
本例ではシステムテンプレートの Excelデータ取得「DLDATA」シートを使用しています。
・ポイント
 ※Sepa関数は区切り文字によって分割された文字を取り出す関数です(引数:文字列, 抽出位置, 区切り文字)
 1.Excelデータ抽出(BtRecordQuery)ボタンの項目式にStiLL関数(Sepa)を使用して改行されたデータを取り出します。
 2.セル内改行の改行文字 CHAR(10) を Sepa関数 の引数(区切り文字)として設定します。
■ ボタンの設定                        
今回使用するStiLLボタンを示します。(下図赤枠)
画面の領域
Excelデータ抽出(BtRecordQuery)の設定例
  ・下図のように元データ範囲、項目式範囲、出力セル位置を設定します。
画面の領域
項目式の説明
本例での前提条件:データは1行づつで、全てのデータを取得します
セルF4の式: '==Sepa(Sheet1!C3,1,CHAR(10))
  第1引数:文字列・・・・・・元データのセル位置を指定(ここでは直接 Sheet1!C3 を参照しています)
  第2引数:抽出位置・・・・何番目かを指定(元データ [C列 の番目] のデータ [氏名] を取り出します)
  第3引数:区切り文字・・・ここではCHAR(10)
セルG4の式: '==Sepa(Sheet1!C3,2,CHAR(10))
  第1引数:文字列・・・・・・セルF4と同じ
  第2引数:抽出位置・・・・何番目かを指定(元データ [C列 の番目] のデータ [ふりがな] を取り出します)
  第3引数:区切り文字・・・ここではCHAR(10)
セルH4の式: '==Sepa(Sheet1!D3,1,CHAR(10))
  第1引数:文字列・・・・・・直接 Sheet1!D3 を参照しています
  第2引数:抽出位置・・・・何番目かを指定(元データ [D列 の番目] のデータ [会社名] を取り出します)
  第3引数:区切り文字・・・ここではCHAR(10)
セルI4の式: '==Sepa(Sheet1!D3,2,CHAR(10))
  第1引数:文字列・・・・・・セルH4と同じ
  第2引数:抽出位置・・・・何番目かを指定(元データ [D列 の番目] のデータ [部署名] を取り出します)
  第3引数:区切り文字・・・ここではCHAR(10)
※StiLLでは、式の最初にシングルクォーテーション(')を入力し、計算結果を値化する場合はイコール(=)を2つ指定します
※[電話番号]は単独項目ですので式は設定しません
 出力セル位置を入力して(OK)ボタンで設定完了します。
 このボタンを実行することで上段(出力結果イメージ)のように個々の項目を取り出すことができます。
■ ご参考                          
1.検索条件などでデータ抽出する場合は元データとの位置関係が崩れますので元データを直接参照する項目式は設定できません。
   その場合は下図のように元データの項目(オレンジ枠)を抽出してそれを参照するように設定します。
画面の領域
   例1:下図のように規則的なシート名が設定された複数ファイルから対象シートを特定する場合
セルF4の式: '==Sepa(K15,1,CHAR(10))
  第1引数:文字列・・・・・・K列を参照します
  第2引数:抽出位置・・・・何番目かを指定(K列の番目のデータ [氏名] を取り出します)
  第3引数:区切り文字・・・CHAR(10)
以下同様
  (補足)本例をExcel関数で同様の処理を行う場合は次例のように複数の関数の組み合わせになります
  (項目式の一例)
セルF4の式: '==MID(K15,1,FIND(CHAR(10),K15)-1)
  第1引数:文字列・・・・・・・・・K列を参照します
  第2引数:抽出開始位置・・・1文字目から取り出します
  第3引数:取得する桁数・・・・改行文字 CHAR(10) の位置から1を引いた桁数の文字列 [氏名] を取り出します
セルG4の式: '==SUBSTITUTE(K15,F15&CHAR(10),"")
  第1引数:文字列・・・・・・・・同様にK列を参照します
  第2引数:検索文字列・・・・セルF4 [氏名] と 改行文字 を結合して指定します
  第3引数:置換文字列・・・・空文字("")を指定して [ふりがな] 部分を取り出します
  (設定イメージ)
画面の領域
2.StiLLボタン「Excelデータ取得(BtMerge)」ボタンでも同様の設定で処理することができます。
3.応用例
   カンマ(,)で区切られたデータを個々に取り出す場合は、第3引数の CHAR(10) をカンマに置き換えることで処理できます。
(StiLL関数について)
  StiLL関数は基本的にはVBAで使用するものですが、今回のようにExcelシートで使用できるものもあります。
  また使用する場合は本例のようにStiLLボタンで関数をセットする方法となります。
■ 関連するキーワード                        
StiLLコマンド
BtRecordQuery BtMerge データ加工 一括加工 StiLL関数 すごいツールはStiLLだけ! 凄いツールはStiLLだけ! StiLLを知らないなんて!もったいない!
(各ボタンの設定内容の詳細はStiLLヘルプをご確認ください)  
Copyright(C) アイエルアイ総合研究所 無断転載を禁じます