スプレッドシートのSECOND関数で時刻から「秒」を抽出|切り捨て・経過秒数・NOWとの組み合わせまで

スポンサーリンク

「タイムスタンプの秒まで集計したいのに、表示が時分までしかない……」

フォームの回答データやサーバーログを扱っていると、時刻から「秒」だけ取り出したい場面ってありますよね。セルには「14:32:45」と入っているのに、欲しいのは「45」だけ。手作業で抜き出すのは現実的ではありません。

そんなときに使うのが、スプレッドシートのSECOND関数です。時刻データから「秒」の部分だけをサッと取り出せます。

この記事では、SECOND関数の基本構文から、シリアル値の仕組み・秒の切り捨て・経過秒数の計算・NOWやARRAYFORMULAとの組み合わせまで、実務でそのまま使えるパターンを徹底解説します。HOUR・MINUTE関数との使い分けも比較表で整理しますよ。

スプレッドシートのSECOND関数とは?時刻から「秒」を取り出す基本

SECOND関数は、時刻データから「秒」の部分を整数で返す関数です。読み方は「セカンド」で、英語の「Second(秒)」がそのまま名前になっています。

たとえばセルに「14:32:45」と入っていれば、SECOND関数は「45」を返します。返ってくるのは0から59までの整数です。ちょうど0秒なら0、59秒なら59ですね。

機能はシンプルですが、使い道は意外と広いです。

  • タイムスタンプから秒単位のデータを取り出して分析する
  • 秒を切り捨てて「分」単位に丸める
  • 2つの時刻の差を秒数で計算する
  • フォーム回答の秒間隔を集計する
  • 配信動画のチャプター時刻を秒数で算出する

SECOND関数は、TIME関数の逆操作にあたります。TIME関数は時・分・秒から時刻データを作る関数です。TIME関数が「組み立て」なら、SECOND関数は「分解」ですね。HOUR関数(時を取り出す関数)やMINUTE関数(分を取り出す関数)と兄弟のような関数です。

SECOND関数の基本構文と引数

基本構文

=SECOND(時刻)

引数は1つだけ。HOUR関数MINUTE関数と同じく、とてもシンプルです。

引数の説明

引数必須/任意説明
時刻必須「秒」を取り出したい時刻データ。セル参照・TIME関数・文字列形式(”14:32:45″)・日時シリアル値などが使える

具体例で確認

実際に動きを見てみましょう。

セルの値数式結果
14:32:45=SECOND(A2)45
20:49:59=SECOND(A3)59
0:15:00=SECOND(A4)0
2025/3/21 14:32:45=SECOND(A5)45
=SECOND(TIME(11,40,59))59
=SECOND("20:49:30")30
=SECOND("2:49:30 PM")30

TIME(11,40,59) は11時40分59秒を意味します。そこから SECOND で「秒」を取り出すと59ですね。文字列の "20:49:30" を直接渡しても、ちゃんと30が返ります。日時(日付+時刻)が入ったセルからでも秒の部分だけ取り出せます。これも便利なポイントです。

TIP

実務ではセル参照を使うのが一番確実です。「=SECOND(A2)」のように、時刻が入ったセルを指定するのが基本の使い方ですよ。

シリアル値で理解するSECOND関数の仕組み

SECOND関数を使いこなすうえで、知っておくと差がつくのが「シリアル値」の考え方です。

スプレッドシートは内部で時刻を「24時間=1」とする小数で管理しています。表面的には「14:32:45」と表示されていても、裏側では数字として扱われています。

時刻シリアル値(小数部分)
0:00:000
6:00:000.25
12:00:000.5
18:00:000.75
23:59:59約0.99999

1秒分のシリアル値は 1 / 86400 でおよそ0.00001157です。1日には24時間×60分×60秒で86400秒含まれるからですね。

この理屈を知っていると、次のような実務テクニックの意味がスッと理解できます。

=(B2-A2)*86400

これは時刻の差を秒数に変換する数式です。引き算で得られるのは小数のシリアル値なので、86400を掛けると秒数になります。

NOTE

SECOND関数は、このシリアル値を受け取って「秒の成分」だけを切り出して返します。日付付きの値(2025/3/21 14:32:45)を渡しても、秒の部分(45)だけが取り出されるのはこのためです。

実務で使えるSECOND関数の活用パターン7選

ここからは実務で役立つ組み合わせパターンを7つ紹介します。コピペしてそのまま使えますよ。

1. 秒を切り捨てて「分」単位に丸める

タイムスタンプに秒まで記録されているけれど、分単位で十分という場面は多いです。TIME関数と組み合わせれば、秒だけをゼロにできます。

