• ベストアンサー

Excel2010の棒グラフに数値以外のセルを表示

お世話になります。 Excel2010の棒グラフです。記号のグラフを追加できないでしょうか。 A列 B列 10 20  △ 10 40  △ 30 20と40を示す棒グラフのどこかに△記号を表示させることはできないでしょうか。 データとして△記号になっているので、数字等に置き換えることはできません。 データラベルに数値以外のセルを表示したい http://ciao.aoten.jp/ciao/2012/02/post-fd1c.html 方法としてはこれなのですが、600行ほどあるため、なにか別の手段はないかと思い質問しました。

質問者が選んだベストアンサー

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.6

DreamyCatさんの方法をアレンジしてみました。 作業列で別系列データを設ける 最初のセルに下記のような式を入れる =IF(AND(C1="△",B1<=0,5),5,IF(C1="△",B1+5,NA())) 下方セルにコピー 上記データで系列を追加 グラフの種類を「折れ線グラフ」にする データ系列の書式設定で 線の色を「なし」 マーカーのオプションから マーカーの種類を「▲」 マーカーの塗りつぶしを「塗り潰しなし」 に設定する IF関数式は今までのやり取りで明確にされた条件で作っています。

OTTO-TTO
質問者

お礼

みなさまありがとうございました。この場をお借りしてお礼申し上げます。 xls88さまのご提案通り、関数で完成させました。 表示させるグラフ形式をこれから選んでいくところなので、 ひとまず関数で作り、完成バージョンはマクロでと考えました。 mitarashiさま 実際にマクロで作っていただき、画像もアップしていただきました。ありがとうございます。 DreamyCatさま 関数で表示させるアイディアをいただきました。ありがとうございます。 xls88さま 実際にマクロで作っていただき、関数で表示させる手順を示していただきました。 グラフの設定で表示も希望通りになりました。ありがとうございます。 追加の質問で誠に恐縮ですが、解決策がございましたら教えていただけるでしょうか。 1.別のグラフを持って来て、透過にして重ねました。 2.マクロが動いている関係だと思いますが、グラフの点滅が激しいです。2秒に1回点滅しているようです。 でこのとき、最前面のグラフエリアを選択状態にすると点滅が止まります。 選択したままでも、Excelの動作には支障は無いようでした。 このグラフを見るときは、選択しておく、ということでいいのでしょうか? それとも、点滅を軽減する方法があるでしょうか?

その他の回答 (7)

回答No.8

皆様エクセルの尻を叩いておられますが、 エクセルは本来表計算ソフトで、グラフ描画ソフトでは無い。 私は十年前に「趣味」以外のコーディングは止めました。 趣味なら楽しいが、それは「本儀」では無い。 ですのでエクセルのデータをコピペできるグラフ描画 ソフトに乗り換えました。ものすごく簡単で、時には「時空」 までデタラメでも描いちゃう。何でもやってくれるが、 計算は和と日数計算ぐらいしかしてくれない。

OTTO-TTO
質問者

補足

ありがとうございます。エクセルのデータでグラフを描いてくれるソフトがあるんですね。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.7

>追加の質問で誠に恐縮ですが・・・ 追加質問はできるだけ別スレッドを立てるようにお願いします。 >マクロが動いている関係だと思いますが、グラフの点滅が激しいです・・・ どんなマクロなのかコードを提示されないと判断ができません。 >最前面のグラフエリアを選択状態にすると点滅が止まります。 >選択したままでも、Excelの動作には支障は無いようでした。 マクロの中で選択させればどでしょうか。 >点滅を軽減する方法があるでしょうか? 効き目があるかどうかわかりかねますが動いているマクロの中で 画面の更新を抑止する 再計算を停止する などの方法を試してみてください。 <参考> 画面更新を制御する(ScreenUpdatingプロパティ) http://www.moug.net/tech/exvba/0010005.html シートの再計算を設定する(EnableCalculationプロパティ) http://www.moug.net/tech/exvba/0040055.html 数式の再計算 http://www.excel-vba.net/excel-range-029.html

OTTO-TTO
質問者

補足

ありがとうございます。 再計算の設定など試してみましたが、点滅は止まりませんでした。 重ねたグラフは点滅していませんでした。 点滅しているグラフの項目は常時変動するため、点滅していることがわかりました。 見るときはグラフを選択状態にすることで対応することにしました。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.5

