0

スライダー ボタンで変化する動的な散布図があります。これを行うには、オフセット関数で 2 つの名前付き範囲を使用します。これらの名前付き範囲は、スライダー ボタンを移動して X および Y 範囲の終了値を増減すると変化します。このシートのコピーを作成すると問題が発生します。新しいシートのグラフには、シリーズの数式に指定された範囲はありませんが、次のように、最初のシートで計算された範囲が採用されます。

最初のシートにはこれがあります:

=Serie('old_sheet'!$AD$3;'old_sheet'!DEF_RANGE;'old_sheet'!STRESS_RANGE;1)

しかし、コピーを作成すると、新しいシートのチャートは次のようになります。

=Serie('new_sheet'!$AD$3;'new_sheet'!$G$19:$G$578;'new_sheet'!$F$19:$F$578;1)

したがって、数式を手動で次のように変更する必要があります。

=Serie('new_sheet'!$AD$3;'new_sheet'!DEF_RANGE;'new_sheet'!STRESS_RANGE;1)

シリーズの数式を必要なものに変更する簡単なボタンを実装するのを手伝ってくれる人がいるかどうか尋ねます。

式を変更するために行った手順のマクロを記録しようとしましたが、常に機能するとは限りません。

ここで立ち往生しています...助けていただければ幸いです!

よろしく

4

3 に答える 3

0

次の手順は少し面倒ですが、壊れやすいワークシート スコープの名前を保持します。

  1. ワークシートとグラフを含むブックを保存します。
  2. グラフを含むシートを新しいブックに移動します (コピーしないでください)。
  3. 保存せずに最初のワークブックを閉じると、再度開いたときにワークシートとグラフが含まれたままになります。
  4. 移動したワークシートとグラフ (TempChart.xlsx など) を含む新しいワークブックを保存して閉じます。このワークブックは、次の手順 6 のように使用すると、テンプレートとして使用できます。
  5. 元のブックを再度開きます。
  6. 新しいブックを再度開きます。ワークシートとチャートを新しいワークブックから元のワークブックに移動します (コピーしないでください)。

このワークシートとグラフの別のコピーが必要な場合は、手順 6 のように新しいワークブックを再度開き、目的の既存のワークブックにシートを移動します。

于 2014-03-18T13:54:09.137 に答える
0

私が持っている大きなプログラムの小さなバリエーションを思いつきました。これは、コピーされたシートに 1 つのグラフがあり、そのグラフに 1 つのプロットされたシリーズがあることを前提としています。

Sub FixSeriesRangeRefs()
  Const sXVALNAME As String = "DEF_RANGE"
  Const sYVALNAME As String = "STRESS_RANGE"

  Dim sFormula As String
  Dim vFormula As Variant
  Dim sXVals As String
  Dim sYVals As String

  With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
    sFormula = .Formula
    vFormula = Split(sFormula, ",")

    sXVals = vFormula(LBound(vFormula) + 1)
    sXVals = Left$(sXVals, InStr(sXVals, "!")) & sXVALNAME
    vFormula(LBound(vFormula) + 1) = sXVals

    sYVals = vFormula(LBound(vFormula) + 2)
    sYVals = Left$(sYVals, InStr(sYVals, "!")) & sYVALNAME
    vFormula(LBound(vFormula) + 2) = sYVals

    sFormula = Join(vFormula, ",")
    .Formula = sFormula
  End With
End Sub
于 2015-03-23T20:39:14.593 に答える