- 締切済み
Excel関数で出した時間を判定したい
「就業時間基本5:30」なら「A」判定 「就業時間基本2:45」以上「5:29」なら「B」判定 「就業時間基本1:00」以上「2:44」ならば「C」判定 「修行時間基本1:00」未満なら「空白」 と判定させたいです。「就業時間基本」はワークシート関数で求めています。 例えば、2月1日から2月28日まで、VBAを使って「判定する」ならどうすれば良いでしょうか? 基本時間 If 関数で2:45 以上 5:29 「B」 判定としようとすると、おそらくは「シリアル値の問題」で簡単に「B」判定とは出てくれません。 どなたか、正しい判定方法を教えてください。
- youichi1971
- お礼率12% (5/41)
- Visual Basic
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- HohoPapa
- ベストアンサー率65% (454/691)
先ほどポストしたコードでも間違いではありませんが、 より正しくは以下です。 Option Explicit Function getCode(MyTime As Range) As String Dim wsTime As Date wsTime = MyTime.Value - Int(MyTime.Value) If wsTime = TimeSerial(5, 30, 0) Then getCode = "A" ElseIf ((wsTime >= TimeSerial(2, 45, 0)) And _ (wsTime < TimeSerial(5, 30, 0))) Then getCode = "B" ElseIf ((wsTime >= TimeSerial(1, 0, 0)) And _ (wsTime < TimeSerial(2, 45, 0))) Then getCode = "C" ElseIf wsTime < TimeSerial(1, 0, 0) Then getCode = "" Else getCode = "" End If End Function
- HohoPapa
- ベストアンサー率65% (454/691)
VBAである必要があるか疑問ですが 添付画像を例に、次のような関数でいかがでしょうか? Option Explicit Function getCode(MyTime As Date) As String Dim wsTime As Date wsTime = MyTime - Int(MyTime) If wsTime = TimeSerial(5, 30, 0) Then getCode = "A" ElseIf ((wsTime >= TimeSerial(2, 45, 0)) And _ (wsTime < TimeSerial(5, 30, 0))) Then getCode = "B" ElseIf ((wsTime >= TimeSerial(1, 0, 0)) And _ (wsTime < TimeSerial(2, 45, 0))) Then getCode = "C" ElseIf wsTime < TimeSerial(1, 0, 0) Then getCode = "" Else getCode = "" End If End Function
関連するQ&A
- さらに問題があります
『「就業時間基本5:30」なら「A」判定 「就業時間基本2:45」以上「5:29」なら「B」判定 「就業時間基本1:00」以上「2:44」ならば「C」判定 「修行時間基本1:00」未満なら「空白」 と判定させたいです。「就業時間基本」はワークシート関数で求めています。 例えば、2月1日から2月28日まで、VBAを使って「判定する」ならどうすれば良いでしょうか? 基本時間 If 関数で2:45 以上 5:29 「B」 判定としようとすると、おそらくは「シリアル値の問題」で簡単に「B」判定とは出てくれません。 どなたか、正しい判定方法を教えてください。』 に対して、 Option Explicit Function getCode(MyTime As Range) As String Dim wsTime As Date wsTime = MyTime.Value - Int(MyTime.Value) If wsTime = TimeSerial(5, 30, 0) Then getCode = "A" ElseIf ((wsTime >= TimeSerial(2, 45, 0)) And _ (wsTime < TimeSerial(5, 30, 0))) Then getCode = "B" ElseIf ((wsTime >= TimeSerial(1, 0, 0)) And _ (wsTime < TimeSerial(2, 45, 0))) Then getCode = "C" ElseIf wsTime < TimeSerial(1, 0, 0) Then getCode = "" Else getCode = "" End If End Function で確かに= =getCode(C) でC列から「判定」ができりことはわかりました。 もう一点さらに困っている点があります。 2018年2月 A B・・・・・C 1(金) 5:45 2(土) 5:15 と土曜だけ最大5:15が最大時間となります。 土曜日だけを判定し直すのはどうやったら良いのでしょうか? 曜日を返す変数も入れなければなりません。これも困っているのです。
- 締切済み
- Excel(エクセル)
- Excel関数で、こんなことできますか?
Excel関数で、こんなことできますか? 『沢山のパターンの中から、自動判定したい。』 (1)~(4)の4パターンで自動判定するよう設定したいのですが、 Excel関数を使って、できるのでしょうか? もし無理であれば、(1)、(2)のみとかだけでもできればありたがたいです。 ちなみに(1)のみの場合は、IF関数で次のように設定しました。 =IF(B6>49,"S",IF(B6>34,"A",IF(B6>24,"B",IF(B6>14,"C","D")))) この他に合計値を出す範囲内のセル( 例えばB3やB4 )に 「N」という表示があった場合には、(2)~(4)の判定をさせたいです。 (エラー値となる場合にはISERRORで”N”と表示するようにしています。) (1)エラーがない場合 判定 合計 S 45以上50以下 A 35以上45未満 B 25以上35未満 C 15以上25未満 D 10以上15未満 (2)B3=Nの場合 判定 合計 S 35以上40以下 A 25以上35未満 B 15以上25未満 C 10以上15未満 D 5以上10未満 (3)B4=Nの場合 判定 合計 S 25以上30以下 A 20以上25未満 B 15以上20未満 C 10以上15未満 D 5以上10未満 (4)B3,B4ともNの場合 判定 合計 S 20以上25以下 A 15以上20未満 B 10以上15未満 C 5以上10未満 D 2以上 5未満 Excel関数でどの関数を使えるのかも判りませんし、マクロも判りません。 普段は似たものを検索してコピペしていますが、複雑なものは判りません。 どなたか、お判りでしたら、お教え下さい。 よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- 関数で平均を出して判定したいのですが
エクセルで給与の実績日数と実績時間で平均値を出して判定をしなければいけません A B C D 1 月 4月 5月 判定 2実績日数 16日 20日 3実績時間 128H 150H 4 月 4月 5月 5実績日数 空白 25日 6実績時間 空白 130H 時間126時間以上 日数15日以上を満たしている場合”該当”満たしてない場合”非該当”と、判定するのですが、 一つの列例えばB列に対してだとIF関数ですることができましたが、これを2ヶ月、6月が増えると3ヶ月というふうに平均値に対しての判定を組むことができません。 5月からの入社の人は平均を割り出す分母が入社日でそれぞれで違ってきます。 この場合、一人ひとり分母を変えることでしか平均を出して判定することしかできないのでしょうか? 人数が250人以上いるのでコピーしてできるような関数を作りたいのですが・・・ わかりづらい文章ですがよろしくおねがいします。
- ベストアンサー
- オフィス系ソフト
- エクセル関数を用いて判定したいのですが・・・
エクセル関数初心者です。 IF関数を用いて数値を判定したいのですが、 男性と女性で判定基準が異なります。 セルAが"男性"なら、セルBが2以上の場合で"●" セルAが"女性"なら、セルBが4以上の場合で"●"、 それ以外は"▲" このような条件で判定分けできる方法はありますか? さらに、 セルAが"男性の場合、Bが2~4なら"●"、4より大きい場合は"▲"、2未満なら"×" セルAが"女性の場合、Bが3~5なら"●"、5より大きい場合は"▲"、3未満なら"×" 何かやり方があれば、教えてください。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excel:関数の使い方
宜しくお願い致します。 画像を添付しますので、どうやれば出来るのかを教えてください。 【前】 この表は、名前(B列)・得点(C列)が出ています。 この表を使ってやりたいことは・・・ 【後】 得点(C列)が ●50未満はC ●50以上75未満はB ●75以上はA で判定。 さらにその結果を・・・・ 上の行から判定を見ていき、G4からG8は連続してC判定で、その群の最低点がどこかを示す。 (連続した判定の中の、最低得点を示したいのです) これは無理でしょうか? 判定はIF文で出来ます。 最低得点は、MIN関数を上手く使えば示せるのでしょうか。 教えてください。宜しくお願い致します。
- ベストアンサー
- その他MS Office製品
- Excel関数について
Excelの関数についてご教授ください。 IF関数の使い方です。IF関数は、=IF(条件式,値1,値2)のように表示し、条件式が満たされている場合は値1を表示し、満たされていない場合は値2を表示することとなっています。 私がやりたいのは、少し複雑で次のような関数を作りたいです。 (1)A未満の値の場合、Xを表示する (2)A以上B未満の場合、Yを表示する (3)B以上場合、Zを表示する。 と条件を細かくし、表示する値も複数としたいです。 このような関数は、Excel関数機能を用いて出来ますでしょうか? ご教授いただければ幸いです。
- ベストアンサー
- その他MS Office製品
- EXCEL関数について
EXCEL関数について B1~E1セルが1箇所でも空白でない場合、A1セルに「1」を返す式を 「COUNTBLANK」関数と「IF」関数を使って試みたのですがうまく行きません。 B1~E1セルがすべて空白の場合はA1セルも空白になります。 ご教示頂きたくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- エクセル関数でこんな判定?
A1:B20にリストがあります。 A列は文字列です。 B列は数値です。 質問1 A列に入力があり、同行のB列が空白または0というものが1つでもあるかどうかを判定する関数を教えてください。 質問2 B列に入力があり、同行のA列が空白というものが1つでもあるかどうかを判定する関数を教えてください。 多分SUMPRODUCTを使うのだとは想像するのですが、手がでません・・・・。(泣)
- ベストアンサー
- オフィス系ソフト
- EXCEL2003で判定式について教えてください。
仮にA1に12.9、B1に12、C1に11.4、D1に12.5とあるとして F1にはA1-B1の値を、G1にはB1-C1の値、H1にはC1-D1の値を それぞれ10倍して(小数点以下を無くし見易くする為に) 表示するものとします。 その後F1~H1の3つの値(+9、+6、-11)に対し、+5以上が 一つでもあるならなら「A」、+1~+4のみは「B」、 +の値が一つもなく0以下なら「C」と判定させたいのです。 そこで当初J1で =IF(F1:H1>=5,"A",IF(F1:H1<=0,"C","B")) としたところ複数のセルに対してはできないようなので 一旦J1でMAXを使い(+5以上か)を判定し、L1に =IF(J1>=5,"A",IF(J1<=0,"C","B")) と二つのセル、二つの式で結果的には出来たのですが、 なんとかすっきりと一つの関数式で判定させることは 出来ないでしょうか?
- ベストアンサー
- オフィス系ソフト
- IF関数の条件がわかりません
ExcelのIF関数の条件でわからないので教えてください。 「6%以下かつ50,000以下だと判定A、6%以下かつ30,000以上50,000未満は判定B、それ以外はC」 問題の解答ですと、VLOOKUPを使用するみたいですが、検定でわざわざ参照する表を使用しないといけないので、IF関数のみで出来るならその回答を教えていただけますか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト