[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『変数の扱い方』(あき)
お世話になります。
変数の扱い方で教えて頂きたい事があります。
電圧の比を求めた数字が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
>下から5番目と1番下の数字に挟まれている為、赤にしたいのですが
わぁ。それは関数音痴のβの手におえないので、識者からの回答をお待ちください。
(β) 2015/01/25(日) 16:48
4番目が赤だといわれると、まだ、どこかに誤解があるのかもしれませんが・・・・?
とりあえず、数式を =AND(A2<>MAX(A$1:A2),A2<>MAX(A2:A$10000))
これでどうですか?
(β) 2015/01/25(日) 16:55
ここを見過ごしていました。$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
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
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
結果から言うとマナ様のマクロで正解でした。
マナ様、β様、グレープ様、半平太様ご協力ありがとうございました。
(あき) 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.