データ入力時間の記録(Microsoft Excel)
Vinayは、データ入力にExcelワークシートを使用します。情報は列Aに入力され、Vinayは、列Aに入力された値の隣の列Bに、値がいつ入力されたかを示す時間を自動的に追加する方法を望んでいます。
このタスクを実行するには、いくつかの異なる方法があります。 1つ目は、列Bで隣接するセルを選択し、Ctrl + Shift +を押して、手動で時間を入力することです。 (それはセミコロンです)。このショートカットは、セルに現在の時刻を入力します。もちろん、このアプローチの問題は、自動ではなく、実装に余分な動きとキーストロークが必要になることです。
より良いアプローチは、数式を使用して時間を入力することです。 NOW関数は現在の日付と時刻を返し、次のようにセルで使用できます。
=NOW()
もちろん、この単純な数式は、ワークシートが再計算されるたびに更新されます。つまり、この関数は、列Aに値を入力するたびに現在の時刻を返します。これは、前の時刻を更新したくないため、望ましくありません。次のように、数式を使用して列Aに何かがあるかどうかを確認できます。
=IF(A3="","",IF(B3="",NOW(),B3))
問題は、このような数式がワークシートに循環参照を導入することです。これにより、さまざまな課題が発生します。より良いアプローチは、列Aに何かが入力されるたびに自動的に実行されるマクロを作成することです。データ入力に使用されるワークシートのタブを右クリックし、コンテキストメニューから[コードの表示]を選択します。 Visual Basic Editorにワークシートのコードウィンドウが表示されたら、これをウィンドウに入力します:
Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim rCell As Range Dim rChange As Range On Error GoTo ErrHandler Set rChange = Intersect(Target, Range("A:A")) If Not rChange Is Nothing Then Application.EnableEvents = False For Each rCell In rChange If rCell > "" Then With rCell.Offset(0, 1) .Value = Now .NumberFormat = "hh:mm:ss" End With Else rCell.Offset(0, 1).Clear End If Next End If ExitHandler: Set rCell = Nothing Set rChange = Nothing Application.EnableEvents = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub
マクロを配置すると、列Aのセルに何かを入力すると、列Bの隣接するセルに日付と時刻が含まれます(時刻のみを表示するようにフォーマットされます)。列Aの何かを削除すると、列Bの隣接するセルもクリアされます。
また、NumberFormatプロパティの設定を変更して、日付の表示方法を反映できることにも注意してください。例として、「hh:mm:ss」を「h:mm:ssAM / PM」に変更することで、12時間形式に変更できます。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(3116)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。
linkデータ入力時間の記録。