よねさんのExcelとWordの使い方
»
エクセル2010基本講座:目次
»
データを入力する・連続データを入力する
»
連続した時刻の入力には注意が必要です
連続した時刻の入力には注意が必要です:Excel2010基本講座
2021/07/01
時刻のオートフィル
topへ
数値データと同じようにオートフィルを使うことができますが、時刻の場合には注意が必要です。
時刻を判定するような数式などで期待したような結果が得られないことが起こりえます。
計算や判定に使用しないような、
単に表示だけでよいようなケースではこの辺の注意は不要です
。
時刻の例を書いていますが、小数値では同じことが起こりえますのでご注意ください。
時刻のシリアル値は 「1/24」 の数値が 「1:00」となりますので、時刻は小数値になっています。
よって、以下のように30分単位での連続値をオートフィルで作成すると・・・・
A2に「1:00」 A3に「1:30」と入力し、A1:A3を選択してフィルハンドルをドラッグします。
30分単位で問題がなさそうですが・・・・?
B列にキーボードから「1:00」「1:30」「2:00」・・・と入力します。
そして、C2セルには =A2=B2 と数式を入れ、下方向へ数式をコピーします。
3か所ほど「同じ値では無い」と判定されました。
オートフィルで作成した時刻とキーボードから入力した時刻では異なったものになっていることがわかります。
見た目が同じなので困るのですが・・・
A,B列の表示形式を標準にして、表示桁数を多くとってみると違いが分かります。
最後の桁付近が異なっているのがわかります。
演算誤差?が出てきています。
フィル→連続データの作成を利用する
この方法が誤差のない時刻の連続値を入力する、最も容易な方法と思います。
B2セルにキーボードから 1:00 と入力します。
B2セルを選択して、[ホーム]タブの[フィル]→[連続データの作成]を選択します。
連続データで範囲で「列」にチェックを入れます。
種類は「加算」にチェックを入れます。
増分値に 0:30 と入力します。
停止値に 6:00 と入力します。
[OK]ボタンをクリックします。
連続データが入力できました。
手入力と比較しても同じとなり、誤差のない値を入力することができるのがわかります。
メモ帳を使って貼り付け直す方法
Excelでオートフィルを使って値を入力します。(上記で説明したようにこの時点では小数誤差を含んでいます。)
A列がオートフィルで入力しています。ここでは30分毎の例で示します。
A列の値をコピーしてメモ帳へ貼り付けます。
メモ帳に貼り付けた時刻をコピーして、Excelへ貼り付けます。
メモ帳経由で貼り付けることで手入力と同じになったようです。(Falseの箇所がTrueとなりました)
数式を使って時刻の連続値を作成する
A3セル以降には1分刻みの時刻が入力されています。
B3セルに
=TEXT((ROW(A1)-1)/(24*60),"h:m:s")*1
、C3セルに
=TIME(0,(ROW(A1)-1),0)
と入力して、数式を下方向へオートフィルでコピーします。
D3セルには =A3=B3 、E3セルには =A3=C3 、F3セルには =A3-B3=0 、G3セルには =A3-C3=0 と入力しています。
D1:G1セルには =COUNTIF(D3:D1443,FALSE) と入力してあり、Falseの数をカウントしています。
この結果から
TIME関数を使った数式では 1:13 のところでFalseとなっているのが分かります。
もう片方の
TEXT関数を使ったほうは すべてTRUEとなっています。
Falseとなった個所
結果としては、
TEXT関数を使って文字列で時刻を作成後に演算でシリアル値に直すのがよさそうです。
なお、TIME関数を使ったケースでは30分毎の場合はTRUEとなりました。
手入力の代わりに VBAで入力する例も追記しておきます。
Sub test()
Dim i As Long
For i = 1 To 1440
Cells(i + 2, 1).Value = DateAdd("n", i - 1, "0:0:0")
Next i
End Sub
よねさんのExcelとWordの使い方
|
エクセル2010基本講座:目次
|
データ/数式/関数の入力
|連続した時刻の入力には注意が必要です