Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
ピボットテーブルにて数個軸を縦に設定し、年月を横軸に持ちにし、
数値データを表示しようとしています。
縦軸と横軸の組み合わせでデータが存在しないものもあります。
上記の場合、通常のピボットテーブルの表示では、
データが存在しないものは欠損値として表示されますが、
データが存在しない数値項目には、年月を遡りデータの入っている年月の数値を
セットするということを実現したいと思っています。
現在は、以下のようになっているのですが
1 2 3 4 5 6 7 8 9 10 11
A - - - - 1 - 2 3 - 4 5
B - - - 1 - - 2 3 - 4 -
C - - - - - - 2 - - - -
上記のように欠損値がある場合に前月の値を挿入させて、以下のように表示をしたいです。
1 2 3 4 5 6 7 8 9 10 11
A - - - - 1 1 2 3 3 4 5
B - - - 1 1 1 2 3 3 4 4
C - - - - - - 2 2 2 2 2
チャート関数で何とかできないかと、「avobe」やset分析を使用しトライしてみましたが、
「欠損値」自体がデータ(NULL等)としてが拾えず、実現できませんでした。
関数やスクリプトでテクニカル的に実現できる方法がございましたら、
ご教授いただけませんでしょうか。
rangemax内は以下のような処理をしています。
beforeはbefore(数式,範囲指定始点offset、範囲指定数)で定義されます。
今回の場合、before()の数式は数値があればcolumnno、なければNULLを挿入しています。
範囲指定開始点は自分自身、範囲指定数は自身のcolumnno分となります。
つまり、columnnoが5の位置に数値があり、6の位置に数値がないとすると
5の位置では、columnnoの最大値は5となりfirst関数のoffsetは5になるためcolumnnoが5の位置の数値が挿入されます。
6の位置でもcolumnnoの最大値は5となりfirst関数のoffsetは5になるためcolumnnoが5の位置の数値が挿入されます。
結構複雑ですが、わからないことがあれば質問ください。
これはかなり難しいですね。
以下のようにfirst関数、rangemax関数、before関数、表示できます。
if(
first(sum(データ),rangemax(before(if(sum(データ),columnno()),0,columnno()))),
first(sum(データ),rangemax(before(if(sum(データ),columnno()),0,columnno()))),
0)
中身の説明は次回の返信で行います。
rangemax内は以下のような処理をしています。
beforeはbefore(数式,範囲指定始点offset、範囲指定数)で定義されます。
今回の場合、before()の数式は数値があればcolumnno、なければNULLを挿入しています。
範囲指定開始点は自分自身、範囲指定数は自身のcolumnno分となります。
つまり、columnnoが5の位置に数値があり、6の位置に数値がないとすると
5の位置では、columnnoの最大値は5となりfirst関数のoffsetは5になるためcolumnnoが5の位置の数値が挿入されます。
6の位置でもcolumnnoの最大値は5となりfirst関数のoffsetは5になるためcolumnnoが5の位置の数値が挿入されます。
結構複雑ですが、わからないことがあれば質問ください。