2017-11-20 10 views
0

これは他の言語でも可能ですが、私は初心者であるVBAを使用する必要があります。開始日と終了日を知っている日付を記入してください

sheet1に日付を選択する2つのリストがあります(すべてが月末です)。選択されると、開始日と終了日です。開始日はシート2のA1にコピーされます。私は、列Aの行を終了日まで動的に埋める方法があることを願っています。いずれにしても、VBAまたはExcelのどちらの方法を使用してもかまいません。ありがとう!

enter image description here

+0

可能な複製EOMONTHのシリーズ](https://stackoverflow.com/questions/45256792/expand-start-date-to-end-date-with-series-of-eomonths) – Jeeped

答えて

1

をVBAでSTARTDATEでシート1に、としてSheet1のB2におけるB1と終了日

With Worksheets("sheet2").Columns("A") 
    .Cells.Clear 
    .Cells(1) = Worksheets("sheet1").Cells(1, "B").Value2 
    .DataSeries Rowcol:=xlColumns, Type:=xlChronological, Date:=xlDay, _ 
       Step:=IIf(Worksheets("sheet1").Cells(2, "B").Value2 > Worksheets("sheet1").Cells(1, "B").Value2, 1, -1), _ 
       Stop:=Worksheets("sheet1").Cells(2, "B").Value2 
    Intersect(.Cells, .Cells.Parent.UsedRange).NumberFormat = "m/d/yyyy" 
End With 
[日付を終了するために開始日を展開する
1

あなたはヘルパーの列を使用して、VBAせずにこれを行うことができます。あなたが日付の完全なリストを持っているあなたの新しいスプレッドシートでは、この数式をその隣に置きます。使いやすさを考慮して、startDateendDateという名前のセルを使用しました。列Aは、全て日付である

=IF(AND(A5>=startDate,A5<=endDate),A5,"") 

、式日付期間が調整されるように/消滅現れる列Bにあります。

enter image description here

編集:@ScottHoltzmanが鋭く指摘したように、あなたが実際にヘルパー列を使用してスキップすることができます。 A5では、=startDateは、A6でこれを入れて、フィルダウン:!!の= IF(A5+1<=endDate,A5+1,"")

+3

*列Aの行を終了日まで動的に塗りつぶします* *なぜ列Aに式を直接書き込まないでください。 'A5 = startDate'。それから 'A6 = IF(A5 + 1 <= endDate、A5 + 1、" ")' –

+0

@ScottHoltzman - ...私はそれを考えなかったので!良いアイデア! (答えとして追加するか、自分の投稿に編集することができます) – BruceWayne

+0

投稿を編集する@BruceWayne –

関連する問題