質問する
0

ピボットテーブルのデータ範囲について

質問日 2019-06-19 12:50:20 +0200

Tpo4988Mao のGravatar画像

updated 2019-07-01 05:43:23 +0200

nogajun のGravatar画像

LibreOffice 6.2のcalcを使用しています。

別シートのデータからピボットテーブルを作成しています。 データを定期的に追加することから、ピボットテーブルのデータ範囲を可変にしたいと思っているところです。

  • ピボットテーブルのデータ範囲を名前付きの範囲に設定し
  • 名前付き範囲の設定で「参照範囲または数式」の欄に、エクセルで可変にするようにOFFSET関数で入力しましたが、名前の管理で範囲として認識されません。

ピボットテーブルのデータ範囲を可変にするには、どのようにしたらいいのかご教示願います。

edit retag flag offensive close merge delete

1 Answer

0

回答日 2019-07-01 05:41:02 +0200

nogajun のGravatar画像

エクセルで可変にするようにOFFSET関数で入力しましたが

詳しい情報がまったく書いていないので思いつきですが、OFFSET関数のシート参照の書き方が間違えてるとかではありませんか?

Excel: =Sheet!A1
Calc: =$Sheet1.A1
edit flag offensive delete link もっと

Comments

回答ありがとうござます。

〇 「入力規則」→「セルの範囲」→「ソース」欄に「OFFSET($データ.C10,0,0,10,1)」と入力すると、範囲をリストとして認識し表示になります。

〇 同じように、「名前付き範囲または式」→「管理」→「参照範囲又は数式」欄にOFFSET($データ.C10,0,0,10,1)と入力、「名前」を「計算範囲」とすると、名前として登録になります。

〇 この名前で、例えば別シートのA1に「=SUM(計算範囲)」と数式を入力すると計算をします。

〇 この名前を利用して、ピボットテーブルを作成しようと、「ソースと結果の貼り付け先」→「名前付きの範囲」に名前とした「計算範囲」が表示にならないので、ピボットテーブル範囲として利用できません。

以上のような状況です。

Tpo4988Mao のGravatar画像Tpo4988Mao ( 2019-07-03 13:02:32 +0200 )edit

メモ(多分バグ。以下、解決はしない。)

「入力規則」→「セルの範囲」→「ソース」欄に「OFFSET($データ.C10,0,0,10,1)」と入力すると、範囲をリストとして認識し表示になります。

入力規則でCell Rangeを選択した場合、扱いとしてはSC_VALID_LIST

https://opengrok.libreoffice.org/xref...

  1. ScValidationDataはScConditionEntryを継承している。

  2. ScConditionEntryはそのコンストラクタで、Compileメソッドを呼び出し、ScCompiler::CompileStringへ文字列を渡し、逆ポーランド記法のトークン配列ScTokenArrayを生成する。このCompileStringだけでは、数式の計算結果にならないことに注意する。

  3. ScFormulaCell::InterpretTailがその処理中、ScValidationData::IsDataValidを呼び出す。

  4. https://opengrok.libreoffice.org/xref...

  5. https://opengrok.libreoffice.org/xref...

  6. 別のScFormulaCellを作って計算かな?=> https://opengrok.libreoffice.org/xref...

himajin100000 のGravatar画像himajin100000 ( 2019-07-08 09:09:09 +0200 )edit
  • ScInterpreterやそれを利用するScFormulaCellが処理するときには、名前ではなく、「その名前が定義されたシート及びインデックスの組み合わせ」になっている。
  • その組み合わせに変換しているのが、ScCompiler::IsNamedRange( const OUString& rUpperName)で呼ばれているmaRawToken.SetName
  • ピボットテーブルのときには、計算結果が範囲になるかどうかのための計算をしておらず、式がトークン一つからなっており、bool ScTokenArray::IsValidReference( ScRange& rRange, const ScAddress& rPos ) constしかチェックしていない気がする(多分バグ)
himajin100000 のGravatar画像himajin100000 ( 2019-07-10 16:56:06 +0200 )edit

回答ありがとうございました。

今後改善されることを期待して、この件は終了とします。

ありがとうございました。

Tpo4988Mao のGravatar画像Tpo4988Mao ( 2019-07-16 01:58:26 +0200 )edit
ログイン/サインアップして回答する

質問ツール

1 follower

Stats

Asked: 2019-06-19 12:50:20 +0200

Seen: 51 times

Last updated: Jul 01