=TIME(HOUR(A2),MINUTE(A2),0)

この数式のしくみはこうです。HOUR(A2) で「時」、MINUTE(A2) で「分」をそのまま残し、秒を0に固定しています。

いくつかの時刻で結果を確認しましょう。

元の時刻(A列)数式の結果処理内容
14:32:4514:32:0045秒を切り捨て
9:00:009:00:00もともと0秒→そのまま
18:15:5918:15:0059秒を切り捨て

フォームの回答時刻やシステムログなど、秒まで記録されるデータを分単位に揃えたいときに便利です。

2. 2つの時刻の差を秒単位で計算する

「開始から終了まで何秒かかった?」を計算するパターンです。時刻の引き算だけだと時刻形式のまま返ってくるので、秒数に変換します。

=(B2-A2)*86400

時刻の差に86400を掛けると、秒数に変換できます。86400は1日の秒数(24×60×60)です。

開始時刻(A列)終了時刻(B列)数式の結果意味
14:32:0014:32:454545秒
9:00:009:01:30901分30秒
10:00:0010:05:003005分

TIP

差の「秒の成分」だけが欲しい場合は =SECOND(B2-A2) を使います。これだと0〜59の範囲で返ります。「合計秒数」ではなく「秒の位だけ」を見たい場面で使い分けてくださいね。

3. TIME関数と組み合わせて秒だけ変更する

TIME関数を使えば、秒だけを別の値に差し替えられます。

秒を00秒にリセットする:

=TIME(HOUR(A2),MINUTE(A2),0)

14:32:45に使うと14:32:00になります。秒の切り捨てと同じですね。

秒を30秒に固定する:

=TIME(HOUR(A2),MINUTE(A2),30)

何時何分であっても「30秒ちょうど」に揃えます。14:32:45なら14:32:30、9:07:12なら9:07:30になります。スケジュール表で時刻を半端な秒に揃えたい場合に便利です。

秒だけ残して時・分をゼロにする:

=TIME(0,0,SECOND(A2))

14:32:45に使うと0:00:45になります。秒の成分だけを独立して扱いたい場面で使えますよ。

4. 秒数の累計を集計する(勤怠データ向け)

打刻時刻から秒数だけを集計して、退勤直前のラッシュを分析するパターンです。

=SUMPRODUCT(SECOND(A2:A100))

A2〜A100の打刻データから秒の部分だけを合計します。SUMPRODUCTを使うことで、SECOND関数を範囲に対して一括適用できます。

たとえば「16時台の退勤時刻10件の秒の合計」が極端に大きい/小さい場合、特定の秒台に打刻が集中している可能性が見えてきます。

5. 特定秒台のレコードだけ抽出する

「30秒以降に打刻されたデータだけ抜き出したい」というケースで使えるパターンです。

=FILTER(A2:B100, SECOND(A2:A100)>=30)

FILTER関数と組み合わせると、A列の秒が30以上のレコードだけ抽出できます。

元データ(A列)元データ(B列)抽出されるか
14:32:45田中される(45≥30)
9:01:15佐藤されない(15<30)
10:30:30鈴木される(30≥30)

6. 経過秒数からチャプター時刻を生成する

ライブ配信の動画チャプターを「開始からの経過秒数」で算出するパターンです。

=(A2-$A$2)*86400

A2に配信開始時刻、A3以降に各セグメントの開始時刻を入れると、開始からの経過秒数が出ます。

時刻(A列)数式結果(秒)意味
19:00:00=$A$20配信開始
19:05:30=(A3-$A$2)*86400330オープニング終了
19:30:00=(A4-$A$2)*864001800第1章開始

7. 秒を切り上げ・切り捨て・四捨五入する

秒の処理に「10秒単位で丸めたい」というニーズもあります。

=TIME(HOUR(A2), MINUTE(A2), FLOOR(SECOND(A2),10))

FLOOR(SECOND(A2),10) で秒を10秒単位に切り捨てます。14:32:45なら14:32:40になります。

10秒単位の切り上げなら CEILING、四捨五入なら MROUND に差し替えれば対応可能です。

元の秒FLOOR(値,10)CEILING(値,10)MROUND(値,10)
45405050
14102010
25203030

HOUR・MINUTE・SECOND・TIME関数の使い分け早見表

SECOND関数には兄弟のような関数が2つあります。HOUR関数MINUTE関数です。さらに逆操作のTIME関数も合わせると、時刻データを自在に分解・再構成できます。

4関数の役割と戻り値

関数役割戻り値の範囲書き方
HOUR時を取り出す0〜23=HOUR(時刻)
MINUTE分を取り出す0〜59=MINUTE(時刻)
SECOND秒を取り出す0〜59=SECOND(時刻)
TIME時・分・秒から時刻を作る時刻シリアル値=TIME(時,分,秒)

