web-dev-qa-db-ja.com

時間データを入力するときにユーザーに特定の形式を使用するように強制するにはどうすればよいですか?

特定のスプレッドシートのユーザーが軍用時間で時間データを入力していることを確認する必要があります。一部の人々がコロンを省略しているのを見つけました、そしてそれは問題を引き起こしています。セルの範囲に特定のフォーマットを強制する方法はありますか?

5
Sarah

私はExcel2010を使用しているので、Excel2003のどこに同等のオプションがあるのか​​わかりません。

  1. 制限するセルを選択します。
  2. 適切な数値形式「hh:mm」でセルをフォーマットします。
  3. [データ]リボン(メニュー、多分?)で、[データ検証]を選択します。
  4. [設定]、[検証基準]で、次のように設定します。
    Allow = Time
    空白を無視=はい
    データ=間
    開始時間= 0:00
    終了時間= 23:59:59
    (愚かなことは「24:00未満」を受け入れません)
  5. ユーザー「エラーアラート」、設定:
    スタイル=停止
    タイトル=時間入力
    エラーメッセージ=コロンを使用してhh:mm形式で時間を入力してください。
  6. 「OK」を押します。
5
Hand-E-Food

古い投稿ですが、これはGoogleの検索に役立つ可能性があります(私はExcelの専門家でもありません)

  1. カスタムフォーマットでセルをテキストとしてフォーマットする00\:00
    これにより、ユーザーは「:」なしでセルに軍用時間を入力できます。

  2. 次の数式を使用して、セル(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の間であるかどうかがチェックされます。

2
OverStacked

私は同じことを使用して軍用時間を制限していますが、データ検証では太い指の全体(コロンの後の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に切り捨てるか、エラーメッセージを表示する必要があります。

0
Mike

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")も編集可能である必要があります。
0
Rajesh S