エクセルのグラフ参照範囲の文字列から、数字のみを抽出する方法を教えて下さい。
目的は、ある条件の時だけ系列の書式設定を変更するのですが、それを自動でするためです。
現状では条件の判定の繰り返し回数が系列の要素数を上回るように設定して、全ての要素について判定できるようにしています。
しかし条件判定の繰り返し回数が要素数を上回った時点でエラーとなります。
エラーとなっても目的の操作は終了しているのですが、別の系列の書式設定をするのに一旦VBに戻ってから再び実行しています。
これを要素数の数だけ判定するようにして、エラーになることなく系列を順次繰り上げるようにしたいです。
=SERIES("系列9",Sheet1!$A$45:$A$165,Sheet1!$B$45:$B$165,9)
ウェブサイト様で参考にさせて頂きましたコードを書きましたら、このように文字列が返りました。
この場合で言いますと165から45を引いたものを繰り返し回数として指定するために、数字の部分のみを、45と165を混ぜることなく個別に取得したいです。
いい方法がありましたら教えて下さい。
是非宜しくお願い致します。
なお参照範囲の取得のために記入しているコードです。
Dim objChart as Chart
Dim Sansyouhani(1000) as Variant
Set objChart = ActiveSheet.ChartObjects(1).Chart
With objChart.SeriesCollection
For i = 1 To .Count
Sansyouhani(i) =.Item(i).Formula
Debug.Print Sansyouhani(i)
Next i
End With
WEB記事に
https://oshiete.goo.ne.jp/qa/9263013.htmlがある。
一部修正したが。
Sub test02()
Dim i As Long
Dim s As String
Dim rng As Range: Set rng = ActiveSheet.Range("A30")
Dim objChart As Chart
Set objChart = ActiveSheet.ChartObjects(1).Chart
With objChart.SeriesCollection
For i = 1 To .Count
MsgBox "系列" & i & "のソースデータ範囲は ⇒" _
& vbCrLf & .Item(i).Formula
s = .Item(i).Formula
s = Replace(s, "=SERIES(,", "")
's = Right(s, Len(s) - 1) ' 左端の=を削除
s = Left(s, Len(s) - 3)
rng.Value = s
Set rng = rng.Offset(1, 0)
Next i
End With
Set objChart = Nothing
End Sub
ーー
この結果は
Sheet1!$A$1:$C$1,Sheet1!$A$2:$C$2
Sheet1!$A$1:$C$1,Sheet1!$A$3:$C$3
Sheet1!$A$1:$C$1,Sheet1!$A$4:$C$4
だが、
あと何が出したいのか?
ーー
参考に
私の例ではデータが、A1:C4で
a b c
10 25 40
30 15 60
50 45 80
のグラフを描いたものを対象にすると
A30以下に
Sheet1!$A$1:$C$1,Sheet1!$A$2:$C$2
Sheet1!$A$1:$C$1,Sheet1!$A$3:$C$3
Sheet1!$A$1:$C$1,Sheet1!$A$4:$C$4
とでる。
お礼
Replace関数によって不要な文字を取り除けるのですね。 とても参考になる回答を下さり、ありがとうございました。