如何在单列中的10行中插入数字1,然后在接下来的10行中插入数字2,依此类推?

时间:2017-10-13 09:16:29

标签: excel vba

免责声明:这是一个来自初学者的简单问题。请放轻松我。

目前我正在进行一项简单的实验,我在按钮中指定了一个宏。我希望这个宏在A列,第1行到第10行插入数字1.一旦完成,数字将增加到2并填充接下来的10行,依此类推。

公式将一直持续到我在代码中为它设置的范围。如下所示:

Sub fill()

    Dim ID

        For c = 1 To 34
            ID = 1
            ActiveWorkbook.Sheets("Sheet1").Cells(c, 1) = ID
            ActiveWorkbook.Sheets("Sheet1").Cells(c + 1, 1) = ID
            c = c + 1
        Next c

End Sub

此时它将整个单元格填充为1.对于将数字增加到2的命令,我想到使用IF语句来增加它。

If c = c * 10 Then
    ID = ID + 1
End If

显然这不起作用,我也不知道我应该把它放在整个代码中。这是解决这个问题的正确方法吗?或者我应该使用其他方法吗?

更新问题:

现在我希望代码从第3行开始。我的for语句的含义我改为:

Sub fill()
Dim ID
ID = 1
For c = 3 To 34

    ActiveWorkbook.Sheets("Sheet1").Cells(c, 1) = ID
    ActiveWorkbook.Sheets("Sheet1").Cells(c + 1, 1) = ID
    c = c + 1
    If (c Mod 10) = 0 Then
        ID = ID + 1
    End If

Next c

End Sub

然而,当这样做时,数字1从3开始并继续到10然后继续。含义1仅创建7次。我希望从第3行开始1,从第13行开始重复到12,从第13行开始,依此类推。这个公式可以做到吗?

3 个答案:

答案 0 :(得分:0)

使用If语句执行此操作的一种方法是使用Modulo(如果您不知道Modulo的作用,请参阅here

代码如下所示:

If (c Mod 10) = 0 Then
    ID = ID + 1
End If

因此它除以10,每次剩余值为0(10,20,30等) 它会增加ID

你也可以使用两个for循环,但是你的限制你会搞砸,所以我认为上面的解决方案应该这样做。至于在哪里放置它,在这里:

Sub fill()

Dim ID
    ID = 1
    For c = 1 To 34
        ActiveWorkbook.Sheets("Sheet1").Cells(c, 1) = ID
        ActiveWorkbook.Sheets("Sheet1").Cells(c + 1, 1) = ID
        c = c + 1
        If (c Mod 10) = 0 Then
            ID = ID + 1
        End If
    Next c

End Sub

答案 1 :(得分:0)

你可以尝试一下......

Sub Fill()
Dim ws As Worksheet
Dim i As Long, lr As Long
Set ws = Sheets("Sheet1")
lr = 1
For i = 1 To 34
    ws.Range("A" & lr).Resize(10).Value = i
    lr = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1
Next i
End Sub

修改

Sub Fill()
Dim ws As Worksheet
Dim i As Long, ID As Long
Set ws = Sheets("Sheet1")
ID = 1
For i = 1 To 34
    ws.Range("A" & i).Value = ID
    If i Mod 10 = 0 Then ID = ID + 1
Next i
End Sub

答案 2 :(得分:0)

有一种简单的方法,只是一些数学技巧。

Sub fill()
    For c = 1 To 34
        ActiveWorkbook.Sheets("Sheet1").Cells(c, 1) = (c - 1) \ 10 + 1
    Next c
End Sub

介绍:\运算符将返回两个数字的商。例如11 \ 4 = 2,且12 \ 4 = 3

我删除了行c = c + 1变量c控制For循环,更改其值会很危险。如果For循环中有c = c + 1,它将只执行c = 1,3,5,7,...因为Next c也在c上加1。我猜这不是你想要的。