• 締切済み

エクセルのTEXT関数の処理についての質問

画像の通りなのですが、16時30分 16:30をTEXT関数で以下のように処理しています。 TEXT(A1,"HH:MM:SS") A1の時刻で時:分:秒で分けて表示するものと思います。 時:分、時、分:秒、秒などの取り出しは問題ないのですが、分だけMM指定で取り出すと30となって欲しいところが01となっています(最下段の赤字)。30を取り出す方法を教えて頂きたいのですが。よろしくお願いします。

みんなの回答

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.7

>30を取り出す方法を教えて頂きたいのですが。 時刻のシリアル値は0以上1未満の小数になります。 1時間は1/24なので時間を除くには次の数式で良いでしょう。 =MOD(A1*24,1)/24 従って、分の値を文字列として取り出すには次の数式が分かり易いと思います。 =TEXT(MOD(A1*24,1)/24,"[mm]") 尚、時刻の表示形式で"[m]"または"[mm]"は60分以上のシリアル値に対しても分単位で表示しますので月を表す"m"または"mm"とは区別されます。

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.6

[No.2お礼]へのコメント、 》 考えてみるとHHとかSSがくっついていることがそれを意味するんだ 》 と明示しているわけでなるほどなあとも思えてきました。 》 エクセルの仕様って理屈や類推で考えては失敗するのであり、どこま 》 でもエクセルの仕様に寄り添うしかないのだなと思いました。 仰るとおりだと思います。 下記は参考情報です。 Excelヘルプ[日付または時刻として数値の書式を設定する] http://support.office.com/ja-jp/article/%E6%97%A5%E4%BB%98%E3%81%BE%E3%81%9F%E3%81%AF%E6%99%82%E5%88%BB%E3%81%A8%E3%81%97%E3%81%A6%E6%95%B0%E5%80%A4%E3%81%AE%E6%9B%B8%E5%BC%8F%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B-418bd3fe-0577-47c8-8caa-b4d30c528309 の中に、次の記述が"日曽利と"(?)あります。 》 "H" または "hh" コードの直後、または "ss" コードの直前に "m" を使 》 用した場合、Excel では、月の代わりに分数が表示されます。 逆に言えば "m" を単独で使用した場合、分数でなく月が表示されるという次第。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

=MINUTE(A6)  または =TEXT(MINUTE(A6),"00") を使ってみては。 =TEXT(MINUTE(A6),"00")は、まどろこしいだけだが。先頭の、0を落とさないなどの効果はある。 エクセルの時刻は、セルの値的には、日付シリアル値の小数点以下部分で 時刻だけ入れた16:35:00のように時刻だけをセルに入力した場合、うまく行かないようだ。私のWEBなど調べた範囲では、判らない。 ーー 参考 VBAではFormat関数があり 下記を実行するとうまく行くようだ。 A6セルとA15セルに 16:36:08 17:36:08 とあるとき(数式バー部でこう見える。入力は16:36:08) Sub test01() MsgBox Format(Range("A6"), "nn") MsgBox Format(Range("A15"), "nn") End Sub TEXT関数で「”nn””」を指定したが、うまく行かないようだ。

  • Chiquilin
  • ベストアンサー率30% (94/306)
回答No.4

「MM」だけだと「月(Month)」扱いとなります。 「16:30」は「1900年1月0日 16時30分」として扱われるので 「MM」を指定すると「1」が表示されます。 そもそも分だけ表示させたい時ってどんな時ですか? 時間も含めて全て分表記([mm])というならまだ分かりますが。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.3

文字列です。

  • Mathmi
  • ベストアンサー率46% (54/115)
回答No.2

"MM"だとn分ではなくn月を取り出すという意味になってしまっています。(YYYY/MM/DD HH:MM:SSで順に年/月/日 時間:分:秒を取り出す) 時刻型のデータから分を取り出す場合、MINUTE関数を使います。 [=MINUTE(A1)]とするか、二桁の文字列に統一したいなら[=TEXT(MINUTE(A1),"00")]とすれば、上手く行くと思います。

