Заполните файл Excel с помощью цикла for - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь заполнить файл Excel, используя цикл for, логика для заполнения заключается в том, чтобы делать это каждые 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 и index или flag vars.

Также я думаю, что, возможно, проблема в том, чтобы скопировать значение с этим кодом: Excel Range = spreadsheet1.Cells(index + 2, 7), потому что я добавляю + 2.

1 Ответ

0 голосов
/ 26 ноября 2018

Зачем вам нужно цикл?

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.

Можете ли вы дать более четкое описание того, чего вы хотите достичь?какой диапазон вы хотите заполнить и откуда?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...