• 締切済み

条件付き書式4つ以上のVBAについて教えてください。

条件付き書式4つ以上でのVBAの作成方法を教えて下さい。 下記のような表があります。   A     B     C     D    E     F    G     H     I  J  K・・・ 1 開始日  終了日   開始日  終了日  開始日  終了日  開始日  終了日   4/1 2  3  4 ・・・ 2 2008/4/10 2008/4/20 2008/5/10 2008/5/20 2008/6/10 2008/6/30 2008/7/10 2008/7/19 (ここのセルに色をつけたい) 3 2008/4/03 2008/4/20 2008/5/10 2008/5/20 2008/6/10 2008/6/30 2008/7/10 2008/7/191 (ここのセルに色をつけたい) ・・・以下複数行 条件付き書式の設定方法 「数式が」「=AND(I$1>=$A1,I$1<=$B1)」の場合 「セルのパターンを(任意の色)」と設定 はわかるのですが、 開始日と終了日が4つ以上(実際は7つあります)あり これを1行に表したいのです。 各工程を色で表したいのです((1)工程A~B(セルの色:赤)、(2)工程C~D(青)…) できれば色をつけた上で、(1)工程と色がついたセルの上に入力したいです。 (※こちらは難しそうなので色をつける方法だけでもお願いします。)、 どうしてもVBAの設定がわからないので教えて下さい。よろしくお願い致します。 初心者なのでVBAの設定方法(どこに入力し、どのように実行すればよいか)も教えていただければ助かります!!

みんなの回答

回答No.6

ANo.5です。 >なぜか1行のみ変更となってしまいます。 ちょっと話がわからないのですが、+5の場合は、 「データ」シートの2行目を変更すると、「Sheet1」シートの7行目が変更される 「データ」シートの3行目を変更すると、「Sheet1」シートの8行目が変更される 「データ」シートの4行目を変更すると、「Sheet1」シートの9行目が変更される はずです。 >なぜか1行のみ変更となってしまいます。 とはならないはずです。 少なくても、「データ」シートの変更が1行目の場合「Sheet1」シートの6行目が変更されるので、 >の+5の影響か,「Sheet1」の5行目の書式が変更されたので、 という状況にはならないはずです。 ただ、現状の「データ」シートのプログラムでは、変更がコピーペーストなどの複数セルの同時変更には対応していないので、その場合は1行だけが変更されます。 と言う訳で、「データ」シートの変更が1セルづつなら変わるけれど、範囲で変更されたらだめだと言うなら、データシートのモジュールを以下に変えてください。 また「Sheet1」シートの日付の計算式によって Case 1, 6, 8, 10, 11, 18, 20 ... の部分を適切に変更してください。 たとえばmSheet1の日付区間の計算式が =IF((データ!$A2)="","",データ!$A2) =IF((データ!$AA2)="","",データ!$AA2) なら、(A=1,AA=27) Case 1, 27 ... に変更してください。 また、 >Sheet1のA7…=IF((データ!$A2)="","",データ!$A2) >Sheet1のB7…=IF(データ!$AA2="","",データ!$AA2) についてですが、ANo.4の補足で、Sheet1の日付がB-O列で、組み合わせがB-C区間、D-E区間...のはずですので、A7が日付データの場合は正しく表示しないはずです。 だんだん最初の質問から実際のデータが違ってきているので、整理して修正しないと正しく表示できないと思います。 また、最初はSheet1のA-H列が日付だという事で組んでいるので、Sheet1のプログラムも変更が必要なのですが、まずは動く事を目的にしたいと思います。 本当はSheet1側のプログラムを変更すべきなのですが、「データ」シート側で複数変更に対応します。 Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range For Each r In Target Select Case r.Column Case 1, 27 '「データ」シート側のA,AA列(A=1,AA=27)が変更されたら(他の列がある場合は追加してください) Sheets("Sheet1").Worksheet_Change Cells(r.Row + 5, 1) 'Sheet1のWorksheet_Changeを実行。 End Select Next End Sub p.s. もしも、これでもちゃんと動かなかったら・・・ 最初の質問と実際にしたい事が違っているので、実際のデータ状況とデータ変更の方法を教えてもらえれば、そちらで説明させてもらった方が早いかもしれません。 実際のSheet1(シート名も実際の名前があるなら、それに合わせます)の日付見出し(最初の質問の1行目)が何行目か? 日付区間がどういうペアでいくつあるか?(A-B?なのかB-Cなのか、B-C,D-E,F-G,H-I,J-K,L-M,N-Oでいいのか) 日付区間の開始行が何行目から始まるのか?(7行目から?) その計算式は何なのか? B7=IF((データ!$A2)="","",データ!$A2) C7=IF(データ!$AA2="","",データ!$AA2) とか? それと最初に間違ったのですが、Application.Matchというのを使ってますが、これは古い方法で間違いではないのですが、本当はFindというのを使うのがいいと思っていたので・・・

