• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:グラフに横棒を引きたい(追加質問2))

グラフに横棒を引きたい(追加質問2)

このQ&Aのポイント
  • グラフに横棒を引く方法について質問させていただきます。
  • 回答をいただいたものの、実際のシートで不具合が発生しました。
  • 特性データが0を這う問題が発生し、正しい表示ができません。

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (454/692)
回答No.1

以下と思います。 なお、いろいろ継ぎ足してきたので 私が、 お求めの仕様を若干見失っているかもしれません。 しっかり確認してください。 Sub グラフ確認()  Const SRowNum = 17 'データ開始行番号  Const KoumokuRow = 5 '項目名格納行番号  Const ShNameGD = "入力表" 'データ格納シート名  Const ShNameGr = "グラフ" 'グラフ描写シート名  Const ShNameGK = "グラフ確認用"  Const XCol = 2 '横(項目)軸ラベル列番号  Const LineDataRow1 = 6 'プラス3σ行位置  Const LineDataRow2 = 7 'マイナス3σ行位置  Const KeyRow = 2 '採用データ数格納行番号  Dim GSh As Worksheet  Dim DSh As Worksheet  Dim KSh As Worksheet  Dim SRow As Long 'グラフ用データ開始行  Dim ERow As Long 'グラフ用データ終了行  Dim tgRange1 As Range 'データ群範囲  Dim MaxRows As Long 'データ範囲に指定する最大行数  Dim ColNum1 As Long '1つ目データ格納列  Dim i As Long  '行カウンター  Set GSh = ThisWorkbook.Sheets(ShNameGr)  Set DSh = ThisWorkbook.Sheets(ShNameGD)  Set KSh = ThisWorkbook.Sheets(ShNameGK)  GSh.Select  GSh.Unprotect  MaxRows = DSh.Cells(KeyRow, Columns.Count).End(xlToLeft).Value  ColNum1 = DSh.Cells(KeyRow, Columns.Count).End(xlToLeft).Column  '下から上方向に、数値となっているセルを探す  ERow = DSh.Cells(DSh.Rows.Count, ColNum1).End(xlUp).Row  '<==ここ  Do   If IsNumeric(DSh.Cells(ERow, ColNum1).Value) = True Then Exit Do   If ERow <= SRowNum Then Exit Do   ERow = ERow - 1  Loop    If ERow < MaxRows + SRowNum Then   SRow = SRowNum  Else   SRow = ERow - MaxRows + 1  End If  Sheets("グラフ確認用").Select  Columns("A:D").Select  ActiveSheet.Unprotect  Sheets("グラフ").Select  'グラフ確認用シートタイトルセット  KSh.Cells.ClearContents  KSh.Cells(1, 1).Value = "行見出し"  KSh.Cells(1, 2).Value = "データ"  KSh.Cells(1, 3).Value = "プラス3σ"  KSh.Cells(1, 4).Value = "マイナス3σ"  '横見出し複写  Range(DSh.Cells(SRow, XCol), DSh.Cells(ERow, XCol)).Copy _   KSh.Cells(2, 1)    'データ複写'  For i = 0 To (ERow - SRow)   KSh.Cells(2 + i, 2).Value = DSh.Cells(SRow + i, ColNum1).Value  Next i    'プラス3σ複写'  Range(KSh.Cells(2, 3), KSh.Cells(ERow - SRow + 2, 3)).Value = _   DSh.Cells(LineDataRow1, ColNum1).Value  'マイナスσ複写'  Range(KSh.Cells(2, 4), KSh.Cells(ERow - SRow + 2, 4)).Value = _   DSh.Cells(LineDataRow2, ColNum1).Value  'グラフ側にデータ範囲などを適用  Set tgRange1 = _   Range(KSh.Cells(2, 1), KSh.Cells(ERow - SRow + 2, 4))  With GSh.ChartObjects(1).Chart   .SetSourceData Source:=tgRange1 'セット   .HasTitle = True   .ChartTitle.Text = DSh.Cells(KoumokuRow, ColNum1).Value  End With End Sub

akira0723
質問者

お礼

お世話になり過ぎております。 完璧でした! 朝一で昨日の実シートで確認し、先程 計算式の列を含む別のBookでも確認し、数値でも式でも100%期待通りでした。 ちなみに上下限の2つの線はマーカ無しの赤の直線にして完璧に期待通りのグラフが得られました。 この課題は2016年に一度質問して以来今回で3度目で遂に完成形となりました。 今回は無知+醜態もさらけ出しましたので念のため締め切るのはもう少し後にさせてもらいます。 これでほぼ入力表に関するエクセルBookとしては完成形だと思います。 が、また欲が出る可能性はありますのでその節にも見捨てないで宜しくお願いします。 お忙しい中本当にありがとうございました。 感謝×∞!!!!! つい長くなってしまいますのでここまで。

