アプリ版:「スタンプのみでお礼する」機能のリリースについて

古いエクセルで恐縮なのですが、以下の条件での「条件付き書式」教えていただければ嬉しいです。
Excel2007で、A列に順番、B列に種別、C列に券番号 D列に枝番号 E列に日 F列に時刻があります。
ユーザー設定の並べ替え(日、時間)を行い、上下のセルが同じ日で時間が9分以内の場合にABCDEFセルで該当する上下に色を付けたい場合の条件付き書式を教えてください。
ただし F列のセルの書式設定は時刻だけではなくユーザー定義で「0":"00」の場合もあります(混在ではなくExcelのbook毎に違います)
下記等、色々試しましたが難しいです。
なお データ桁数は300~1000です

=AND(E2=E3,F3-F2>=TIME(0,0,0),F3-F2<TIME(0,9,0))
=AND($B1=$B2,$E1=$E2,ABS($F2-$F1)<=TIME(0,9,0),ABS($F2-$F1)>=TIME(0,9,0))
=IF(AND(E2=E3,ABS(VALUE(F3)-VALUE(F2))<1/24/60*9),TRUE,FALSE)

よろしくお願いいたします。

「Excel2007での条件付き書式につい」の質問画像

A 回答 (6件)

添付図参照(Excel 2019)


 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄↓↓↓↓↓↓↓↓↓↓↓↓↓
「Excel2007での条件付き書式につい」の回答画像6
    • good
    • 1

No.4さんの回答で解決しているかもしれませんが、No.4さんの回答に


>式中「<TIME(0,9,1)」としてあるのは、10進→60進変換で微妙な誤差
>が出る場合があるようで、9分丁度がはじかれるケースがあった・・・
との説明がありますが、これはEXCELの時間計算では24時間を1として、少数計算を行うため、2進数に変換すると無限少数となるケースがあるからです。

EXCELは有効桁数15桁で計算を行うため、無限小数だと「丸め」が生じてしまいます。これにより、「誤差」が発生します。↓
https://en-light.net/archives/30482

そこで、小数点計算を避けて、全て整数にしてから計算することにします。添付画像をごらんください。

A2~F17を選択した状態で、条件付き書式の「数式を使用して、書式設定するセルを決定」を選択し、数式欄に

=IFERROR(($E2=$E1)*(ABS(IF($F1>1,TEXT($F1,"0"":""00"),$F1)*1440-IF($F2>1,TEXT($F2,"0"":""00"),$F2)*1440)<=9),0)+IFERROR(($E3=$E2)*(ABS(IF($F2>1,TEXT($F2,"0"":""00"),$F2)*1440-IF($F3>1,TEXT($F3,"0"":""00"),$F3)*1440)<=9),0)

という数式を記述しています。

すると、ご質問者の掲示されたデータだと、添付画像のように色が付きます。
「Excel2007での条件付き書式につい」の回答画像5
    • good
    • 1

こんにちは



>時刻だけではなくユーザー定義で「0":"00」の場合もあります
数値で「1640」と入力してあるものを、表示で「16:40」となるようにしているということと解釈しました。
10進数と(時刻の)60進数では繰り上げが異なるので、数値とは言えそのまま減算をするわけにはいかなそうです。
シリアル値に変換してから、計算を行う必要がありそうに思われます。

一番簡単でわかりやすい方法は、G列を作業列として(他の空き列でもよいです)シリアル値の時間表記に直したものを作成し、そちらの列で比較すれば計算は簡単になるものと思います。

一方で、
>上下のセルが同じ日で時間が9分以内の場合に~
文言通りに解釈すると、ある1行の判定をするのには、その上下の両方の行と「9分以内」かどうかを判断する必要があると思われますが、ご提示の「いろいろ試した」例は2行で比較しているのみですよね?
ですので、2行の比較で良いものと解釈しました。


作業列を使わずに、どうしても直接判定をしたいというのなら・・
例えば2行目と3行目を比較する場合は、
=IFERROR((E3=E2)*(ABS(IF(F2>1,TEXT(F2,"0"":""00")*1,F2)-IF(F3>1,TEXT(F3,"0"":""00")*1,F3))<TIME(0,9,1)),0)
などとしておくことで判断可能と思います。

※ 計算結果は「1(=TRUE)」、または「0(=FALSE)」となります。
※ 式中「<TIME(0,9,1)」としてあるのは、10進→60進変換で微妙な誤差が出る場合があるようで、9分丁度がはじかれるケースがあったため、「<=TIME(0,9,0)」ではなく「<TIME(0,9,1)」を使用しています。
(入力値は多分1分単位なのでしょうから、支障ないものと考えました)
※ 上下の行と比較したい場合には、それぞれの判定結果を加算すれば良いでしょう。

なお、
>上下のセルが同じ日で時間が9分以内の場合に~
とありましたので、「日付をまたいで9分以内の差」については考慮していません。
あくまでも「同じ日で」という条件になっています。
    • good
    • 2

質問読み返したら、着色行間違ってました。



簡単にまとめると・・・
"特定の行"において
・E列の上下が同じである。
・F列が9分以下である
・着色するのは、"特定の行"ではなく【特定の行の"上下の行"】。

なので、着色される列は
上の1行と下の1行が条件を満たしているか、
をチェックしなきゃならないので、それぞれの数式をORで囲む必要がありましたね。

=OR(AND($E2=$E1,$E2=$E3,$F2<=TIME(0,9,0)),AND($E4=$E3,$E4=$E4,$F4<=TIME(0,9,0)))

この式は3行での条件式。
(2行目で直接入力できないんので。E1セルの上のセルが参照できないので。そもそも1行目が項目行なので、2行目が着色されることは無い)
    • good
    • 1

とりあえずこれで試してみて。



=AND($E2=$E1,$E2=$E3,$F2<=TIME(0,9,0))
「Excel2007での条件付き書式につい」の回答画像2
    • good
    • 2

ごめんよ。


質問のような書き方になっていますが、どう見ても禁止されている「作業依頼」「丸投げ」ですので、
その問題を解決するために何が分からないのか、
今までどのようなアプローチをして解こうとしたのかを示してください。
※ 投稿ガイドラインを読んでください。明確に禁止されていますよ。

じゃないとこのままでは削除対象になるような質問に対して有効な回答をしたくないんだなあ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!