「StiLL」 デザイン情報238 StiLLコマンド-- レコード単位の文字の連結(結合)
                             
  【テーマ】
レコード毎に記録されている項目内容を1つのセルに連結する方法についてご紹介いたします。
    【方法】
「Excelデータ抽出(BtRecordQuery)」ボタンを2つ使います。1つ目の抽出で文字を連結し、2つ目の抽出でグループ化して連結文字の最大値を取り出します。
    【参考】
データは事前にグループ化する項目(ここでは区分)で昇順にソートしておく必要があります。
 
                 
                             
■ 今回の内容                          
今回はレコード単位の項目(ここでは研修名)を区分ごとに文字連結する考え方をご紹介します。
加工イメージ
 元データ
画面の領域
   ↓ (予定研修名)として元データの(研修名)をカンマで連結したイメージ
画面の領域
本例ではシステムテンプレートの「DLDATA」シートを使用しています。
・ポイント
 ・最初の「Excelデータ抽出(BtRecordQuery)」ボタンで順次(研修名)を連結します。
 ・2つ目の「Excelデータ抽出(BtRecordQuery)」ボタンで区分のグループ化を行い最大値を取得します。
■ ボタンの作成と設定                        
今回使用するStiLLボタンを示します。(下図赤枠)
画面の領域
今回のボタン配置およびセルの式の設定例を示します。(全体図)
上図の青枠(セルE2からG4まで)が最初の「Excelデータ抽出1」ボタンで参照する項目式の範囲です。<文字連結>
同様に茶枠(セルE8からG11まで)が2つ目の「Excelデータ抽出2」ボタンで参照する項目式の範囲です。<グループ化>
・2つ目の実行時に、最初のボタンで表示されたG列(研修名)をクリアするため項目範囲にG列を含めています
@セル内容の説明 「Excelデータ抽出1」ボタンの項目式
はじめに今回のポイントとなる セルF4:'==IF(E14=E15,F14&",","")&G15(文字連結用)の式について説明します。
セルF4には同じ区分かを判定する数式を設定しています。
   1つ前のE列の区分と比較して同じ場合は前の行で連結したF列に今回のG列をカンマで結合する数式となります。
   また区分が異なる場合はG列をそのままF列に設定します。
A1つ目の「Excelデータ抽出(BtRecordQuery)」ボタンの設定
以下に設定状態を示します。・・・各項目の詳細は全体図および上記@を参照
項目式の設定は次の通りです。
図では式が入力された状態ですが、手順としては項目式をシートに展開してから式を入力します。
OKボタンで設定を完了します。
下図はこのボタンの実行結果イメージです。
画面の領域
B2つ目の「Excelデータ抽出(BtRecordQuery)」ボタンの設定
以下に設定状態を示します。・・・各項目の詳細は全体図および下図を参照
項目式の設定は次の通りです。
項目(区分)をグループ化して同じ区分を1行の明細とする設定を行います。
また(予定研修名)は最大を指定します。
なお(全体図)の中の集計式で 「最大(予定研修名)」としているのは見出し表示を変更しないためです。
本例のように当該項目名を半角の括弧で囲むことで元データの項目名が維持されます。
括弧で囲む設定は、1つ目のボタンと同様に、項目式をシートに展開してから設定します。
出力セル位置は1つ目のボタンと同じセルE14とします。
OKボタンで設定を完了します。
この2つ目のボタンを実行することで連結数が最大のデータのみ抽出され冒頭のイメージとなります。
■ ボタンの実行                        
1.1つ目のボタン、2つ目のボタンを「ボタン連続実行(BtPush)」ボタンのリストに(画面描画OFF)ボタンと組み合わせて実行
   することで、加工する処理速度を向上できます。
   「ボタン連続実行(BtPush)」ボタンへの設定例
画面の領域
■ ご参考までに                        
1.データは事前にグループ化する項目(ここでは区分)で昇順にソートしておく必要があります。
(各ボタンの設定内容の詳細はStiLLヘルプをご確認ください)  
Copyright(C) アイエルアイ総合研究所 無断転載を禁じます