VBA 循环/做直到
VBA loop / do until
我正在尝试以非常特定的格式配置数据,以便将其上传到软件。
我有一个 count sheet,其中包含需要在我的 上传模板中输入的行数 sheet。 计数 sheet 的值介于 3、5、7 和 9 之间。
我希望我的 VBA 程序能够在 上传模板上输入值 1、2、3(在 3 个单独的行上)sheet 如果 count sheet.
的值为“3”
如果 count 的下一个值为“5” sheet 我希望我的程序能够输入值 1、2、3、2、3 (在上传的 5 个单独行上 sheet)。
如果 count sheet 的值为“9”,我希望我的程序输入值 1、2、3、2、3、2、 3、2、3(在 9 个单独的行上)等等。
前三个值将始终连续为 1、2、3,然后根据计数值在 2 和 3 之间交替 sheet。
有人可以帮我吗?
没有足够的细节来真正写任何东西。但这里是 tutorial/example 如何从单独的工作簿访问数据以及如何将值写入循环内的单元格。
您在输出行 # 遵循模式 1,2,3,2,3,2,3...
的地方寻找的等式对于普通数学来说有点复杂,但可以通过使用布尔表达式作为等式的一部分在数学编程中完成.
Sub RowNumberer()
Dim CountWB As Workbook
Set CountWB = Workbooks("Your Count Sheet Workbook's Name (plus file extension)")
Dim CountSheet As Worksheet
Set CountSheet = CountWB.Worksheets("Your Count Sheet's Name")
Dim CountSheetValue As Long
CountSheetValue = CountSheet.Range("Cell Address of your Count result (3, 5, 7, 9)")
Dim UploadWB As Workbook
Set UploadWB = Workbooks("Your Upload Template Workbook's Name (plus file extension)")
Dim OutputSheet As Worksheet
Set OutputSheet = UploadWB.Sheets("The Name of the Sheet you want to number the rows on")
Dim i As Long
For i = 1 To CountSheetValue
OutputSheet.Cells(i, 1) = i Mod 2 - 2 * (i > 1)
Next i
End Sub
解释公式:i Mod 2 - 2 * (i > 1)
i Mod 2
取迭代值 i
并在除以 2 后取余数。这在 1 和 0 之间交替。
我们只需要 +2
即可将其从 1 and 0
移动到 3 and 2
。但是我们只希望 +2
在 第一个数字之后,因为我们希望第一个数字是 1.
所以我添加了布尔表达式(i > 1)
,它在 False 时为 0,在 True 时为 -1。我不知道为什么 VBA 中的 True = -1。所以 - 2 * (i > 1)
在 i = 1
时为 0,在 i > 1
.
时 +2
我正在尝试以非常特定的格式配置数据,以便将其上传到软件。
我有一个 count sheet,其中包含需要在我的 上传模板中输入的行数 sheet。 计数 sheet 的值介于 3、5、7 和 9 之间。
我希望我的 VBA 程序能够在 上传模板上输入值 1、2、3(在 3 个单独的行上)sheet 如果 count sheet.
的值为“3”如果 count 的下一个值为“5” sheet 我希望我的程序能够输入值 1、2、3、2、3 (在上传的 5 个单独行上 sheet)。
如果 count sheet 的值为“9”,我希望我的程序输入值 1、2、3、2、3、2、 3、2、3(在 9 个单独的行上)等等。
前三个值将始终连续为 1、2、3,然后根据计数值在 2 和 3 之间交替 sheet。
有人可以帮我吗?
没有足够的细节来真正写任何东西。但这里是 tutorial/example 如何从单独的工作簿访问数据以及如何将值写入循环内的单元格。
您在输出行 # 遵循模式 1,2,3,2,3,2,3...
的地方寻找的等式对于普通数学来说有点复杂,但可以通过使用布尔表达式作为等式的一部分在数学编程中完成.
Sub RowNumberer()
Dim CountWB As Workbook
Set CountWB = Workbooks("Your Count Sheet Workbook's Name (plus file extension)")
Dim CountSheet As Worksheet
Set CountSheet = CountWB.Worksheets("Your Count Sheet's Name")
Dim CountSheetValue As Long
CountSheetValue = CountSheet.Range("Cell Address of your Count result (3, 5, 7, 9)")
Dim UploadWB As Workbook
Set UploadWB = Workbooks("Your Upload Template Workbook's Name (plus file extension)")
Dim OutputSheet As Worksheet
Set OutputSheet = UploadWB.Sheets("The Name of the Sheet you want to number the rows on")
Dim i As Long
For i = 1 To CountSheetValue
OutputSheet.Cells(i, 1) = i Mod 2 - 2 * (i > 1)
Next i
End Sub
解释公式:i Mod 2 - 2 * (i > 1)
i Mod 2
取迭代值 i
并在除以 2 后取余数。这在 1 和 0 之间交替。
我们只需要 +2
即可将其从 1 and 0
移动到 3 and 2
。但是我们只希望 +2
在 第一个数字之后,因为我们希望第一个数字是 1.
所以我添加了布尔表达式(i > 1)
,它在 False 时为 0,在 True 时为 -1。我不知道为什么 VBA 中的 True = -1。所以 - 2 * (i > 1)
在 i = 1
时为 0,在 i > 1
.
+2