「14:32:45」を3関数に渡した場合

数式結果
=HOUR("14:32:45")14
=MINUTE("14:32:45")32
=SECOND("14:32:45")45

HOUR・MINUTE・SECONDは時刻を「分解」する関数です。TIMEは「再構成」する関数ですね。3つを組み合わせれば、時刻の完全な分解と再構成ができます。

=TIME(HOUR(A2),MINUTE(A2),SECOND(A2))

この数式は A2 の時刻をそのまま返します。実用的には、一部の成分だけ変更したいときに使うテクニックです。

書式設定 vs SECOND関数 の使い分け

「秒を表示したくない」だけなら、SECOND関数を使う必要はありません。表示形式の設定だけで対応できます。

やりたいこと推奨アプローチ
表示だけ「秒なし」にしたい「表示形式 > 数字 > カスタム時刻形式」で HH:mm を選択
データそのものを「秒なし」に丸めたい=TIME(HOUR(A2),MINUTE(A2),0) で数式処理
秒だけ取り出して分析したい=SECOND(A2)
秒を別の値に差し替えたい=TIME(HOUR(A2),MINUTE(A2),30) のように TIME で再構成

表示と中身は別物だ、というのは関数を使うときの大事な視点です。集計や比較に使いたいなら数式で実データを変えましょう。見た目だけ整えたいなら書式設定で十分ですよ。

SECOND関数とNOW関数でリアルタイム秒表示

NOW関数と組み合わせれば、現在時刻の「秒」を取得できます。

=SECOND(NOW())

これで「今が何秒か」が表示されます。ストップウォッチ的な使い方や、最終更新時刻の秒表示などに便利です。

更新頻度の設定が大事

ただし注意点があります。NOW関数の値は「シートが再計算されたとき」にだけ更新されます。初期設定では「変更時のみ」なので、放置していると秒の値は変わりません。

リアルタイム更新を求めるなら、再計算頻度を変更する必要があります。

  1. 「ファイル」メニューを開く
  2. 「設定」を選ぶ
  3. 「計算」タブをクリック
  4. 「再計算」で「変更時と毎分」または「変更時と毎時」を選択

NOTE

スプレッドシートには「毎秒更新」の設定はありません。最短でも「毎分」までです。秒単位のリアルタイム表示が必要なら、Apps Script で1秒ごとに値を書き換える仕組みを作る必要があります。

カウントダウンタイマーの例

目標時刻までの残り秒数を表示する数式です。

=(B2-NOW())*86400

B2に目標時刻を入れておけば、残り秒数が表示されます。再計算頻度を「変更時と毎分」にすると、毎分ごとに更新されます。

ARRAYFORMULA・QUERYとSECOND関数の組み合わせ

スプレッドシートならではの組み合わせ技を2つ紹介します。

ARRAYFORMULA で列一括の秒抽出

複数行のデータに対して一気に SECOND を適用するには、ARRAYFORMULA を使います。

=ARRAYFORMULA(SECOND(A2:A100))

A2〜A100まで一気に秒だけ抽出してくれます。1行ずつ =SECOND(A2) を入れる手間が省けますよ。

新しい行が追加されたら自動で対応させたい場合は、範囲を A2:A のように開放しておきましょう。

=ARRAYFORMULA(IF(A2:A="","",SECOND(A2:A)))

IF(A2:A="","",...) で空白行に空白を返すことで、不要な「0」の表示を防げます。

QUERY関数で秒を条件にフィルタ

QUERY関数の中でも second() が使えます(QUERY構文内では小文字)。

=QUERY(A:B, "SELECT A, second(A) WHERE second(A) >= 30 LABEL second(A) '秒'")

この数式は、A列が30秒以降に打刻されたレコードだけを抽出します。さらにA列の値と秒数を表示し、LABEL で見出しを「秒」に変えています。

QUERY内では hour() minute() second() がそれぞれ使えます。時刻データの集計クエリにそのまま活用できますよ。

よくあるエラーと対処法

SECOND関数で出るエラーは、ほぼ #VALUE! です。原因と対処法をまとめました。

時刻として認識できない文字列を渡している

=SECOND("午後3時")

この書き方では #VALUE! になります。SECOND関数が受け付けるのは「14:32:45」のような時刻形式や、TIME関数の結果です。日本語の時刻表記には対応していません。

対処法: セルに正しい時刻形式(半角コロン区切り)で入力するか、TIME関数で時刻を作って渡してください。

