【先着1,000名様!】1,000円分をプレゼント!

例えば、指定時間を10:00とした場合、現在の時間からその時間まで何分(何時間)あるのかを求める関数についてをお聞きします。
あらかじめセルに10:00と入力しておき、もう一方のセルにCtrl+:で現在の時間を入力します。
現在の時間が5:00であった時、計算式を入力したセルには300、または、5:00と入力させるにはどのような方法がありますか。
ご回答宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

回答No.3の補足です。


A1セルの値よりB1セルの値が大きいときはExcelで時間の計算ができません。
時間なので時刻と時刻の間とすれば符号を無視して良いことになり、ABS関数で対応できます。

=ABS(A1-B1)

符号を無視するということは目的の時刻が未来なのか過去なのかを問わないということです。
Excelでは現代ではタイムマシンが無いため過去へ遡れないと判断し、負の時間を扱わないことになっているようです。
    • good
    • 2
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2013/11/09 20:12

>例えば、とした場合、現在の時間からその時間まで何分(何時間)あるのかを求める関数についてをお聞きします。


表現に誤りがあります。
「指定時間を10:00」は「指定時刻を10:00」であり、「現在の時間からその時間まで」も「現在の時刻からその時刻まで」と言ってください。
時間は時刻と時刻の間と言う意味でと考えてください。

回答としてはExcelで扱う時刻はシリアル値(直接計算できる値)なので関数を必要としません。
単純に大きい値から小さい値を差し引けばそのまま時間が表示されます。

>A1セルに目的の時刻を10:00と入力し、B1セルに現在の時刻(5:00)を入力したとき、C1セルに時間を表示するにはC1セルに下記の式を入力すれば良いことになります。

=A1-B1

セルの書式が自動的に変わらない時は、C1セルのセルの書式(表示)をh:mmにしてください。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2013/11/09 20:12

>計算式を入力したセルには300、または、5:00と入力させるには



 計算式を入力したセルに300、または、5:00と表示させるには
と勝手に解釈して回答してみます。


普通に引き算すれば良い

 =(10:00と入力したセル)-(現在時刻を入力したセル)

これでOK。
ただし、(10:00と入力したセル)よりも(現在時刻を入力したセル)の値が大きくなったらエラーになります。
それを回避したいのでしたらエラーをチェックして対処するようにエラー関係の関数を加えてください。
また単に時間を入力した場合、入力した時点での日付がコッソリ含まれていますので注意。
(昨日10:00と入力して、今日Ctrl+:で時間を入力すると上記のエラーになります)

時間入力したなら、普通は”5:00”のような表示になるはずです。
これを分単位で表示させるのであれば、表示形式を指定しましょう。
TEXT関数を使うか、セルの表示形式で指定です。
書式は
  [m]
です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2013/11/09 20:11

>現在の時間が5:00であった時、計算式を入力したセルには300、または、5:00と入力させるにはどのような方法がありますか。



意味不明

入力ではなく、表示?

10時がA1
現在時刻がA2だった時に、
A3に=a1-a2 と入力してあれば、A3には差の5時間が指定された形式で表示されます。

分表示にしてあれば、300ですし、時刻表示なら5:00です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2013/11/09 20:10

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QエクセルVBA 時間のカウントダウン

エクセルを起動後、A1セルに10分のカウントダウンタイマーを「分:秒」で表示する方法(VBA)をご教示頂けないでしょうか。
よろしくお願い致します。

Aベストアンサー

1レスです。

きっと、もっとずっと簡単に出来るとお考えなのでしょう。
例えば、ユーザーがどこかのセルを編集状態にしたらば、
どうやっても、カウントダウンを進める(VBAからセル値を変える)ことは出来ません。
そういう理由から、ユーザーフォームに表示させるのが一般的ではあります。
何故、セルに表示させたいのでしょう?
10分の間、ExcelやVBAは何もしないのでしょうか?
途中でカウントダウンを止めたり、ブックを閉じたりすることはあるでしょうか?
そもそも何故カウントダウンが必要なのでしょう?
等々、疑問は多数湧いてくるものの、すべてに応える体力はありません。

