「StiLL」 デザイン情報282 StiLLコマンド-- 【データ加工】元データを任意の件数作成する方法
                             
  【テーマ】
今回はデータ加工の処理で元データを任意の件数作成(コピー)する方法についてご紹介します。
この方法ではデータ個々に作成件数を指定できます。
    【方法】
StiLLボタンの「セルデータコピー(BtCellCopy)」ボタンと「Excelデータ抽出 (BtRecordQuery)」ボタンを使います。
    【参考】
作成件数に0を指定した場合は当該データは表示されません。
 
                 
                             
■ 今回の内容                          
元データを指定件数分作成(コピー)する手順をご紹介いたします。
(元のデータ)                                        (処理後のイメージ)
(作成件数)に設定した行数分明細データを作成(コピー)します ⇒
本例ではシステムテンプレート「DLDATA」と「WORKT」を使用しています。
・ポイント
1. 最初にセルデータコピーボタンで「DLDATA」シートの作成件数の最大値(本例では5)で全明細を作成します。
2. 作成する行(F列の基準値)と(作成件数)とを比較し有効な行(抽出対象)を判別します。(下段:セルG12の説明参照)
3. 最後に抽出対象を1以上のデータに絞り込むことで完成します。(上図:処理後のイメージ参照)
今回の処理は過去のデザイン情報215の仕組みを応用する(列展開数を作成件数に読み替える)ことで実装可能です。
下段ではその手順に沿って説明します。
        ・過去のバックナンバーは以下をご覧ください。
【バックナンバー 215】 列方向に繰返される項目群を行単位に加工する(2)
■ ボタンの作成と設定                        
今回使用するボタンを赤枠で示します。(リボン - StiLL - ボタンテンプレート)
今回のボタン配置およびセルの数式の設定例を示します。
本例では「WORKT」シートに「DLDATA」で取得したデータを加工して出力します。
項目名のコード、備考は「DLDATA」のE列、F列のデータを参照して出力します。
@セル内容の説明
セルE3にはシート名[WORKT]、F3にはデータの出力開始行[15]を入力しています。
セルG3には元データの明細数(処理数)を取得する式[=COUNTA(DLDATA!F:F)-1]を入力しています。
セルH3には「DLDATA」シートの最大作成件数を取得する数式[=MAX(DLDATA!G:G)]を入力しています。
 ・本例では一旦すべてのデータを最大件数分作成します。
セルI3には下段12行目の数式をコピーする範囲[=E3&"!E"&F3&":J"&G3*H3+F3-1]を設定する式を入力しています。
 ・本例でのデータ出力範囲はE列からJ列なので固定値で設定しています。
各項目式の説明(12行目)
セルE12:明細を行方向に展開する基準値(行)の式[=INT((ROW()-$F$3)/$H$3)+1]を入力しています。
セルF12:同様に明細を列方向に展開する基準値(列)の式[=MOD(ROW()-$F$3,$H$3)]を入力しています。
セルG12:抽出対象を判定する式[=IF(F12<INDEX(DLDATA!G:G,$F$3+$E12-1),1,0)]を入力します。
 ・この数式で抽出対象(有効な行)に1を設定します。
セルH12:元データのコードを参照する式[=INDEX(DLDATA!E:E,$F$3+E12-1)]を入力します。
セルI12:コード別の連番を取得する式[=COUNTIFS($E12:$E$15,E12,$G12:$G$15,">0")]を入力します。
 ・この数式の$E12、$G12の行が可変して、コードごとに1からの連番を出力します。
セルJ12:元データの備考を参照する式[=INDEX(DLDATA!F:F,$F$3+E12-1)]を入力します。
A「セルデータコピー(BtCellCopy)」ボタンの設定
  設定内容
   1.設定ダイアログを開き下図のように元データ範囲のセル範囲に(WORKT!E12:J12)を入力します。
   2.出力セル位置はセルの値を参照にチェックし(WORKT!I3)を入力します。
   3.貼り付け種類の複数選択をチェックして、3.数式、11.出力先を値のみコピーをチェックします。(赤枠内
      ※ここではボタン見出しを数式展開としています。
B「Excelデータ抽出(BtRecordQuery)」ボタンの設定
  設定内容
   1.設定ダイアログを開き下図のように元データ範囲のセル範囲に(WORKT!E14)を入力します。
   2.検索式範囲にWORKT!E7:E8を入力します。
      ※この検索式で抽出対象が0より大きいデータに絞ります。
   3.出力セル位置は1.と同じ(WORKT!E14)を入力します。
      ※ここではボタン見出しをデータ整備としています。
■ ボタンの実行                        
1.上記2つのボタンを 「ボタン連続実行(BtPush)」 ボタンのリストに設定して実行します。
   「ボタン連続実行(BtPush)」ボタンの設定例
■ ご参考までに                        
1. 作成件数に 0 を指定した場合は当該データは表示されません。
(各ボタンの設定内容の詳細はStiLLヘルプをご確認ください)  
Copyright(C) アイエルアイ総合研究所 無断転載を禁じます