
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんにちは。
>教えて頂いたコードで、出来るような雰囲気なのですが
まず、基本的な私の書き込みスタイルは、質問者のリクエストがない限りは、データを削除したり、壊したり、上書きしたりしないようにしています。もちろん、今のままでも使えますが、
>・新しいデータ(301番目)が入ってきたら、1番目のデータから消していきたいです。
こちらの条件には合いません。つまり、不必要な行を削除するようにするのだと思います。ただ、グラフのデータの範囲自体などは示されていませんので、系列は5個で、「回答に対する補足」部分から、データの範囲は、「C18:G317」までの範囲だと解釈させていただきます。もしも、データが300以下の場合は、グラフのみの、設定のしなおしをします。
'<標準モジュール>
Sub TestChart2()
Dim LastRow As Long, FirstRow As Long
Dim myAddress As String, i As Long
With ActiveSheet
'ここにWebデータの貼り付けのコードを入れる
LastRow = .Range("C65536").End(xlUp).Row
'本来の最初の行
FirstRow = Application.Max(LastRow - 299, 1)
If LastRow > 317 Then
'不要の部分を削除してB18まで戻す
Range("B18", "G" & FirstRow - 1).Delete xlShiftUp
LastRow = .Range("C65536").End(xlUp).Row
End If
For i = 1 To 5
'グラフ系列用のアドレスの取得
myAddress = Range(.Cells(18, i + 2), _
.Cells(LastRow, i + 2)).Address
.ChartObjects(1).Chart.SeriesCollection(i).Formula = _
"=SERIES(,," & .Name & "!" & myAddress & ",1)"
Next i
End With
End Sub
No.2
- 回答日時:
基本的なことですが、Web クエリで出したものを、同じシートで加工するのですか?
それから、「縦の数値を横に変えて貼り付け」のマクロだけですが、他のことは何も分からないので、こちらの想像で作ってみました。
'最初の行は、最後から300行さかのぼったところ。ただし、300行に達しない場合は、それ以下にする。
Sub TestChart()
Dim LastRow As Long, FirstRow As Long
Dim myAddress As String, i As Long
With ActiveSheet
LastRow = .Range("C65536").End(xlUp).Row
FirstRow = Application.Max(LastRow - 300, 1)
For i = 1 To 5
myAddress = Range(.Cells(FirstRow, i + 2), _
.Cells(LastRow, i + 2)).Address
.ChartObjects(1).Chart.SeriesCollection(i).Formula = _
"=SERIES(,," & .Name & "!" & myAddress & ",1)"
Next i
End With
End Sub
この回答への補足
回答ありがとうございます。
>基本的なことですが、Web クエリで出したものを、同じシートで加工するのですか?
同じシートで加工しています。
>それから、「縦の数値を横に変えて貼り付け」のマクロだけですが、他のことは何も分からないので、こちらの想像で作ってみました。
補足
グラフは、元データ自体の幅を縦300行に設定してあるので、Webクエリから最後の行にデータが追加されたらグラフが動いていく状況です。
私の 教えて の内容は
・300のデータ数のグラフを作成したい。
・新しいデータ(301番目)が入ってきたら、1番目のデータから消していきたい
です。
イメージが掴めたでしょうか?
教えて頂いたコードで、出来るような雰囲気なのですが
上に記述したイメージのコードに適しているでしょうか?
No.1
- 回答日時:
グラフ幅という意味が良く分かりませんが、データの増加で、そのデータを取捨していくなら、
例えば、
ActiveChart.SeriesCollection(1).XValues
ActiveChart.SeriesCollection(1).Values
で、データ範囲のアドレスを、R1C1型に取って入れればよいのではありませんか?
例えば、
LastRow = Range("B65536").End(xlUp).Row
FirstRow = Application.Max(LastRow - 20, 1)
myAddress = Range(Cells(FirstRow, 2), Cells(LastRow, 2)).Address(, , xlR1C1)
もし、私の話で見えてこないようでしたら、一度、お使いのコードを表示して、具体的に説明してください。
この回答への補足
こんにちわ
’縦の数値を横に変えて貼り付け
Range("B18:B22").Select
Selection.Copy
Range("c65536").End(xlUp).Offset(1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
このようなコードです。
5つのデータをグラフ化して推移させている状態です。
グラフのデータは300くらいまでを見ています。
300以上のデータは、古い順から切り捨てていきたいと考えています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
メモ帳(テキストデータ)をExc...
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
多量のSUMIF式を軽くしたい
-
javaでDBからデータを取ってき...
-
<VB>String→Object
-
ページ数を求めたい
-
ウィンドウ枠の固定を行の2箇所...
-
EXCEL VBA FREQUENCY関数での...
-
Excelのマクロでワードのテキス...
-
S9タイプからXタイプにデータ...
-
VBAでのリストビューにおけるド...
-
ユーザーフォームのテキストボ...
-
VB6でCSVの取込をする
-
ACCESS VBA インデックスが有効...
-
C# ソケット通信でデータ受信時...
-
あんまり考えたくないけど
-
シリアル通信におけるバイトデ...
-
C言語を用いて、GNUPLOTでリア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
メモ帳(テキストデータ)をExc...
-
配列でデータが入っている要素...
-
<VB>String→Object
-
二分探索の平均探索回数
-
多量のSUMIF式を軽くしたい
-
EXCELVBAでSQLserverからデータ...
-
この行は既に別のテーブルに属...
-
ユーザーフォームのテキストボ...
-
VBA 空白セルを削除ではない方...
-
特定のデータの抽出方法を教え...
-
パースとはなんですか?
-
C# ソケット通信でデータ受信時...
-
エクセルで2つの時系列のデー...
-
[C言語] コメント文字列を無視...
-
Accessで該当データにフラグを...
-
カンマからスラッシュに
-
C# でDataTableの更新を高速化...
-
アクセス2000で画像データ...
おすすめ情報