「タイムスタンプの秒まで集計したいのに、表示が時分までしかない……」
フォームの回答データやサーバーログを扱っていると、時刻から「秒」だけ取り出したい場面ってありますよね。セルには「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:00 | 0 |
| 6:00:00 | 0.25 |
| 12:00:00 | 0.5 |
| 18:00:00 | 0.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:45 | 14:32:00 | 45秒を切り捨て |
| 9:00:00 | 9:00:00 | もともと0秒→そのまま |
| 18:15:59 | 18:15:00 | 59秒を切り捨て |
フォームの回答時刻やシステムログなど、秒まで記録されるデータを分単位に揃えたいときに便利です。
2. 2つの時刻の差を秒単位で計算する
「開始から終了まで何秒かかった?」を計算するパターンです。時刻の引き算だけだと時刻形式のまま返ってくるので、秒数に変換します。
=(B2-A2)*86400
時刻の差に86400を掛けると、秒数に変換できます。86400は1日の秒数(24×60×60)です。
| 開始時刻(A列) | 終了時刻(B列) | 数式の結果 | 意味 |
|---|---|---|---|
| 14:32:00 | 14:32:45 | 45 | 45秒 |
| 9:00:00 | 9:01:30 | 90 | 1分30秒 |
| 10:00:00 | 10:05:00 | 300 | 5分 |
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$2 | 0 | 配信開始 |
| 19:05:30 | =(A3-$A$2)*86400 | 330 | オープニング終了 |
| 19:30:00 | =(A4-$A$2)*86400 | 1800 | 第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) |
|---|---|---|---|
| 45 | 40 | 50 | 50 |
| 14 | 10 | 20 | 10 |
| 25 | 20 | 30 | 30 |
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関数の値は「シートが再計算されたとき」にだけ更新されます。初期設定では「変更時のみ」なので、放置していると秒の値は変わりません。
リアルタイム更新を求めるなら、再計算頻度を変更する必要があります。
- 「ファイル」メニューを開く
- 「設定」を選ぶ
- 「計算」タブをクリック
- 「再計算」で「変更時と毎分」または「変更時と毎時」を選択
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 |
|---|---|---|
| 関数名 | SECOND | SECOND |
| 配列対応 | 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関数との組み合わせまで広げてみてください。
