Я работаю над страницей сводных отчетов, которая используется для сообщения определенных данных в журнале проблем с качеством для компании, в которой я работаю.
Чтобы дать вам представление о том, как она должна работать. Предполагается, что код принимает текущий недельный номер минус 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: = бесполезно, так как весь формат копируется, а я этого не хочу.