[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『折れ線グラフのマーカー(条件に合わせて色を変えたい)』(まお)
下記の様なデータから2-D折れ線グラフを作っているのですが
例えば、
・上限値・下限値の外側にプロットされたマーカーを赤色
・中央値の上側(または下側)のみに連続9点以上プロットされたマーカーを青
と条件を設定する方法はあるでしょうか?
__A______B________C_________D_________E_________
日付 データ 上限値 中央値 下限値
10/1____105______115______110.2______102
10/2____107______115______110.2______102
10/3____110______115______110.2______102
10/4____109______115______110.2______102
10/5____120______115______110.2______102
< 使用 Excel:Excel2007、使用 OS:WindowsXP >
1)マクロでもよいでしょうか 2)赤と青はどっちが優先でしょうか
(マナ) 2014/10/25(土) 11:07
Sub 黒() Dim cht As Chart
Set cht = ActiveChart
With cht.SeriesCollection(1) .MarkerBackgroundColor = vbBlack .MarkerForegroundColor = vbBlack End With
End Sub
Sub 青() Dim cht As Chart Dim v Dim i As Long
Const 上限値 = 7 Const 下限値 = 3
Set cht = ActiveChart
With cht.SeriesCollection(1) v = .Values For i = LBound(v) To UBound(v) If v(i) > 上限値 Or v(i) < 下限値 Then .Points(i).MarkerBackgroundColor = vbBlue .Points(i).MarkerForegroundColor = vbBlue End If Next End With End Sub
Sub 赤() Dim cht As Chart Dim v Dim i As Long, j As Long, ii As Long Dim cnt As Long
Const 中央値 = 4 Const 連続数 = 3
Set cht = ActiveChart
With cht.SeriesCollection(1) v = .Values For i = LBound(v) To UBound(v) - 連続数 + 1 j = i cnt = 2 Do If (v(j) - 中央値) * (v(j + 1) - 中央値) >= 0 And _ (v(j) - 中央値) * (v(j + 2) - 中央値) >= 0 Then cnt = cnt + 1 j = j + 1 Else Exit Do End If Loop While j + 2 <= UBound(v)
If cnt >= 連続数 Then For ii = i To j + 1 .Points(ii).MarkerBackgroundColor = vbRed .Points(ii).MarkerForegroundColor = vbRed Next End If i = j Next End With
End Sub
(マナ) 2014/10/25(土) 12:06
>・上限値・下限値の外側にプロットされたマーカーを赤色 の例ですが、F列にでも F1 「外側」 F2 =IF(OR(B2<E2,C2<B2),B2,NA()) F2セルを必要行フィルドラッグ。
A:Fの範囲でグラフを描き F列の系列(系列名:外側)は 線無し・マーカー赤 を設定すると、赤いマーカーが上にかぶさって表示されます。
>・中央値の上側(または下側)のみに連続9点以上プロットされたマーカーを青 の方も同様に考えてはどうでしょう? (HANA) 2014/10/25(土) 12:18
マクロがわからないため関数の方で進めようと思います。
マーカーを青にする方法ですが、
作業列として、中央値の上側か下側かわかるようにG列に作りました。
G1 「±」
G2 =IF(B2<D2,"-","+")
G2をフィルドラッグ
そして、H列で連続しているか見たく、下記式作ってみたのですが、H2:H9の判断がつかないのと
連続9点の時、1番目と9番目にはそれぞれB列の値が入るが、間の2~8が#NAになってしまいます。
お教えいただきたいです。
H1 「連続9」
H10 =IF(OR(COUNTIF(G10:OFFSET(F10,-8,,),"-")=9,COUNTIF(G10:OFFSET(G10,8,,),"-"=9,COUNTIF(G10:OFFSET(G10,-8,,),"+")=9,COUNTIF(G10:OFFSET(G10,8,,),"+"=9),B10,NA()))
(まお) 2014/10/26(日) 17:12
ご呈示の式は入力できないのですが。。。
単純に H10 =IF(OR(COUNTIF(G2:G10,"-")=9,COUNTIF(G2:G10,"+")=9),B10,NA()) こんな式ではダメですか? (HANA) 2014/10/26(日) 19:04
(まお) 2014/10/28(火) 12:54
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.