Вставка значения ячейки производительности - PullRequest
0 голосов
/ 08 апреля 2019

Мой код смотрит на таблицу с тремя разными идентификаторами и количеством.Он суммирует все строки с одинаковыми тремя идентификаторами и вставляет их sheet2.Исходная таблица всегда сортируется по трем столбцам Id, отсортированным в алфавитном порядке.

Original Table
+--------+------+---------+-----+
|  Name  | City | Country | Qty |
+--------+------+---------+-----+
| Jack   | A    | US      |  15 |
| Jack   | A    | US      |  16 |
| Kevin  | A    | US      |  12 |
| Kevin  | A    | US      |  11 |
| Jack   | B    | US      |  13 |
| Jack   | B    | US      |  10 |
+--------+------+---------+-----+

Output Table
+--------+------+---------+-----+
|  Name  | City | Country | Qty |
+--------+------+---------+-----+
| Jack   | A    | US      |  31 |
| Kevin  | A    | US      |  23 |
| Jack   | B    | US      |  23 |
+--------+------+---------+-----+

Code

For i = 2 To totalrow  'totalrow is the total number of rows

name = sheet1.Cells(i, 1)
city = sheet1.Cells(i, 2)
country = sheet1.Cells(i, 3)
qty = 0

Do
    qty = qty + sheet1.Cells(i, 4)
    i = i + 1
Loop While wsDB.Cells(i, 1) = name And wsDB.Cells(i, 2) = city And wsDB.Cells(i, 3) = country

    sheet2.Cells(process_row, 1).Value = name
    sheet2.Cells(process_row, 2).Value = city
    sheet2.Cells(process_row, 3).Value = country
    sheet2.Cells(process_row, 4).Value = qty
    process_row = process_row + 1
    i = i - 1
Next I

Я посчитал, сколько времени потребовалось для выполнения кода, и это последовательно занимает 30 секунд.Затем я удалил раздел, вставив обновленные значения в sheet2, и рассчитал его время (код ниже).Это постоянно занимало менее 1 секунды.

For i = 2 To totalrow

bl = wsDB.Cells(i, 1)
cpty = wsDB.Cells(i, 2)
cptyname = wsDB.Cells(i, 3)
cusip = wsDB.Cells(i, 4)
qty = 0

Do
    qty = qty + wsDB.Cells(i, 6)
    i = i + 1
Loop While wsDB.Cells(i, 1) = bl And wsDB.Cells(i, 2) = cpty And wsDB.Cells(i, 4) = cusip

    process_row = process_row + 1
    i = i - 1
Next i

Похоже, что для вставки значений в ячейки требуется больше времени.Есть ли способы, с помощью которых я могу ускорить это?

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