[[20150125152835]] 『変数の扱い方』(あき) ページの最後に飛ぶ

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

 

『変数の扱い方』(あき)

お世話になります。

変数の扱い方で教えて頂きたい事があります。
電圧の比を求めた数字がi列の5行目から始まり製品により違うのですが最大20行まであります。

0.863636364     
0.814814815 赤
0.821428571
0.787878788
0.777777778 赤
0.782608696 赤
0.782608696 赤
0.787234043
0.773584906 赤
0.777777778 赤
0.781818182
0.786666667
0.772727273 赤
0.769230769 赤
0.773584906 赤
0.777546778

この時、大きい数字に挟まれた小さい数字のところの背景を赤く塗りたいのですがどの様にしたら良いのでしょうか?

何方か御教示お願い致します。

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 事例のたとえば下から4つめの0.772727273 が赤なのは、ちょっとしたミスだとして。

 これがA1から始まる場合、A2から下の該当領域を選択して条件付き書式。
 数式が =AND(A2<A1,A2<A3) 塗りつぶしの色を赤に。

 追記 

 0.782608696 赤 
 0.782608696 赤 

 といったように 同じでも大きいとみなすなら式は

 =AND(A2<=A1,A2<=A3)

(β) 2015/01/25(日) 16:02


β様 回答ありがとうございます。

4つめの0.772727273 が赤なのは、ちょっとしたミスではなく
0.786666667
0.772727273 赤
0.769230769 赤
0.773584906 赤
0.777546778
下から5番目と1番下の数字に挟まれている為、赤にしたいのですが...

(あき) 2015/01/25(日) 16:22


4番目と11番目は赤のような気がしますが、なぜ赤でないのでしょうか
(マナ) 2015/01/25(日) 16:29

マナ様
ご指摘ありがとうございます。
4番目と11番目は赤です。
記入して確認はしたのですが、どうしても間違えるので機械的に
自動化出来ないかという事で質問させて頂いてます。
(あき) 2015/01/25(日) 16:47

 >下から5番目と1番下の数字に挟まれている為、赤にしたいのですが

 わぁ。それは関数音痴のβの手におえないので、識者からの回答をお待ちください。

(β) 2015/01/25(日) 16:48


ならば、βさんの式で、ANDでなくORにすればよいかと。
(マナ) 2015/01/25(日) 16:50

 4番目が赤だといわれると、まだ、どこかに誤解があるのかもしれませんが・・・・?

 とりあえず、数式を =AND(A2<>MAX(A$1:A2),A2<>MAX(A2:A$10000))

 これでどうですか?

(β) 2015/01/25(日) 16:55


i列の5行目から始まり製品により違うのですが最大20行まであります

 ここを見過ごしていました。$100 は、$30 ぐらいでもいいのかも。そこは実態に合わせて調整願います。

 =AND(I6<>MAX(I$1:I6),I6<>MAX(I6:I$100))

(β) 2015/01/25(日) 17:14


β様、マナ様

返事が遅れました。
ありがとうございます。
助かります。どのように処理したらいいのか分からず
悩んで居ました。 明日、会社でやって見ます。

(あき) 2015/01/25(日) 19:45


グラフ化するとこんなことですよね
山の頂点以外は赤とする
  
□
□■             □
□■         □ ■■□
□■■ □□ □   □■■■□
□■■■□□■□  ■□■■■□
□■■■□□■□■■■□■■■□
  
 =OR(A2<=A1,A2<=A3)

 ↑で出来ると思いましたが、山で2連続,3連続同じ値の場合が
 うまくいかないようです。
 ごめんなさい。私には難しすぎました。

(マナ) 2015/01/25(日) 21:05


 To マナさん

 私の理解では、一番左と、一番右が、間の、どの部分より高いので、間のすべてが【赤】になると
 そう思ってたんですが・・勘違いですかね?
 (ただ、私の式は、2番目が最後と同じなので、これには色がつかないんですけど)

(β) 2015/01/25(日) 22:26


 >そう思ってたんですが・・勘違いですかね?

 質問者さんのサンプルだけでは、判断つきませんが、
 そう言われると、そんな気もします。

(マナ) 2015/01/26(月) 00:16


