[[20141024232509]] 『折れ線グラフのマーカー(条件に合わせて色を変え』(まお) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『折れ線グラフのマーカー(条件に合わせて色を変えたい)』(まお)

下記の様なデータから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

遅くなり申し訳ありません、ありがとうございました。
上記の式を元に9連全て表示させることできました!

(まお) 2014/10/28(火) 12:54


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.