• ベストアンサー

セルの色付けの仕方について

たびたび、申し訳ありません。 エクセルの工数表の作成に関して、御相談させて下さい。 エクセルで、 A列に「日付」、 B列に「その作業内容」、 C列に「作業時間」を入力するような、 作業工数表を作成したいと思っています。 ここで、表を見やすくするために、 同一日付の行を、同色に「色づけ」したいと思っています。 (具体例) 2/1 事務処理 2.0←青 2/1 資料作成 2.5←青 2/1 伝票処理 0.5←青 2/2 事務処理 3.0←赤 2/2 資料作成 4.0←赤 2/3 伝票処理 2.0←青(以下、青、赤の繰り返し…)     具体的には、 「C列の数値を入力」することによって、 その行の「A列~C列までのセル」の色を、 自動で入力されるようにしたいと思うのですが、 この場合、どうすればよいでしょうか…。 (⇒一日置きに、青・赤と順番に付けたいと思います) 注文が多くてすみません、ヒント程度でも結構ですので、 アドバイスを頂けないでしょうか。 (⇒特に「一日置きに色を変える方法」について、お願いします) どうかよろしくお願いします。m(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • macchan1
  • ベストアンサー率38% (52/136)
回答No.11

#8のさらに補足が必要なことが分かりました。 SUMPRODUCT関数で返した数値は、分数を使用しているためエクセル特有の小数点計算誤差が出るため、ごく一部に整数にならないケースがあることが分かりました。 だんだん複雑な式になっていしまいまいましたが、以下のように修正してください。 1つ目の条件付書式(青) =AND($C2<>"",MOD(INT(SUMPRODUCT(1/COUNTIF($A$2:$A2,$A$2:$A2))),2)=0) 2つ目の条件付書式(赤) =AND($C2<>"",MOD(INT(SUMPRODUCT(1/COUNTIF($A$2:$A2,$A$2:$A2))),2)=1)

airi-kun
質問者

お礼

おぉ、うまくいきました! ありがとうございます♪ おかげさまで助かりました(^^)

その他の回答 (10)

  • toto33
  • ベストアンサー率18% (7/37)
回答No.10

簡単な方法をひとつ。 オートフィルタで2月1日を選び、全部にセルに色をつけ、2月2日を選び、違う色をつけ、、、、というのでやると、まとめて一気に色をつけられますけど。 どうでしょう?

airi-kun
質問者

お礼

なるほど、、 しかし、できれば入力したら自動で色付けできるといいな…と思っていました。 めんどくさがりなモノで…すみません(^^;)

  • macchan1
  • ベストアンサー率38% (52/136)
回答No.9

#8の式の一部訂正と追加です。 A2セルから選択した場合ですのでA1の部分はA2に変更してください。 また、C列にデータが入って初めて色をつけるのであれば以下のように式を追加して下さい。 1つ目の条件付書式(青) =AND($C2<>"",MOD(SUMPRODUCT(1/COUNTIF($A$2:$A2,$A$2:$A2)),2)=0) 2つ目の条件付書式(赤) =AND($C2<>"",MOD(SUMPRODUCT(1/COUNTIF($A$2:$A2,$A$2:$A2)),2)=1)

airi-kun
質問者

お礼

アドバイスありがとうございます。 うーむ、なぜか、同じ日付でも、違う色になったりしました。 入力ミスかも知れませんが…。

  • macchan1
  • ベストアンサー率38% (52/136)
回答No.8

日付が飛んでいる場合に対応できる条件付書式の例です。 例えば、A2セルからデータ範囲を選択し、条件付き書式で「数式が」にして以下の式を入力して書式のパターンを青に、「追加」で2番目の式を入力し同様に書式を赤に設定します。 1つ目の条件付書式(青) =MOD(SUMPRODUCT(1/COUNTIF($A$1:$A1,$A$1:$A1)),2)=0 2つ目の条件付書式(赤) =MOD(SUMPRODUCT(1/COUNTIF($A$1:$A1,$A$1:$A1)),2)=1

airi-kun
質問者

お礼

アドバイスありがとうございます。 ちょっと気づいたのですが、条件付書式ってコピーペーストできないんですね。 タイプミスしないように、気をつけねば…。(^^;)

回答No.7

#6です。 あ、ちょっと参照範囲が違いました。 書式→条件付書式→条件1:数式が「=MOD(SUM(IF(FREQUENCY($A$2:$A2,$A$2:$A2),1)),2)=1」 書式ボタンを押してパターンを青に設定します。OKボタン 追加ボタン→条件2:数式が「=MOD(SUM(IF(FREQUENCY($A$2:$A2,$A$2:$A2),1)),2)=0」 OKボタン。 別に、結果は変わらないのですが、 範囲をA2からに統一しておいた方が何かといいですね。 タイプミスです。すみません。

airi-kun
質問者

お礼

了解しました♪ わざわざありがとうございます(^^)

回答No.6

例えばA2からC1000を選択して、A2が白くなっている(アクティブになっている)ことを確認します。 書式→条件付書式→条件1:数式が「=MOD(SUM(IF(FREQUENCY($A$1:$A2,$A$2:$A2),1)),2)=1」 書式ボタンを押してパターンを青に設定します。OKボタン 追加ボタン→条件2:数式が「=MOD(SUM(IF(FREQUENCY($A$1:$A2,$A$2:$A2),1)),2)=0」 OKボタン。 ええと、最後に日にちを入力したところから1000行までは同じ色になるのはご愛嬌、ということでいかがでしょうか。 A2行目からその行まで日付が何種類あるかを数え、 その数を2で割ったあまりが1なら(つまり奇数個目=1個目、3個目、5個目・・・)なら 青に塗り、 その数を2で割ったあまりが0なら(つまり偶数個目=2個目、4個目、6個目・・・)なら 赤に塗る、 という条件付書式です。 日付が飛んでいても対応できますが、日付順に並べ替えしておいてくださいね。

airi-kun
質問者

お礼

アドバイスありがとうございます。 そうか、条件付書式を複数「入れ子」にすれば良いのですね…。 とても勉強になりました、ありがとうございます。

回答No.5

こんにちは。 確認ですが・・ このリストには、1日から月末までのすべての日付が入るのでしょうか? たとえば18日の次に(19日がなくて)20日がくる、ということはないのでしょうか? ↑のような場合もあるのなら、 №2、№4の方々の奇数日・偶数日の条件で色分けする方法では、 18日の下の20日も同じ色になってしまいます。 そういう場合も考慮するなら、VBAの方がてっとり早いように思います。 ↓のコードを該当するシートの(Sheet1ならSheet1の)コードウィンドウに貼り付けてみてください。 あまり細かいことは考慮していませんし、冗長なコードですが、 一応、18日の次に20日がくるような場合も、日付ごとに色が変わると思います。 ★データは2行目から始まることを前提にしています。 ★"赤"や"青"ではちょっとケバケバしいような気がして、  色は適当に変えてみました。  ヘルプで ColorIndex を調べて、お好みの色に変更してください。  最初の 20 と 24 が ColorIndex です。 ※コードウィンドウに貼り付けたあと、  ColorIndex という語の上にカーソルを置いて、F1キーを押してください。  ヘルプが起動します。 ------------------------------------------------------------ Private Sub Worksheet_Change(ByVal Target As Range) Dim c As Range Const rowColor As Integer = 24 Const rowColor2 As Integer = 20 If Target.Column <> 3 Then Exit Sub For Each c In Target With c.Offset(0, -2) If c.Value = "" Or .Value = "" Then .Resize(, 3).Interior.ColorIndex = xlColorIndexNone Else If .Row = 2 Then .Resize(, 3).Interior.ColorIndex = rowColor ElseIf .Value = c.Offset(-1, -2).Value Then .Resize(, 3).Interior.ColorIndex _ = c.Offset(-1).Interior.ColorIndex Else Select Case c.Offset(-1, -2).Interior.ColorIndex Case rowColor .Resize(, 3).Interior.ColorIndex = rowColor2 Case rowColor2 .Resize(, 3).Interior.ColorIndex = rowColor End Select End If End If End With Next c End Sub ---------------------------------------------------------------

airi-kun
質問者

お礼

おぉ、VBAだとこういったコードになるのですね。 >このリストには、1日から月末までのすべての日付が入るのでしょうか? たとえば18日の次に(19日がなくて)20日がくる、ということはないのでしょうか? そういう場合もありえます。 細部まで考慮していただき、誠にありがとうございます。 早速試してみます、アドバイスありがとうございました。

  • pachikuri
  • ベストアンサー率30% (33/107)
回答No.4

#3です。 すいません勘違いしてました。 2で割った余りを求めないといけないので、 1つ目の条件式を、「=MOD(INT(A7),2)」 2つ目の条件式を、「=MOD(INT(A7),2)+1」 に訂正します。

airi-kun
質問者

お礼

お返事ありがとうございます。 私のやり方がまずかったのか、 「一度つけた色」が、数値を消しても、消えなくなってしまいました…。 ⇒右上の色付けツールで「色なし」にしても、色が消えませんでした。 ふ、不思議です(^^;)

  • pachikuri
  • ベストアンサー率30% (33/107)
回答No.3

Excelのバージョンで違うかもしれませんが、 A~Cの列を選択し、条件付き書式で 「数式が」  =INT(A○)/2 (←○には行番号が入ります) 「書式」「パターン」で色を選びます。 「追加」で同様に 「数式が」  =INT(A○)/2+1 (←○には行番号が入ります) 「書式」「パターン」で色を選びます。 で、「OK」にして・・・ そのA~Cのセルを行方向に必要なだけコピーします。 注意するところは、「数式が」の次のところを手入力にしないと、絶対セル番地で指定されてしまいます。

airi-kun
質問者

お礼

アドバイスありがとうございます。 いろんな方法があるのですね…。 すごく勉強になります、ありがとうございました。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

1. A1:D1を選択 2. 条件付書式で以下を設定 条件1 数式が =(IF($C1<>"",MOD(DAY($A1),2),-1))>0 条件2 数式が =(IF($C1<>"",MOD(DAY($A1),2),-1))=0 条件1が奇数日、条件2が偶数日です。それぞれ、パターンなど書式を設定します。 あとは、データ範囲に書式を貼り付ければOK

airi-kun
質問者

お礼

おおっ!希望通りの動作です。 貴重なアドバイス、ありがとうございました。 (⇒数式の意味は、これから調べます…(^^;))

回答No.1

条件付き書式で日付を2で割った剰りに従って色を変えるように設定してはどうでしょう。

airi-kun
質問者

お礼

お返事ありがとうございます。 「条件付き書式」というのがあるのですね、初めて知りました…。 早速、調べてみようと思います。

関連するQ&A

専門家に質問してみよう