• ベストアンサー

【EXCEL2013】文字を抜き出したい。

お世話になります。 例えば・・・ 『2017/5/23 16:55:00』(yyyy/m/d h:mm:00)となっている文字の内、 時間の『16』だけを抜き出したいのですが上手くいきません。 MIDを使ってもシリアル値が返されてしまい、 どのようにして良いのかが分かりません。 お手数ですが、ご存知の方、ご教授ください。 よろしくお願いいたします。

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

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

>MIDを使ってもシリアル値が返されてしまい、 >どのようにして良いのかが分かりません。 シリアル値を日付と時刻の表示形式で見せているためMID関数では次のようにしないと目的の16を切り出せません。 A1セルに2017/5/23 16:55:00と入力されているとして =MID(TEXT(A1,"yyyy/mm/dd hh:mm:ss"),12,2) 尚、切り出された値は文字列です。 数値化するには切り出された文字列に加減乗除をすれば良いでしょう。(+0、-0、*1、/1等で値に変化が無いこと)

Fujjy
質問者

お礼

お忙しい中、ありがとうございました。 大変、助かりました。

その他の回答 (5)

  • asciiz
  • ベストアンサー率70% (6825/9705)
回答No.6

『2017/5/23 16:55:00』と言うセルが、すでに日付形式(シリアル値)であるならば。 シリアル値から時の部分を取りだす hour 関数を使うだけです。 →「=hour(A1)」※A1 は上記値が入っているセルを指定してください もし、『2017/5/23 16:55:00』と言うセルが、テキスト形式であるならば。 一旦、テキストからシリアル値の時刻に変換してやります。その式はこちら。「=timevalue(A1)」 そしてその中から、時の部分を取り出せばいいので、関数をネストしてこうなります。 →「=hour(timevalue(A1))」 このようにすれば、何文字目から取り出さなきゃいけないとか、日時を構成している数字の桁数(1桁数字のゼロあり/なし)とかに左右されることなく、目的の時刻を得られます。

Fujjy
質問者

お礼

詳しいご説明をありがとうございました。 大変助かりました。

回答No.5

【補足】MID関数の利用は厳禁!  MID関数を利用すると、MID(XXX, 12,2)といわゆるマジックナンバー(特定の数字)を埋め込むことになります。当然に、MID(XXX, 13,2)もあり得る訳です。ですから、マジックナンバーの埋込みは、汎用性を損う上に後々の修正でも多大な原因発見の苦労を生じさせます。ということで、MID関数の利用は厳禁と考えられたがいいですよ。

回答No.3

Q、文字列の抜き出し。 A、方法は3つ。 1、専用の抜き出し関数=CutStr()を使う。 2、MID()を使う。 3、HOUR()又はFormat()を使う。 Public Function CutStr(ByVal Text As String, _             ByVal Separator As String, _             ByVal N As Integer) As String   Dim strDatas() As String      strDatas = Split("" & Separator & Text, Separator, , 0)   CutStr = strDatas(N * Abs(N <= UBound(strDatas))) End Function

Fujjy
質問者

お礼

ありがとうございました。 また、補足までいただき恐縮です。

  • sngPoi2
  • ベストアンサー率49% (475/953)
回答No.2

変数名 = hour( time ) time = yyyy/m/d h:mm:00形式の値(Variant型) で時間を取得出来ませんか?

Fujjy
質問者

お礼

ありがとうございました。 取得できました。 大変、助かりました。

  • sukeken
  • ベストアンサー率21% (1454/6647)
回答No.1

こんにちは。 日付がA1セルに入っていたとして、例えば、B1セルに =HOUR(A1) とすると、B1セルに、16と表示されます。 これでいけますか?

関連するQ&A

専門家に質問してみよう