我正在尝试使用for循环填充Excel文件,填充的逻辑是每189个结果执行一次,例如:
从A1填充到A189 从B1填充到B189
目前,我有一个适用于第一行A的代码,但是问题是当我使用B,C,D等进行尝试时。
这是我的代码:
'' I don't need first 4 results.
'' Total rows in this case is 569
For index as Integer = 5 To totalRows Step 1
Dim column as Integer = 2
'' var used to know if row is completed and change the ExcelProcess method
If rowsCompleted = 1 Then
'' realRows = 569 / 3 rounded down = 189
'' Flag initial value = 5 and is used as a internal index value instead of index var at for loop.
If flag <= realRows Then
'' copy
'' Excel Range = spreadsheet1.Cells(index, 7)
'' paste
'' Excel Range = spreadsheet2.Cells(8 * rowsCompleted - 6, index)
flag = flag + 1
Else
'' copy
'' Excel Range = spreadsheet1.Cells(index + 2, 7)
flag = flag + 1
'' paste
'' Excel Range = spreadshee2.Cells(8 * rowsCompleted - 6, flag)
End If
Else
rowsCompleted = rowsCompleted + 1
flag = 5
End If
Next
逐步调试,我找到了一些重要的细节。
第一行包含190行,但是不需要第一行,因此我只需要189行并从5开始。第二行和第三行包含189行,因此没有问题。另外,我需要从5行开始。
我还发现代码的第一行以190结尾,第二行必须以379结尾,但是我发现代码以381或382结尾。所以我认为问题可能出在我的for循环和索引或标志上vars。
我还认为问题可能在于使用以下代码复制值:
Excel Range = spreadsheet1.Cells(index + 2, 7)
,因为我要添加+ 2。
答案 0 :(得分:1)
为什么需要循环?
Range("A2:D189").Copy
spreadsheet2.range("A2").PasteSpecial xlpastevalues
说一开始Fill from A1 to A189 Fill from B1 to B189
并不清楚要达到什么目的,然后再说A到D列就可以了。
第二段文字
First row contains 190 rows but the first one is not needed so I only need 189 rows and start on 5. second and third row contains 189 rows so there is no problem. Also I need to start on 5 row.
Also I found that with my code the first row ends fine on 190. second row must ends on 379 but I found that ends on 381 or 382. So I think that maybe the problem is with my for loop and index or flag vars.
当我说第一行包含190行但我不需要第一行时(我想您要从第2行到190行?),我很难理解您的意思,但是随后您说需要从5行开始所以我不确定你是否希望它是从第到第5行?
然后您说第二行必须以379结尾,所以除了将190翻倍之外,没有其他意义。
如果要实现什么目标,您能否给出更清晰的轮廓?您想填充什么范围以及从何处填充?