dポイントプレゼントキャンペーン実施中!

いつもお世話になります。

Windows XP、Excel 2003です。
シート上の時刻表示を普通の十進法に直す必要が生じました。
例えば「8:30:00(表示書式が"h:mm"なので実際の表示は"8:30")」→「8.30」という具合です。
(「8.5」ではありません)
手動でやる場合、
":"→"."に置換
".00"→""に置換
表示書式を"0.00"に変更
この手順でうまくいったので、(データが大量にある関係で)マクロを組みました。

Selection.Replace What:=":", Replacement:=".", LookAt:=xlPart
Selection.Replace What:=".00", Replacement:="", LookAt:=xlPart
Selection.NumberFormatLocal = "0.00"

ところが2行目でエラーが出るので、調べてみると、1行目の実行後にデータが次のようになっていました。
元データ「20:00:00」→実行後のデータ「8.00.00 PM」
とりあえず、1行目の後に右側3文字を削除するコードを入れ、「PM」の場合は、さらに最後に12を足して、その措置でデータはすべて変換できたのですが、1行目で、
元データ「20:00:00」→実行後のデータ「20.00.00」
という風にする方法はないか、ご存知の方がいらっしゃいましたらよろしくお願いいたします。

A 回答 (2件)

エクセルの時刻形式「20:00:00」を「20.00.00」にするのであれば


>普通の十進法
とは言わないと思いますが、A1に「8:30」があるとき
 =TEXT(A1,"hh.mm.ss")
で「08.30.00」に変換できます。VBAなら
 Range("A1").Value = Format(Range("A1"),"hh.mm.ss")
になります

でも実行結果は「文字列」になりますよ。(「.」が複数含まれるので数値にはなりません)。それで当初の「十進法に直す」は満たしていないのではないでしょうか。

「8:30」→「8.30」のように「分」までの形式なら
 Range("A1").Value = Format(Range("A1"),"hh.mm")
結果は「数値」になりますが…

なお蛇足ですが「8:30」を普通の十進数である「8.5」にしたい場合は、元の時刻が入力されたセルの値に「24」を掛けます。すると時刻を十進表示に変換できます。
    • good
    • 0
この回答へのお礼

的確な表現でなくてすみません。

Selection.Value = Format(Selection.Value,"hh.mm")
Selection.Replace What:=".00", Replacement:="", LookAt:=xlPart
Selection.NumberFormatLocal = "0.00"

この方法でできました。
ありがとうございました。

お礼日時:2008/03/13 15:02

こんにちは。



>元データ「20:00:00」→実行後のデータ「20.00.00」

単に、
Selection.NumberFormatLocal = "h.mm.ss"

ということではありまんせか?

もし、それを実際の数値にしたいのでしたら、

Sub Test2()
Dim c As Range
  With Selection
    For Each c In .Cells
      c.Value = c.Text
    Next
  End With
End Sub
    • good
    • 0
この回答へのお礼

いつもお世話になります。

c.Value = c.Text

こうすればいいんですね。
参考になりました。
ありがとうございました。

お礼日時:2008/03/13 15:06

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