回答No.5

たぶんわかったような気がします。 Sheet1のB7に入っている計算式が=データ!A2だった場合などの、Sheet1とデータの行が違う場合に問題が起こるのだと思います。 Sheet1のA7の計算式が=データ!A2だった場合で考えます。 ANo.3のプログラムでは、「データ」シートのセルの変更で、データのA2(2行目)を変更すると、Sheet1に2行目を変更した場合のチェックをさせます。 実際にチェックしなければいけないのは7行目です。 ということで、チェックする行を補正して伝えます。 Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Column Case 1, 6, 8, 10, 11, 18, 20 '「データ」というシートのA,F,H,J,K,R,T列が変更されたら(1個足りないのだけど) '下は、Target(このシートの変更されたセル)の行(例えばA2だった場合は2)と、それによって計算式で変更されたSheet1のセルの行(例えばA7が変更された場合は7)の違いを補正するための+5を付けてSheet1のWorksheet_Changeを呼ぶ Sheets("Sheet1").Worksheet_Change Cells(Target.Row + 5, 1) 'Sheet1のWorksheet_Changeを実行。必要なのは行番号で、列番号は8(A-Hの場合)以下なら実行するので適当に1にしてます。 End Select End Sub p.s. これでうまく動かない場合は、Sheet1のA7とB7に入っている計算式も教えてください。

yuumi2000
質問者

補足

上記のように変更したところ Sheets("Sheet1").Worksheet_Change Cells(Target.Row + 5, 1) の+5の影響か,「Sheet1」の5行目の書式が変更されたので、 +7に変更したら、「Sheet1」の7行目のみ +8に変更したら、「Sheet1」の8行目のみ 書式が正常になりました。 なぜか1行のみ変更となってしまいます。 参考に Sheet1のA7…=IF((データ!$A2)="","",データ!$A2) Sheet1のB7…=IF(データ!$AA2="","",データ!$AA2) という計算式をしようしております。 私が詳しくない為、初歩的なミスをしているのかもしれません。 お手数をおかけしてすみません。

回答No.4

