web-dev-qa-db-ja.com

INDIRECTを使用した動的なチャート範囲:その機能は無効です(範囲が強調表示されているにもかかわらず)

INDIRECT関数を使用して動的に構築された範囲を持つチャートを作成しようとしています。 Excelは、シート上の対応する範囲を強調表示するので、INDIRECTを使用して作成している範囲を認識します。

enter image description here

ただし、チャートを保存すると、関数が無効であるというエラーメッセージが表示されます。

enter image description here

誰かが問題が何であるかを知っていますか/特定の開始点から特定の終了点までの動的なチャート範囲を作成する方法は?

PS: 上記のスプレッドシートはこちらからダウンロードできます 。私が使用していた式:
=INDIRECT("sheet!"&E2&":"&E3)

28
Max

鉱山はショーンの優れた答えに似ていますが、開始日と終了日を許可します。最初に、インデックス/一致式を使用して、E2とE3に基づいて開始日と終了日を選択する2つの名前付き範囲を作成します。

rngDay

=INDEX(Sheet1!$A:$A,MATCH(Sheet1!$E$2,Sheet1!$A:$A,0)):INDEX(Sheet1!$A:$A,MATCH(Sheet1!$E$3,Sheet1!$A:$A,0))

rngValue

=INDEX(Sheet1!$B:$B,MATCH(Sheet1!$E$2,Sheet1!$A:$A,0)):INDEX(Sheet1!$B:$B,MATCH(Sheet1!$E$3,Sheet1!$A:$A,0))

その後、チャート内のシリーズをクリックして、式を次のように変更できます。

=SERIES(Sheet1!$B$1,Sheet1!rngDay,Sheet1!rngValue,1)

enter image description here

グラフでのダイナミックレンジの使用方法については、ニース Chandooの投稿 をご覧ください。

16
Doug Glancy

あなたがそれをしようとしている方法は不可能です。チャートのデータ範囲には固定アドレスが必要です。

これを回避する方法があり、名前付き範囲を使用しています

セルのデータに必要な行数を入れます(例:E1)
したがって、例を使用して、 D1 Number of Rowsを、 E1 6を配置します

ネームマネージャで、データとタイトルの名前を定義します
xrangeおよびyrangeを使用して定義したなので:

xrange:= OFFSET(Sheet1!$ A $ 2,0,0、Sheet1!$ E $ 1)
yrange:= OFFSET(Sheet1!$ B $ 2,0,0、Sheet1!$ E $ 1)

今、あなたのチャートに-あなたはワークブックの名前を知る必要があります(設定したら、変更を追跡するExcelの機能は、名前の変更に関係なく、参照が正しいままであることを確認します)

Chart data rangeは空白のままにします
Legend Entries (Series)には、通常どおりタイトルを入力してから、データに定義した名前を入力します(ワークブック名​​はrequired名前付き範囲を使用する場合)
data points

Horizontal (Category) Axis Labelsには、ラベルに定義した名前を入力します
data labels

e1の数値を変更すると、チャートが変更されます:
6 in E14 in E1

21
SeanC

ビットとグーグルのちょうど別の答え..

それでも開始セルと終了セルを参照したい場合は、日範囲と値範囲に個別の数式を追加する必要があります。数式は下にあり、スクリーンショットは使用されている数式を示しています。

日の範囲:

="Sheet1!"&$F$2&":"&ADDRESS(ROW(INDIRECT($F$3)),COLUMN(INDIRECT($F$2)))

値の範囲:

="Sheet1!"&ADDRESS(ROW(INDIRECT($F$2)),COLUMN(INDIRECT($F$3)))&":"&$F$3

enter image description here

次に、それらのセルのINDIRECT値を参照する2つの範囲を追加します

Ctrl + F3を押し、[新規]をクリックして、=INDIRECT(Sheet1!$F$4)を参照して、「chart_days」という名前の新しい範囲を追加します。 =INDIRECT(Sheet1!$F$5)を参照する「chart_values」という名前の新しい範囲

最後に、チャートに=nameOfYourWorkbook!chart_valuesを参照するシリーズを追加します

=nameOfYourWorkbook!chart_daysを参照するようにカテゴリを編集します

3
Jaycal

折れ線グラフの範囲が名前付き変数であり、変数にセルを介した範囲へのINDIRECT()参照がある場合、変数にはコンマで区切られた少なくとも2つのINDIRECT()が必要です。

0
singduck

示した式に従って:= INDIRECT( "sheet!"&E2& ":"&E3)シートに正しく名前を付けていません。

私はそれがSheet1だと思っていただろう!またはSheet2!など。数式は、有効なアドレスではない= sheet!E2:E3に解決されます。表示されるエラーメッセージは、ExcelがINDIRECTへの入力を解決できないことを意味します。 INDIRECT is有効な関数なので、指定する引数は無効でなければなりません。

シート名がエラーを修正したが、それについては言及していないという上記の回答のすべて...;)

0
KiwiSteve

OFFSETを使用して定義済みの名前の式を作成し、データのすべての範囲を定義して、終了日(またはデータセットの開始および終了位置)を開始できるようにします。

単純なグラフの場合、CategoryLabelsという名前を次のように定義します。

= OFFSET($A$5;  (InicitialMonth-1);  0;  LastMonth - (InitialMonth-1))

およびDataCarsは次のとおりです。

= OFFSET($B$5;  (InicitialMonth-1);  0;  LastMonth - (InitialMonth-1))

同じ手順に従って、含めるシリーズの数だけ名前を定義する必要があります。この単純なケースでは、自動車販売のみを含めました。

最初の月と最後の月は、グラフのどの月が含まれるか(開始月から終了月まで)を示すために使用される単一のセルに対して定義された範囲名です。

Sean Cheshireなどによって説明されているように、チャート値に名前を使用するには、スプレッドシートの名前を含める必要があることを忘れないでください。

0

間接関数を使用した名前付き数式は、グラフでは機能しません。目的の動的ソースが強調表示されるので、他のfromsで機能しますが、チャートでそれを評価すると、評価されません。 Microsoftがこれを修正することを願っています。

0