- ベストアンサー
Excelのグラフのデータラベルについて
- Excelのグラフのデータラベルについて質問です。データラベルに条件付き書式のような設定はできますでしょうか?
- Excel2007にて、縦棒グラフを作成し、データラベルを表示させています。指定の数値以上の場合は赤く表示する設定はできるのでしょうか?
- グラフ作成用の元データには、条件付き書式を適用させる事ができたのですが、その設定をそのままグラフのデータラベルに反映する事はできないようです。マクロを使って設定する方法はあるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
VBAならできるかもしれない。 私も、日ごろ使い倒しているわけでないので、質問の内容を十分捉えていないかもしれないが、 データ例 A1:B4 品名 数量 a 23 b 44 c 37 ーー 棒グラフを描く。 グラフ ラベルあり、数量 表示 目 棒 =>3本 グ 盛 ラ フ ーーーーー 品物=>a b c といったグラフができる。(今回は、あれもこれもの学習にならないために、手動でグラフ作成を行う。) ーー グラフが書けたあと、グラフ部分をクリックして、アクチブにして!、ここで VBE画面に標準モジュールを挿入して Sub test03() For i = 1 To 3 With ActiveChart.SeriesCollection(1).Points(i) v = .DataLabel.Text If v > 30 Then .DataLabel.Interior.Color = vbGreen .DataLabel.Font.Color = vbRed Else .DataLabel.Interior.Color = vbYellow End If End With Next i End Sub をコピペして、実行する。 ラベルの四角枠内の色と ラベル内の文字の色が 値30を境に変わるはず。 フラフ各部分をVBAでどう表現するか、など学習しにくい点はある。 正式な日本語の名称を知って、WEB記事を調べる マクロの記録で出た、VBAのコードが表現してくれるかもしれない。活用するのがよい。
その他の回答 (1)
- tsubu-yuki
- ベストアンサー率46% (179/386)
やはりマクロ、VBAでしょう。 挑戦なさるとの事ですから、私からも微力ながら。 VBA(for EXCEL)の学習をするにあたり、最も重要なのは 1番さんもおっしゃる通り、エクセルの機能や動きを しっかり理解することだと私も思っています。 その上でWebで調べるなり、他さんに聞くなり、 あるいはご自身で手を動かしてみるなりの アクションをかませながら進めていくと良いと思いますよ。 エクセルには「マクロの記録」という便利な機能があります。 ※詳細は別途お調べくださいね。 それを使いつつ、基本機能を操作して記録しつつ、 「どの動作をしたら(エクセル的には)どんなコードが書かれるか」を ちゃんと意識しながら読んでいくと学習しやすいですね。 なお、私はいわゆる「ハウツー本」は積極的にオススメしない派です。 本を眺めるならWebで調べるほうが良いですよ、多分。 さて、命題。 上記の手法に倣って、「マクロの記録」で情報を集めて、 それを(おそらく)使いやすく少しだけ書き換えたものです。 Sub Sample() With ActiveChart For i = 1 To .FullSeriesCollection(1).Points.Count With .FullSeriesCollection(1).Points(i).DataLabel Select Case .Text Case Is >= 15 .Format.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(255, 0, 0) 'MsgBox "15以上は赤い文字" Case Else .Format.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(0, 0, 255) 'MsgBox "それ以外は青い文字" End Select End With Next End With End Sub これをVBEで標準モジュールに書き込み、 該当の「データラベルが表示されている」グラフをアクティブ(選択)にした状態で動かしてみます。 「指定の数値」が判らないので、15以上で分岐させています。 ※指定の数値っておいくつ?濁す必要あります? この手の質問でいつも思うことです。 書き方の参考例の一つとしてどうぞ。 追記(蛇足) ピンポイントでこの手の処理を説明している「書籍」を「探す」のは困難です。 それであれば「マクロの記録」をしつつ、Webでピンポイントで補足しつつ 自分の書き方に変えていく方が効率は断然良いです。 ・・・私の書き方が効率良いかどうかは別な話ですけどね(笑)。
お礼
ご回答ありがとうございました。 ご教授いただきましたコードをコピペさせていただきました所、 FullSeriesCollectionの所でエラーとなってしまい、 試しにFullを削除し、SeriesCollectionだけにしてみたところ、 やりたい動きになりました!ありがとうございます! >※指定の数値っておいくつ?濁す必要あります? 確かに!具体的な数字がないと、分かりづらいですよね…。 失礼いたしました。 >「マクロの記録」をしつつ、Webでピンポイントで補足しつつ >自分の書き方に変えていく方が効率は断然良い なるほど、確かにとても効率がよく、かつ身につきやすい方法ですね。 全然蛇足ではございません! アドバイスありがとうございました!
お礼
早速のご回答ありがとうございました。 初めてVBAを利用しましたが、 ご教授いただきましたコードをコピペさせて頂き、実行いたしました所 思っていたとおりの動きになりました! これなら、手動でひとつづつ数字を見て色を変えて… など、やらずに済みそうです。 分かりづらい質問だったにもかかわらず、 意図をくみ取り、的確なアドバイスをして頂き、ありがとうございました!