INDIRECT
関数を使用して動的に構築された範囲を持つチャートを作成しようとしています。 Excelは、シート上の対応する範囲を強調表示するので、INDIRECT
を使用して作成している範囲を認識します。
ただし、チャートを保存すると、関数が無効であるというエラーメッセージが表示されます。
誰かが問題が何であるかを知っていますか/特定の開始点から特定の終了点までの動的なチャート範囲を作成する方法は?
PS: 上記のスプレッドシートはこちらからダウンロードできます 。私が使用していた式:=INDIRECT("sheet!"&E2&":"&E3)
鉱山はショーンの優れた答えに似ていますが、開始日と終了日を許可します。最初に、インデックス/一致式を使用して、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)
グラフでのダイナミックレンジの使用方法については、ニース Chandooの投稿 をご覧ください。
あなたがそれをしようとしている方法は不可能です。チャートのデータ範囲には固定アドレスが必要です。
これを回避する方法があり、名前付き範囲を使用しています
セルのデータに必要な行数を入れます(例: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名前付き範囲を使用する場合)
Horizontal (Category) Axis Labels
には、ラベルに定義した名前を入力します
e1の数値を変更すると、チャートが変更されます:
ビットとグーグルのちょうど別の答え..
それでも開始セルと終了セルを参照したい場合は、日範囲と値範囲に個別の数式を追加する必要があります。数式は下にあり、スクリーンショットは使用されている数式を示しています。
日の範囲:
="Sheet1!"&$F$2&":"&ADDRESS(ROW(INDIRECT($F$3)),COLUMN(INDIRECT($F$2)))
値の範囲:
="Sheet1!"&ADDRESS(ROW(INDIRECT($F$2)),COLUMN(INDIRECT($F$3)))&":"&$F$3
次に、それらのセルのINDIRECT
値を参照する2つの範囲を追加します
Ctrl + F3を押し、[新規]をクリックして、=INDIRECT(Sheet1!$F$4)
を参照して、「chart_days」という名前の新しい範囲を追加します。 =INDIRECT(Sheet1!$F$5)
を参照する「chart_values」という名前の新しい範囲
最後に、チャートに=nameOfYourWorkbook!chart_values
を参照するシリーズを追加します
=nameOfYourWorkbook!chart_days
を参照するようにカテゴリを編集します
折れ線グラフの範囲が名前付き変数であり、変数にセルを介した範囲へのINDIRECT()参照がある場合、変数にはコンマで区切られた少なくとも2つのINDIRECT()が必要です。
示した式に従って:= INDIRECT( "sheet!"&E2& ":"&E3)シートに正しく名前を付けていません。
私はそれがSheet1だと思っていただろう!またはSheet2!など。数式は、有効なアドレスではない= sheet!E2:E3に解決されます。表示されるエラーメッセージは、ExcelがINDIRECTへの入力を解決できないことを意味します。 INDIRECT is有効な関数なので、指定する引数は無効でなければなりません。
シート名がエラーを修正したが、それについては言及していないという上記の回答のすべて...;)
OFFSET
を使用して定義済みの名前の式を作成し、データのすべての範囲を定義して、終了日(またはデータセットの開始および終了位置)を開始できるようにします。
単純なグラフの場合、CategoryLabelsという名前を次のように定義します。
= OFFSET($A$5; (InicitialMonth-1); 0; LastMonth - (InitialMonth-1))
およびDataCarsは次のとおりです。
= OFFSET($B$5; (InicitialMonth-1); 0; LastMonth - (InitialMonth-1))
同じ手順に従って、含めるシリーズの数だけ名前を定義する必要があります。この単純なケースでは、自動車販売のみを含めました。
最初の月と最後の月は、グラフのどの月が含まれるか(開始月から終了月まで)を示すために使用される単一のセルに対して定義された範囲名です。
Sean Cheshireなどによって説明されているように、チャート値に名前を使用するには、スプレッドシートの名前を含める必要があることを忘れないでください。
間接関数を使用した名前付き数式は、グラフでは機能しません。目的の動的ソースが強調表示されるので、他のfromsで機能しますが、チャートでそれを評価すると、評価されません。 Microsoftがこれを修正することを願っています。