#1です。 △をY=0の箇所に表示するニーズについて、X軸の目盛りのラベルを下端に設定した場合(当方の好みですが)に対応できるコードです。ご参考まで。 Sub test() Dim myChart As Chart Dim mySeries As Series Dim yValueRange As Range Dim i As Long 'ActiveSheetにグラフが一個ある事が前提 Set myChart = ActiveSheet.ChartObjects(1).Chart 'データ系列も一つだけが前提 Set mySeries = myChart.SeriesCollection(1) With mySeries 'SeriesのFormulaからyvalueのセル範囲を取得 '例: =SERIES(Sheet1!$B$1,Sheet1!$A$2:$A$100,Sheet1!$B$2:$B$100,1) の$B$2:$B$100を取得 Set yValueRange = ActiveSheet.Range(Split(Split(mySeries.Formula, ",")(2), "!")(1)) For i = 1 To .Points.Count .Points(i).ApplyDataLabels '各Y値のセルの一つ右隣の値をデータラベルに設定 .Points(i).DataLabel.Text = yValueRange.Cells(i).Offset(, 1).Value '毎回計算する必要は無いのですが手抜きです。律速になる場合は、ループの外で計算して下さい... .Points(i).DataLabel.Top = convertToPlotareaPosY(myChart, 0) - .Points(i).DataLabel.Height / 2 Next i End With End Sub '軸目盛りの値→グラフ上の座標に変換 'xlCategory対応を改造したので名残があります... Private Function convertToPlotareaPosY(targetGraph As Chart, SetScale As Single) As Single Dim PIH As Single, PIW As Single, PIT As Single, PIL As Single Dim MaxScale As Single, MinScale As Single Dim x As Single On Error GoTo ErrorHandler If targetGraph Is Nothing Then Exit Function With targetGraph With .Axes(xlValue) MinScale = .MinimumScale MaxScale = .MaximumScale End With With .PlotArea PIH = .InsideHeight PIW = .InsideWidth PIT = .InsideTop - 0.25 PIL = .InsideLeft - 0.25 End With End With convertToPlotareaPosY = (MaxScale - SetScale) / (MaxScale - MinScale) * PIH + PIT ErrorHandler: Exit Function End Function

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.4

>マイナス側の△はどこに表示されるでしょうか?できれば0の線上に表示・・・ Dim v As Variant Dim t As Variant Dim ftxt As String Dim ws As String Dim yadr As String Dim i As Long With ActiveChart t = .Axes(xlCategory).top With .SeriesCollection(1) v = .values ftxt = .Formula ws = Split(Split(ftxt, ",")(2), "!")(0) yadr = Split(ftxt, ",")(2) .HasDataLabels = True For i = 1 To .Points.Count With .Points(i).DataLabel .text = "=" & ws & "!" & Range(yadr)(i).Offset(, 1).Address If v(i) <= 0 Then .top = t - .Height End If End With Next End With End With データの書き換えはないのですか? 表示位置に関して変更時の追随ができなくなるとおもいます。 追随が必要ならシートイベントプロシージャを利用することになると思います。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

提示されたデータに不可解な部分がありますが 数値データの隣に記号データがあるとして 系列1のデータラベルにセル参照式を入れる例を挙げてみます。 Dim ftxt As String Dim ws As String Dim yadr As String Dim i As Long With ActiveChart.SeriesCollection(1) ftxt = .Formula ws = Split(Split(ftxt, ",")(2), "!")(0) yadr = Split(ftxt, ",")(2) .HasDataLabels = True For i = 1 To .Points.Count With .Points(i).DataLabel .text = "=" & ws & "!" & Range(yadr)(i).Offset(, 1).Address End With Next End With

OTTO-TTO
質問者

補足

ありがとうございます。データラベルにセル参照式を入れる方法も試してみます。

  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.2

AB列の間に作業列を追加して △があれば適当な値(ここでは仮に5としてあります)を表示するようにしておきます。 =IF(C2="△",5,"") の式を下へドラッグ。 A列とこの数式の範囲を選択して積み上げ棒グラフを作成 積み上げ部分(系列2)の「塗りつぶし」に あらかじめ作成して保存しておいた△の図を指定します。

OTTO-TTO
質問者

補足

ありがとうございます。別のマクロがあるせいで列の追加はできないと思い込んでいたのですが、作業列は数値列の隣でなくてもいいのですよね? それだったら関数でもいけそうです。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

地道にやるのがお嫌なら、VBAしか無いと思います。 Collectionから引っ張り出してちょっとアレンジしてみました。 コード中のコメント以上の解説はご容赦いただきます。関心をお持ちになったら自習いただくか、他の回答をお待ち下さい。 Sub test() Dim myChart As Chart Dim mySeries As Series Dim yValueRange As Range Dim i As Long 'ActiveSheetにグラフが一個ある事が前提 Set myChart = ActiveSheet.ChartObjects(1).Chart 'データ系列も一つだけが前提 Set mySeries = myChart.SeriesCollection(1) With mySeries 'SeriesのFormulaからyvalueのセル範囲を取得 '例: =SERIES(Sheet1!$B$1,Sheet1!$A$2:$A$100,Sheet1!$B$2:$B$100,1) の$B$2:$B$100を取得 Set yValueRange = ActiveSheet.Range(Split(Split(mySeries.Formula, ",")(2), "!")(1)) For i = 1 To .Points.Count .Points(i).ApplyDataLabels '各Y値のセルの一つ右隣の値をデータラベルに設定(手抜きで空白でも設定) .Points(i).DataLabel.Text = yValueRange.Cells(i).Offset(, 1).Value Next i End With End Sub

OTTO-TTO
質問者

補足