↑の「山の頂点以外を赤とする」のマクロ

 その後も考えていましたが、やはり私には、関数無理でした。
 そこで、結局マクロにたよりました。

 目でデータを確認しながら判断するであろう手順を
 そのままコードにしただけなので、長ったらしくなりました。

 やっているとことは、こんな感じです。

 1)次データが上昇しているか、下降しているか
 2)上昇後、下降した場合が山の頂点と判断
 3)山の頂点に目印をつけ
 4)目印のないところを赤にする

 Sub test()
    Dim r As Range
    Dim c As Long
    Dim w()
    Dim i As Long, j As Long
    Dim d As Double
    Dim n As Long
    Dim s As Long, e As Long

    On Error Resume Next
    Set r = Application.InputBox( _
        Prompt:="データ範囲(縦1列)を選択", _
        Title:="選択", Type:=8)
    Set r = r.Resize(, 1)
    On Error GoTo 0
    If r Is Nothing Then Exit Sub
    If r.Count < 2 Then Exit Sub

    r.Interior.ColorIndex = xlNone
    c = r.Count

    ReDim w(1 To 3, 1 To c)

    For i = 1 To c
        w(1, i) = r(i).Value
    Next

    '次のデータが大きければUp、小さいとDown
    For i = 2 To c
        d = w(1, i) - w(1, i - 1)
        If d > 0 Then
            w(2, i) = "Up"
        ElseIf d = 0 Then
            w(2, i) = ""
        ElseIf d < 0 Then
            w(2, i) = "Down"
        End If
    Next

    '頂上かどうか判断。
    'Upの次に、Upが出る前にDownが来るかどうか。
    For i = 1 To c - 1
        If i = 1 Or w(2, i) = "Up" Then
            s = i
            e = 0
            n = 0
            Do
                n = n + 1
                If w(2, i + n) = "Up" Then
                    Exit Do
                ElseIf w(2, i + n) = "Down" Then
                    e = i + n - 1
                    Exit Do
                Else
                    If i + n = c Then
                        e = i + n
                        Exit Do
                    End If
                End If
            Loop

            For j = s To e
                w(3, j) = "Top"
            Next
        End If
    Next

    '最後のデータだけは逆方向から判断
    'Downが先か、Upが先か
    e = c
    s = c + 1
    n = 0
    Do
        n = n + 1
        If w(2, c - n) = "Down" Then
            Exit Do
        ElseIf w(2, c - n) = "Up" Then
            s = c - n + 1
            Exit Do
        Else
            If n = c - 1 Then
                s = 1
                Exit Do
            End If
        End If
    Loop

    For j = s To e
        w(3, i) = "Top"
    Next

    '頂上以外を着色
    For i = 1 To c
        If w(3, i) <> "Top" Then
            r(i).Interior.ColorIndex = 3
        End If
    Next

 End Sub

(マナ) 2015/01/27(火) 22:20


こんにちは。思いついたので。i列 5行目からのデータに処理しています。先に色をつけ、「山」のところを
色なしにしています。

Sub test()

    Dim i As Long
    Dim Rng As Range
    Dim c As Range
        Set Rng = Worksheets("sheet1").Range(Cells(5, 9), Cells(Rows.Count, 9).End(xlUp))
        Rng.Interior.ColorIndex = 3

        For Each c In Rng
            If c > c.Offset(-1) And c > c.Offset(1) Then
                c.Interior.ColorIndex = xlNone
            End If
        Next c
End Sub

マナさま
2015/01/27(火) 22:20のコード
最後の

  '頂上以外を着色
    For i = 1 To c
は、
    For i = 1 To c−1
の、タイプミスですよね。
マナ様のコードに比べると、私は、ものすごく単純に考えたのですが、
間違ってるのかなあ。
勉強中の身なので、間違いを指摘していただけると有り難いです。

(グレープ) 2015/01/29(木) 12:13


ごめんなさい。差し替えて下さい。
今気がつきました
Sub test()
    Dim i As Long
    Dim Rng As Range
    Dim c As Range
        Set Rng = Worksheets("sheet1").Range(Cells(5, 9), Cells(Rows.Count, 9).End(xlUp))
         Set Rng = Rng.Offset(1).Resize.(Rows.Count - 1,1)
    Rng.Interior.ColorIndex = 3
        For Each c In Rng
            If c > c.Offset(-1) And c > c.Offset(1) Then
                c.Interior.ColorIndex = xlNone
            End If
        Next c
        If Rng.Cells(1, 1)>Rng.Cells(1, 1).Offset(1) Then
            Rng.Cells(1, 1).Interior.ColorIndex = xlNone
         End If
End Sub

(グレープ) 2015/01/29(木) 14:38


 >勉強中の身なので、間違いを指摘して

 勉強とか間違いとかではなく、色づけルールの解釈の問題ではないかと思います。

 つまり、頂上には2つ以上同値(高原状態)もあり得ると考えるか否かです。
 あり得るなら、前後のセルを見ただけでは色付けの可否が決められないです。

 質問者本人が出てこないのでどうしようもないですけど、この質問の仕様は不明瞭すぎます。

 「頂上には色づけしない」はいいとしても、それだけで全てを決めていいものなのか疑問に思います。
 富士山のような形(頂上が中央に一つ)を想定した場合、頂上以外全てに色を付けて本当にいいものでしょうか?

 『大きい数字に「挟まれた」小さい数字のところの背景を赤く塗りたい』と云う要件が微塵も考慮されて
 いない様に思われるのですが。。。。富士山型はその「挟まれた」値と云うのが一つも存在しないです。

 それぞれのセルの状態は以下の4つがあり
  上り坂(上りの平坦地を含む)
  下り坂(下りの平坦地を含む)
   山頂 (頂上の平坦地を含む)
   平地 (前に下り坂、後ろに上り坂がある)

 上り坂の時は、その前に下り坂があったら色を付ける、
 下り坂の時は、その後に上り坂があったら色を付ける
  平地 の時は、無条件で色を付ける
 と云う仕様ではないかと云う気がしているのですけど。

 質問者本人が出てこないと始まりませんけどね。