経験してみないと、こちらが何を言っているのかも解らないと思います。
一応、書かれたオーダーには応えています。
中でも無難な(トラブルの少ない)手法を選んだつもりです。
ただ、これが(仕様的に)実際に役に立つのかどうかは、ご本人にしか判りません。
これはあくまでテスト用サンプルです。
テストしてみて求める仕様との違いを確かめながら、仕様をはっきりさせて、
改めて、全体を見通して設計を見直してみてください。
若しくは、目的、用途、条件、といったことを十分に文章化した上で、
あらたに相談するとか、質問を建て直した方が、解決は近いと思います。

ご使用の環境が書かれていませんので、念の為、標準モジュールの記述は
Excel 32ビット版・64ビット版、両方、別々に書いておきました。
どちらかを正しく選ばないとコンパイルエラーになります。
ThisWorkbookモジュールの記述は共通です。


' ' 〓〓〓〓〓〓〓〓標準モジュール・32ビット版〓〓〓〓〓〓〓〓
Option Explicit

Public flgStopTimer As Boolean

Private Declare Function SetTimer Lib "user32" _
            (ByVal hwnd As Long, ByVal nIDEvent As Long, _
            ByVal uElapse As Long, ByVal lpTimerFunc As Long) _
            As Long
Private Declare Sub KillTimer Lib "user32" _
            (ByVal hwnd As Long, ByVal nIDEvent As Long)

Private oTargetRange As Range
Private dtTargetTime As Date
Private nTimerIdx As Long

Private Const dtTimeSpan As Date = #12:10:00 AM#   '  10分後
Private Const nIntervalMilliSecond As Long = 1000&  '  1秒間隔

Sub TestCountDown()
  Call StartCountDown
End Sub

Private Sub StartCountDown()
  dtTargetTime = Now + dtTimeSpan
  Set oTargetRange = Sheets("Sheet1").Cells(1, "A")
  oTargetRange.Value = dtTimeSpan
  oTargetRange.NumberFormat = "mm:ss"
'  With Cells(2, "A")
'    .Value = dtTargetTime
'    .NumberFormat = "h:mm:ss"
'  End With
  nTimerIdx = SetTimer(0&, 0&, nIntervalMilliSecond, AddressOf RcvEvent)
End Sub

Private Sub RcvEvent(ByVal hwnd As Long, ByVal uMsg As Long, _
          ByVal idEvent As Long, ByVal dwTime As Long)
  If Now > dtTargetTime Or flgStopTimer Then
    KillTimer 0&, idEvent
    nTimerIdx = 0&
    Set oTargetRange = Nothing
  Else
    On Error Resume Next
    oTargetRange.Value = dtTargetTime - Now
    On Error GoTo 0
    DoEvents
  End If
End Sub

Private Sub StopCountDown()
  KillTimer 0&, nTimerIdx
  nTimerIdx = 0&
  Set oTargetRange = Nothing
End Sub

' ' 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

' ' 〓〓〓〓〓〓〓〓標準モジュール・64ビット版〓〓〓〓〓〓〓〓
Option Explicit

Public flgStopTimer As Boolean

Private Declare PtrSafe Function SetTimer Lib "user32" _
            (ByVal hwnd As Long, ByVal nIDEvent As LongPtr, _
            ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) _
            As LongPtr
Private Declare PtrSafe Sub KillTimer Lib "user32" _
            (ByVal hwnd As Long, ByVal nIDEvent As LongPtr)

Private oTargetRange As Range
Private dtTargetTime As Date
Private nTimerIdx As LongPtr

Private Const dtTimeSpan As Date = #12:10:00 AM#   '  10分後
Private Const nIntervalMilliSecond As Long = 1000&  '  1秒間隔

Sub TestCountDown()
  Call StartCountDown
End Sub

Private Sub StartCountDown()
  dtTargetTime = Now + dtTimeSpan
  Set oTargetRange = Sheets("Sheet1").Cells(1, "A")
  oTargetRange.Value = dtTimeSpan
  oTargetRange.NumberFormat = "mm:ss"
