- ベストアンサー
エクセル2007でスパークライン風の折れ線グラフ
こんにちは。 エクセル2007を使用していますが、 2010にあるスパークライン風の左から右へと推移がわかる折れ線グラフをつくりたいと考えています。 データ行がかなり多いので、 グラフよりもスパークラインかデータバーを使って複数年の推移を表したいのですが、 なにか方法がありましたら教えてください。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
そんなわけで・・ なかなか楽しそうだったので、ちょっとだけ考えてみました。 添付図と合わせてご覧ください。 ちなみに図は「ボタンにマクロを登録した例」です。 Sub SparkLine_Sample1() Dim SLX As Long, SLY As Long Dim TCW As Long, TCH As Long, TCL As Long, TCT As Long Dim CCount As Long, VCount() As Variant, myCell As Range Dim SLMax As Single, SLMin As Single Dim i As Long CCount = Selection.Cells.Count With Selection.End(xlToRight).Offset(0, 1) TCL = .Left: TCT = .Top: TCW = .Width: TCH = .Height End With SLMax = 10000 'WorksheetFunction.Max(.Value) SLMin = 0 'WorksheetFunction.Min(.Value) For Each myCell In Selection ReDim Preserve VCount(i) VCount(i) = (myCell.Value - SLMin) / SLMax i = i + 1 Next SLX = TCL: SLY = TCT + TCH - TCH * VCount(0) With ActiveSheet.Shapes.BuildFreeform(msoEditingAuto, SLX, SLY) For i = LBound(VCount) + 1 To UBound(VCount) SLX = TCL + TCW / (CCount - 1) * i SLY = TCT + TCH - TCH * VCount(i) .AddNodes msoSegmentLine, msoEditingAuto, SLX, SLY Next .ConvertToShape End With End Sub 連続したデータ入力範囲(1行×複数列)を選択した状態で走らせると (図で言うと、B2:F2の範囲) 連続データが途切れるセル(図で言うとG2セル)の左下角を基準(0,0)にした スパークライン(折れ線)風のフリーフォームを描きます。 注意事項として、 ・セルに対する上下左右の余白は一切考慮していない ・1行ずつしか処理できない ・途中に空白セルがあると微妙におかしくなる ・最大値・最小値などの設定が手動 などが挙げられます(他にもあるかも)。 当方、手元に2007が無いので、2010及び2003での検証しかしておりません。 (一応、どちらでも動きました。) 大したモノでは参考までにどうぞ。
その他の回答 (1)
- tsubuyuki
- ベストアンサー率45% (699/1545)
ご存じの通り、スパークラインは2010からの機能ですので、 普通に頑張っても2007ではこれは使えませんし、 2010でスパークラインを入れたファイルもうまく読めないようです。 代替案になってしまいますが・・ セル内(複数でも)にフリーフォームで似たような線を描く、 と言う手段がまずは考えられます。 ・・と言っても、セル内の狭い範囲にフリーフォームを入れるのは大変です。 マクロを使ってやるのが最善かもしれません。
お礼
やっぱり2007では無理ですね。 行数が大量の場合、グラフで分かりやすい表ができないときはスパークラインがいいな、とおもったのですが・・・。 ありがとうございました。
お礼
すごい! スパークライン風のグラフができました! すごいものです! ありがとうございました。