特定のスプレッドシートのユーザーが軍用時間で時間データを入力していることを確認する必要があります。一部の人々がコロンを省略しているのを見つけました、そしてそれは問題を引き起こしています。セルの範囲に特定のフォーマットを強制する方法はありますか?
私はExcel2010を使用しているので、Excel2003のどこに同等のオプションがあるのかわかりません。
古い投稿ですが、これはGoogleの検索に役立つ可能性があります(私はExcelの専門家でもありません)
カスタムフォーマットでセルをテキストとしてフォーマットする00\:00
これにより、ユーザーは「:」なしでセルに軍用時間を入力できます。
次の数式を使用して、セル(EG E16)のデータ検証オプションをカスタムとして設定します
=AND(ISNUMBER(E16),(VALUE(LEFT(TEXT(E16,"00\:00"),2))>=0),(VALUE(LEFT(TEXT(E16,"00\:00"),2))<=23),(VALUE(RIGHT(TEXT(E16,"00\:00"),2))>=0),(VALUE(RIGHT(TEXT(E16,"00\:00"),2))<=59))
検証では、それが数値であるかどうか、次に時間値のHH側が0から23の間であるかどうか、そしてMMが0から59の間であるかどうかがチェックされます。
私は同じことを使用して軍用時間を制限していますが、データ検証では太い指の全体(コロンの後の3桁)を受け入れ、正しくない時間を表示します。たとえば、時間に13:44と入力し、誤って13:444と入力したい場合は、時間がかかるだけでなく、20: 24
その20:24時間は、私が時間(13)に入力したものに、444分を時間:分(7:24)に変換したものなので、目的の代わりに13:44それは13: + 7:24または20:24を与えます。
これで、計算と、Excelが444分を7:24に変換する理由を理解しましたが、データ検証エントリでは発生しないはずです。これはデータ検証であるため、444を44に切り捨てるか、エラーメッセージを表示する必要があります。
VBA(マクロ)が指定された列または範囲の時間入力を処理することをお勧めします。このマクロは任意の4桁の値を適切な値に変換します時間形式。
_Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
Dim xHour As String
Dim xMinute As String
Dim xWord As String
Application.EnableEvents = False
xWord = Format(Target.Value, "0000")
xHour = Left(xWord, 2)
xMinute = Right(xWord, 2)
On Error Resume Next
Target.Value = TimeValue(xHour & ":" & xMinute)
On Error Resume Next
Application.EnableEvents = True
End Sub
_
N.B。
1725
_と入力すると、マクロはそれを_05:25:00 PM
_に変換します。Range ("A:A")
は編集可能です。Range("A1:A10")
またはRange("B10:C10")
も編集可能である必要があります。