'  With Cells(2, "A")
'    .Value = dtTargetTime
'    .NumberFormat = "h:mm:ss"
'  End With
  nTimerIdx = SetTimer(0&, 0^, nIntervalMilliSecond, AddressOf RcvEvent)
End Sub

Private Sub RcvEvent(ByVal hwnd As Long, ByVal uMsg As Long, _
          ByVal idEvent As LongPtr, ByVal dwTime As Long)
  If Now > dtTargetTime Or flgStopTimer Then
    KillTimer 0&, idEvent
    nTimerIdx = 0^
    Set oTargetRange = Nothing
  Else
    On Error Resume Next
    oTargetRange.Value = dtTargetTime - Now
    On Error GoTo 0
    DoEvents
  End If
End Sub

Private Sub StopCountDown()
  KillTimer 0&, nTimerIdx
  nTimerIdx = 0^
  Set oTargetRange = Nothing
End Sub

' ' 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

' ' 〓〓〓〓〓〓〓ThisWorkbookモジュール 共通版〓〓〓〓〓〓〓

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Application.Run "StopCountDown"
End Sub

Private Sub Workbook_Open()
  Application.OnTime Now, "StartCountDown"
End Sub

' ' 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

1レスです。

きっと、もっとずっと簡単に出来るとお考えなのでしょう。
例えば、ユーザーがどこかのセルを編集状態にしたらば、
どうやっても、カウントダウンを進める(VBAからセル値を変える)ことは出来ません。
そういう理由から、ユーザーフォームに表示させるのが一般的ではあります。
何故、セルに表示させたいのでしょう?
10分の間、ExcelやVBAは何もしないのでしょうか?
途中でカウントダウンを止めたり、ブックを閉じたりすることはあるでしょうか?
そもそも何故カウントダウンが必要なのでしょう...続きを読む

Qエクセルで、あと何日あるかを表示させる関数

いつもお世話になります。

例えば、

Aのセルに『2006/1/12』という今日の日付データを入力します。

同じくBのセルに『2006/3/27』という未来の日付データを入力します。

Bの日付の「未来」まで、あと何日あるのか?という日にちをCのセルに表示させるには、

どのような関数を入力すれば良いのでしょうか?

お詳しい方、何卒ご教授くださいませ。

Aベストアンサー

=B1-A1
でできますよ。当日をカウントする場合は+1する必要がありますが...
あと式の設定後に表示形式を数値に変更してください。

今日の日付は
=TODAY()
で求められるので毎回入力する手間をはぶくなら
=B1-TODAY()
でも同じ結果になります。

Qエクセルのセル書式で「何日と何時間何分何秒」を出す方法

A1セルに2003/12/31と日付を入れ、B1セルに =NOW() で現在日時を出し、C1セルには =A1-B1の式を入れます。
これでC1セルの表示を「あと何日と何時間何分何秒」と出したいのです。

セル書式のユーザー設定で h"時間"mm"分"ss"秒" とすることにより、時間の方は表示させられましたが、何日の方がわかりません。ひょっとしてと思い、あたまにdd"日"をつけてみましたがだめでした。
おしえて下さいますようおねがいします。

Aベストアンサー

こんにちは

C1の式について

日数は
 =(A1-B1)
で得られますが そのまま整数表示させると
少数点以下(時間部分)も残るためB1が12:00(0.5)時
より前の場合、単純に表示形式での整数表示では
1日繰り上がってしまいます。結果日数を得るには
 takntさんの =INT(A1-B1) が簡単です
時間については 単純に引き算した結果で得られる
ので arukamunさんの 後半の式となると思います

結果
 =INT(A1-B1)&"日 "&TEXT(A1-B1,"h時間mm分ss秒")

で結局何を求めたいか不明ですが

以下は承知の上でしたらただの余談です
もしこの想定が「今年の残り日時」であれば24時間
不足します。
2003/12/31 と入力した場合、時間も表示させると
2003/12/31 0:0:0 となりますから もしそうなら
計算対象は 2004/1/1 と入力するか 式中の
A1-B1 部分を A1-B1+1 とすることになります

Qエクセルでの計算式もしくはシートの作り方 1日を7時間45分に

