プロが教える店舗&オフィスのセキュリティ対策術

A1セルに8時00分~17時30分というように表示させたい場合、ユーザー定義でh""時"mm"分""~"h"mm"分"として、セルに、8:00.17:30と入力すると8時00分~8時00分と表示されます。どこで間違っていますか?winXPエクセル2003です。

A 回答 (8件)

> 8:00.17:30と入力する


この入力で、二つの時刻値を表す事ができるというのは初耳ですが、
うまくいかないようなら、二つのセルにそれぞれ別の時刻値を入力し、表示させたいセルの中で、文字列として連結する計算式を記述するようにしてみては。
    • good
    • 0

 エクセルのセルは、一つの値しか持てません。


 8:00と17:30の二つの値を、一つのセルで持たせるのは元々無理なんです。

 どうしても表示したい場合は、セルの書式設定をユーザー定義にし
00":"00"~"00":"00
このように設定します。
さらにセルに、
 08001730
と打ち込めば、
 08:00~17:30
このように表示させることはできます。
    • good
    • 0

できないと思います。



> どこで間違っていますか?

あえて書くなら、
「1つのセルに2つの時刻表示」をせずに、
別セルに分けたほうがいいと、思います。
    • good
    • 0

入力用と表示用で別のセルにしたらどうでしょうか


A1に表記のように入力されているとき
別のセルで
=TEXT(TIMEVALUE(LEFT(A1,FIND(".",A1)-1)),"h時mm分")&"~"&TEXT(TIMEVALUE(MID(A1,FIND(".",A1)+1,5)),"h時mm分")
とするとか

この回答への補足

入力してみましたが、表示は8時00分になりました。やはりできないのでしょうか。

補足日時:2006/02/18 13:41
    • good
    • 0
この回答へのお礼

文字列にすると出来ました。ありがとうございます。

お礼日時:2006/02/18 16:15

1つのセルに8時00分~17時30分と入力しなければならない理由は何故でしょうか?


ただ単に、時間表示として~を使いたいだけであって見た目だけなら、先に回答された方の意見である別々のセルに入力する方法が一番だと思います。

8時00分 ~ 17時30分 を3つのセルに入力して外枠以外の縦罫線を付けなければ良いと思います。
またメニューバーのツールのオプションで枠線の表示のチェックを外します。上記の方法を実行してみて印刷プレビューや印刷をすれば1つのセルに入力したように見た目は見えます。
この方法が時間も文字列ではなく時間(数値)として判断できます。
    • good
    • 0

#4>入力してみましたが、表示は8時00分になりました


エラーになることはあっても、"8時00分"になることはないんじゃないかと("~"がなくなることがない)と思うので
なにか勘違いされていると思います。
私の勘違いだったらすみません。
    • good
    • 0

こんにちは。



>表示は8時00分になりました。やはりできないのでしょうか。
#4さんの式は、A1 が、書式が文字列になっているのが条件はずです。

表示形式ではできませんね。時間入力は、時間型の入力は、シリアル値に自動変換されてしまいます。Excelは、Wordなどと違ってセル単位で表現するので、#3さんのおっしゃるように、二つのセルに入れて、片方に、「~h時mm分」と表示形式を作ればよいかと思いました。

元のご質問の意図は、大量にあるから簡単に入力できないのかということかしら?

Excelに慣れてくると、もう少し何とかならないのかなっていって安易な方法ほ求めて質問を出す人がいますが、それを追求していくと、度が過ぎることがありますので、あまり、それは考えないほうがよいです。それよりは、自分の入力を速めたほうがよいです。

私は、回答がマクロが中心なので、一応マクロで考えてみました。

注意: 予め入力するセルの領域は、文字列にしていなければ、変換できません。

'シートモジュール
'-----------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'文字列書式 8:00.17:30 の様式を、8時間00分~17時間30分に直す、
'イベント・ドリブン型プロシージャ
  Dim abuf As Variant
  Dim bbuf As Variant
  Dim a As String
  Dim b As String
  '1がA列, 2がB列...
  If Target.Column <> 1 Then Exit Sub
  Application.EnableEvents = False
  For Each c In Target.Cells
   If VarType(c.Value) = vbString Then
     If InStr(c.Text, ".") = 0 Or InStr(c.Text, ":") = 0 Then Exit Sub
     Ar = Split(c.Text, ".")
     On Error GoTo ErrHandler
     If UBound(Ar) = 1 Then
      abuf = Split(Ar(0), ":")
      a = Format$(TimeSerial(CInt(abuf(0)), CInt(abuf(1)), 0), "h時間mm分")
      bbuf = Split(Ar(1), ":")
      b = Format$(TimeSerial(CInt(bbuf(0)), CInt(bbuf(1)), 0), "h時間mm分")
      If Not IsError(a & b) And a <> "" Then
        c.Value = a & "~" & b
      End If
     End If
   End If
  Next
ErrHandler:
  Application.EnableEvents = True
End Sub
    • good
    • 0
この回答へのお礼

文字列になってませんでした。やっとでできました。ありがとうございます。二つのセルに入力すれば簡単なんですが、どうしても、作成上、できなかったので悩んでいました。助かりました。

お礼日時:2006/02/18 16:17

エクセルのセルには1つの値しか入力できません。

文字列なら2つの値と判る語句当を入力できますが、数字ではできません。日付シリアル値・時刻値でも1つの値で、8時00分と17時30分のつの値を表せません。
そして表示形式は、数値(エクセルの通常の日付・時刻も数値)を対象にするもので、かつセルの1つの値を対象にするものです。ですからhh:mmも1セルの表示形式で2度書くと(ymdmは)同じ先出の時刻値を2度繰り返してしまいます。
数字なら1225と入れて##~##の書式設定で12~25のように見せられますが、この手も使えません。
エクセルの想定外のニーズです。
    • good
    • 0

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

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