akira0723
質問者

補足

おはようございます。 ご指摘に従い、昨日しっかり確認しました。 品種違いのBookで色々試してみました。 その結果、1つ見落としていた不具合が発覚しました。 横軸のLOT Noが20201217のような日付LOTの場合、縦軸にこの数値が採用されてしまいます。 一瞬焦りましたが過日のご回答に従って、上部の横軸の定義コードと、下部の実行コードを削除してみたらうまく行きました。 今回も最初のイメージ通りの結果が得られました。 本当に何か他の方法で感謝の気持ちを伝えたいのですがNETでは方法が見当たりません。 当方のためにも、コロナに負けることなく今後とも宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルのグラフへの横棒の引き方を教えてください。

    エクセル2010を使用してグラフを作成する際に、上限、下限のラインを引きたいのですが、例えば下限が5、上限が10のライン(2本の横線)をグラフに表示したいのですが、簡単方法を教えてください。 現在は、測定値の横に2つの列を挿入して、セルに5と10を入力してこれを測定値として作図することで表示していおますが、いくつもの値をグラフにする時には無駄な列が多くなり表が大きくなってしまいます。列を隠す等しないと見栄えも悪い。 また、この方法で線を引くと、各横線は1つづつグラフの書式設定で、「マーカー無し」、「線の色は赤」に統一等々多くの手間がかかってしまいます。 何とか、Y軸の特定の値の横線を引く方法があれば教えてください。 やりたいことは、品質試験結果の推移のグラフに、規格の上下限を赤のラインで表示したいのです。

  • 100%積み上げ横棒グラフ

    こんばんわ。 Excelの100%積み上げ横棒グラフについて少し教えてください! まず、グラフの元データになるExcelの表の説明をします。 A1に『一郎』と入れます。 A4に『次郎』と入れます。 A7に『三郎』と入れます。 次に、B列です。 B1に『1月』と入れます。 B2に『2月』と入れます。 B3に『3月』と入れます。 B4~B6、B7~B9にも同様に『1月』『2月』『3月』と入れます。 次にC列です。 C列には、それぞれの人が何月にどれくらい商品を売り上げたかの数字が入ります。 C1~C9には、数字はなんでもいいので入れます。 このA1からC9までの表を100%横棒積み上げグラフにしようと思います。 グラフウィザードでつくってみたのですが・・・・ この表、考えてみれば項目が2列ありますよね? それぞれの名前の入っているA列と、各月が入っているB列と。 そうすると、もちろん項目軸というのは、二つ作ってくれるのですが、 それぞれの名前が90度に傾いてしまいます。 これをきちんと横向きにしたいのです。 項目軸の書式設定から確認してみましたが、どうもうまくいきません。 これは、ムリなんでしょうか?? ちょっと字ばかりで、わかりにくいかとは思うのですが、 お時間のある方は、実際Excelで作って試してみてください。 そして、二つある項目の軸の字の向きを 両方とも左から右へ横書きになるようにする方法がありましたら、 教えてください!! ややこしくてスミマセン!!よろしくお願いします。

  • グラフに横棒を引きたい(再質問)

    いつもお世話になっております。 約半年前の質問の再質問です。 17行目以降にデータの入った表の2行目に数値(a)を入れるとその列の最下行からa個のデータ数でグラフ化される。 同時に同じ列の11行目、12行目の値で2本の横棒をグラフに描きたい。 上記の質問に対し、半年前にここで下記のVBAをさんざん教わったのですが、どうしてもうまく行かず一旦Pendingとしたのですが、あと少しの気がしてもったいなく、今回改めて前回の質問で示されたご回答(下図)と全く同じ3枚のシートを作ってみて試してみたのですが当方の不具合を再現したので改めて質問させていただきます。 下記VBAの不具合内容 グラフ確認シート(補助シート)には「行見出し」と指定した列の指定数のデータが正しくコピーされますが、C列、D列(プラス3σとマイナス3σ)は空白のままになってしまいます。(当方の実シートの再現) エディタで「F8」を押すと1つずつコードが実行されると知り実行してみるとやはり下記のプラス3σ(11行目)のコピーでエラーになります。 >'プラス3σ複写' >Range(KSh.Cells(2, 3), KSh.Cells(ERow - SRow + 2, 3)).Value = _  > DSh.Cells(LineDataRow1, ColNum1).Value 下記の図で期待通りに動くとのコメントでしたがやはり何か抜けているように思われます。 Sub test3()  Const SRowNum = 17 'データ開始行番号  Const KoumokuRow = 5 '項目名格納行番号  Const ShNameGD = "入力表" 'データ格納シート名  Const ShNameGr = "グラフ" 'グラフ描写シート名  Const ShNameGK = "グラフ確認用"  Const XCol = 3 '横(項目)軸ラベル列番号  Const LineDataRow1 = 11 'プラス3σ行位置  Const LineDataRow2 = 12 'マイナス3σ行位置  Const KeyRow = 2 '採用データ数格納行番号  Dim GSh As Worksheet  Dim DSh As Worksheet  Dim KSh As Worksheet  Dim SRow As Long 'グラフ用データ開始行  Dim ERow As Long 'グラフ用データ終了行  Dim tgRange1 As Range 'データ群範囲  Dim MaxRows As Long 'データ範囲に指定する最大行数  Dim ColNum1 As Long '1つ目データ格納列  Set GSh = ThisWorkbook.Sheets(ShNameGr)  Set DSh = ThisWorkbook.Sheets(ShNameGD)  Set KSh = ThisWorkbook.Sheets(ShNameGK)  GSh.Select  GSh.Unprotect  MaxRows = DSh.Cells(KeyRow, Columns.Count).End(xlToLeft).Value  ColNum1 = DSh.Cells(KeyRow, Columns.Count).End(xlToLeft).Column  ERow = DSh.Cells(DSh.Rows.Count, ColNum1).End(xlUp).Row  '<==ここ  If ERow < MaxRows + SRowNum Then   SRow = SRowNum  Else   SRow = ERow - MaxRows + 1  End If  KSh.Cells.ClearContents  KSh.Cells(1, 1).Value = "行見出し"  KSh.Cells(1, 2).Value = "データ"  KSh.Cells(1, 3).Value = "プラス3σ"  KSh.Cells(1, 4).Value = "マイナス3σ"  '横見出し複写  Range(DSh.Cells(SRow, XCol), DSh.Cells(ERow, XCol)).Copy _   KSh.Cells(2, 1)  'データ複写'  Range(DSh.Cells(SRow, ColNum1), DSh.Cells(ERow, ColNum1)).Copy _   KSh.Cells(2, 2)  'プラス3σ複写'   Range(KSh.Cells(2, 3), KSh.Cells(ERow - SRow + 2, 3)).Value = _    DSh.Cells(LineDataRow1, ColNum1).Value  'マイナスσ複写'   Range(KSh.Cells(2, 4), KSh.Cells(ERow - SRow + 2, 4)).Value = _    DSh.Cells(LineDataRow2, ColNum1).Value   Set tgRange1 = _    Range(KSh.Cells(2, 1), KSh.Cells(ERow - SRow + 2, 4))     With GSh.ChartObjects(1).Chart    '<==ここから末まで修正    .SetSourceData Source:=tgRange1 'セット    .HasTitle = True    .ChartTitle.Text = DSh.Cells(KoumokuRow, ColNum1).Value   End With End Sub

  • グラフに横棒を引きたい(追加質問)

    いつもお世話になっております。 12/13に下記のご回答をいただいて複数のBookに展開し始めたのですが、どうしても追加の機能が必要なケースがあることに気付いたので追加のお願いです。 これができないと展開できるBook、対象列が限られてしまい非常に勿体無いので、これだけは何としても解決したく追加の質問させていただきます。 尚、実Bookに展開するにあたり、「グラフ」は半角に、グラフ確認用のシートのA~D列に保護解除のコードを修正、追加しています。 急ぎませんので何とか宜しくお願い致します。 <必須機能> 【対象とする列の最下行(1048576行目)から上方向に1行ずつチェックして数値、あるいは計算結果が数値になっている最初のセルにしたい】です。 Sub グラフ確認() Const SRowNum = 17 'データ開始行番号 Const KoumokuRow = 5 '項目名格納行番号 Const ShNameGD = "入力表" 'データ格納シート名 Const ShNameGr = "グラフ" 'グラフ描写シート名 Const ShNameGK = "グラフ確認用" Const XCol = 2 '横(項目)軸ラベル列番号 Const LineDataRow1 = 6 'プラス3σ行位置 Const LineDataRow2 = 7 'マイナス3σ行位置 Const KeyRow = 2 '採用データ数格納行番号 Dim GSh As Worksheet Dim DShj As Worksheet Dim KSh As Worksheet Dim SRow As Long 'グラフ用データ開始行 Dim ERow As Long 'グラフ用データ終了行 Dim tgRange1 As Range 'データ群範囲 Dim MaxRows As Long 'データ範囲に指定する最大行数 Dim ColNum1 As Long '1つ目データ格納列 Set GSh = ThisWorkbook.Sheets(ShNameGr) Set DSh = ThisWorkbook.Sheets(ShNameGD) Set KSh = ThisWorkbook.Sheets(ShNameGK) GSh.Select GSh.Unprotect MaxRows = DSh.Cells(KeyRow, Columns.Count).End(xlToLeft).Value ColNum1 = DSh.Cells(KeyRow, Columns.Count).End(xlToLeft).Column ERow = DSh.Cells(DSh.Rows.Count, ColNum1).End(xlUp).Row '<==ここ If ERow < MaxRows + SRowNum Then SRow = SRowNum Else SRow = ERow - MaxRows + 1 End If Sheets("グラフ確認用").Select Columns("A:D").Select ActiveSheet.Unprotect Sheets("グラフ").Select KSh.Cells.ClearContents KSh.Cells(1, 1).Value = "行見出し" KSh.Cells(1, 2).Value = "データ" KSh.Cells(1, 3).Value = "プラス3σ" KSh.Cells(1, 4).Value = "マイナス3σ" '横見出し複写 Range(DSh.Cells(SRow, XCol), DSh.Cells(ERow, XCol)).Copy _ KSh.Cells(2, 1) 'データ複写' Range(DSh.Cells(SRow, ColNum1), DSh.Cells(ERow, ColNum1)).Copy _ KSh.Cells(2, 2) 'プラス3σ複写' Range(KSh.Cells(2, 3), KSh.Cells(ERow - SRow + 2, 3)).Value = _ DSh.Cells(LineDataRow1, ColNum1).Value 'マイナスσ複写' Range(KSh.Cells(2, 4), KSh.Cells(ERow - SRow + 2, 4)).Value = _ DSh.Cells(LineDataRow2, ColNum1).Value Set tgRange1 = _ Range(KSh.Cells(2, 1), KSh.Cells(ERow - SRow + 2, 4)) With GSh.ChartObjects(1).Chart '<==ここから末まで修正 .SetSourceData Source:=tgRange1 'セット .HasTitle = True .ChartTitle.Text = DSh.Cells(KoumokuRow, ColNum1).Value End With End Sub

  • エクセルでセルの値でグラフの横棒を自動作成

    いつもお世話になっております。 つい先日、ここで指定した列の最下行から指定したデータ数で自動でグラフを作成する下記のコードを教えていただきました。 それを色んなBookに展開していて、ず~と前からあきらめていた動作があります。 これまで手作業していたのですが上記ができるようになったので欲は限りなく・・・ これから多くのBookに展開する前にできればこの機能も盛り込みたく。 どんどん贅沢になっていますがよろしくお願します。 やりたいことは、下記でマクロで作成されるグラフに当該列の11行目と12行目の値で横棒を引きたいのです。 11行目と12行目には当該列の±3σの値が表示されており、これをグラフ上に横棒で表示すると、最新のデータの位置が分かります。 因みに、最大、最小、3σ、規格外れは書式設定でアラームが出るように設定してあり、これらのアラームが出たときにグラフにして全体の傾向とその値の異常の程度を確認するのが当方の仕事です。(データ入力は各担当者) 質問内容が非常に分かりにくくなってしまいましたが何卒よろしくお願いします。 Sub グラフ確認() Const SRowNum = 17 'データ開始行番号 Const KoumokuRow = 5 '項目名格納行番号 Const ShNameGD = "入力表" 'データ格納シート名 Const ShNameGr = "グラフ" 'グラフ描写シート名 Const XCol = 3 '横(項目)軸ラベル列番号(下2行と一緒に削除可) Dim GSh As Worksheet Dim DSh As Worksheet Dim SRow As Long 'グラフ用データ開始行 Dim ERow As Long 'グラフ用データ終了行 Dim tgRange1 As Range 'データ群1つ目範囲 Dim MaxRows As Long 'データ範囲に指定する最大行数 Dim ColNum1 As Long '1つ目データ格納列 Set GSh = ThisWorkbook.Sheets(ShNameGr) Set DSh = ThisWorkbook.Sheets(ShNameGD) GSh.Select GSh.Unprotect MaxRows = DSh.Cells(2, Columns.Count).End(xlToLeft).Value ColNum1 = DSh.Cells(2, Columns.Count).End(xlToLeft).Column ERow = DSh.Cells(DSh.Rows.Count, 1).End(xlUp).Row If ERow < MaxRows + SRowNum Then SRow = SRowNum Else SRow = ERow - MaxRows + 1 End If Set tgRange1 = _ Range(DSh.Cells(SRow, ColNum1), DSh.Cells(ERow, ColNum1)) GSh.ChartObjects(1).Chart.SetSourceData Source:=tgRange1 'セット GSh.ChartObjects(1).Chart.SeriesCollection(1).Name = _ DSh.Cells(KoumokuRow, ColNum1).Value End Sub

  • 物理ファイルには無い列の追加について

    お世話になります。 select文でデータを抽出する時、物理ファイルにはない列を追加して 表示する事は可能でしょうか。 また、その追加した列に値(同じ値でいいのですが)も入れて表示 したいと思っておりますがその方法が良く分かりません。 どなたかご親切な方、 ご教授下さいます様、宜しくお願い致します。

  • エクセルのグラフの横軸をデータ数で自動化

    いつもいつも大変お世話になっております。 先日の質問時に具体的な表を添付しなかったために非常にお手間をおかけすることになってしまったので改めて具体的な表を添付して再度質問させていただきます。 左のボタンをクリックするとグラフが更新されて成績表の印刷ダイアログが表示されるようにしたいのです。(実際にはSheet2に作成されたグラフを確認してからマクロボタンでLOT Noをファイル名とした成績表がpdfで保存された後印刷することになります) グラフは品種によってはデータ数20個、30個、最大50個程度の最新のデータの動きを確認したいのです。 グラフ化の要素は品種により特性列を任意に2個選択したい。 実際にはこのブックにはHohoPapaさんに教わった保存時の入力済みセルの自動保護マクロ、pdf保存と印刷マクロ等が複数組み込まれていますのでこれとのバッティングも懸念されます。 (今回最初にグラフ作成マクロが動かなかった原因はこれでしたが、マクロの1行目に保護解除コードを1行入れたら解決) 前の質問の#1のご回答でデータ数が指定の個数より足りないケースでグラフ対象セルが上に突き抜けなければほぼ完ぺきなのですが。 何とかなりそうなら何卒よろしくお願いいたします。 (うまくグラフが添付されますように・・・)

  • 等高線グラフ

    等高線図が描けるソフトを探しています。 データは、エクセルの行と列がX,Yで、Zの値が各セルに入っています。 「Graph-R」や「R(統計解析ソフト)」など調べて見ましたが、 前者は等高線間隔の設定などができない。また、滑らかな曲線が描けない。 後者はかなりプログラムの知識が必要。など、いまいちです。 希望は、1)滑らかな等高線図が描ける(平面に等高線が描ければよい)。      2)等高線間隔を変更できる。      3)グラフの上に図形やテキストを書き加えたい。 以上3点です。ご存知の方よろしくお願いします。

  • 横棒のグラフ

    エクセルで作った表から 横棒のグラフを挿入しました。 表はA列に項目を書き、B列に値。 そして、表の値が客観的に見えてわかりやすいようにと その横にグラフを置こうと思いました。 すると、グラフはA列の項目の並びとは間逆の順番に並び ちっとも分かりやすくありませんでした…。 (表の項目が上からA,B,C,Dとならんでいるなら グラフは上からD,C,B,Aと並んでいる) どうしたら、A列の順番と同じように上から並んでくれるのでしょうか?

  • 困っています。エクセルの3D棒グラフを作る時に特定の値だけ色を変える方法を教えて下さい

    エクセル(2007)で3D棒グラフを作りたいのですが、特定の値だけ色を変えたい場合はどうやればいいのでしょうか? 例えば、次のような4×4のデータがあったとします。   1 2  3  4 1 12 33 33 84 2 21 12 48 53 3 35 50 62 31 4 41 42 43 24 この時に各列の最大値だけ色を変えて棒グラフを表示させたいのです(他の値は同じ色)。具体的には、 1列目の41の色を変える 2列目の50の色を変える 3列目の62の色を変える 4列目の84の色を変える ということがやりたいのです。 棒グラフを直接クリックして書式設定で色を変える方法しかないのでしょうか?データが多く、1個づつこのやり方をするのは時間がかかりすぎます。 大変困っております、どうかよいやり方を教えて下さい。

専門家に質問してみよう