我目前正在尝试为excel中的下一个循环做一个简单的操作。我正在处理日期,所以我宣布一个开始日期和结束日期。我只需要在不同的单元格中显示这两个日期中包含的日期。
我只用整数来得到这个,但是我还没有得到它。
我使用MsgBox进行了测试并且它正常工作(按回车键)直到到达最后一个日期(结束日期)但我无法将其放入一系列单元格中,可能解决方法很简单但是我花了很多时间在这...... 请帮帮我
这在我的代码中
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
答案 0 :(得分:1)
这应该这样做:
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”,并使用Cell(行,列)而不是Range(...)将For循环赋值给单元格。
答案 1 :(得分: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
答案 2 :(得分:1)
'=============================================================
'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
答案 3 :(得分:1)
如果日期是连续的,.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。