Существует ли самый быстрый способ записи результатов набора записей в таблицу Excel? - PullRequest
0 голосов
/ 21 сентября 2018

Я довольно новичок в Stack Overflow и VBA, так что простите.

For x = 1 To Rows
    For y = 1 To rs.Fields.Count
        Select Case rs.Fields(y - 1)
            Case rs![begin_date], rs![end_date]
                Z = CDate(rs.Fields(y - 1))
            Case rs![deadline_date]
                If rs![update_date] = "" Or IsNull(rs![update_date]) Then
                    Z = Calculate_deadline(rs![begin_date], rs![sla], _
                        rs![special_calendar])
                Else
                    Z = Calculate_deadline(rs![update_date], rs![sla], _
                        rs![special_calendar])
                End If
            Case Else
                Z = rs.Fields(y - 1)
        End Select
        table_list_object.HeaderRowRange.Cells(x + 1, y).Value = Z
    Next y
    rs.MoveNext
Next x

Итак, в двух словах, я пишу код VBA в Access, который выполняет запрос для сбора данных.обо всех датах проекта, вычисляет его сроки и записывает все это в таблицу Excel.

Функциональная часть вычисляет дату крайнего срока.

Проблема в том, что я записываю все данные по одному,как это:

table_list_object.HeaderRowRange.Cells(x + 1, y).Value = z

Это может занять некоторое время, и я уверен, что это сильно замедляет мой макрос, но каждое учебное пособие по VBA, которое я видел, работало так:

ИЯ немного скептически отношусь к вопросу Select Case ... Так лучше, или я должен вместо этого использовать If ... Else?

В любом случае, этот набор записей имеет 15.000 строк, но для его выполнения требуются часы,и первый раз, когда я запускал этот код, это заняло всего несколько минут.

Да, кстати, Calculate_deadline также может быть проблемой, я знаю.Но сначала я хочу быть уверенным в этой части моего кода, просто чтобы этот вопрос не был слишком большим и сложным для объяснения.

Спасибо!

1 Ответ

0 голосов
/ 22 сентября 2018

Витор, так как вы новичок в VBA, я бы посоветовал вам рассмотреть другой способ сделать это в Excel.В Excel есть функция «Получить данные», в которой используется технология Power Query для извлечения данных в Excel, манипулирования ими, а затем сохранения данных в листе вашей рабочей книги Excel.Все это с использованием интерфейса «укажи и щелкни» вместо написания низкоуровневого кода VBA.

В качестве примера рассмотрим следующее: https://www.youtube.com/watch?v=vchsUEHXvZo

Эту функцию довольно легко освоить.и имеет общие функции обработки данных, такие как фильтрация данных, агрегирование данных, добавление новых вычисляемых столбцов, транспонирование данных и т. д.

Просто введите в Google «Power Query» и просматривайте видео и другие ресурсы там.

...