みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

excelエクセル関数で困ってます。

excelエクセル関数で困ってます。
あるセルにある文字の内、一部だけ取り出したいです。先頭から何文字とか先頭からこの記号:があるところまで取り出すとか後ろから何文字とかです。
mid関数やleft関数やright関数を使うとネットであったんで使ったんですが、できません。エラーになります。
実は取り出す元の文字というのは11:15というような数字なんです。しかもこの数字自体はsum関数で計算した結果です。この11:15から11と15という数字を取り出したいです。11:15というのは11時間15分という意味です。
因みに残業時間の加算で11:15になりました、、、
現時点ではネットで書いてある通りやってるのにエラーなんで理由がわかりません。わかる方教えてください。

投稿日時 - 2016-10-28 12:39:54

QNo.9248618

困ってます

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

>実は取り出す元の文字というのは11:15というような数字なんです。
その値は文字列ではないです。
他の回答者も言っているように時間(時刻)を数値化したもので、1=24時間(1=1日)としたものでシリアル値と言います。
セルの書式はユーザー定義の[h]:mmまたはh:mmとなっているはずです。
「因みに残業時間の加算で11:15になりました」とのことですから[h]:mmでしょう。

>現時点ではネットで書いてある通りやってるのにエラーなんで理由がわかりません。
J34セルに11:15と表示されていても実際の値は0.46875です。
従って、FIND関数で":"が見つからずにエラーになります。
時間(時刻)のシリアル値から時間(時刻)を整数で取り出すにはHOUR関数を使います。
他の方法としては1=24時間と言う原則を利用してINT関数を使うことで時間の整数値を求めることができます。
=INT(J34*24)
この数式は24時間以上のときも正しい時間数を算出できます。(HOUR関数では24時間未満しか求められません)
端数の分はMINUTE関数で問題なく算出できます。
=MINUTE(J34)
MINUTE関数で戻る値は0~59の範囲です。
尚、夫々は整数の数値になります。

投稿日時 - 2016-10-28 16:51:06

ANo.5

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.4

MID関数は「文字列」から、指定した文字位置、文字数を取り出す関数です。
「11:15」は数値(シリアル値)だから期待した結果にならないのでは。

例えば、
A1のセルに11:15と入力。
B1に=MID(A1,1,2)とすると、「11」でなくて「0.」が取り出されます。
内部的には、11:15は0.46875いくつってシリアル値で保持しているからです。


> 実は取り出す元の文字というのは11:15というような数字なんです。

シリアル値の11:15から11時の「数値」を取り出すなら、=HOUR関数使うのが真っ当です。

MID関数使いたいなら=TEXT(対象セル, "hh:mm")とかで文字列にしとくとか。

投稿日時 - 2016-10-28 15:17:09

ANo.3

訂正(^^;

誤:少数
正;小数

投稿日時 - 2016-10-28 15:12:22

ANo.2

演算した結果が「11:15」と表示されるなら、それは文字列ではなく時間のシリアル値です。
詳細な説明は省略しますが、時間のシリアル値とは、0時を0、24時を1とした少数です。
例:12時なら0.5、11:15なら0.46875

残業時間の計算ですよね。
あなたが恐らく次にぶつかるのは残業時間が24時間を超えた時の表示です。
「25時間の残業時間なのに1:00と表示される!?」

そんな時は、残業時間のセルの書式をユーザー定義で[hh]:mmとしてください。25時間の残業時間がちゃんと25:00と表示されます。

で、この時「25」を取り出すにはHOUR関数では駄目です。以下の様にしましょう。

=INT(J34*24)

投稿日時 - 2016-10-28 15:10:02

ANo.1

 時間の加算で11:15になったのなら、その11:15自体も時間のデータなのですから、11(時間)を取り出す場合は

=HOUR(J34)

15(分)

=MINUTE(J34)

になります。

投稿日時 - 2016-10-28 12:51:46

あなたにオススメの質問