0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【DataMagic】データ加工やってみた!Excel形式[単一セルと表]からマルチフォーマット形式へ≪チューニング編≫

0
Last updated at Posted at 2026-10-17

はじめに

の出力結果を見ると、下図のように明細の前後にヘッダ部、フッタ部のレコードが出力されています。

本当は1伝票で、ヘッダ部1回、フッタ部1回と明細行分の出力を想定していたので、赤線で消したレコード分出過ぎです。

Qiita_061-01.jpg

今回の課題

今回は

:one: 不要なレコードの出力を食い止めろ:exclamation:
:two: レコードの出力順を調整せよ:bangbang:

に挑戦します。

:one: 不要なレコードの出力を食い止めろ:exclamation:

やり方は人それぞれ。

私は変数を使って、出力を食い止めてみます。

1.変数を使って食い止める

今回は、顧客ID毎の伝票なので、顧客IDが変わったらヘッダ部とヘッダ部を出力するようにします。

その判定には、変数を使用します。

1.変数

比較用の顧客IDを保管するための変数:顧客ID を用意します。

Qiita_061-02.jpg

2.抽出条件の設定

まず、ヘッダ部を出力する「抽出条件1」とフッタ部を出力する「抽出条件3」に、以下の条件をAND条件で追加します。

入力項目:顧客IDと変数:顧客IDの値が違ったら(出力する)
同じだったら条件に一致しない(ので出力しない)

Qiita_061-03.jpg

次に、「抽出条件3」に変数値の代入を追加します。

抽出条件に一致したら、比較用の変数の値を置き換える

Qiita_061-04.jpg

3.データ加工処理

上記の設定を加えたら、保存してデータ加工を実行します。

出力結果がこちら :arrow_down:

Qiita_061-05.jpg

とりあえず、各伝票毎にヘッダ部が1回、フッタ部が1回の出力になりました。

が。。。出方がちょっと不細工です。

:two: レコードの出力順を調整せよ:bangbang:

1.ヘッダ部 > フッタ部 > 明細 の順に出力

こっちは滅茶苦茶簡単。

下図のように、抽出条件の並び替えで対応できます。

Qiita_061-06.jpg

並び順を変えて出力した結果がこちら :arrow_down:

Qiita_061-07.jpg

無事、ヘッダ部 > フッタ部 > 明細 の順に出力されました :100:

2.ヘッダ部 > 明細 > フッタ部 の順に出力

こっちはチョット工夫が必要。

1.変数

まず、フッタ部を最後の明細を出力した後に出力しないといけないので、明細の件数を知る必要があります。
また、何件目の明細を出力したかをカウントする必要もあります。

これら2つは、変数:明細行数と、変数:カウント で管理します。
なお、この2つは、変数タイプ=数値、初期値=0 で登録します。

Qiita_061-08.jpg

2.仮想テーブル

明細の件数を知るのに、仮想テーブルを使用します。

詳しいことはマニュアルで確認していただくとして。

今回は以下の条件で登録します。

1.仮想テーブルファイルに取り込むデータは入力ファイル
2.形式はExcel、入力情報で登録したIDを使用
3.仮想テーブル名は初期値(VT_TABLE1)
4.[項目取り込み]をクリック

で、登録した定義がこちら :arrow_down:

Qiita_061-09.jpg

3.抽出条件の設定

抽出条件は、ヘッダ部 > 明細 > フッタ部 の順で、それぞれ以下の設定をします。

ヘッダ部

入力項目:顧客IDと変数:顧客IDの値が違ったら(出力する)をAND条件で追加

Qiita_061-03.jpg

抽出条件に一致したら、比較用の変数の値をそれぞれ以下のように置き換える

※ 顧客ID = 入力項目:顧客IDを代入
Qiita_061-10-1.jpg

※ 明細件数 = 仮想テーブルから、顧客IDが入力項目:顧客IDと同じ品目の件数を代入
Qiita_061-10-2.jpg
 select count([品目]) from [VT_TABLE1] where [顧客ID] = $VAR(顧客ID)

※ カウント = 0 を代入
Qiita_061-10-3.jpg

明細

変数:カウントに1を加算する

Qiita_061-11-1.jpg

フッタ部

変数:明細件数と。変数:カウントの値が同じになったら(出力する)をAND条件で追加

Qiita_061-12-1.jpg

4.データ加工処理

上記の設定を加えたら、保存してデータ加工を実行します。

出力結果がこちら :arrow_down:

Qiita_061-13.jpg

こちらも、ヘッダ部 > 明細 > フッタ部 の順に無事出力されました :100:

以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?