(半平太) 2015/01/29(木) 16:20


 To 半平太さん

 おっしゃるとおり、質問者さんが登場しないで回答側で、こうかな?ああかな?といっててもはじまらないですね。

 ということなんですが、

『大きい数字に「挟まれた」小さい数字のところの背景を赤く塗りたい』と云う要件が微塵も考慮されて いない様に思われるのですが

 一応、私がアップした数式では考慮したつもりなんですけど・・・
 地上でたとえれば、自分より左側の一番高いものより低く、自分より右側の一番高いものより低いと。
 ただし、コメントしましたように、どこかに同じ高さの頂上があったら、ちょっとだめだなというレベルですけど。

(β) 2015/01/29(木) 20:18


 > 一応、私がアップした数式では考慮したつもりなんですけど・・・

 済みません。前言撤回させていただきます。  m(__)m
 ご自身でもダメそうなことをおっしゃっていたので、ほとんど無視しておりました。

 この条件式ですね。
  ↓
 > =AND(I6<>MAX(I$1:I6),I6<>MAX(I6:I$100))
 >(β) 2015/01/25(日) 17:14

 一目みて、山はいくつもあり得るのに、全域で2つのMAXしか考慮しないのでは
 旨く行くハズがないと決め込んでしまいました。

 極端な例ですと、スタートとエンドだけが最大の場合、
 中間がどんな山並みになっていようとも全部赤くなりますが、
 それこそが仕様であると云う見解ならそれもOKです。
 (まだ誰も正確な仕様を知らないですから)

(半平太) 2015/01/29(木) 21:05


返事が遅れてすみませんでした。
インフルエンザでダウンしている間にいろいろ考えてくださって、皆様ありがとうございます。
仕様としては、最初と最後の数値には色がつかない。
最初の数値を超える数値は出てこない。
その間で挟まれる低い数値の時、色が付く。
グラフで言うと右肩下がりのグラフになります。
その場所はI列の5行目からI列の最小で13行、最大で25行。
極端ですが最初と最後の数値より低ければ挟まれた数値のところ全てに
色が付く。  です。
もっと論理的に考えを伝えないと駄目ですね。

結果から言うとマナ様のマクロで正解でした。

マナ様、β様、グレープ様、半平太様ご協力ありがとうございました。

(あき) 2015/01/31(土) 00:24


いえいえ、私のマクロは違いますよ。
 まだちょっと、よくわからないところもありますが、

 >極端ですが最初と最後の数値より低ければ挟まれた数値のところ全てに 
色が付く。

なので、βさんの考えが正しかったということでしょうか。

(マナ) 2015/01/31(土) 08:56


 グレープさん、コメントありがとうございます。

 私のコードのご指摘いただいた部分は間違いではないと思うのですが、
 その一つ上のブロック(最後のデータについて評価しています)
 に間違いがありました。
 投稿後、すぐ気づいたのですが、
 質問者さんおいてきぼりで、書き込みが進むのも気が引けましたので、
 修正せずにそのままにしておきました。

(マナ) 2015/01/31(土) 09:13


マナ様
コメント有難うございました。
マナ様の配列の使い方の鮮やかに、感心して、失礼を顧みず、つい書き込んで
しまいました。
半平太様
浅はかなコードにコメントいただき有難うございました。
スキルをあげないと、質問者様の仕様を理解するのは、難しいと痛感しました。
自分としては、とても勉強させて頂き良かったです。
最後に
質問者様のあき様
お大事に

(グレープ) 2015/01/31(土) 12:41


 >4番目と11番目は赤です。

 始めの方にそんな説明があったと思いますけど、4番目が赤になる理由は何ですか?

 サンプルデータ中、4番より大きな数は、そのあとに無いですけど。

(半平太) 2015/01/31(土) 20:11


 そうですよね。たぶん、質問者さんの勘違いだと思います。
 (β) 2015/01/25(日) 16:55 ここで、私も、えっ?? と思いました。

(β) 2015/01/31(土) 21:26


 勘違いだったら、
 I6セル以下に、この条件付き書式で終わりじゃないですか? 最初の数値を超える数値は出てこないと言っているので。
        ↓
        =I6<MAX(I6:I$25)

 山頂無色説の拠り所になった説明箇所なんですから、本人から聞く必要があります。

(半平太) 2015/01/31(土) 23:00


コメント返信:

[ 一覧(最新更新順) ]


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