skmsk1941093
質問者

お礼

回答ありがとうございます。MMが月を意味するということで思うような結果になっていなかったことがわかりました。ただ、それでは”HH:MM:SS"の時にはそれは分を表すことになるということがすっきりと腑に落ちない感じですが、考えてみるとHHとかSSがくっついていることがそれを意味するんだと明示しているわけでなるほどなあとも思えてきました。これって間違ったまま気づかない場合もあるんじゃないかと思いますが。エラーは出ませんし、深く細かいところでどっちでも大過なしというところで間違い続けている場合もあるんじゃないでしょうか。エクセルの仕様って理屈や類推で考えては失敗するのであり、どこまでもエクセルの仕様に寄り添うしかないのだなと思いました。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

分だけ取り出す式は以下を使ってみて下さい。 =MINUTE(A1)

skmsk1941093
質問者

補足

回答ありがとうございます。この出力結果はどのようなものでしょうか。数値とか時刻とか...ですが、また私は数値の実体とセルの表示形式の関係もやや理解していません。例えばセルの表示形式を数値から文字列に変えたとき、その数値の表現が文字列化されるだけなのかということです。ここでの私の希望としては文字列なのですが。

関連するQ&A

  • excelで指定した範囲の時刻をランダム入力させたい!

    excelで指定した範囲の時刻をランダム入力させたい! excelの関数で悩んでいます。。 具体的には 「午前10時30分00秒から午前10時45分00秒の時刻をランダム入力させたい」です。 表示形式は「h:mm:ss」です。 よろしくお願いいたします。

  • EXCELでミリ秒を計算する方法

    ミリ秒単位まで入力された時刻表記のセルがあります。 このセルの値をミリ秒に換算する方法を教えてください。 【セル書式】hh:mm:ss.000 ※hhは00固定 【例】 値は、「00:01:02.123」 これを、1*60000+2*1000+123=62123(ミリ秒) というように算出したいのです。 計算式は、「mm*60000+ss*10000+000(ミリ秒部分)」です。 VBAはやったことがないので、出来れば、関数等で出来る 方法をお願いします。

  • 131071秒を関数で日付と時間にするには?

    数値(秒)をエクセルで時間に換算しています。 24時間を超えた時、「○日HH:MM:SS」 のようにエクセルで表記できますか? 32767は、9:06:07 65535は、18:12:15 ここまでは書式設定を時間([$-F400]h:mm:ss AM/PM)にするだけで済みます 更に数値行を追加し、 131071 262143 524287 1048575 ... 9007199254740990 となったとき、どうしたら良いでしょうか? お分かりの方、どうぞよろしくお願いいたします。 ○日HH:MM:SS、 ○年○日HH:MM:SS のように関数をコピペして計算表示していきたいです。 Windows8pro Office2013のエクセルです。よろしくお願いいたします。

  • 時間単位の変換for Excel

    2:59:00(hh:mm:ss)を2:59(mm:ss)に変換する関数や方法をご教授頂いてもよろしいでしょうか? 2分59秒と入力していたつもりが2時間59秒00秒になっていました、、、 書式の変更や、値に変換などしてますがプロセスが導けていません。。。 何卒よろしくお願いします。

  • Excelの質問なんですけどいい関数や方法があったら教えてください。

    Excelの質問なんですけどいい関数や方法があったら教えてください。 A列に駅に到着する時刻、B列に電車の時刻表を乱数を用いてつくりました。 駅に到着したらすぐ次の電車に乗るとします。このときC列に乗る電車の時刻の隣にA列の時刻を入れて下の表のようにしたいのですが、どうすればいいですか??   ---駅到着時刻---電車の時刻表-- ------A------------B----------C- 1-0時03分09秒--0時02分12秒 2-0時08分20秒--0時05分34秒 3-0時11分04秒--0時07分55秒 4-0時22分59秒--0時10分02秒 5-0時25分26秒--0時11分45秒 6-----.--------0時15分12秒 7-----.--------0時17分13秒 8-----.--------0時19分01秒 9-----.--------0時24分22秒 10----.--------0時27分08秒              ---駅到着時刻---電車の時刻表-- ------A------------B----------C- 1-0時03分09秒--0時02分12秒 2-0時08分20秒--0時05分34秒--0時03分09秒 3-0時11分04秒--0時07分55秒 4-0時22分59秒--0時10分02秒--0時08分20秒 5-0時25分26秒--0時11分45秒 6-----.--------0時15分12秒--0時11分04秒 7-----.--------0時17分13秒 8-----.--------0時19分01秒 9-----.--------0時24分22秒--0時22分59秒 10----.--------0時27分08秒--0時25分26秒

  • Excel 時間の計算について

    文字列でA1に秒数があります(例:327.00) これを分(hh:mm:ss)に直したいのですが、60で割り ユーザー定義でhh:mm:ssとしたら「10:48:00」となってしまい、正しく計算できません・・・ 基本的なところだとは思いますが、どうか教えて下さい

  • エクセル2000で数字を時間表示に変換する方法

    簡単なことかもしれませんが、例えば60と入力したセルがあって、これを時刻表示で(hh:mm:ss)と書式を設定したセルに(00:60:00)と表示できるような関数がわからないんです。たくさんデータがあるので式をいれて、やりたいのですがどうすればいいのでしょうか。

  • VB6で定時刻処理

    VB6で1日1回、決まった時間に処理をさせたい、という場合、どういう方法で行うのが一番いいのでしょうか。 私が現在やっている方法は、 1分ごとにタイマーイベントを発生させ、その中で、現在の日時が指定の時刻だったら処理を起動する、という仕組みです。 しかし、これでは負荷状況によってはタイマーのイベントや、以降の処理が待たされ、時刻の判定をするタイミングで、すでに目的の時刻を過ぎてしまっているということが考えられます。 タイマーイベントが9:59:59秒に発生し、現在時刻を取りに行ったら10:00:00秒になっていたというようなケースです。 時刻の判断は、hh:mmのフォーマットで比較しているので、分の単位が違えば条件に合致しなくなります。 誤差範囲を設け、「現在の時刻-30秒 < 指定時刻 <= 現在の時刻+30秒」のような条件にすれば、ある程度回避できますが、1分以上待たされるようなケースでは対応できません。 このような状況を回避するにはどうしたらいいでしょうか。 処理を起動する時刻が可変なので、Windowsのタスクなどは使えないです。 ATコマンドをうまく使えばできるのでしょうか。 よろしくお願いいたします。

  • エクセルの関数を教えてください

    はじめまして。 お客様が店舗に来店された時間ごとの人数をつかみたいのですがどういう関数を使ってすればいいかおしえてください。A列に入店した時刻、B列に退出した時刻が年月日時分秒(数値はシリアル値)で書かれており、同じ時間を共有したお客様つまり入店して退出する間の時間が共通しているお客様の人数を1時間ごとに区切って数えたいと思いますがそういったことは可能でしょうか?分かりにくい質問かもしれませんが回答をよろしくおねがいします。 例:  入店時刻(A列)           退出時刻(B列)  2010年5月6日10時30分40秒    2010年5月6日11時52分56秒 →客Aとする 2010年5月6日11時45分12秒    2010年5月6日15時26分02秒 →客Bとする 2010年5月6日12時04分38秒    2010年5月6日14時09分55秒 →客Cとすると 10時台は1人、11時台は2人、12時台は3人、13時・14時台は2人、15時台は1人という感じです。

  • javaで時刻の判定

    String型のtimeに YYYY-MM-DD HH:MM:SS の形式である時刻が入っているとします. この時刻がYYYY年MM月DD日の20時00分00秒~23時59分59秒内であるかどうかを判定するにはどうしたらよいでしょうか? 文字列のままでは大小比較は困難な気がしますし、GregorianCalendar型もみてみたのですが、いまいち大小比較の仕方がわかりませんでした。 よろしくおねがいします

専門家に質問してみよう