用for循环填充Excel文件

时间:2018-11-26 00:31:24

标签: excel vba vb.net

我正在尝试使用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。

1 个答案:

答案 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翻倍之外,没有其他意义。

如果要实现什么目标,您能否给出更清晰的轮廓?您想填充什么范围以及从何处填充?