[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『vbaで30分⇒0.5に変換』(まこ)
セルCに10:30と書いてあれば10.5に変換するマクロを作成しています。
毎回最終行が違うのでCUNTAを使用して変数Bにいれて
do whileでAとBを比較させてループさせる予定です。
30分⇒0.5に変換は
= DAY(A1) * 24 + HOUR(A1) + MINUTE(A1) / 60
上記の式を入れた後、セルの書式で標準に設定で可能です。
で今回の質問ですが
セルC の10:30を取得して計算し
また、セルCに戻す作業をするにはどうすればよいのでしょうか?
Sub Macro1() ' ' Macro1 Macro ' ' Dim a As Integer Dim b As Integer Dim c As Integer Dim d As Integer a = 1 b = WorksheetFunction.CountA(Range("C:C")) Range("c" & a) = "= Day("c" & a) * 24 + Hour("c" & a) + Minute("c" & a) / 60 Columns("C:C").Select Selection.NumberFormatLocal = "G/標準" End Sub
これだけでもOKですか?(ROUGE) '---- With Range("C1", Range("C" & Rows.Count).End(xlUp)) .Value = Evaluate("=TRANSPOSE(TRANSPOSE(IF(" & _ .Address & "="""","""",TEXT(" & .Address & ",""[h]:mm"")*24)))") .NumberFormatLocal = "G/標準" End With
時刻を表すシリアル値を時間単位の数値に変換するには、24倍すればOK。 Range("c" & a)へ、計算式を入力し、時間を取得し、計算式をクリアして 定数として入力する、という手順をお考えのようですが、直接C列の値×24倍 の値を入力しても良いように思われます。 また、繰り返しもFor〜Nextループがシンプルか。 Sub Macro1() Dim a As Long Dim b As Long b = WorksheetFunction.CountA(Range("C:C")) For a = 1 to b Range("c" & a) = Range("C" & a) * 24 Next a Range("C:C").NumberFormatLocal = "G/標準" End Sub (みやほりん)(-_∂)b
(まこ)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.