ありがとうございます。うっかりしましたが、マイナスの数値もあって0を中心として上下に伸びる棒グラフになっています。 このマクロで描かれる場合、マイナス側の△はどこに表示されるでしょうか?できれば0の線上に表示されるといいのですが、マクロなら指定できるでしょうか?

関連するQ&A

  • EXEL棒グラフでの数値の付け方

    EXELの棒グラフ作成時、積み上げ縦棒を作りました。 これは一つの棒グラフ内の割合が表示されるものだと思うのですが、それぞれの具体的な数字をグラフ内に表記したいと思いました。何もしないと、横の数値を見て、大体を推測するだけになってしまいますよね。 それを棒グラフの中に数値を当てはめるのはできたのですが、それぞれの棒の横に数値を記入する方法をご存知な方はいませんでしょうか? EXEL内に任意の数値や文字を記入する方法でもいいです。どうぞよろしくお願いいたします!解決次第、すぐにポイントを発行させていただきます。

  • Excel 棒グラフ的な、セルへの自動着色

    通常のグラフの機能を使用するのではなく セルに着色またはハッチングパターンを自動的に記入する方法を教えて下さい 例えばA11に1の数字が入っていたら、A1からA10まで10マスが塗られます。 B11に5の数字が入っていたら、B6からB10までが。C11が1だったらC10が一マスだけ着色されます。 つまり11行めに入った数字を読み取り、同じ列の1から10までを棒グラフエリアとして10行目をベースに上に塗っていき、あたかも棒グラフの様な表現にしたいのです。 宜しくお願いします。

  • excel2013でグラフを表示できない。

    excel2013で折れ線グラフを表示したいのですが、データのない箇所は、0表示になります、数値のあるセルのみ表示したいのですが途中の操作ができなくなってしまいます。何が原因でしょうか教えて頂けませんか。 取り扱い 「デザイン」タブの「データの選択」をクリック、「データソースの選択」し「非表示および空白セル」をクリック この時、空白セルの表示方法は、ゼロ(Z)が選択されています。 ここで、下段の、データ要素線で結ぶ(C)を選択しようとしても、クリックできません、 唯一クリックできるのは、非表示の行と列のデータを表示する、(H)のチエックのみはできます。 原因が分かりません、教えて頂けませんか。お願いいたします。

  • Excel積上げ棒グラフ合計値数字の表示方法

    Excel2007で積上げ棒グラフを使用しグラフを作成する際、積上げる個々のグラフの数値表示は グラフ積上げ部分を指定し、「データラベルの追加」のメニューを選択することでグラフ内に数値が 表示されます。 この状態で、棒グラフ先端に積上げ合計値を表示させたグラフを作成したいのですが、作成方法を 教えて下さい。

  • EXCELで棒グラフへのテキスト表示

    EXCELで、グラフ機能を使って棒グラフを作成しました。その棒グラフ内の各棒は幾つかの項目から成っていますがそれぞれに該当する項目名を表示したいのですが、”データ配列の書式設定”の”データラベル”のところでは、”値”・”ラベル(=要素)”は設定できるのですが”系列”の設定ができません。可能な方法をお教えいただければよろしくお願いいたします。

  • 棒グラフの合計の数字を棒グラフの上に表示したい

    棒グラフでその棒グラフの合計の数字を棒グラフの上に表示したいのですが、やり方を忘れてしまいました。右クリックして、データで値を選べばよかったと思うのですが、うまくできません。わかる方、教えてください。 回答、お待ちしてます。

  • 棒グラフの棒を何本にも表示させるには

    エクセル・グラフウイザードでグラフ作成の時、数字が5000から200までの棒グラフの最大目盛りを1000にして棒を何本も表示させたい。200の棒が少なすぎて目立たないのです。宜しくお願いいたします

  • EXCEL2007 棒グラフについて

    お世話になっております。エクセルのグラフ機能について教えてください。 EXCEL2007で棒グラフを作っています。 横軸に期間(過去1年)、縦軸に商品の販売個数を表示しています。 現在は単純に過去1年のデータを積み上げ棒グラフで表示しているのですが、 昨期同月との比較をしたく、昨期のデータを現在表示している棒グラフの左横に表示しようと考えたのですがやり方がわかりません。 表を分ければ済む話かもしれませんが、できれば同一グラフ上に表示したいのです。 宜しくお願い致します。

  • エクセルでの棒グラフ作成

    エクセルでグラフを棒グラフを作成しています。 その中で、Y軸の表示単位を”x1,000”にしたら、棒グラフ上に表示させているデータラベル(単位:%)までもが、”x1,000”単位で計算されてしまいました。 つまり、48%というデータラベルが、0.048%になってしまいました。 元データをいじる事なく、データラベルを、48%としたいのですが、どのようにしたらいいのか、ご教授願います。

  • Excel2013のグラフについて

    Excel初心者です。参考書等は読みましたがわからないことがあります。 膨大な数のデータをグラフにしようとしています。列はたった2つですが行が1万以上あります。 縦棒グラフには出来るのですが、そこから横軸の数字を1列目の数字に変更する方法がわかりません。 255以上の項目があるとオススメグラフなども表示されないみたいです。 ご回答をお願いします。

専門家に質問してみよう