エクセルで年次有給休暇簿を作ろうとしています。
 作り方を教えてください

年休は時間単位で修得できます。 しかし,今年から勤務時間が8時間から7時間45分に変更になり累計の計算が煩雑になりました。

 今までは年休を1時間取る時は1/8と書いて
それを 累計していけば簡単にできました。
例えば 4/8の次に6/8をとると1と2/8
次に7/8をとると2と1/8と簡単でした。

今年度からは 4時間とって 次に5時間取ると合計9時間となり,
勤務時間が7時間45分なので 年休の累計は1日と1時間15分となると思います。
 何かいい計算式がありませんか?
(時間を分になおしたり いろいろしましたが,分かりませんでした。)

Aベストアンサー

日数で管理するのではなく、時間で管理したらいかがでしょう。
1は1時間、0.25を15分として計算します。
従って、1日分の勤務時間7時間45分は7.75となります。

例えば、A1に「休暇時間」、B1に「累計時間」、C1に「年休日数」、D1に「年休時間」と入れます。
A列に休暇時間を入力したら、B列にそれまでの累計が出るように式を入力しておきます。
B3が10の時、
C3に「=ROUNDDOWN(B3/7.75,0)」と入れて時間から日数を計算します。(1)
D3に「=B3-7.75*C3」とすれば、日数を除いた半端時間が計算できます。(2.25)
あとはA列に休暇時間を入力するごとに、B列~D列の計算式をコピーするだけです。

Qエクセルでカウントダウンの計算式

エクセルで、今日からある日付までの日数を計算して表示させたいです。
例えば、今日から6月30日までの日数は、
=DATEVALUE("2006年6月30日")-DATEVALUE("TODAY")
となると思いましたが、これだとエラーが出ます。
正しい計算式を教えていただけるでしょうか。

Aベストアンサー

=DATEVALUE("2006年6月30日")-TODAY()

これでいかがでしょう。

Qエクセルで分から時間に変換したいのですが

いつもお世話になっています。よろしくお願いいたします。
エクセルで「分」の合計を「時分」に変換して表示したいのですがどうもうまくいきません。
どなたかご教授願えないでしょうか?
例:200(分)=3時間20分もしくは3:20
お願いいたします。

Aベストアンサー

A1に「分」が入っていて、別のセルに時分に変換して表示する場合とします。

24時間(1440分)未満であれば、
=A1/1440
とし、セルの書式設定で以下のいづれかを設定すればOK。
(1)[時刻]→[13:30]を選択
(2)[ユーザー定義]→h:m
(3)[ユーザー定義]→h時間m分
※分単位は常に2桁(2時間05分など)で表示したいなら
 (1)の設定か、またはmをmmに変更してください。


上記方法では23時間59分までしか正しく表示できないので、
もし24時間(1440分)以上になる場合は別の方法が必要です。
=INT(A1/60)&":"&MOD(A1,60)
または
=INT(A1/60)&"時間"&MOD(A1,60)&"分"
※分表示を常に2桁にするのであれば、
 MOD(A1,60)をRIGHT("0"&MOD(A3,60),2)に変更してください。

Q残業時間の計算をするにはどのような関数あるいは計算式を設定すればいいの

残業時間の計算をするにはどのような関数あるいは計算式を設定すればいいのですか?
私、エクセルについてはまったくの初心者です。よろしくお願いします。

(例)
       A      B
 
1行目 出勤時間  9:00

2行目 退社時間  19:30

3行目 残業時間  2:00 ←ここの計算式を教えていただきたいのです。

             ※ ただし、定時の終了時間は17:30で、拘束時間は休憩時間を含めて
               8:30とした場合でお願いします。

Aベストアンサー

勤務時間=退社時間-出勤時間
残業時間=勤務時間-8:30
で数式を組み立てると

残業時間 B3=IF(OR(B1>0,B2>B1),MAX(B2-B1-"8:30",0),"")

時間を30分単位で切り捨てにする場合
残業時間 B3=IF(OR(B1>0,B2>B1),FLOOR(MAX(B2-B1-"8:30",0),"0:30"*1),"")

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング