1

私の文書の構造は、下の画像から見ることができます。列 A (セル A1 を除く。この特定のセルが含まれていないことがグラフにとって重要です)、B、D からタイムライン グラフを作成したいと考えています。VBA を使用してグラフを動的にする方法を探しています。ユーザーが追加したイベントは、グラフの範囲を手動で変更しなくても自動的にグラフに表示されます。

範囲は、「Create a New Event View」ボタンの背後にあるマクロがクリックされたときに変更される限り、即座に/継続的に変更する必要はありません。ユーザーがテーブルに追加するイベントがさらにある場合、イベントをテーブルに追加するだけで、新しいテーブルを作成して古いテーブルを削除することで、チャートも更新されます。

問題は、これをどのようにやってのけるかです。

ここに画像の説明を入力

4

2 に答える 2

3

グラフを動的にするために VBA は必要ありません。データとともに拡大および縮小する動的な名前付き範囲を作成するだけです。グラフの VBA は、コードに負担をかけることなく、その名前付き範囲を参照できます。しかし、VBA がまったく必要ない場合もあります。ダイナミック レンジで定義されたチャートは、瞬時に更新されます。コードは必要ありません。

グラフ ラベルの範囲名と数式:

chtLabels =Events!A2:Index(Events!$A:$A,counta(Events!$A:$A))

列 B の範囲名と数式

chtBegin =offset(chtlabels,0,1)

列 D の範囲と計算式

chtDuration =offest(chtlabels,0,3)

データ ソースを編集し、固定セル範囲の代わりに、名前付き範囲を次の形式で入力します。

=Events!*RangeName*

系列値とグラフの項目軸にそれぞれの範囲名を指定する必要があります。

注: ダイナミック レンジ名をチャートのソースとして指定する場合は、ファイル名またはシート名のいずれかを範囲名の参照に含める必要があります。ダイアログを閉じて再度開くと、入力内容が Excel によって自動的に形式に変換されることがわかります。[Filename]RangeName

注 2: ダイナミック レンジ名を作成するためのさまざまな数式オプションが多数あります。この場合、列 A のインデックスを使用し、セルをカウントして最後に入力されたセルを特定します。これは、列 A のすべてのセルにテキストがある場合にのみ機能します。データの列 A にギャップがある場合 (そうではないと思います)、別の数式を適用して範囲を決定できます。

于 2013-06-07T13:31:39.220 に答える