EXCEL初心者です。関数やマクロ等全く分かりません…。
使用しているバージョンは2010です。
・EXCELのSheet1に表( 添付したもの )、Sheet2に表の内容を元に散布図を作成したいです。
・具体的には、
表の「情報1」=グラフのy軸、
表の「情報2」=グラフのx軸、
表の「番号」=xとyの交点
としたいです。
例えば、4行目のデータは以下のようにさせたいです。
x=300、 y=100、 300と100の交わった所に1と入れたいです。
これを5行目、6行目…と行いたいです。
・また、表の内容を変えると、自動的にグラフにも変更内容が反映されるようにしたいです。
一応、自分で調べて行ったところ、グラフのラベル設定を↓こちらのサイトで
http://www4.synapse.ne.jp/yone/excel2010/excel20 …
行ってみたのですが、VBAにそのままサンプルコードを貼り付けたところ、
ラベルが、今回設定したい「番号」ではなく「名前」になってしまいます・・・。
ちなみに、貼り付けたサンプルコードは↓こちらです。
Sub AttachLabelsToPoints()
'Dimension variables.
Dim Counter As Integer, ChartName As String, xVals As String
' Disable screen updating while the subroutine is run.
Application.ScreenUpdating = False
'Store the formula for the first series in "xVals".
xVals = ActiveChart.SeriesCollection(1).Formula
'Extract the range for the data from xVals.
xVals = Mid(xVals, InStr(InStr(xVals, ","), xVals, _
Mid(Left(xVals, InStr(xVals, "!") - 1), 9)))
xVals = Left(xVals, InStr(InStr(xVals, "!"), xVals, ",") - 1)
Do While Left(xVals, 1) = ","
xVals = Mid(xVals, 2)
Loop
'Attach a label to each data point in the chart.
For Counter = 1 To Range(xVals).Cells.Count
ActiveChart.SeriesCollection(1).Points(Counter).HasDataLabel = _
True
ActiveChart.SeriesCollection(1).Points(Counter).DataLabel.Text = _
Range(xVals).Cells(Counter, 1).Offset(0, -1).Value
Next Counter
End Sub
これを貼り付けると、ラベルが「番号」ではなく「名前」になってしまいました。
上記サイトに
「 また、以下のようなコードでもラベルを付けることができました。 グラフをアクティブにして
VBA(マクロ)を実行します。 」
とあったのですが、当方マクロやEXCELはど素人で、
「 グラフをアクティブ?? 」状態で全くわかりませんでした…。
また、表の内容を書き換えたときに、グラフに自動的に反映されません…。
どうすれば求めているグラフのラベル設定ができ、また表の内容の書き換えたときグラフが連動
するようになってくれるのでしょうか・・・??
No.5ベストアンサー
- 回答日時:
>No.3 この回答への補足
>表をSheet1に、グラフをSheet2に書くと、グラフにラベルが表示されません・・・
>表もグラフも同じSheet内だと、表示されます。
グラフは正しく表示プロットされていると理解してOKですか?
グラフは正しく表示されているとして
多分Sheet2がアクティブ(画面表示されている)状態だと思います。
No.3で書きましたが複数のシートを跨ぐ処理の場合注意が必要です。
シート名を付与して住所を明らかにしなければいけません。
シート名がない場合はActivesheetということになります。
No.2のコードは同一シートが前提になっています。
リンク式で
ActiveSheet.Name
と書いている処を確実にデータ表のシート名が入るようにしなければいけません。
(例2)
ActiveChart.SeriesCollection(1).Points(Counter).DataLabel.Formula = _
"=Sheet1!" & Range(xVals).Cells(Counter, 1).Offset(0, -2).Address
というようにデータ表のシート名を決め打ちしてみてください。
ところで本文で提示されたコードでは
Range(xVals)でシート名を含めデータ表のセル番地が解っています。
ということは
Range(xVals).Parent.Name
でデータ表のシート名が採れるはずです。
これを使えばあらかじめシート名が解っていなくても対処できます。
>また、ワークシートのイベントプロシージャについてですが、
>表の書かれたSheet1、グラフの書かれたSheet2共に「change」で試してみましたが、
>表の行を追加したときに追随されませんでした。
>どこか間違っているのでしょうか??
確かなことはコードを拝見しないことには云えませんが、、、
多分
SeriesCollection(1)のFormula
あるいは
XValuesプロパティで「Xの値」の範囲
Valuesプロパティで「Yの値」の範囲
を書き換えなければいけません。
いずれにしましてもイベントプロシージャの件は次のステップとして
まずは本題をクリアすることに集中した方がよいと思います。
因みにVBAを使わなくても方法はあります。
<参考>
グラフの参照範囲を自動的に変更する
http://officetanaka.net/excel/function/tips/tips …
>いただいたURLをじっくり勉強してみます。。
殆どがコード作成依頼が多い中頼もしいお言葉です。
応援します。
デバッグ方法を知ってた方が良いです。
<参考>
デバッグ方法
http://www.239-programing.com/excel-vba/basic/ba …
お礼が遅くなり申し訳ございません。
あれから、いただいたURLなどでお勉強しました。
下地がなかったので、お答えいただくのも大変だったかと思います。
本当に質問以外の役立つことまで教えてくださってありがとうございました!
まだまだですがご回答の内容が少し理解できるようになりました!
お答えいただいたお二方をBAとしたいのですが…質問以外のことも教えてくださったのでBAとさせていただきました。
MackyNO1さまも実際に検証してくださったりと本当に感謝しております。ありがとうございました!
またおかしな質問をしていたらどうかご容赦くださいませ^^;
No.4
- 回答日時:
>の、「'ラベルに使うセル範囲を指定します。
」のところは消してよいのでしょうか?アポストロフィー以降の部分はコメントなのでプログラムの対象外のデータですので消しても消さないでも関係ありません(コードを説明しているだけです)。
>それとも、今回の表の「番号」の1から10までの範囲のセルを入力すればよいですか??
実際にラベルにしたい数字が書かれているセル範囲(シート名=Sheet2?の部分を含めて)を指定すればOKです(こちらでも検証して問題ないことを確認しています)。
あっ!できました!
ありがとうございます、検証までしていただき本当に感謝です。
このやりかたのほうが私のような初心者には分かりやすいですね!
ありがとうございました!
No.3
- 回答日時:
>No.2 この回答への補足
>XとYが入れ替わっていた場合はどう変わるのでしょうか??
見た目軸目盛が変わるだけです。
どちらをXにするかYにするかはご自分に決定権があります。
因みにSeriesCollection(1)の
XValuesプロパティで「Xの値」
Valuesプロパティで「Yの値」
を個別に設定することができます。
>表の行を追加したときには追随されなかったのですが、それは可能ですか??
>表の「番号」の11、12…と増やして言ったときグラフも追随して・・・・・
可能です。
ワークシートのイベントプロシージャを使うことになります。
<参考>
ワークシートのイベントプロシージャ
http://excelvba.pc-users.net/fol3/3_6.html
>また、グラフと表が別のSheetにあったとき、コードの書き方が変わったりはしますか??
基本変わりはありません。
シート名を付けて書くようにすれば大丈夫です。
この回答への補足
早速ありがとうございます。
またつまづいてしまいました。
NO.2でご回答いただいた↓でやってみたところ、
ActiveChart.SeriesCollection(1).Points(Counter).DataLabel.Formula = _
"=" & ActiveSheet.Name & "!" & Range(xVals).Cells(Counter, 1).Offset(0, -2).Address
表をSheet1に、グラフをSheet2に書くと、グラフにラベルが表示されません・・・
表もグラフも同じSheet内だと、表示されます。
また、ワークシートのイベントプロシージャについてですが、
表の書かれたSheet1、グラフの書かれたSheet2共に「change」で試してみましたが、
表の行を追加したときに追随されませんでした。
どこか間違っているのでしょうか??
いただいたURLをじっくり勉強してみます。。
No.2
- 回答日時:
>・具体的には、
> 表の「情報1」=グラフのy軸、
> 表の「情報2」=グラフのx軸、
> 表の「番号」=xとyの交点
> としたいです。
XとYが入れ替わっているのでは?
現状のままでOKなら
ActiveChart.SeriesCollection(1).Points(Counter).DataLabel.Text = _
Range(xVals).Cells(Counter, 1).Offset(0, -1).Value
の列オフセット量を-2にして試してください。
ActiveChart.SeriesCollection(1).Points(Counter).DataLabel.Text = _
Range(xVals).Cells(Counter, 1).Offset(0, -2).Value
ただし値を書き込むだけですから元データの変更には追随しません。
追随させるには
Range(xVals)がアクティブシートにあるとするなら
ActiveChart.SeriesCollection(1).Points(Counter).DataLabel.Formula = _
"=" & ActiveSheet.Name & "!" & Range(xVals).Cells(Counter, 1).Offset(0, -2).Address
というようにFormulaでセルとリンクさせます。
この回答への補足
出来ました!表の「情報1」「情報2」の数字を変えても追随されていてすごいです!
本当にありがとうございます!!
>XとYが入れ替わっているのでは?
実は、実際のEXCELのデータは別の場所にあって見られないので、
確かこうだったという記憶で書かせていただきました、申し訳ありません。
XとYが入れ替わっていた場合はどう変わるのでしょうか??
ご迷惑ついでに、補足質問なのですが…。
表の行を追加したときには追随されなかったのですが、それは可能ですか??
表の「番号」の11、12…と増やして言ったときグラフも追随してくれるようになればベストなのですが…。
また、グラフと表が別のSheetにあったとき、コードの書き方が変わったりはしますか??
いま表と別のシートにグラフを作成しようとしたところ、やり方が悪いのかグラフが作れなかったので、
まず表と同じシートにグラフを書いて、コードを打ち込んでグラフのラベルなどを作って…
そのあとに別のシートにグラフをコピーするという
何だか頭の悪いことをしています…。
No.1
- 回答日時:
>また、以下のようなコードでもラベルを付けることができました。
グラフをアクティブにしてVBA(マクロ)を実行します。とあったのですが、当方マクロやEXCELはど素人で、「 グラフをアクティブ?? 」状態で全くわかりませんでした…。
こちらのコードの方が初心者にはわかりよいですね。
グラフをアクティブとは、グラフエリアをクリックしてグラフを選択状態にすることです(リボンにグラフツールのタブが出ます)。
実際に適用する場合は、提示されているコードの以下の部分を、数字が書いてあるシート名とその範囲に変更することになります。
D_Label = Sheets("Sheet1").Range("B2:B9").Value
この回答への補足
早速ありがとうございます!
やはりアクティブはそういう意味だったのですね…。お恥ずかしいです。
>実際に適用する場合は、提示されているコードの以下の部分を、数字が書いてあるシート名とその範囲に変更>することになります。
>D_Label = Sheets("Sheet1").Range("B2:B9").Value
これなのですが、
おっしゃっていただいたように、
D_Label = Sheets("Sheet1").Range("B2:B9").Value
を、「番号」の列の数字のセル範囲に変えて、
D_Label = Sheets("Sheet1").Range("A4:A13").Value
としましたが、何度か試したのですが思うとおりになりません…。
Sub test()
Dim i As Integer
Dim D_Label As Variant
'ラベルに使うセル範囲を指定します。
D_Label = Sheets("Sheet1").Range("B2:B9").Value
With ActiveChart.SeriesCollection(1)
.ApplyDataLabels
For i = 1 To .Points.Count
.Points(i).DataLabel.Text = D_Label(i, 1)
Next i
End With
End Sub
の、「'ラベルに使うセル範囲を指定します。」のところは消してよいのでしょうか?
それとも、今回の表の「番号」の1から10までの範囲のセルを入力すればよいですか??
(↑試してみたとき、添付の表ではわからないようになっていますが「番号」の1から10に対応するセル
「 A4:A13 」と入力しました )
両方試してみたのですが、毎回、ラベルの一箇所だけがなぜか別のデータになります…。
具体的には、「 番号 」の10のところが70となります…。
あと、これだと表の書き換え時のグラフとの連動はできないですよね??
うーん、わからないことだらけですみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- Visual Basic(VBA) エクセルのマクロとシートの保護について教えてください。 1 2022/10/18 08:36
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/17 11:59
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのグラフ作成で軸を等...
-
Excel:別シートにグラフを貼り...
-
EXCELでグラフを作るとき、縦軸...
-
エクセルで折れ線と散布図を同...
-
エクセルの縦軸(Y軸)が不均等...
-
Excelでx軸とy軸を設定して図を...
-
エクセルの対数グラフのエラー
-
エクセル グラフはあるけれど...
-
エクセルで折れ線グラフ(散布...
-
Excelでグラフを作るときに#NUM...
-
エクセルのグラフの1点の色を変...
-
エクセルグラフからセルを特定...
-
エクセル 0や空白のセルをグラ...
-
エクセルで、極座表のグラフ描...
-
エクセルVBAでグラフの線とマー...
-
エクセルで別のシートにグラフ...
-
エクセル グラフの”データーテ...
-
エクセルで関数からグラフを作...
-
<EXCELグラフ>データ取得範囲...
-
ワードの差し込みにて、値をグ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのグラフ作成で軸を等...
-
エクセルの縦軸(Y軸)が不均等...
-
EXCELでグラフを作るとき、縦軸...
-
Excel:別シートにグラフを貼り...
-
エクセルで折れ線と散布図を同...
-
Excelでx軸とy軸を設定して図を...
-
エクセルで、極座表のグラフ描...
-
エクセルで折れ線グラフ(散布...
-
エクセルの対数グラフのエラー
-
散布図を縦に2個並べて出力したい
-
エクセル グラフはあるけれど...
-
エクセルの円を5等分する方法
-
エクセル グラフの”データーテ...
-
ExcelでIF関数によるグラフの表...
-
エクセルで式からグラフを作成...
-
エクセルのグラフの1点の色を変...
-
エクセル 0や空白のセルをグラ...
-
Excelグラフの有効数字の統一が...
-
対数目盛を使用時のグラフについて
-
ExcelのグラフをPowerPointに貼...
おすすめ情報