Копирование / вставка указанных c ячеек из заданной строки Excel VBA - PullRequest
0 голосов
/ 06 августа 2020

Я работаю над страницей сводных отчетов, которая используется для сообщения определенных данных в журнале проблем с качеством для компании, в которой я работаю.

Чтобы дать вам представление о том, как она должна работать. Предполагается, что код принимает текущий недельный номер минус 1 для этого клапана, а затем выполняет поиск в журнале данных. Я получаю его для поиска данных с помощью For l oop вот так. Столбец «H» содержит номер недели, и мы ищем номер текущей недели минус 1

 For i = 8 To DataLastRow
        If datasheet.Range("H" & i).Value = currentweeknum - 1 And datasheet.Range("C" & i).Value = projectNum Then

Эти недели очень хорошо, и когда я нахожу заданную строку с правильным значением в столбце «H», я могу скопировать всю строку, используя следующий код:

datasheet.range(i).copy

Я также могу вставить эту строку на отдельный лист (мой сводный лист), используя это:

LastRowRpt = summarysheet.Range("A" & Rows.Count).End(xlUp).Row
summarysheet.Range("A" & LastRowRpt + 1).PasteSpecial Paste:=xlPasteValues

Опять же, это работает хорошо, однако теперь он дошел до точки, когда я не хочу копировать всю строку. Мне нужно скопировать только указанные c столбцы в этой строке, поскольку не все данные необходимы для сводки.

Я нашел способ сделать это, однако это замедляет работу Excel, и я еще не закончил писать код. Мой текущий способ - скопировать требуемую ячейку в строке, затем вставить ее в желаемое место на итоговом листе, прежде чем перейти к копированию следующей ячейки и ее вставке. Ниже ровно 2, но в моем коде намного больше.

'topic
datasheet.Range("E" & i).Copy
summarysheet.Range("C" & summarysheet.Range("C" & Rows.Count).End(xlUp).Row + 1).PasteSpecial Paste:=xlPasteValues

'Owner
datasheet.Range("F" & i).Copy
summarysheet.Range("D" & summarysheet.Range("D" & Rows.Count).End(xlUp).Row + 1).PasteSpecial Paste:=xlPasteValues

Как я уже упоминал, это действительно замедляет работу Excel, и мне нужно создать еще один сводный лист для других данных, но по существу делает то же самое.

Есть ли способ сжать мой код и сделать операцию намного более эффективной, чтобы excel не замедлялся слишком сильно? Стоит отметить, что я хочу, чтобы клапаны только вставлялись, поэтому использование Destination: = бесполезно, так как весь формат копируется, а я этого не хочу.

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