LoginSignup
1
1

More than 1 year has passed since last update.

時間を分にする方法

Posted at

経路時間を表にまとめる際「1時間18分」など日本語入力されているものを
時間が長い・短い順にしようとしてフィルタをつけると 「思う感じに並び替えられれない」
そこで分に直して計算した列をつけようと思って調べたのでメモ。

#計算工程

セルに「1時間18分」と、半角数字と漢字で時間、漢字で分が入ってる場合、分に戻すには
1. セルに入力されてる文字列から「時間」と表示される前までの数値をとってくる
2. 1の後、『「時間」の後ろ』から『分』が出てくるまでの数値をとってくる
3. 1に60かけて2と足し合わせる
といった工程をすれば良い。

#前提として

大前提として例外処理は考えずにスタートする。とりあえず関数組み合わせてみてその後に考えられる入力パターンを考慮する
1つ目 文字列の左からX文字をとってくる関数はLEFT()。
引数は2つで第一引数は対象の文字列、第二引数は文字数。
LEFT("1時間15分",2)
とすると「1時」がとってこれる。なお、LEFT(1時間,2)とするとエラーとなるので、文字列は""でかこっておく必要がある。
2つ目 右からX文字をとってくる関数はRIGHT()。
使い方はLEFTと同じで引数の指定も(対象文字列,文字数)
なお、LEFTとRIGHTの第二引数は省略可能だが省略したときに得られるのはLEFTは先頭1文字、RIGHTは最後1文字。
3つ目「時間」「分」が出てくるまでを指定しないといけないのでFIND()を使う
FINDの引数は3つで第一が指定したい文字列、第二が対象文字列(分に戻したい対象セル)、第三引数が開始位置
第三引数は省略でき、デフォルトは1が指定されている。
FIND("時間",A2)とする「2」と返ってくる。

#本題

セルA2に「1時間18分」と入っているとする。
・工程1「時間」までの数値をとる
B2を計算結果が表示されるセルとする。セルB2に
LEFT(A2,FIND("時間",A2)-1)
と入力すると1が返ってくる。
・工程2 時間の後ろから分までの数値をとる
1文字目から考えると「"時間"が出てから文字をとっていって"分"が出る前までの文字をとる」だが、
工程2でやりたいのは単純に考えると 「分の部分の数値をとりたい」 なので右から3文字とって分を消せばいい
そこでB2に
LEFT(RIGHT(A2,3),2)
と入力する。RIGHTで右から3文字とってとってきた「XX分」の左2文字をとる。
そうすると18が返ってくる。
・工程3 とってきた時間と分を足して計算
B2に
LEFT(A2,FIND("時間",A2)-1)*60+LEFT(RIGHT(A2,3),2)
とすれば78が得られる。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1