Excel 如果mod 3=0,则自动向下移动到下一行

Excel 如果mod 3=0,则自动向下移动到下一行,excel,vba,Excel,Vba,我尝试编写代码,根据值数组在3列和3行的范围内插入值。我需要在我的范围内插入从1到1000的值,如下一行的1,2,3,下一行的4,5,6,下一行的7,8,9,直到1000。 请有人帮帮我,我曾尝试在stackoverflow中查找,但没有结果匹配如果您是关于Excel的; 如果第一行是1: Col1=(行()-1)*3+1, Col2=(行()-1)*3+2, Col3=(行()-1)*3+3 Else:@fr=第一行的行号: Col1=(ROW()-@fr)*3+1, Col2=(ROW()-

我尝试编写代码,根据值数组在3列和3行的范围内插入值。我需要在我的范围内插入从1到1000的值,如下一行的1,2,3,下一行的4,5,6,下一行的7,8,9,直到1000。 请有人帮帮我,我曾尝试在stackoverflow中查找,但没有结果匹配

如果您是关于Excel的; 如果第一行是1:
Col1=(行()-1)*3+1

Col2=(行()-1)*3+2

Col3=(行()-1)*3+3

Else:@fr=第一行的行号:
Col1=(ROW()-@fr)*3+1

Col2=(ROW()-@fr)*3+2

Col3=(ROW()-@fr)*3+3

更好的方法是这样使用:(@fr=1,如果第一行是1)
=(行()-@fr)*3+列()

在VBA中添加以下内容:

Public Function myFunc(row as integer, col as integer, Optional fr As Integer = 1) As Integer
    myFunc = (row - fr) * 3 + Col + 1
End Function
然后使用它。 给你:

Sub test2() 
    Dim i As Integer, row As Integer, col As Integer 
    a = 1 
    For i = 1 To 1000 
        row = (i - 1) \ 3 + 1
        col = (i - 1) mod 3 + 1
        Cells(row, col) = myfunc(row, col)
    Next i 
End Sub
试试这个:

Sub test2()
    Dim i As Integer, r As Integer
    r = 1
    For i = 1 To 1000
        If i Mod 3 = 0 Then
            Cells(r, 3) = i: r = r + 1
        Else
           Cells(r, i Mod 3) = i
        End If
    Next i
End Sub

我想你的意思是第1行的col1是1,第1行的col2是2,第1行的col3是3,第2行的col1是4…,对吗?我更改声明以删除错误;)。我试图写这篇文章,因为我不知道如何使用你的代码,这是我的代码。请帮助我使用你的代码或注释我的代码,因为我的代码在第一行有双值“1”<代码>子测试2()将i,a,t调整为整数a=1,对于i=1到100 t=i Mod 3+1,如果i Mod 3=0,则“下一行a=a+1单元格(a,t)=i Else”保持行单元格(a,t)=i End如果下一行i End子不起作用,参数类型不匹配。行的原因是整型值对不起,我忘了更改声明。虽然这个答案可能是正确的和有用的,但最好是随附一些解释来解释它如何帮助解决问题。这在将来变得特别有用,如果有一个变化(可能无关)导致它停止工作,用户需要了解它曾经是如何工作的。不幸的是,我的英语不好,所以不愿意在没有explanation@Vitallic这就是为什么Stack Overflow的帖子可以编辑:)将你的解释包含在你可以用英语理解的内容中,然后会有人进来把它编辑得更好(就像victor已经做的那样:)