LoginSignup
0
1

More than 5 years have passed since last update.

ExcelFunction//数値を時間に直す関数

Posted at

そんなに難しい話ではないんです。与えられた数値をゴニョゴニョして...とかではなくて、下請けならではの悩みの解決法の一つ。

取引先が投げてくるくそデータシート

取引先から渡されたExcelシートの時間が「3桁または4桁の整数」というとんでもないシートがありました。オペレータのお姉さん(想像)が入力するのに、:を入れないくていいから早いんですよねきっと。と思いましたが、こちらはそれを時間として処理しなくては行けないという問題。
私が関わる前は人間が目で確認して、表示を並べ替えてました。ふた桁行ならなんとかなるんですが、取引が増えて3桁行になってくると∩(・∀・)∩ モウ オテアゲダネ。先方は一方的に送って、「やり方は御社に任せます」という信頼関係のかけらもないお言葉...ということで私に話が回って来ました

関数はこちら

時間設定関数
Function try_time(bc_time)
Dim Time_h, Time_m
'-------------------------------------------------------------
'4桁数字による時刻表示に対応する関数
'3桁の場合は1字をHourとし、4桁の場合は2字をHourとする
'HourとMinuteに分割して、hh:mm型に変換して返す
'If文内で、24時以降の場合、翌日のデータとするため1日追加する
'-------------------------------------------------------------
            If Len(bc_time) = 3 Then
                Time_h = Left(bc_time, 1)
            Else
                Time_h = Left(bc_time, 2)
            End If
            Else
            End If
            Time_m = Right(bc_time, 2)
            try_time = Format(Time_h & ":" & Time_m, "hh:mm")
End Function

何しているか

  1. 先方が送ってくるデータの時間セル(「0945」とか「2330」とか)を関数に取り込み
  2. 3桁なら左1桁、4桁なら2桁をTime_h(h=hour)に取り込む
  3. 残り2桁はTime_m(minute)に入れる
  4. Time_hとTime_mを":"で繋いで、フォーマットをhh:mmして返す

この取引先とのデータのやりとりには必須の関数

になってしまいました。なんかもっと綺麗にできそうですが、そんなに処理時間を食うわけでもないのでまあいいかと

0
1
0

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
0
1