- ベストアンサー
セルの日時から時間のみ マクロ
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
サンプルマクロを作ってみました。 「朝礼」だけでなく「昼礼」「夕礼」を追加し、それぞれ開始時刻を15:45、9:30、22:30、所要時間を10分、15分、20分とします。 対象範囲は4列目~31列目までです。 C列の開始時刻と、D-Cの値=所要時間が一致しているか確認し、一致していたら文字列をI列に表示します。 Sub Sample() sMessage = Array("朝礼", "昼礼", "夕礼") 'I列に入れる文字列 sStart = Array("15:45", "9:30", "22:30") '開始時刻 nMin = Array(10, 15, 20) '所要時間(分) For nRow = 4 To 31 sSta1 = Format(Cells(nRow, 3).Value, "h:mm") 'C列の開始時刻 nMin1 = Int((Cells(nRow, 4).Value - Cells(nRow, 3).Value) * 1440) For i = 0 To UBound(sMessage) '開始時刻と、所要時間が一致しているか確認 If (sStart(i) = sSta1) * (nMin(i) = nMin1) Then 'I列に文字列代入 Cells(nRow, 9).Value = sMessage(i) Exit For End If Next i Next nRow End Sub
その他の回答 (2)
- mt2015
- ベストアンサー率49% (258/524)
15時なのに何故朝礼? それは良いとしてマクロでやらなきゃいけない理由がないならセル式の方が楽です セルI12に↓の式でどうでしょう =IF(AND(INT((D12-C12)*1440)=10,TEXT(C12,"h:mm")="15:45"),"朝礼","")
補足
この時間から仕事開始の人もいまして(^_^;) 回答ありがとうございます。 しかしやはりマクロの方が助かります。 関数を入れるセルが多くなってしまうためブックを開く際重くなってしまいます。 また今回は例で朝礼にしていますが 他にもきまった時間で入れたい文字があるので できればマクロがいいです。 よろしくお願いします。
- foomufoomu
- ベストアンサー率36% (1018/2761)
エクセルの日付のシリアル値は、基準日(1900年1月1日だったと思う)からの日数が整数部で、それ未満の時間が小数部で記録されています。 時刻だけを比較したいなら、小数部だけを取り出して比較すればよいです。小数部を取り出す数式は =A1-INT(A1) です
お礼
まさにやりたかったことができました。 ありがとうございました。