[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『最終行から左方向のデータのスパークライン』(イエモン)
Dim a As Long, b As Long
Sheets("Sheet5").Cells(3, Columns.Count).End(xlToLeft).Offset(, 1).Value = Sheets("Sheet1").Range("AZ14").Value
a = Sheets("Sheet5").Cells(3, Columns.Count).End(xlToLeft)
b = Sheets("Sheet5").Cells(3, Columns.Count).End(xlToLeft, -1)
Sheets("Sheet5").Cells(3, Columns.Count).End(xlToLeft).SparklineGroups.Add _
Type:=xlSparkLine, SourceData:="a:b"
としているのですがスパークラインがひけません。
最終行にどんどん追加されいままでの結果をスパークラインで表記したいです。
前回のスパークラインの結果は消したいです。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
最終行? 最終列じゃなくて? Sub a() Dim r As Range Set r = Sheets("Sheet5").Cells(3, Columns.Count).End(xlToLeft).Offset(, 1) r.Offset(, -1).SparklineGroups.Clear r.Value = Sheets("Sheet1").Range("AZ14").Value r.SparklineGroups.Add _ Type:=xlSparkLine, _ SourceData:=r.Offset(, -1).Resize(, 2).Address End Sub
(稲葉) 2020/08/24(月) 18:50
んにゃ、間違ってたのは >SourceData:="a:b" この部分 これだと変数ではなく、ただのa:bという文字列 それに、aとbの変数もlong型で宣言されてるから、どちらにしろ 望んだ結果にはならなかったと思います
(稲葉) 2020/08/24(月) 21:45
私が書いたものでは、どこを直せば良かったですか?
(イエモン) 2020/08/24(月) 21:58
無理やりaとbをlong型で生かすなら、 a = Sheets("Sheet5").Cells(3, Columns.Count).End(xlToLeft).column b = Sheets("Sheet5").Cells(3, Columns.Count).End(xlToLeft, -1).column columnプロパティで列番号を取得して(イエモンさんの場合、セルの値をいれてただけ)
SourceData:=Range(cells(3, a) , cells(3, b)).address とすればできますが、可読性が低いかもしれません。 SourceDataは文字列で指定する必要があるので、結局rangeオブジェクトからaddressプロパティで 文字列を指定する方法が比較的わかりやすいと思います。
(稲葉) 2020/08/24(月) 22:28
手間暇かけて作っていただいたのに、すみません。
(イエモン) 2020/08/25(火) 07:33
こちらでテストしてあるのですが・・・ ご提示いただいた >Sheets("Sheet5").Cells(3, Columns.Count).End(xlToLeft).SparklineGroups.Add の場合、下図D3に描写するようになっています。 その右隣に表示させたいということですか? |[A]|[B]|[C]|[D]|[E] [3]|100|200|300|400| [4]| | | |↑ |↑ [5]| | | |D?|E?
ちょっと自分でやってみません? offsetの値を変更するだけでいいんですもん。 (稲葉) 2020/08/25(火) 08:01
今回は行でしたが、100位ある行のものを同じようにしたいんですがどうすればいいでしょうか?
SourceDataで記入する際、コンマで区切るのかカンマで区切るのでしょうか?
ヒントだけいただきたく思います。
(イエモン) 2020/08/25(火) 17:33
「同じように」の意味が分かりません。 データを転記するのはAZ14で、次はどの値ですか? 図示してもらえるとありがたいです。 |[A]|[B]|[C]|[D]|[E]|[F]|[G] [3]| 40| 20| 50| 80|/ | |シート1のAZ14 [4]| 30| 30|─ | | | |シート1のAZ15? 規則正しい? [5]| 10| 50| 20|\ | | | [6]| 80| 20| 10| 10| 10|─ | ↑列数が行によってまちまち (稲葉) 2020/08/25(火) 17:58
|[A]|[B]|[C]|[D]|[E]|[F]|[G] [3]| 40| 20|シート1のAZ14 [4]| 30| 30|シート1のAZ15 規則正しいです。 [5]| 10| 50|シート1のAZ16 [6]| 80| 20| シート1のAZ17 . . . 列数は行数と同じで100行あります。 よろしくお願いします。 (イエモン) 2020/08/25(火) 19:04
ヒントじゃたぶん無理だったんで、コメントいれたので見てみてください Sub a() Dim i As Long '転記元のデータ行番号 Dim n As Long '描写先の行番号 Dim ws1 As Worksheet '転記元のシート Dim ws2 As Worksheet '描写先のシート Dim r As Range Set ws1 = Sheets("Sheet1") Set ws2 = Sheets("Sheet5") n = 3 For i = 14 To ws1.Cells(Rows.Count, "AZ").End(xlUp).Row With ws2.Cells(i, Columns.Count).End(xlToLeft) .Offset(, 1).SparklineGroups.Clear .Offset(, 1).Value = ws1.Cells(i, "AZ").Value .Offset(, 2).SparklineGroups.Add _ Type:=xlSparkLine, _ SourceData:=.Resize(, 2).Address End With Next i End Sub (稲葉) 2020/08/25(火) 19:16
すみません、間違えました n使うつもりが、iで描写しちゃった・・・ Sub a() Dim i As Long '転記元のデータ行番号 Dim n As Long '描写先の行番号 Dim ws1 As Worksheet '転記元のシート Dim ws2 As Worksheet '描写先のシート Dim r As Range Set ws1 = Sheets("Sheet1") Set ws2 = Sheets("Sheet5") n = 3 For i = 14 To ws1.Cells(Rows.Count, "AZ").End(xlUp).Row With ws2.Cells(n, Columns.Count).End(xlToLeft) .Offset(, 1).SparklineGroups.Clear .Offset(, 1).Value = ws1.Cells(i, "AZ").Value .Offset(, 2).SparklineGroups.Add _ Type:=xlSparkLine, _ SourceData:=.Resize(, 2).Address End With n = n + 1 Next i End Sub (稲葉) 2020/08/25(火) 19:23
ループしなくてもできました。 すみません Sub test2() Dim ws1 As Worksheet Dim ws2 As Worksheet Dim r As Range Set ws1 = Sheets("Sheet1") Set ws2 = Sheets("Sheet5") Set r = ws1.Range("AZ14", ws1.Cells(Rows.Count, "AZ").End(xlUp)) With ws2.Cells(3, Columns.Count).End(xlToLeft).Resize(r.Rows.Count) .Offset(, 1).SparklineGroups.Clear .Offset(, 1).Value = r.Value .Offset(, 2).SparklineGroups.Add _ Type:=xlSparkLine, _ SourceData:=.Resize(, 2).Address End With End Sub
(稲葉) 2020/08/26(水) 08:10
SourceData:=.Resize(, 2).Addressはws2.Cells(3, Columns.Count).End(xlToLeft).Resize(r.Rows.Count)そのものを2列?移動で合っていますか?
またSourceData:=.Resize(, 2).Addressを任意のアドレスの表記は可能でしょうか?
資料作成中にスパークラインを表記する範囲が変えたい事が追加されまして。
シート5です。
|[A]|[B]|[C]|[D]|[E]|[F]|[G] [3]| 40| 20| 50| 80| | | [4]| 30| 30| | | | | [5]| 10| 50| 20| | | | [6]| 80| 20| 10| 10| 10| | こうだとしたら、最終列とか、C5にA5とB5のデータとか。です。 何度もすみません。よろしくお願いします。 (イエモン) 2020/08/30(日) 17:42
なら (稲葉) 2020/08/25(火) 19:23 の投稿のコード使ってください 行ごとに最終列判定してます 範囲は適当にいじってみてください (稲葉) 2020/08/30(日) 21:02
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.