- ベストアンサー
VBAの日付について教えてください
VBA初心者です。 簡単な質問かもしれませんが、教えていただければと思います。 下記のように日付と時間が並んでいる場合に、営業日の最終注文の時間(B列)をF列にコピーしたいのですが、どうもうまくできません。 例えば、2008/1/15では17:10:00をF列にコピーして、2008/1/16では14:05:00をF列にコピーして・・・というマクロを作成したいのです。 どなたか知恵をお貸しください。 よろしくお願いします。 A B C D E F 受注時間 品名 個数 2008/1/15 10:50:00 ・ ・ ・ 2008/1/15 12:55:00 ・ ・ ・ 2008/1/15 15:05:00 2008/1/15 17:10:00 2008/1/16 8:52:00 2008/1/16 14:05:00 2008/1/19 11:10:00 2008/1/19 15:15:00 2008/1/21 9:20:00 2008/1/21 9:53:00 ・ ・ ・
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 もしNo2をマクロでと言うのなら、 Sub try() With Range("A2", Cells(Rows.Count, 1).End(xlUp)).Offset(, 5) .Formula = "=IF(A2<>A3,B2,"""")" .NumberFormat = "hh:mm:ss" .Value = .Value ' もしF列をF2以下に上詰めするのなら下記を有効にして下さい。 '.SpecialCells(xlCellTypeBlanks).Delete End With End Sub 現状はNo2の状態を数式ではなく値にしてます。 上詰めにするのなら適宜修正願います。 ご参考程度に。
その他の回答 (2)
- n-jun
- ベストアンサー率33% (959/2873)
F列にどのように表示していきたいのか、明確にされては? 例えば、 2008/1/15 17:10:00 と同じ行のF列に表示するなら、 F2 =IF(A2<>A3,B2,"") で下にフィルコピー・セルの書式で時刻にしてあげるだけですが・・・? そう言う事ではないんですよね?
- hige_082
- ベストアンサー率50% (379/747)
Sub Macro2() Dim i Range("A2", Cells(Cells(65536, 1).End(xlUp).Row, 5)).Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _ , Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _ False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin i = 2 Do Until Cells(i, 1) = "" If Cells(i, 1) <> Cells(i - 1, 1) Then Range("f65536").End(xlUp).Offset(1, 0) = Cells(i, 1).Text End If i = i + 1 Loop Range("A2", Cells(Cells(65536, 1).End(xlUp).Row, 5)).Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _ , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _ False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin End Sub こんな感じで
お礼
ありがとうございました。 思ったような作業ができました。 このような複雑な構文は思いもつかないので、非常にありがたく思っております。
お礼
シンプルで非常に参考になりました。 質問が分かりにくく失礼いたしました。 その中でも質問の意図をくみ取っていただき感謝しております。 本当にありがとうございました。