「14時32分45秒」のような形式の文字列を扱いたい場合は、REGEXEXTRACT などで数字を抜き出して、TIME関数で組み立て直す方法もあります。

=SECOND(TIME(REGEXEXTRACT(A2,"(d+)時"),REGEXEXTRACT(A2,"時(d+)分"),REGEXEXTRACT(A2,"分(d+)秒")))

ダブルクォーテーションなしで直接入力している

=SECOND(14:32:45)

ダブルクォーテーションで囲まずに入力すると #VALUE! になります。スプレッドシートが「14:32:45」を時刻ではなく計算式(14÷32÷45のような扱い)として解釈してしまうためです。

対処法: =SECOND("14:32:45") のようにダブルクォーテーションで囲みましょう。

数値をそのまま渡している

=SECOND(45)

この場合、エラーにはなりませんが結果は「45秒」ではなく「0」です。スプレッドシートの内部では45がシリアル値(=45日後の0時0分0秒)として扱われるためです。

対処法: 時刻として扱うなら =SECOND(TIME(0,0,45)) としてください。これなら正しく45が返ります。

配列を直接渡している

=SECOND(A2:A100)

ARRAYFORMULA を併用しないと、配列をそのまま受け取れません。エラーが出る、または最初の1セルの結果だけしか返らないことがあります。

対処法: =ARRAYFORMULA(SECOND(A2:A100)) のように ARRAYFORMULA で囲んでください。

TIP

エラーの原因が分からないときは、まず対象セルの「データ型」を確認しましょう。表示形式メニューで「数値」にして、整数が出れば日付/時刻データ、文字列のままなら認識されていない状態です。

SECOND関数を使うときの注意点

最後に、SECOND関数を使うときに引っかかりがちなポイントを3つ整理します。

ミリ秒は切り捨てられる

SECOND関数は整数しか返しません。「14:32:45.678」のようなミリ秒付き時刻でも、秒の部分は「45」だけが返ります。ミリ秒の0.678は無視されます。

ミリ秒を扱いたい場合は、データが文字列なら RIGHT や SPLIT で抜き出す必要があります。

タイムゾーンに注意

NOW関数で取得する現在時刻は、スプレッドシートのファイルに設定されたタイムゾーンで返ります。海外のチームと共有するシートでは、思わぬズレが発生することもあります。

タイムゾーンの確認・変更は「ファイル > 設定 > タイムゾーン」から行えます。外部システム(API・ログファイル)から取り込んだUTC時刻を扱う場合は、日本時間に変換してから SECOND を適用しないと、表示と中身の秒がズレることがあります。

Excelとの互換性

スプレッドシートで作った SECOND を含むファイルを Excel で開くと、ほぼ同じ動作になります。ただし以下のポイントは違いがあります。

項目スプレッドシートExcel
関数名SECONDSECOND
配列対応ARRAYFORMULA で対応スピル機能(Excel 365 以降)
TIME関数の繰り上げTIME(0,0,90)=0:01:30同じ
QUERY内のsecond()使える使えない(QUERYなし)

ARRAYFORMULA や QUERY を多用したシートをExcelで開く場合は、対応関数への置き換えが必要なケースがあります。

まとめ

SECOND関数は、時刻データから「秒」の部分を取り出すシンプルな関数です。基本構文はもちろん、TIME・HOUR・MINUTE・NOW・ARRAYFORMULA・QUERY と組み合わせると、実務で役立つテクニックの幅がぐっと広がります。

この記事で紹介した内容をおさらいしましょう。

  • 基本: =SECOND(時刻) で0〜59の整数が返る
  • シリアル値: 時刻は「24時間=1」の小数。1秒=1/86400で内部管理される
  • 秒の切り捨て: =TIME(HOUR(A2),MINUTE(A2),0) で秒を0に揃えられる
  • 経過秒数: =(B2-A2)*86400 で時刻差を秒数に変換できる
  • TIME関数との組み合わせ: 時・分・秒を分解→再構成で秒だけ差し替え可能
  • HOUR・MINUTEとの違い: 3関数とも書き方は同じ。取り出す成分だけが違う
  • NOW関数: =SECOND(NOW()) で現在の秒。再計算頻度は最短で「毎分」
  • ARRAYFORMULA: =ARRAYFORMULA(SECOND(A2:A)) で列一括処理
  • QUERY: second() で秒を条件にしたフィルタが可能
  • エラー対処: ほぼ #VALUE!。文字列形式とダブルクォーテーション、配列対応に注意

タイムスタンプの処理や時刻データの加工で活躍する関数です。まずは =SECOND(A2) から試して、慣れてきたら ARRAYFORMULA や TIME関数との組み合わせまで広げてみてください。

タイトルとURLをコピーしました