[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『入札表の作成』(初心者)
お世話になります。
数十点の商品の入札会を行っており、それらの入札から落札される販売店を決めるのに現在、条件付き書式の「上位または下位に入る値だけを書式設定」のルールを上位1位にして1位の値に塗りつぶしを行うように設定して確認をしています。
ただこの条件で行うと上位1位が複数あるとそれら全てに条件が適用されてしまうので、これらの動作をマクロで行えればと思っています。
マクロに出す条件は、
・集計する範囲は列FTからID
・3行目から最終行までの各行をそれぞれ処理
・FTからIDで上位1位の値に塗りつぶし(可能であればR177 G160 B199)
・FTからIDの上位1位が複数ある場合上記の塗りつぶしとは別の色で上位1位を全て塗りつぶす(カラーインデックス45)
・行数は毎月変わるので指定範囲は3行目から最終行まで
という5つを一括で行えるマクロを教えて頂けると助かります。それとマクロの取り消しコードもあるとありがたいです。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
一応条件付き書式でも可能な方法。 この場合はFR1セルに何か入力すると色を付けてFR1セルを空白にすると色を消す。
(ねむねむ) 2018/06/27(水) 15:05
FT列からID列を選択して条件付き書式の数式を使用して〜、で =AND(ROW()>2,MAX($FT1:$ID1)=FT1,COUNTIF($FT1:$ID1,FT1)>1,$FR$1<>"") 複数時の色 =AND(ROW()>2,MAX($FT1:$ID1)=FT1,FT1<>"",$FR$1<>"") 単一時の色 とこの並びで設定s手見てくれ。 (ねむねむ) 2018/06/27(水) 15:05
FR1セルに何か入力は行ったか? >この場合はFR1セルに何か入力すると色を付けてFR1セルを空白にすると色を消す。
(ねむねむ) 2018/06/28(木) 09:39
ではFR1セルをのセルに変更して式でFR1セルを参照しているところを変更したセルにかえてみてくれ。 あるいは条件付き書式はあきらめてマクロでの回答がつくのを待つか。
(ねむねむ) 2018/06/28(木) 10:00
書いていても分かりにくいので簡潔に説明すると、
「列FTからIDの最大値が複数ある場合その個数をIPに返す」という事になると思われます。
この方法で新たにお願いいたします。
(初心者) 2018/06/28(木) 17:07
・質問じゃなくて丸投げなのであんまり回答する気がわきません。
・質問文をよくよく読むと「R177 G160 B199」、「3行目から最終行」、
「カラーインデックス45」なんて感じのキーワードがちりばめられているので、
もしかして自分でたたき台となるものくらいは作っているんじゃ無いかと思われます。
コレを踏まえて、とりあえずやってみてどこが解らないのか、その部分を聞くか、コードを提示して皆さんに添削をお願いした方が回答つきそうな気がします。
次に
>「列FTからIDの最大値が複数ある場合その個数をIPに返す」という事になると思われます。
それならとりあえず3行目”だけ”で考えてみたらどうですか?
ヒント
(1)範囲内の最大値はMAX関数が使えそうです。
(2)特定の数値が範囲内にいくつあるか数えるにはCOUNTIF関数が使えそうです
(3)もし、(2)が1を超えてるということは・・
そして数式で答えが出せるなら、条件付き書式の”数式を使用して、書式設定するセルを決定”が使えるということになるのではと思います。
(もこな2) 2018/06/28(木) 18:36
Range("IP3").Select ActiveCell.FormulaR1C1 = "=COUNTIF(RC[-74]:RC[-12],MAX(RC[-74]:RC[-12]))" Range("FT3:ID3").Select Range("ID3").Activate Selection.FormatConditions.AddTop10 Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1) .TopBottom = xlTop10Top .Rank = 1 .Percent = False End With With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent5 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False Range("IP1").Select End Sub となります。 (初心者) 2018/06/30(土) 11:36
ねむねむさんのアイデアでいいと思うんですけどねぇ・・
FR1セルが使えなかっただけでしょ?
IP2セル「同額」なんて云うセルが作れるなら、そこをFR1の代わりにすればいいですよ。
> FT列からID列を選択して条件付き書式の数式を使用して〜、で > =AND(ROW()>2,MAX($FT1:$ID1)=FT1,COUNTIF($FT1:$ID1,FT1)>1,$FR$1<>"") 複数時の色 > =AND(ROW()>2,MAX($FT1:$ID1)=FT1,FT1<>"",$FR$1<>"") 単一時の色 ↓ FT列からID列を選択して条件付き書式の数式を使用して〜、で =AND(ROW()>2,MAX($FT1:$ID1)=FT1,COUNTIF($FT1:$ID1,FT1)>1,$IP$2=1) 複数時の色 =AND(ROW()>2,MAX($FT1:$ID1)=FT1,FT1<>"",$IP$2=1) 単一時の色
として、色を付けたい時は、IP2セルに「1」を入れる。 色を消したい時は、IP2セルに「0」でも入れる。(1以外なら何でもいい)
(半平太) 2018/06/30(土) 14:45
・条件付き書式の「数式を使用して、書式設定するセルを決定」を設定する
付随して条件を満たしていてもTrueにならない工夫をする
・マクロでセルの値を取得して、書式設定を変更するセルを判定して、書式設定(塗りつぶし)する
付随して全体を塗りつぶしなしにするマクロを作成する
このどっちかではないでしょうか
なので、元々の質問を拝見して、2番目のプランのマクロをある程度作成していたんじゃないかとおもって、先日のようなコメントをつけたのですが・・・
本当に最初からマクロで条件付き書式を操作するようなプランを考えていたのであれば、マクロで条件付き書式を設定する必要性が私にはわからないので、皆さんが提示されているような数式を使って、手動で条件付き書式の「数式を使用して、書式設定するセルを決定」の設定をされることをオススメします。
また、あえて勉強がてらマクロで処理したいというなら、いろんなやり方あるとおもいますけど、こんなやり方もあるとおもいますので、研究されてみてはいかがでしょうか。
Sub サンプル() Dim i As Long Dim tRNG As Range, MyRNG As Range Dim WF As Object: Set WF = Application.WorksheetFunction Dim MyColor As Long ' With ActiveSheet For i = 3 To .Cells(.Rows.Count, "FT").End(xlUp).Row Set tRNG = .Range(.Cells(i, "FT"), .Cells(i, "ID")) ' Select Case WF.CountIf(tRNG, WF.Max(tRNG)) Case Is = 1: MyColor = RGB(255, 0, 0) Case Is > 1: MyColor = RGB(255, 255, 0) Case Else: Stop End Select ' tRNG.Interior.Color = xlNone ' For Each MyRNG In tRNG If MyRNG.Value = WF.Max(tRNG) Then MyRNG.Interior.Color = MyColor Next MyRNG Next i End With End Sub (もこな2) 2018/07/01(日) 14:49
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.