如何将for next循环中的日期放在excel的单元格中

Posted

技术标签:

【中文标题】如何将for next循环中的日期放在excel的单元格中【英文标题】:How to put dates from a for next loop in cells of excel 【发布时间】:2015-01-10 00:41:12 【问题描述】:

我目前正在尝试在 excel 中做一个简单的 for next 循环。我正在处理日期,所以我声明了开始日期和结束日期。我只需要在不同的单元格中显示这两个日期中包含的日期。

我只使用整数得到了这个,但我还没有得到日期。

我用 MsgBox 进行了测试,它可以工作(按 Enter 键)直到到达最后一个日期(结束日期),但我无法将它放在一系列单元格中,可能解决方案很简单,但我花了很多时间在这... 请帮帮我

这在我的代码中

Sub looping()

Dim fecha_ini As Date
Dim fecha_fin As Date
Dim conteo As Date
Dim rango_inicio As Range


fecha_ini = #1/1/2015#
fecha_fin = #1/15/2015#

Set rango_inicio = Sheets("Sheet1").Range("a1")

For conteo = fecha_ini To fecha_fin

    Range("A" & 1).Value = conteo

Next conteo

【问题讨论】:

【参考方案1】:

试试这样的..

不要将 Range 设置为 A1,只需使用带有变量的 .Cells 循环而不是您当前使用的数字来设置值。 即 .Cells(row, col) 而不是 .Range("A" & 1)

sub Looping()
Dim lRow As Long
Dim fecha_str As String
Dim fecha_date As Date

    For lRow = 1 to 15 

        fecha_str = "1/" & lRow & "/2015"
        fecha_date = CDate(fecha_str)
        Sheets("Sheet1").Cells(lRow, "A").Value = fecha_date

    Next lRow
End Sub

【讨论】:

这应该提供一些循环和构建字符串的想法,它会起作用,但@Jeeped 提供的解决方案更符合目的。我留下这个答案是因为它可能会提供有用的信息。【参考方案2】:

应该这样做:

Sub looping()

Dim fecha_ini As Date, fecha_fin As Date, conteo As Variant, rango_inicio As Range, i As Integer

fecha_ini = #1/1/2015#
fecha_fin = #1/15/2015#
i = 1
Set rango_inicio = Sheets("Sheet1").Range("a1")
For conteo = fecha_ini To fecha_fin
    Cells(i, 1).Value = conteo
    i = i + 1
Next conteo

End Sub

我添加了一个计数器“i”,并让 For 循环使用 Cells(row, column) 而不是 Range(...) 将值分配给单元格。

【讨论】:

【参考方案3】:
'=============================================================
'using for each

    Sub looping()
        Dim fecha_ini As Date, fecha_fin As Date, conteo As Date
        Dim rango_inicio As Range, D As Long
        fecha_ini = #1/1/2015#
        D = DateDiff("d", #1/1/2015#, #1/15/2015#) + 1
        For Each rango_inicio In Range("A1:A" & D)
            rango_inicio.Value = fecha_ini
            fecha_ini = fecha_ini + 1
        Next
    End Sub
'=============================================================
'using while wend or do while loop 

   Sub looping2()
        Dim fecha_ini As Date, fecha_fin As Date, conteo As Date
        Dim D&, i&
        fecha_ini = #1/1/2015#
        D = DateDiff("d", #1/1/2015#, #1/15/2015#) + 2
        i = 1
        While i <> D
            Cells(i, 1).Value = fecha_ini
            fecha_ini = fecha_ini + 1
            i = i + 1
        Wend
    End Sub

【讨论】:

【参考方案4】:

如果日期是连续的,.DataSeries 会比循环更有效。

Sub no_looping()
    Dim fecha_ini As Date, fecha_fin As Date

    fecha_ini = #1/1/2015#
    fecha_fin = #1/15/2015#

    With Sheets("Sheet1").Range("A:A")
        .Cells(1, 1) = fecha_ini
        .DataSeries Rowcol:=xlColumns, Type:=xlChronological, _
          Date:=xlDay, Step:=1, Stop:=fecha_fin, Trend:=False
    End With
End Sub

.Cells(1, 1) 指的是您正在处理的任何范围内的第一个单元格。这需要播种第一个值以开始系列。如果您正在处理 Z99:Z999,那么 .Cells(1, 1) 将指代 Z99。

【讨论】:

我更喜欢这个而不是我的解决方案。这比通过将其与变量连接并将其转换为日期来构建字符串要好得多。这也更符合 OP 形式,看起来就像他的意图。

以上是关于如何将for next循环中的日期放在excel的单元格中的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA:错误 Goto 语句在 For-Loop 中不起作用

将两个项目放在 for 循环中的逻辑问题?

Java中For循环中的GoTo Next迭代

附加在 for 循环中生成的 pandas 数据帧

for 循环中的 try-except 块跳过 NEXT 迭代?

java将list集合中的for数据循环添加到String数组中