>このプログラムは組めたのですが、No.3の回答を試したのですが、 >うまくいきません どううまくいかないかわからないと、何とも言えないのですが・・・ 「データ」というシートのモジュール部に Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "データシートのデータ変更" Select Case Target.Column Case 1, 6, 8, 10, 11, 18, 20 MsgBox Target.Address & "が変更されました" Sheets("Sheet1").Worksheet_Change Cells(Target.Row, 1) End Select End Sub をコピーしてください。 データシートのどれかを変更すると、 「データシートのデータ変更」 と表示するはずです。 表示しない場合は、プログラムの場所がおかしいか、マクロが実行できない状態ではないかと思います。 データシートのA,F,H,J,K,R,T列が変更されたら、 「$a$1が変更されました」 とか表示されるはずです。 その後エラーで止まるようなら、手動で動くようになって、A-H列を計算式に戻したシートの名前が間違っていると思います。 表示はされるのだけど、正しくならない場合は、データの日付の部分の書式が「日付」または「標準」になっていない(「文字列」とかになっていないか) などで試してください。 うまくいかない場合は、どううまくいかないかを教えてください。 >この貼り付けの作業行った後、このマクロが動作するようにしたいのですが、やはり初心者には難しいのでしょうか? 思った通りにいかない場合の対処などは慣れの部分もあるので、ある程度の苦労は必要だと思います。 ただ、あまり苦労せずに経験値を上げるためには、効率よく質問(「うまくいかない」ではなく「こうこうなって、うまくいかない」)して欲しいです。 p.s. 完全独学のため、昔はとても苦労しました(苦労は今でもですが)。 インターネットの無い頃は、書籍だけがたよりですが、地方では種類も少ないし、価格も高かった・・・ 今はかなり楽なんですよ(と、年寄りくさい)。

yuumi2000
質問者

補足

お返事ありがとうございます。 具体的に言いますと >「$a$1が変更されました」とか表示されるはずです。 ここまではうまくいくのですが、 実際にSheet1を開くとデータ(A-H、実際はB-O)は計算式どおりにちゃんと表示されているのですが、セルの色が全く変わっていません。 コードの記入場所ですが、「標準モジュール」は使用していません。各々のコード表示の場所に記入しています。 下記に実際の表記を書きます。 実際はB-O列(7区間14個の場合、A列には番号が入っています)、データの開始行は7行目で使用しています。 (カレンダの日付は5行目に入力しています) P.S.本当にお早い回答助かっています。 まだまだVBAの初歩的なことからわからないのにこのような質問に対して回答いただいてありがとうございます。 Public Sub Worksheet_Change(ByVal Target As Range) Dim c1 As Variant Dim c2 As Variant If Target.Column <= 15 Then 'B-O列の場合 '現在の設定クリア 'Range(Cells(Target.Row, 9), Cells(Target.Row, Cells(1, Columns.Count).End(xlToLeft).Column)).Interior.ColorIndex = xlNone '本当はこれが正しいんだろうけど複雑なので Rows(Target.Row).Interior.ColorIndex = xlColorIndexNone '変更された行の背景色をクリア 'B-C区間 c1 = Application.Match(Cells(Target.Row, 2), Rows(5), 0) '変更された行のA列の値を5行目から探す c2 = Application.Match(Cells(Target.Row, 3), Rows(5), 0) '変更された行のB列の値を5行目から探す If (Not IsError(c1)) And (Not IsError(c2)) Then If (c1 <= c2) Then Range(Cells(Target.Row, c1), Cells(Target.Row, c2)).Interior.ColorIndex = 3 '赤 End If End If 'D-E区間 c1 = Application.Match(Cells(Target.Row, 4), Rows(5), 0) '変更された行のC列の値を5行目から探す c2 = Application.Match(Cells(Target.Row, 5), Rows(5), 0) '変更された行のD列の値を5行目から探す If (Not IsError(c1)) And (Not IsError(c2)) Then If (c1 <= c2) Then Range(Cells(Target.Row, c1), Cells(Target.Row, c2)).Interior.ColorIndex = 4 '黄緑 End If End If …以下省略 'F-G区間(省略します。) 'H-I区間(省略します。) 'J-K区間(省略します。) 'L-M区間(省略します。) 'N-O区間(省略します。) End If End If End If End Sub

回答No.3

