• ベストアンサー

Excel(エクセル)の時刻表示

Excelエクセルで 「3時」(全角)→「3:00」(半角) 「3時半」→「3:30」 と自動変換したいです。 反対の変換方法ならマニュアルとかに載っているのですが・・・ 全角の数字&漢字を「時刻」と認識させる方法がわかりません。 よろしくお願いいたします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 一例ですが・・・ ↓の画像のようにA列の文字列をB列に表示させるようにします。 B1セルの書式設定の表示形式は「時刻」にしておいてください。 そしてB1セルに =IF(MID(A1,FIND("時",A1)+1,3)="",TIMEVALUE(SUBSTITUTE(A1,"時",":")),TIMEVALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"時",":"),"分",""),"半",30))) という数式をいれてオートフィルで下へコピーしています。 これで希望に近い形にならないでしょうか? 尚、エラー処理はしていません。 以上、参考になれば幸いですが、 他に良い方法があれば読み流してくださいね。m(__)m

miruo_o
質問者

お礼

画像付きアドバイス、 ありがとうございます(*- -)(*_ _)ペコペコ 数式の意味はサッパリですが Excel初心者の私にも時刻変換ができたので とっても嬉しかったです( ´艸`)

その他の回答 (6)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.7

こんにちは。 必要なものは、「半」と「時間のみ」の場合だけのはずです。しかし、シリアル値のことを想定すれば、以下のようにしたら、短く書けるかな? =(SUBSTITUTE(ASC(A1),"半","30分")&REPT("0分",ISTEXT(A1)*(RIGHT(A1,1)="時")))*1 セルの書式は時間型に直してください。

miruo_o
質問者

お礼

変換できました! アドバイス ありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

これまでに提案されている式はいずれも3時とか3時半のケースで3時15分のように入力されている場合は含まれておりませんね。 3時15分と入力すれば自動的に時間として取り込まれますので問題がないのですが、それらも含めたケースで式を考えることが必要でしょう。 A列に問題の時刻が入力されているとして、B1セルには次の式を入力して下方にオートフィルドラッグし、その後に列を選択して「セルの書式設定」から「表示形式」で時刻の中から望みの形にすればよいでしょう。 =IF(COUNTIF(A1,"*時半")=1,(LEFT(A1,FIND("時半",A1)-1)&":30")*1,IF(COUNTIF(A1,"*時")=1,(LEFT(A1,LEN(A1)-1)&":00")*1,A1))

miruo_o
質問者

お礼

変換できました! アドバイス ありがとうございました。

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

日付・時刻シリアル値というのを知ってますか。質問の書きぶりから知らないのでは。エクセルのシートに3:00と入れるとセルの値は0.125 =3/24になります。これを時刻の表示形式の時刻(3:00:00)や3時0分 分(h時m分)を適用して、そう見せています。 >「時刻」と認識させる方法 は時刻シリアル値のまま残さないとならないわけです。 全角文字で表示する、ユーザー定義の[DBNUM1] もあるが〇.一二五になる。 結論として 表示形式で全角3時にする方法はない。 ーーー 3時半を3:30でよいなら、、別セルになるが、=JIS(TEXT(A1,"h時m分"))で出来る。 ーー 「半」がネックになる。 30分を半に置き換える。 =SUBSTITUTE(JIS(TEXT(A2,"h時m分")),"30分","半") === 質問は上記の逆なのだが 半を30分に置き換える。 E列      F列 3時0分  0.125 3時30分 0.145833333 F1の式は =TIMEVALUE(SUBSTITUTE(D1,"半","30分")) TIMEVALUE関数を使うとき、E1、E2は全角の文字でもうまく行くようで助かる。 あとは、F列に通常の時刻の表示形式を設定して3:00, 3:30になる。

miruo_o
質問者

お礼

アドバイスありがとうございます。 日付・時刻シリアル値というのはまったく知りませんでした。 初心者には難しい文章でした(。ノω\。)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.1です。 何度もごめんなさい。 前回のように難しく考えなくて良かったみたいです。 B1セルの数式を =TIMEVALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"時",":"),"分",""),"半",30)) にしてみてください。 どうも何度も失礼しました。m(__)m

miruo_o
質問者

お礼

前回と今回の難しさの違いが あまりわからないのですが、 こっちの式を使わせてもらいます。 アリ(´・ω・)(´_ _)ガト‐ゴザマス♪

回答No.3

「三時半」などというのはないのでしょうか? もしあったら、関数だけで対応するのはSUBSTITUTEの嵐になって大変そうです。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

VBAを使わないとすれば、 直接当該領域を変換することはできません。 作業領域を使います。作業領域の結果を「値の貼付け」で、貼り付けてください。 =SUBSTITUTE(SUBSTITUTE(A2,"半","30"),"時",":")*1 セルの書式を、「13:30」などにしてください。

miruo_o
質問者

お礼

変換できました! 画像付きアドバイス ありがとうございました(*- -)(*_ _)ペコペコ