電子書籍の厳選無料作品が豊富!

Excelでの関数数式は分かるのですがNumbersで使うためにNumbers用に変換を試みたのですがうまくできないので困っております。
以下のExcel関数数式をNumbers用に変換するにはどうしたら用のか教えていただけないでしょうか?

C21 colmun =IF(C7=0,0,MAX(B1-C7,0))*24
C22 colmun =(MIN(C8-C7-C9)*24)-C38-C40
C23 colmun =IF(C8<=TIME(22,0,0),0,(C8-"22:00")*24)

C24 colmun =MIN(C12-C11-C13)*24
C25 colmun =MIN(C16-C15-C17)*24

B1=6:00
F1=22:00
C7=17:00
C8=21:45
C9=0:00
C10=4.75
C11=12:00
C12=21:30
C13=0:00
C14=9.5
C15=17:00
C16=21:30
C17=0:00
C18=4.5

「Excelでの関数数式は分かるのですがN」の質問画像

質問者からの補足コメント

  • 補足でございます。

    C21はもし6:00(B1)前に勤務した場合に勤務時間が数値で表示されます。
    C22はこの日の勤務時間が数値で表示されます。
    C23はもし22:00(F1)以降に勤務した場合に勤務時間が数値で表示されます。

    C24とC25は6:00前、22:00以降関係なしにこの日に勤務した時間が表示されます。

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/04/02 07:56

A 回答 (2件)

はい、勤務表だろうなとは思っていました。

ところであの後手元にあるMacでもう一度調べてみたら、もっと根本的な問題があることに気付きました。「Numbersの時間計算は直接行えないことが多い」という、恐るべき問題です。普段からNumbersを使っていれば真っ先に気付けたはずなのに、1日かかるとは使ってないのがバレバレですね…。

この問題、例えばセルA1~A3にそれぞれ出勤時間・退勤時間・休憩時間が入っていたとして、総稼働時間は=A2-A1-A3 で求まるはずなんですが、Numbersではこれはエラーになってしまうんです。それを回避する方法は、以下になります。これで9時出勤18時退勤の1時間休憩で、答えが0.333333になることは確認しました。

=TIMEVALUE(A2)-TIMEVALUE(A1)-TIMEVALUE(A3)

つまり、

「時間が入っているセルを計算に使うには、全てTIMEVALUE関数で受けなければならない!!」

ということです。ただそれはそれとして、今の式でMIN関数を使うのは無意味なばかりか、混乱の原因を作るだけなのでやめた方が良いでしょう。以上を踏まえるとセルC24の式はこうなります。他の式も全てこの形に直してください。

=(TIMEVALUE(C12)-TIMEVALUE(C11)-TIMEVALUE(C13))*24

それにTIMEVALUE関数を使うと、セルC23の式は以下のようにもっと22時であることを明示的に書けます。

=IF(C8<=TIMEVALUE("22:00"),0,(C8-TIMEVALUE("22:00"))*24)

ちなみにTIMEVALUE関数はExcelでもNumbersでも、23:59:59までしか扱えないという難点があって、TIMEVALUE("24:00")がエラーになってしまうんです。でもなぜかExcelでは、VALUE("24:00")はエラーにならないし、ちゃんと正しいシリアル値が返ってきます。さらに言うとVALUE("30:00")も正常に1.25を返します。なのでVALUE関数は有能だけど、TIMEVALUE関数は存在価値あるの?な感じになってるんですよね。

ただここでもNumbersは挙動が違ってて、以下の式はエラーになってしまいます。だからもし24時超えがある時は、日付も含めて計算するしかないですね。

=VALUE(A2)-VALUE(A1)-VALUE(A3)

この辺の「ん?」という挙動がある以上は、NumbersはMacユーザーの中でも完全には主流になりきれないでしょう。それにそもそもExcelってMacのソフトだから、そこまで心理バリヤは強くなさそうだし。
    • good
    • 1
この回答へのお礼

色々と調べていただいてありがとうございます。私のような普通の事務員では高度なレベルです。PCがMacなのでNumbersでけれらの作業ができればと試行錯誤しておりました。
おとなしく今まで通りExcelで勤怠処理行います。本当うにありがとうございます。

お礼日時:2018/04/03 07:10

根本的にMIN関数の使い方を間違っていませんか?MIN関数はMAX関数と対になる、最小を求める関数です。

その関数の中で引き算して何がしたいんでしょう?

=MIN(C12-C11-C13)*24
=(C12-C11-C13)*24

では、答えは全く同じです(試してみてください)。これはNumbersとExcelの違いをうんぬんする以前の問題ではありませんか?しかしExcelはこの式はエラーにならず、そのまま引き算の答えを返すだけです。

またExcelは、"22:00"のような文字列をそのまま式の中に書いても、時刻形式だと判断できるものなら自動的に変換して良きに計らってくれますが、Numbersも同じようにやってくれる保証はありません。なのでできるだけ横着をせず、VALUEやTIMEVALUE関数で受けるべきだと思います。
この回答への補足あり
    • good
    • 0
この回答へのお礼

fakeflakeさん、すみません。私の質問の仕方が説明不足でした。
これは勤怠表です。
C7~C18は実際に勤務した時間です。
C7~C10の勤務時間(時刻表示)がC21~C23に数値として計算されて表示されます。
給料計算をするのに数値が必要なためです。

C11~C14はC24に、C15~C18はC25に数値として計算されて表示されます。

そこでC21~C25に入力したXcelの下記の関数がNumbersでは機能しないというこでございます。

Xcelフォーミュラ
C21 colmun =IF(C7=0,0,MAX(B1-C7,0))*24
C22 colmun =(MIN(C8-C7-C9)*24)-C38-C40
C23 colmun =IF(C8<=TIME(22,0,0),0,(C8-"22:00")*24)

C24 colmun =MIN(C12-C11-C13)*24
C25 colmun =MIN(C16-C15-C17)*24

お礼日時:2018/04/02 07:48

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