ANo.2です。 >別シートの指定方法があれば教えて下さい。 こんな方法はどうでしょうか? あまり変更しない方法です。 まず、1番目の方法でも2番目の方法でもいいので、直接入力した場合、ちゃんと表示するようにプログラムを組んでください。 完成したら、A-H(4区間8個の場合)を計算式に戻します。 これを「データ」というシートからも呼び出せるように変更します。 Private Sub Worksheet_Change(ByVal Target As Range)<-変更前 の「Private」を「Public」に変更します。 Public Sub Worksheet_Change(ByVal Target As Range)<-変更後 以上で変更は終了です。 ちなみに、このシートの名前を「Sheet1」だとします。 次に、「データ」というシートのモジュール部に Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Column Case 1, 6, 8, 10, 11, 18, 20 '「データ」というシートのA,F,H,J,K,R,T列が変更されたら(1個足りないのだけど) Sheets("Sheet1").Worksheet_Change Cells(Target.Row, 1) 'Sheet1のWorksheet_Changeを実行。必要なのは行番号で、列番号は8(A-Hの場合)以下なら実行するので適当に1にしてます。 End Select End Sub を入れてください。 これで動くと思います。(補足のA,F,H,J,K,R,Tでは1つ足りないのですが) p.s. 本当はSheet1の「Worksheet_Change」という名前を変えた方がいいとか「If Target.Column <= 8 Then 'A-H列の場合」はいらないとかありますが・・・

yuumi2000
質問者

補足

早速の回答ありがとうございます。 >まず、1番目の方法でも2番目の方法でもいいので、直接入力した場合、ちゃんと表示するようにプログラムを組んでください。 このプログラムは組めたのですが、No.3の回答を試したのですが、 うまくいきません。 「データ」というシートについてですが、 データ.CSV→データ.xlsに変換したエクセルが別ファイルにあります。 この別ファイルのシートの全体を選択して、 コピー、その後この「データ」というシートに値のみ貼り付けしています。 この貼り付けの作業行った後、このマクロが動作するようにしたいのですが、やはり初心者には難しいのでしょうか?

回答No.2

こんなのではどうでしょうか? ちなみに、I1からの4/1 2 3 ... は表示だけで、実際は日付データ(2008/4/1 2008/4/2 2008/4/3 ...)だという場合です。 質問のデータで、A-B赤、C-D青にします。 Private Sub Worksheet_Change(ByVal Target As Range) Dim c1 As Variant Dim c2 As Variant If Target.Column <= 8 Then 'A-H列の場合 '現在の設定クリア 'Range(Cells(Target.Row, 9), Cells(Target.Row, Cells(1, Columns.Count).End(xlToLeft).Column)).Interior.ColorIndex = xlNone '本当はこれが正しいんだろうけど複雑なので Rows(Target.Row).Interior.ColorIndex = xlColorIndexNone '変更された行の背景色をクリア 'A-B区間 c1 = Application.Match(Cells(Target.Row, 1), Rows(1), 0) '変更された行のA列の値を1行目から探す c2 = Application.Match(Cells(Target.Row, 2), Rows(1), 0) '変更された行のB列の値を1行目から探す If (Not IsError(c1)) And (Not IsError(c2)) Then If (c1 <= c2) Then Range(Cells(Target.Row, c1), Cells(Target.Row, c2)).Interior.ColorIndex = 3 '赤 End If End If 'C-D区間 c1 = Application.Match(Cells(Target.Row, 3), Rows(1), 0) '変更された行のC列の値を1行目から探す c2 = Application.Match(Cells(Target.Row, 4), Rows(1), 0) '変更された行のD列の値を1行目から探す If (Not IsError(c1)) And (Not IsError(c2)) Then If (c1 <= c2) Then Range(Cells(Target.Row, c1), Cells(Target.Row, c2)).Interior.ColorIndex = 5 '青 End If End If End If End Sub 7区間の場合です。 上の各区間の設定を繰り返してもいいのですが、ループにしてみました。 ついでに背景色をcolorindexで指定すると濃すぎるので、rgb()で中間色も指定できるようにしました。 質問のデータが4区間なので、質問のデータでは「For i=1 To 4」にしないと、正しく表示しません。 Private Sub Worksheet_Change(ByVal Target As Range) Dim c1 As Variant Dim c2 As Variant Dim c As Variant Dim i As Integer '各区間の色設定 'c = Array(3, 5, 4, 6, 7, 8, 9) '背景色(ColorIndexを使う場合) c = Array(RGB(255, 192, 192), RGB(192, 192, 255), RGB(192, 255, 192), RGB(255, 255, 192), RGB(255, 192, 255), RGB(192, 255, 255), RGB(255, 255, 255)) If Target.Column <= 14 Then 'A-N列の場合(7区間) 質問のデータの場合は4区間なので8にしてください '現在の設定クリア Rows(Target.Row).Interior.ColorIndex = xlColorIndexNone '変更された行の背景色をクリア 'A-B区間 For i = 1 To 7 '質問のデータの場合は4区間の4にしないと、おかしくなります c1 = Application.Match(Cells(Target.Row, i * 2 - 1), Rows(1), 0) '変更された行のA列の値を1行目から探す c2 = Application.Match(Cells(Target.Row, i * 2), Rows(1), 0) '変更された行のB列の値を1行目から探す If (Not IsError(c1)) And (Not IsError(c2)) Then If (c1 <= c2) Then 'Range(Cells(Target.Row, c1), Cells(Target.Row, c2)).Interior.ColorIndex = c(i - 1) 'ColorIndexを使う場合は、上のc=array(...)でColorIndex用のデータを用意しておく Range(Cells(Target.Row, c1), Cells(Target.Row, c2)).Interior.Color = c(i - 1) End If End If Next End If End Sub

yuumi2000
質問者

お礼

ありがとうございます! 1番目の方法でできましたのですが… (2番目の方法は私には難しいようです) あと補足として、 実はA~H行が別シートにあり データ参照で持ってきています。 その為、変更された行というのが有効にならないようです。 別シートの指定方法があれば教えて下さい。 説明不足ですみません。

yuumi2000
質問者

補足

ありがとうございます! 1番目の方法でできましたのですが… (2番目の方法は私には難しいようです) 補足内容として、 実はA~H行が別シートにあり (例:「データ」というシートのA,F,H,J,K,R,T行から) データ参照(IF(データ!$A2="","",データ!$A2))で持ってきています。 その為、変更された行というのが有効にならないようです。 別シートの指定方法があれば教えて下さい。 説明不足ですみません。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

条件付書式は、セルの値を見ていて、セルの値が変わるとセルパターン色に即座に反映されます。ここがミソだと思います。 条件判断などは、IF文での分岐を増やすとか、Case文を増やせば仕舞いです。いくらでも(色の区別が出来ないほどに増えないうちは)、数を増やせます。 問題は即座反応性です。 これはワークシートのChangeイベントで値の変化を捉え、判別ルーチンを通して、ルールで決まった色をセットしなおせばよい。 しかしChangeイベントはクセがあったりして、色々なケースでテストし、うまくいくか考えること。

yuumi2000
質問者

お礼

ありがとうございます! VBAを使用するのが初めてですので、 具体的に説明して下さったらありがたいです!

