【IT】Excelで文字列「1時間2分34秒」を計算に使える時分秒「01:02:34」に変換する方法

上司からこんな課題

社内にパソコンがあって、WordやExcelが苦手な年長者がいる職場なら、その手の質問を受けることは珍しくない。

例えばあなたが「誰かパソコンができる人!」と部長室に呼ばれたとする。

入室すると、部長が難しい顔をしてパソコンを睨みつけている。

画面には2列しかない簡素なExcelシート。

A列には動画のタイトル、B列は動画の長さ(録画時間)が入力されている。

どうやらB列の合計時間を出したいが、書式が文字列なので足し算できないらしい。

さて、あなたはこのExcelシートで合計時間を出してあげる事ができるだろうか?

お手元にExcelがあるなら腕試しに挑戦してみて欲しい。

準備作業

まずはExcelを立ちあげて下記をコピー&ペーストしよう。

[A列]
動画
研修1
研修2
研修3
研修4
研修5
研修6
研修7
研修8
研修9

[B列]
長さ
1時間2分34秒
30分5秒
41分28秒
52秒
1時間37秒
19分13秒
2時間1分59秒
7分6秒
1時間41分50秒

値として貼り付け、1行目を中央揃えして薄い灰色で塗りつぶせば準備完了。

解き方は自由だ。

数式や関数を使っても良いし、VBAでプログラムを組んでも良い。

ただ、これが職場なら部長がすぐそばでこちらを凝視している。

あまり長くは待たせられないし、ネット(検索)が使えるとも限らない。

そのあたりを踏まえた上で、10分以内に解決できれば合格といったところだろう。

私のやり方

これが正解という訳ではないが、1つのやり方として紹介。

まずは置換を使ってB列の「時間」「分」「秒」をカンマと秒数に置き換える。

「時間」を置換
「分」を置換
「秒」を置換

3度の置換結果は次のようになる。

置換結果

次にカンマの位置で列を分ける。

カンマで区切る
カンマ区切りの設定
カンマで列を区切った状態

ここまでできれば終わりは近い。

あとはニコイチの列で掛け算して、全て足せばその行の合計時間は求められる。

秒単位の合計

この計算式を下にコピー。

式を下までコピー
各行の合計ができた

各動画の合計時間はこれで求まった。

ただし単位は秒のままだ。

計算や書式設定が使えるように、シリアル値に変換するのが妥当だろう。

シリアル値にする
式を下までコピー

シリアル値に変換できたので「セルの書式設定」から好みの表示形式を選ぼう。

右クリックメニュー
セルの書式設定
書式設定後

秒数よりも分かりやすい表示になった。

最後に、SUM関数で合計時間を出して完成。

最終合計時間を出す

合計時間は「7時間25分44秒」だ。

他にも方法は色々あるだろうが、部長が求めるのは「完璧な数式」ではなく「知りたい結果」なのでこれで十分。

笑顔の部長

こうして無事、部長室を出る事ができるのであった。

[補足] シリアル値とは

上で出てきた「シリアル値」について補足説明。

Excelでは日付や時刻を扱うのに「シリアル値」という小数表現が使われる。

「シリアル値」では整数部分が日数、小数点以下が時刻(時間)を意味する。

シリアル値の整数と小数点以下

24時間を1.0とし、12時間は0.5、6時間なら0.25という感じだ。

時間、分、秒からの計算式は以下のようになる。

シリアル値の変換例

今回の課題で出てきた「3754秒」はシリアル値だと0.0434490740740741になる。

3754をシリアル値に変換

文字列と違い、シリアル値なら足したり引いたりもできる。

小数だからだ。

シリアル値同士を足して、書式(表示形式)に従って出力すれば足された後の数になるという訳だ。

シリアル値は足し算できる

ちなみにExcelでは、文字として入力した日付や時刻は自動的にシリアル値に変換される。

試しに「2022/8/21」と入力して、そのセルの書式設定を開いたら、標準だったものが日付になっているはずだ。

なお標準に戻すと「44794」という値になるが、これは「1900/1/1」を起点とする経過日数。(Windowsの場合)

このあたりは知らなくても支障はないが、もし興味があれば少し調べることで、Excelの理解が深まるのではないだろうか。