Excelのマクロにて30分単位の計算方法についてご存知の方宜しくお願いします。
8:01~8:30のデータを8:30に変換
8:31~9:00のデータを9:00に変換
という様に30分単位で時間の切り上げ計算
8:00~8:29のデータを8:00に変換
8:30~8:59のデータを8:30に変換
という様に30分単位で時間の切り捨て計算
セルにCEILING(A1,"0:30")やFLOOR(A1,"0:30")を使用して記述しても良かったのですが
パターンが多すぎてセルに記述する事が出来ませんでした。(文字数制限の為)
ので、マクロでの記述方法をご存知の方宜しくお願いします。
No.2ベストアンサー
- 回答日時:
要はマクロでワークシート関数が使えればいいという感じ?
Application.WorksheetFunction.Ceiling
Application.WorksheetFunction.Floor
でどーかな?
この回答への補足
失礼しました。
Application.WorksheetFunction.Ceiling
Application.WorksheetFunction.Floor
を使用して作成する事ができました。
Worksheets("sheet").Range("A2").Value = Application.WorksheetFunction.Floor(Worksheets("sheet").Range("A1").Value, Worksheets("sheet").Range("B1").Value)
でエラーになっていたのは書いていた位置がずれていました。
申し訳ございません。
ありがとうございます。
書き込みありがとうございます。
早速実行してみたところ、オブジェクトがありませんとでてしまい
使い方がよく分かりません。
もしよろしければ参考コードを記述していただけないでしょうか?
下記コードでテストしてみました。
Worksheets("sheet").Range("A2").Value = Application.WorksheetFunction.Floor(Worksheets("sheet").Range("A1").Value, Worksheets("sheet").Range("B1").Value)
A1にテスト用の時間(8:01)
B1に0:30
を入れて実施してみました。
No.3
- 回答日時:
'基本形として・・・
'Cells("A1")に出社時刻を入れ
'Cells("A2") に = 出社(A1)
'Cells("A3")に出社時刻を入れ
'Cells("A4") に = 出社(A3)
'って感じでどうでしょうか?
'なお下のソースは標準モジュールにかいてください。
Function 退社(pTime As Date) As Date
Dim pMin As Long
Dim pHr As Long
Dim RT As Date
pMin = CLng(Split(Format(pTime, "hh:mm"), ":")(1))
pHr = CLng(Split(Format(pTime, "hh:mm"), ":")(0))
If pMin = 0 Then
RT = CDate(pHr & ":" & "00")
ElseIf pMin > 0 And pMin <= 30 Then
RT = CDate(pHr & ":" & "00")
Else
RT = CDate(pHr & ":" & "30")
End If
退社 = RT
End Function
Function 出社(pTime As Date) As Date
Dim pMin As Long
Dim pHr As Long
Dim RT As Date
pMin = CLng(Split(Format(pTime, "hh:mm"), ":")(1))
pHr = CLng(Split(Format(pTime, "hh:mm"), ":")(0))
If pMin = 0 Then
RT = CDate(pHr & ":" & "00")
ElseIf pMin > 0 And pMin <= 30 Then
RT = CDate(pHr & ":" & "30")
Else
RT = CDate(pHr + 1 & ":" & "00")
End If
出社 = RT
End Function
書き込みありがとうございます。
時間を分割して条件で分岐すれば一番簡単だったかもしれません。
関数にこだわりすぎていて気づきませんでした。
ありがとうございます。
No.1
- 回答日時:
「パターンが多すぎて…」と言う所が引っかかります。
8時台は切り上げだけど、9時台は切り捨てで、12時台はそのまんま……。
の様な意味ですか?
文字数制限に引っかかると言うのは相当な事だと思います。
もう少し詳細な情報があれば、回答もしやすいのですが。
回答ありがとうございます。
説明が不足していて申し訳ございません。
>8時台は切り上げだけど、9時台は切り捨てで、12時台はそのまんま……。
>の様な意味ですか?
その様な意味です。
現在勤怠のシステムを作成しています。
旨く説明が出来ないので例を書き込みます。
例
切り上げの場合
出社間
8:00前に出勤していた場合は、8:00
20分遅刻をしていた場合は(8:20)30分単位で計算するので8:30
切捨ての場合
退社時
18:20にあがった場合は、30分単位で計算するので18:00
という様な計算をしたいです。
>文字数制限に引っかかると言うのは相当な事だと思います。
そうですね。パターンが多すぎて困っています。
夜勤の人、日勤の人、遅刻をした人、半休を使用した人、などなどの
パターンがある為、セルの文字数制限に引っかかってしまいました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
歩いた自慢大会
「めちゃくちゃ歩いたエピソード」を教えてください。 長時間でも長距離でも結構です。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
vba 時間の引き算 例えば 15:00から16:15の間の時間は1時間15分ですが、vbaのコード
Visual Basic(VBA)
-
時間計算、30分以上を切り上げ、未満を切り下げ
Excel(エクセル)
-
VBAで時間の型と計算方法教えてください
Excel(エクセル)
-
-
4
vba セルに入力した時間をマクロで受け取るには?
Excel(エクセル)
-
5
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
6
VBAでダブルコーテーション入りの数式をセルにセットしたい
Visual Basic(VBA)
-
7
名前をつけて保存した後、元のファイルに戻るには
その他(コンピューター・テクノロジー)
-
8
VBAのIF分で時間指定の条件式の書き方
Visual Basic(VBA)
-
9
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
10
ユーザーフォームのラベルに日付を表示させる方法があればお願いします。出来ればコード書いていただけると
Visual Basic(VBA)
-
11
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
「彡」って文字はなんという文...
-
VS 2008(VB.NET)
-
セル内の文字列が日本語か英語...
-
ExcelVBA実行後に時々落ちる
-
Symfowareでのデータ型変換につ...
-
std::stringからLPCWSTR型への変換
-
COBOLによる全角・半角混...
-
「彅」という文字のエンコード
-
JIS → S-JIS コード変換するには
-
漢字の振り仮名を取得したい
-
特殊記号
-
EBCDICをASCIIに変換したい
-
数字5桁文字コード?
-
10進数→2進数への変換
-
byte配列の内容をstringにコピ...
-
C#で16進数からASCIIへの変換の...
-
S-JIS → JIS コード変換するには
-
2バイト文字をJEFからSJISに変...
-
error C2679 がとれません><
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
「彡」って文字はなんという文...
-
セル内の文字列が日本語か英語...
-
VS 2008(VB.NET)
-
ExcelVBA実行後に時々落ちる
-
std::stringからLPCWSTR型への変換
-
英数字を含む文字列(0-9,A-Z)...
-
画像データ(png)をcsvファイル...
-
COBOLによる全角・半角混...
-
latin-1 (ISO-8859-1)への変換
-
2バイト文字をJEFからSJISに変...
-
sedで日本語の置換方法について
-
Symfowareでのデータ型変換につ...
-
ふりがなをアルファベット化す...
-
VisualBasic6からVB2005に移行...
-
フォームのコントロールのバッ...
-
「髙(はしごたか)」を文字コー...
-
C++でEUC-JPをSJISに変換したい。
-
Excel vba で1と10を正確に判断...
-
error C2679 がとれません><
おすすめ情報