関連するQ&A

  • 条件付き書式について

    条件付き書式について A   B      C 件数 売上商品名  売上日 0   リンゴ    1/1 4   リンゴ 1/2 3   リンゴ 1/3 0   リンゴ 1/4 上記のような表をエクセル2003で作成しました。 A列の3行目と6行目の0件は誤入力です。 そこで質問なのですが、Bにリンゴの入力があり、かつ、 A列に0が入っていれば、セルを黄色にする条件付き書式 設定をしたいのですが、やり方がよくわかりませんでした。 教えてください。 あと、できればVBAで出来る方法も教えていただければ幸いです。

  • エクセルの条件付き書式設定について教えてください

    エクセルの条件付き書式設定について教えてください エクセルで工程表を作成しているのですが、条件付き書式設定で悩んでいます。 開始日と終了日に日付を入れるとその間はセルの色が黒に変わるように設定しているのですが、更に作業内容の項目のFIXという項目の開始日と終了日を入力したときだけセルの色を赤に変わるように設定したいです。 <例>                      7/1 7/2 7/3 A        B(開始日)   C(終了日) キックオフ   7月2日     7月2日 制作      7月8日     7月18日 FIX       7月20日    7月20日 色々と関数を使って試してみたのですが、どうしてもうまくできません。 ちなみにEXCELは2007です。 お手数ですが、ご教授お願いします。

  • VBAの条件付き書式の書き方

    VBA初心者です。 同じような質問が出ていますが、ドンピシャなのがなく助けて下さい。 エクセルで会社のスケジュールを作成中です。     A          B     ・・・ 1 =(sheet2!a1)   =$a$1 2    〃       =$b$1 3 4 という内容でa1から下のセルには日付が1,2,3と入っていて、 1ヵ月の予定で土日祝日と会議デーに色を付けたいのです。 予め、条件付き書式で、土日祝日は青、会議1が緑、会議2がオレンジまでは 指定したのですが、もう1回会議があり、セルの条件付き書式だと3つまでしか指定できなく、VBAで指定するしかなさそうで困ってます。 なお、会議は別シート(Sheet3)に、計算式で、例えば4月の第2週の金曜日を返すように設定したセルがあり、a1:a31の範囲で、そこを参照して指定した色を返すという方法にしたいのです。 別シートに入力されている会議3には"会議3"と名前を付けてあります。 文字列を参照して返す方法はたくさん質問で出ていたのですが、VBA初心者のため、どこをどういじったらいいのか、全く分かりません。 知恵をお貸し下さい!!

  • 条件付書式のVBA

    条件付書式のVBAについて質問させてください。 A1:A100に「晴れ」「曇り」「雨」「台風」「不明」と入力するとします、するとその行のいくつかセルに色をつけたいです。 たとえば、A1に「晴れ」と入力されたらB1、C1、(D1とばして)E1、F1・・・に色がつく。 できればVBAの式を教えていただけると大変助かります。 どうぞよろしくお願いいたします。

  • エクセルの条件付き書式設定について教えてください

    エクセルの条件付き書式設定について教えてください エクセルで工程表を作成しているのですが、条件付き書式設定で悩んでいます。 以前、こちらで相談させていただいてほとんど問題は解決して作成し終わったのですが・・・ さらに追加で注文をつけられてしまい悩んでいます。 今回の質問は、以前の「開始日と終了日に日付を入れるとその間はセルの色が黒に変わるように設定しているのですが、更に作業内容の項目のFIXという項目の開始日と終了日を入力したときだけセルの色を赤に変わるように設定したいです」に加えて、FIXという文字の前後にも何か文字がはいっている場合でも赤に変わるように設定したいです。 <例>                      7/1 7/2 7/3 A        B(開始日)   C(終了日) キックオフ   7月2日     7月2日 制作      7月8日     7月18日 Flash制作FIX  7月20日    7月20日 FIXの前後に*をつけてFIXを含むみたいにしてみたりもしたのですが、どうもうまくセルの色が赤に変わりません。 最終的には、「もし、A列にFIXという文字が含まれているのなら(FIXのみでも可)、B列とC列に日付を入れたらカレンダーのその日のセルが赤に変わる」というふうにしたいです。 お手数ですが、ご教授お願いします。

  • excelの条件つき書式で

    こんにちは!excel97使用です。 条件つき書式のことなんですが、例えば、   A  B 1 200 100 2 150 160 3  50 100 というデータで、B列のセルの値がA列の同じ行のセルの値より少ないとき、Bの文字色を変えたい、という場合、設定はどうすればいいのでしょうか? 例の場合、1行目のB列100だけ色が変わればいいんですが、1行目のBのセルの設定を2行目以下にコピペすると、全部が1行目のAの値に対して反応してしまいますよね?(わたしだけ???) 1個1個設定すればできるんですが、メンドウなので^^;、一気に条件付けする方法を知りたいです。 宜しくお願いします。

  • EXCEL2003 条件付書式が狂ってくる

    条件付書式は、見ためにどのセルに入っているのかわからないというのと、複数の条件付書式が入ると、なぜかその前に決めていた条件付書式が消えてしまっているということがあって、なかなか不便に思っています。(やりかたが悪いのかもと思うのですが) それで、VBAの entireculumn というのを見つけたのですが、 これで対応できるでしょうか? やりたい事は、 1 2*--------------------------- 3*--------------------------- 4 5 6*--------------------------- 7*--------------------------- 上記のように、「*」をつけた行にだけ、行全体に色をつけておく、 というのを条件付書式で、 「数式が」「=$A1="*"」 としたもので、その設定をしているシートに、横にずっと、いろんな関数を入れていってます。 ですが、関数を入れたり、そのプロセスで列挿入などすると、 色がずれてしまうのです。 その回避策として、VBAで最初に色の設定をしておけないでしょうか? 「*がある行だけに色をつける。」 よろしくお願いします。

  • マクロ 列ごとの条件付き書式

    マクロで列ごとの条件付き書式を作成したいです 条件としては ・列ごとに上限値が1行目に下限値が2行目に入力されている ・3行目以降に測定値が入力される ・その3行目位以降の測定値のセルの書式を上下限値から外れた値は色を変えたい ・50列ほどデータがある (例) A1 10 A2 5 A3~A100 数字 条件をA3~A100に設定 A1(10)より大きいもの、A2(5)より小さいものはセルの色を黄色 B1 15 B2 7  B3~B100 数字 条件をB3~B100に設定 B1(15)より大きいもの、B2(7)より小さいものはセルの色を黄色 こんな感じで列ごとにデータと規格値が入っているものが50列あります。 どうかよろしくお願い致します。

  • 条件付き書式について

    先程質問をさせていただいたのですが問題が発生したため再度質問しました。 条件付き書式の件で下記のような表があるとき(簡素化しています)についてですが 1)B1がマイナスの時A1に色がつく 2)B2がマイナスの時A2に色がつく 3)B3がマイナスの時A3に色がつく・・・・ のように行ごとに条件付き書式を設定したいのですが 1行づつ設定していかないとできないのでしょうか? 行数が100行以上ある為、効率が悪いです。 また、1行条件付き書式を設定して(コピー→形式を選択して貼り付け→書式) 次の行に貼り付けましたが上記1)を元にした場合B2にA2を関連付たいのですが コピーした場合、A1のままになってしまいます。 何か良い方法があれば教えていただきたいです。 ご教授よろしくお願いします。

  • 条件付き書式でセルに色を付けた際のズレ

    OSバージョン:Windows7 Professional SP1 Excelバージョン:Excel2007(12.0.06665.5003) SP3 MSO(12.0.06665.5003) スケジュール表を作成するにあたり、条件付き書式で自動的に該当時刻列のセルに色が付くようにしたいと思っています。 サンプルとして、 ------------------------------------------ 【セルに値を入力】 ・A3:A62に22:00~22:59の時刻を1分刻みで入力(開始時刻列) ・B3:B62に22:01~23:00の時刻を1分刻みで入力(終了時刻列) ・C2:BK2に22:00~23:00の時刻を1分刻みで入力(数式参照用時刻行) 【条件付き書式を設定】 ■数式を使用して、書式設定するセルを決定を選択し、以下の数式を設定 "=IF(C$2>=$A3,IF(C$2<$B3,TRUE,FALSE),FALSE)" ■書式:セルを赤で塗りつぶす ■適用先:"=$C$3:$BK$62" ------------------------------------------ と設定します。 全て開始~終了が1分なので、各行1セルずつ赤色がついて、綺麗に斜めの線が出来る想定なのですが、 6行目、8行目、10行目、12行目以降の行について、2セルずつ赤色がついてしまいます。 こうなってしまう事象原因がお分かりの方はいらっしゃいますでしょうか? よろしくお願いします。

専門家に質問してみよう