• ベストアンサー

Excelの条件付き書式で時刻を指定する方法

A1に=NOW()で現在時刻が表示され、 A2からのA列は30分毎の時間軸になっています。 13:00:00~13:29:59の場合、行4に条件付き書式を適用したいのですが、 どの様な数式を入力すればよいでしょうか? A1=NOW()で不可能な場合は、A1の数式に直接時刻が入力されている場合の方法を教えて下さい。 環境 OS:Vista32bit Version:Office2010 よろしくお願いいたします。

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.8

 ANo.2,7です。 >1時間単位の時刻以外も表示させるにはどうしたら良いでしょうか?  ANo.7において2番目に挙げた方法では如何でしょうか?  A2セルとA4セルに時刻を入力して、その時間の差から、何時間何分何秒単位で時刻を表示させるのかが決まる方法ですから、一々、関数を修正する必要がなくなります。 >もし、表示する時刻を1時間刻みではなく、20分刻みとか、100秒刻みといった、その都度異なる時間間隔で表示させる場合には、次の様な方法もあります。 > まず、A6セルに次の関数を入力して下さい。 =IF(COUNT($A$2,A$4)=2,A$2+ROUND((A$4-A$2)*86400,0)*(ROW()-ROW(A$2))/2/86400,"") > 次に、A6:A7の範囲を下方に向かってオートフィルして下さい。  尚、上記の関数において、 >2行1時間単位ですが、4行1時間単位など応用するにはどう数式をいじったら良いでしょうか? を行われる際には、関数中の *(ROW()-ROW(A$2))/2 という箇所の末尾にある /2 を /4 に変更し、「A$4」となっている部分を、「A$6」に変更して下さい。  尚、どうしても =A$2+TIME(INT((ROW()-ROW(A$2))/2),,) の方をベースとして、「1時間単位の時刻以外も表示させる」ようにしたいと言われるのでしたら、 =A$2+TIME(,60*INT((ROW()-ROW(A$2))/2),) の様にした上で(「60*INT((ROW()-ROW(A$2))/2)」の前後に付く「,」の数に注意)、 表示する時刻の差を、例えば1時間(=60分)単位から20分単位とする場合には、 60*INT( の部分の60を20に変更して、 =A$2+TIME(,20*INT((ROW()-ROW(A$2))/2),) として下さい。  又、2行1時間単位を4行1時間単位にする際には、関数中の INT((ROW()-ROW(A$2))/2 という箇所の末尾にある /2 を /4 に変更して下さい。

kushina
質問者

お礼

遅くなりました。 やっと出来ました。 めちゃめちゃ勉強になります。 繰り返し参考にさせて頂きます。

その他の回答 (7)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.7

>A4セルに=A4+TIME(ROWS($4:4),0,0) >ということでしたが、どうしてもできません。  申し訳御座いません、その関数は大間違いでした。  A4セルに入力する正しい関数は次の様になります。 =A$2+TIME(INT((ROW()-ROW(A$2))/2),,) >A2セルではなくてA4セルに入力するのは何故ですか?  上記の関数は、A2セルに入力されている時刻を基にして、2行ごとに1時間ずつ時間を増やしていく関数です。  1時間おきの時刻を表示する際に、何時の時刻から表示を開始するのかをパソコンに指示してあげなければ、パソコンは何時の時刻を表示すれば良いのか判断出来ませんので、一番最初の時刻であるA2セルの時刻は、手入力で指定しなければならない訳です。  それから、後で思い付いたのですが、もし、表示する時刻を1時間刻みではなく、20分刻みとか、100秒刻みといった、その都度異なる時間間隔で表示させる場合には、次の様な方法もあります。  まず、A6セルに次の関数を入力して下さい。 =IF(COUNT($A$2,A$4)=2,A$2+ROUND((A$4-A$2)*86400,0)*(ROW()-ROW(A$2))/2/86400,"")  次に、A6:A7の範囲を下方に向かってオートフィルして下さい。  尚、こちらの方法の場合、何時の時刻から表示を開始するのかを指定するためにA2セルに時刻を入力し、A2セルに入力した時刻から時刻表示を開始して、どの位の間隔をあけた時刻で表示して行けば良いのかをパソコンに指示するために、A4セルに時刻を入力しなければなりません。(そのため、関数による自動表示はA6セルからとなります)  後、余談ですが、FLOOR関数は「指定した基準値の倍数のうち、最も近い値に数値を切り捨てる」関数で、例えば =FLOOR(10,0.6) とした場合には、10÷0.6=16余り0.4であり、10は0.6の16倍よりも大きく、0.6の17倍よりは小さいため、余りの0.4を切り捨てて、0.6の16倍である9.6が表示されます。(0.6×16=9.6)  この様な関数であるため、 =FLOOR(20,10) の場合は、20は10の丁度2倍ですから20になりますが、 =FLOOR(19.9999999999999,10) の様に、僅かな差によって10が表示されてしまう事もあります。  又、FLOOR関数とは逆に、余りがある場合には切り上げを行うCEILING関数というものもあります。  そして、時刻を表すシリアル値には誤差の問題があるため、時間を扱う際にFLOOR関数やCEILING関数を使用しますと、僅かな誤差によって、期待したものとは異なる結果となる場合もまれにはありますから、時間を扱う場合にFLOOR関数やCEILING関数を使用するには注意が必要で、良く解らない場合には、FLOOR関数やCEILING関数を使用する事を避けた方が無難です。

kushina
質問者

お礼

=A$2+TIME(INT((ROW()-ROW(A$2))/2),,) でオートフィルすると、「10:30」のように、1時間の間の時間が表示されません。 でもExcelは「10:30」という認識はしているようで条件付き書式がきちんと適用されました。 1時間単位の時刻以外も表示させるにはどうしたら良いでしょうか? また、=A$2+TIME(INT((ROW()-ROW(A$2))/2),,)は 2行1時間単位ですが、4行1時間単位など応用するにはどう数式をいじったら良いでしょうか? 沢山聞いてすみません。 もしよろしければお願い致します。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

=A2=FLOOR(TIME(HOUR(A$1),MINUTE(A$1),SECOND(A$1)),"0:30") 上の式の意味について考える前に初めにA1セルにはNOW関数を使って現在の日付と時間を求めています。 NOW関数では時間の他に日付が入っているのです。 ところがA2セルから下方のセルでは8:00,8:30などと入力しており、日付は含まれておりません。 したがって条件付き書式を設定するに当たってはA1セルに入力したデータのうちで時間の部分のみを使ってA2セル以降のデータと比較することが必要となります。 そのためにTIME関数を使って時間の部分(何時何分何秒)を取り出しています。 その取り出した時間を30分単位の時間にするためにFLOOR関数を使っています。 例えばNOW関数で2012/11/24 13:15:00 となっているのでしたらTIME関数で 13:15:00 のみを取り出し、FLOOR関数を使って13:00:00 のように30分単位で切り捨てた時間を求めています。 その切り捨て処理をした時間がA2セルから下方のセルに入力した時間と一致する場所のセルを条件付き書式で色を付けるという操作を行っています。 なお、エクセルでの日付や時間の計算はすべてのデータをシリアル値として捉えて計算をしています。 シリアル値は1900年1月0日からの経過の日数や時間を表しています。 セルに1と入力してそれをセルの表示形式を日付にしてみれば1900/1/1のように表示されます。 1:00と入力してセルの表示形式を標準にすれば0.0416666666666667のように表示されます。この値は1時間を24時間で割った値に相当します。つまり日にち単位の数値として取り扱っています。 1900/1/1 1:00 と入力しセルの表示形式を標準にすれば1.0416666666666667のような数値として計算に使われるのです。 なお、A1セルにNOW関数を使って日付と時間を求めてからそのデータとの比較で条件付き書式を作っていますが、A1セルを使わなくともA2セルから下方の条件付き書式の設定では次のような式にすればよいでしょう。 =A2=FLOOR(TIME(HOUR(NOW()),MINUTE(NOW()),SECOND(NOW())),"0:30") A$1の代わりにNOW()をそのまま使用しています。

kushina
質問者

お礼

シリアル値の意味がわからなかったので凄く助かりました。 A1を参照せずに適用する方法も分かりました。 親切丁寧に本当にありがとうございました。 何度も読み返して学習します!

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.5

こんにちは。 まず。 既出回答でも指摘されている通り、A2とA4に生数字の時刻を入れてオートフィルドラッグすると「間違った時刻の値」が記入される危険があるので、やってはいけません。 まぁやっても構いませんが、計算に使ってはいけません。 準備(参考): A2に開始の時刻を手で記入する。たとえば12:00 A4には =$A$2+ROW(A2)*"0:30" と記入し、各セルにコピーする 準備: A1には =MOD(NOW(),1) と数式を記入し、時刻の表示形式を付けておく #ただNOW関数を放り込んでおくのではないので、間違えないように注意してください 手順: A2以下を選択し、条件付き書式▼から新しいルールを開始 「数式を使用して…」を選び、下の空欄に =FLOOR($A$1-$A$2,"0:30")/"0:30"+ROW($A$2)=ROW() と記入、書式ボタンで書式を施す。 #参考 A1セルにNOW関数を入れても、A1は「勝手に自動で時を刻み続ける」訳ではありません。 何もしないで放っておいたら、現実の時刻が次のゾーンに進んでも、勝手に色帯が追従していくという事は無いので念のため注意してください。 F9を押すとか、セルに何か記入するとか、ブックを開きなおすとかして、初めて現在の状態に表示が変わります。

kushina
質問者

お礼

A4に =$A$2+ROW(A2)*"0:30" と記入し、各セルにコピーする これで各セルにコピーするとなぜか全部同じ時刻が表示されてしまいました。 原因がわかりませんが、A4をオートフィルしてから数式バーEnterすると表示もきちんとなりました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

回答No1.3です。 A1せるには=NOW()と入力します。 A2セルには例えば8:00と入力し、A3セルには8:30と入力します。 A2セルとA3セルを選択してから右下隅の■をクリックして下方にドラッグすれば30分ごとの時間が表示されます。 その上でA2セルから下方のセルを範囲として選択します。A2セルがアクティブの状態のセルになっています。 「ホーム」タブの「条件付き書式」から「新しいルール」で「数式を使用して書式設定するセルを決定」にチェックをし、数式の窓には次の式を入力します。 =A2=FLOOR(TIME(HOUR(A$1),MINUTE(A$1),SECOND(A$1)),"0:30") 「書式」をクリックして「塗りつぶし」のタブで好みの色を選択してOKします。

kushina
質問者

お礼

やり方は合っていたのでダメ元でもう一度チャレンジしたら、 A2からのA列の数式バーに「1900/1/1 3:30:00」と入っていたので、 時刻を直接打ち直してオートフィル後にちゃんと出来ました。 何度も教えて下さりありがとうございました。 数式の意味をこれから調べて勉強します!

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

A1セルに=NOW()と入力してA2セルから下方には8:00,8:30,9:00,9:30・・・・・と30分ごとに時刻が入力されているとしてA1セルの時刻にあったセルに条件付き書式で色を付けるとしたら次のようにします。 A2セルから下方を範囲として選択したのちに「ホーム」タブの「条件付き書式」から「新しいルール」で「数式を使用して書式設定するセルを決定」にチェックをし、数式の窓には次の式を入力します。 =A2=FLOOR(TIME(HOUR(A$1),MINUTE(A$1),SECOND(A$1)),"0:30") 「書式」をクリックして「塗りつぶし」のタブで好みの色を選択してOKします。

kushina
質問者

お礼

上記の条件の表を作り試しましたができませんでした。 何かミスしているかもしれません。 もっと勉強します。 ありがとうございました。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

>A1=NOW()で不可能な場合は、A1の数式に直接時刻が入力されている場合の方法を教えて下さい。  まず最初に、A4以下に時刻を入力する際には、A2セルの値を単純にオートフィル(ドラッグ アンド ドロップ)する事で入力しますと、時刻を表すシリアル値の誤差の問題から、入力された時刻データにわずかな誤差が生じてしまい、条件付き書式の設定で想定した通りの表示が得られなくなる事があります。  例えば、A2セルに0:00と入力されている場合に、A4セルに1:00と入力してから、A2:A5をオートフィルしますと、A20セルの値は、表示だけは9:00になっているものの、実際のデータは9:00よりも極僅かに小さな値となるらしく、A1セルに9:00入力した際に、9:00のセルではなく8:00のセルに対して条件付き書式が現れる事があります。  ですから、各セル毎に直接、キーボード入力を行うか、或いは、A4セルに、 =A4+TIME(ROWS($4:4),0,0) の様な関数を入力してからオートフィルする事で、時刻入力を行って下さい。  その上で、次の様に操作を行って下さい。 A2セルを選択   ↓ [ホーム]タグをクリック   ↓ 「スタイル」グループの中にある[条件付き書式] をクリック   ↓ 現れた選択肢の中にある[ルールの管理] をクリック   ↓ 現れた「条件付き書式ルールの管理」ダイアログボックスの中にある[新規ルール]ボタンをクリック   ↓ 現現れた「新しい書式ルール」ダイアログボックスの「ルールの種類を選択して下さい」欄の中にある[数式を使用して、書式設定するセルを決定] をクリック   ↓ 現れた「次の数式を満たす場合に値を書式設定」欄に次の数式を入力 =MATCH($A$1,$A:$A)=ROW()   ↓ 「新しい書式ルール」ダイアログボックスの[書式]ボタンをクリック   ↓ 現れた「セルの書式設定」ダイアログボックスにおいて、条件を満たした場合の書式を設定   ↓ 「セルの書式設定」ダイアログボックスの[OK]ボタンをクリック   ↓ 「新しい書式ルール」ダイアログボックスの[OK]ボタンをクリック   ↓ 「条件付き書式ルールの管理」ダイアログボックスの「ルール(表示順で適用)」欄が「数式:=AND($A$...」となっている行の「適用先」欄をクリック   ↓ 「適用先」欄の内容を一旦消去   ↓ A2セルをクリック   ↓ A列において時刻が入力されているセルの中で、最も下にあるセルにカーソルを合わせてから、[Shift]キーを押しながら、マウスの左ボタンを押す   ↓ 「条件付き書式ルールの管理」ダイアログボックスの[適用]ボタンをクリック   ↓ 「条件付き書式ルールの管理」ダイアログボックスの[OK]ボタンをクリック  以上です。

kushina
質問者

お礼

ありがとうございました。

kushina
質問者

補足

とっても詳しくて分かりやすかったのでできました。 ずっと模索していた解決策の一つが見つかり嬉しいです。 A列の時刻をオートフィルするとズレてしまうので、 A4セルに=A4+TIME(ROWS($4:4),0,0) ということでしたが、どうしてもできません。 A4セルは1:00ですが、この数式を入力してオートフィルすると、 全部1:00になってしまい連続データのコピーができません。 A2セルではなくてA4セルに入力するのは何故ですか? 宜しければもう少し教えて下さい。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

A1に現在の時刻が入力されるとしてA2セルから下方には90分ごとに例えば5:00,5:30,6:00・・・のように入力されるのでしょうか? 13:00:00から13:29:59の場合4行目に条件付き書式を適用するとはどんなことでしょう。A1セルとの関係が分かりません。

kushina
質問者

お礼

すでに回答をくださっていたことに気づかず補足してすみません。 ありがとうございます。

kushina
質問者

補足

Excel始めたばかりで、ずれた質問をしているかもしれません。 目的は現在時刻に応じて、それに合う時間軸の行の書式を変えることです。 A1に時刻を入力し、それを使用しなければいけないと思い込んでいましたが他にもっと簡単な方法がありますか?

関連するQ&A

  • Excelの条件付き書式の書式の適用先について

    Excelの「条件付き書式」についての質問です。 「条件付き書式」⇒「新しいルール」⇒「数式を利用して,書式設定するセルを決定」 数式の中に「B$2 = 1」 と入力して 適用先に「$B$2:$H$5」と入力しました。 その時に,2行目で「1」がある列の書式が5行目まで変わりました。 また 数式の中に「$B2 = 1」 と入力して 適用先に「$B$2:$H$5」と入力しました。 その時に,2行目で「1」がある列の書式が5行目まで変わりました。 その時,B列で「1」がある行のがH列まで変わりました。 条件付き書式の行全体・列全体が変わる理由はなぜでしょうか?

  • 条件付き書式の条件に時刻を指定したい

    Excel2003  条件付き書式に時刻を指定すると「入力した数式は正しくありません」と表示されます。 条件に時刻は指定できないのでしょうか 例 A1:10:00 B1にA1が10:00のときは、B1セルに色づけするという条件書式を設定したい。

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

    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セルずつ赤色がついてしまいます。 こうなってしまう事象原因がお分かりの方はいらっしゃいますでしょうか? よろしくお願いします。

  • Excel2007 条件付き書式の設定について

    よろしくお願いします。 列はAからG列まであり、行は1から10行まであるとします。 例えば2Fの値として特定の文字列が入力された場合に、 その行全体をマスク(色)したいのですが、条件付き書式 を設定するときに選択されていたセル(1つ)のみしか反映 されません。(行全体を指定しても反映しない) 方法としては、「数式を使用して、書式設定するセルを決定」 の「次の数式を満たす場合に値を書式設定」に 「=2f="文字列"」のように入力して書式設定し、 反映して欲しい行全体を適用範囲として選択しています。 Excel2003ではできていた(はず)のですが。 アドバイスのほどよろしくお願いします。

  • エクセル2010で条件付き書式の方法

    エクセルの「D列」に文字列として数字が入力されています 例 23_2 30_3 56_1 等です この「D列」で左から2文字を判断して太文字あるいはフォント色を変更いたい場合 (条件書式ルールで 「数式を使用して、書式設定をするセルを決定」 を選択) 30_3 と入力されたセルの書式を変更したい場合・・ その時の数式の入力なのですが =LEFT(D1,2)="30" としたのですが機能しません どのように数式を打ち込めば良いか教えてください

  • 条件付き書式設定について

    1行目を項目としてA1~K19までデータを入れてあります。 B列に識別として黒、白、茶があり黒、白、茶毎に合計を出すためにデータタブの小計で識別の色毎に合計をしました。  その後条件付き書式で「数式を使用して書式を設定するセルを決定」に数式として「=AND($B2="黒 集計",B2<>"")を入力し適用範囲をA2:K19としましたが、集計行のB~E列およびK列に色が付きません。 なぜでしょうか。 数式が間違っているのか、それともやり方が悪いのかわかりません。 集計行に隙間なく色を付けるためにはどのようにしたらよいのでしょうか。 サンプルデータを添付しますのでご教授ください。

  • Excel(2010) - 条件付き書式

    Excel(2010)での質問ですが例として以下のような表があったとします. B ABC 1 Q DEF <空白> G CBA 2 P FED 2 H GHI 1 条件付き書式でルールを作っています.それで,条件付き書式で例えば以下の数式を満たす場合のみその行ごと背景色を赤とかに色を変えたいのですが……. =AND(C3<>"",C3>1) 自分がやると上の表を例になぜかA3セル("G")だけの色が変わったりと上手く行きません.目的としては「C列が,空白でなくて1より大きい値を持つ」場合に「その行丸ごと背景色を変える」ことです.ですから,この表の場合は3,4行目のセルすべての背景色が変わればいいということです.適用先は(この場合)「=$A$1:$C$5」と書いています. なお,式にはC3と書いていますが,別にC4でもいいのです.ただ,関数では複数のセルを記述できないのでこう書いています.ちなみに,関係あるかはわかりませんが,表にはフィルタを適用しています. バージョンを2010に変えてからまだ扱い慣れてないです.説明が少なくて申し訳ありませんがアドバイスお願いします.目的が達成できるのなら「マクロを使わないで」とかいうことは一切言いません.自由にやってください.

  • エクセルの条件付書式について質問です。

    図のような毎月手書き入力するシートが多数あります。 A1のセルにその月の1日の日付を入力してB3に=A1、C3にB3+1・・・ で条件付書式aaaで曜日表示するところまではできました。 さて、初心者の私は毎月土日をせっせと塗りつぶしていましたが・・・ 条件付書式で3の行(列?)に土、日が表示されたらその列(行?)は灰色に塗りつぶす ことができるのではないか?と気づきました。 ところがC3に「土」と表示されたことに対してC4を塗りつぶすなど私には想像もつきません。 C4の条件付書式は「数式がIF(C3="土""日",・・・・・・)」みたいな感じですか? また全部のセルにいっぺんにその書式を設定することはできますか? ちなみにバージョンは2003です。

  • エクセル2007 条件付き書式について

    A列からF列の500行ぐらいについて条件付き書式を設定しています。 どういう操作がそうさせるのかわからないのですが、適用先がたくさんできてしまっています。 私が作成して、いろいろな人に使ってもらっていますが、聞いてみたりしても原因がつかめません。 添付の写真の「適用先」で最初に設定したのは、「$A:$F」のふたつです。 このように$A:$F以外に適用先が出来てしまうのは、どのような操作によるものでしょうか?

  • エクセルの条件付き書式を教えてください。

    エクセルバージョンは2010です。 B列に"あ"を含む文字列、または”い”を含む文字列を入力している場合に、特定の行、たとえばA1:A100を塗りつぶす、やリ方がわからなくて試行錯誤しています。どなたか教えていただけないでしょうか?

専門家に質問してみよう