• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル マクロ)

エクセルマクロの時間外計算方法と取り消し線の作成方法

このQ&Aのポイント
  • エクセルのマクロを使用して、指定した時間外の日付の計算を行いたいです。
  • 具体的な作業として、同一日付の8:00から17:00以外の時間外のまとめをし、各日の最初の時間と最後の時間を取得し、他の時間には取り消し線を引きたいです。
  • マクロを使用して、同一日付の時間外の計算や取り消し線の作成を効率的に行いたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.1

こんにちは。 (# 『時刻』、、、に関する処理、ということでいいのですよね?) > 例で 『 時間の下に× 』を書いて見ましたが、これが取り消し線を実行した感じの時です 例示では、F:G列が×になっていたり、×(取消線)の位置が説明通りにはなっていないようですので、 説明文をこちらで解釈したものを元にしてお応えします。 期待されているものと、こちらの理解が一致していない可能性もありますので、 期待通りの結果が得られない場合は、補足欄にでも、より具体的な説明を書いてみてください。 修正点がハッキリと理解できれば、修正のお手伝いはします。 ' ' /// Sub Re8514242()   Dim vTemp   Dim vMin   Dim vMax   Dim c As Range   Dim nBtmRow As Long   Dim nB As Long   Dim i As Long ' ' ◆注意)1行めがタイトル行であること、が動作条件です。   nBtmRow = Cells(Rows.Count, "D").End(xlUp).Row   nB = nBtmRow   vTemp = Cells(nB, "D")   For i = nBtmRow To 1 Step -1     If Cells(i, "D") <> vTemp Then       Rows(nB + 1).Insert       With Cells(nB + 1, "A").Resize(, 6)         .FormulaR1C1 = Array("『最初と最後の時間』", , , , _           "=min(R[" & i - nB & "]C:R[-1]C)", "=max(R[" & i - nB & "]C:R[-1]C)")         .Value = .Value         vMin = .Cells(5)         vMax = .Cells(6)       End With       For Each c In Range("E:F " & i + 1 & ":" & nB)         If c > vMin And c < vMax Then c.Font.Strikethrough = True       Next       vTemp = Cells(i, "D")       nB = i     End If   Next i End Sub

nyanko_sensei12
質問者

お礼

先質問の件 空白がある為 そこを計算しているという事が分かり解決致しました 続けて質問を書き込みできないようなのであと少し修正などがいる為cj_mover様が組んで頂いたマクロ文を示し再投稿で質問させて頂きます お時間ありましたらまた回答お願い致します この度は大変助かりました ありがとうございました 一応質問しようかなと思っているのは 自分が決めた時間帯 例 8:00~17:00以外の時間帯だけの取得 16:50などは取得しないようにしたいのです

nyanko_sensei12
質問者

補足

cj_mover様 ご回答ありがとうございます 大変助かります 私にマクロを組める能力が無い為お手数をおかけします ほぼ理想どうりの動きが再現できました 詳細に説明しますと縦に並んだ ・『 D 』セルの『同一日付』内の ・『 E 』と『 F 』の時刻の比較 その『 D 』セルの『同一日付』が終わる下に1行挿入し『最初と最後の時間』 その1行挿入し『最初と最後の時間』と書き込みした行の『 E 』と『 F 』のところに 『同一日付』内の『 E 』と『 F 』の最初の数字(時間)と最後の数字(時間)を書き込み 『 それ以外の時間 』には数字の上にーを引き《 エクセルの[ CTRL ]+数字の[ 5 ] 》で 引ける取り消し線 ーを引くまでは私の理想どうりです エクセルで1行目をcj_mover様が◆注意)1行めがタイトル行であることとされているので 1行目を空白挿入した後に 『 D 』セルに『同一日付』『 E 』と『 F 』に17:10 17:15など3行ほど打ち込み作成して頂いたマクロをエクセルで実行して頂くとお分かりになると思いますが 例を書きます 1行目  空白 2行目 (ABCセルには他の文章があります)2012/7/10(Dセル)17:10(Eセル)17:20(Fセル)  3行目 (ABCセルには他の文章があります)2012/7/10(Dセル)17:20(Eセル)17:50(Fセル)   4行目 (ABCセルには他の文章があります)2012/7/10(Dセル)17:30(Eセル)17:40(Fセル)  5行目 空白セル挿入→『 A 』セルに『最初と最後の時間』と書き込み その行の17:10(Eセル)17:50(Fセル) 6行目 次の『同一日付』との空白 7行目 空白セル挿入→『 A 』セルに『最初と最後の時間』と書き込み その行の0:00(Eセル)0:00(Fセル)  8行目 次の『同一日付』と時刻 ・ ・ と続きますが この場合の7行目の書き込みと計算が必要ありません.. 私に能力が無い為 どう修正すればいいか分からず再度お伺い致します 申し訳ありません

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

「……は何ですか?」とか「……で合っていますか?」というのは質問、「……したいです」というのは業務委託です。ちょっと、あんまりです。QA サイトの趣旨に立ち返ってください。

すると、全ての回答が全文表示されます。

関連するQ&A