Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 自动填充宏_Excel_Vba - Fatal编程技术网

Excel 自动填充宏

Excel 自动填充宏,excel,vba,Excel,Vba,我的任务是创建一个循环,用以下数据填充列: 列A应填充1到10000之间的数字, B列应填入今天的日期,并以数字递增, C列应填充一周中的一天数,以便每周重复1到7次, D列应填充从周一到周日的一周中的一天(文本) 我认为这可以通过一个For…Next循环来实现。更复杂的是日期。。。 你能告诉我怎么做吗? 谢谢试试这个 Sub mm() Dim i As Long Dim weekDayNames As Variant With Range("A1:A10000")

我的任务是创建一个循环,用以下数据填充列: 列A应填充1到10000之间的数字, B列应填入今天的日期,并以数字递增, C列应填充一周中的一天数,以便每周重复1到7次, D列应填充从周一到周日的一周中的一天(文本)

我认为这可以通过一个For…Next循环来实现。更复杂的是日期。。。 你能告诉我怎么做吗? 谢谢

试试这个

Sub mm()
    Dim i As Long
    Dim weekDayNames As Variant
    With Range("A1:A10000")
        .Formula = "=ROW()"
        .Offset(, 1).FormulaR1C1 = "=Today()+RC1-1"
        .Offset(, 2).FormulaR1C1 = "=WEEKDAY(RC2,1)"
        With .Offset(, 1).Resize(, 2)
            .Value = .Value
        End With
        weekDayNames = Application.Transpose(.Offset(, 2).Value)
        For i = 1 To UBound(weekDayNames)
            weekDayNames(i) = WeekdayName(weekDayNames(i), False, vbSunday)
        Next
        .Offset(, 3).Value = Application.Transpose(weekDayNames)
    End With
End Sub

如果要循环,请使用内存数组并立即分配整个数组。不要循环范围。它会很慢。为什么要用VBA呢?用Excel自动填充A列,B列得到一个公式
=Today()+A1-1
;C列
=工作日(B1)
和D列
=B2
;使用
DDDD
对其进行格式化,以便只显示日期。