Sub CopyData() ' Объявление переменных Dim wsSource As Worksheet Dim wsDestination As…
- User
Sub CopyData() ' Объявление переменных Dim wsSource As Worksheet Dim wsDestination As Worksheet Dim lastRowSrc As Long Dim lastRowDest As Long Dim dateToFind As Date Dim dateCol As Long Dim col As Long
' Указание рабочих листов Set wsSource = ThisWorkbook.Worksheets("Лист2") Set wsDestination = ThisWorkbook.Worksheets("Лист1")
' Найти последние строки в исходном и целевом листе lastRowSrc = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row lastRowDest = wsDestination.Cells(wsDestination.Rows.Count, "A").End(xlUp).Row + 1
' Копировать данные из Лист2 в Лист1 wsSource.Range("A7:A" & lastRowSrc).Copy wsDestination.Range("A" & lastRowDest).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
wsSource.Range("B7:B" & lastRowSrc).Copy wsDestination.Range("B" & lastRowDest).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
wsSource.Range("C7:C" & lastRowSrc).Copy wsDestination.Range("C" & lastRowDest).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
wsSource.Range("D7:D" & lastRowSrc).Copy wsDestination.Range("D" & lastRowDest).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
' Определение даты и номера столбца для копирования значений из AQ7:AQ350 dateToFind = wsDestination.Range("E2").Value dateCol = 0 For col = 1 To wsDestination.Cells(6, wsDestination.Columns.Count).End(xlToLeft).Column If wsDestination.Cells(6, col).Value = dateToFind Then dateCol = col Exit For End If Next col
' Если столбец с нужной датой найден, копировать значения If dateCol > 0 Then wsSource.Range("AQ7:AQ" & lastRowSrc).Copy wsDestination.Cells(lastRowDest, dateCol).PasteSpecial Paste:=xlPasteValuesAndNumberFormats End If
' Очистить буфер обмена Application.CutCopyMode = False End Sub
- Assistant
This subroutine will copy data from "Лист2" to "Лист1" in an Excel workbook. It first defines the source and destination worksheets, finds the last rows in each, and then copies the data from columns A, B, C, and D in the source sheet to the destination sheet. It then determines the date and column number for copying values from AQ7:AQ350 based on the value in cell E2 of the destination sheet. If the column with the specified date is found, the values are copied. Finally, the clipboard is cleared.
- User
Далее нужно чтобы она находила 2 дубликат числа в столбце A на Лист1, и после перебора столбцов в шестой строке в рабочем листе в номер этого столбца , нужно чтоб находящееся там значение было скопировано в том же столбце в строке не дубликата числа в столбце A.
- Assistant
Чтобы добавить функционал, который удаляет дубликаты в столбце A на листе "Лист1" и копирует соответствующие значения в том же столбце, вам нужно добавить следующий код в вашу процедуру
CopyData:Dim duplicatedRowNum As Long Dim uniqueRowNum As Long Dim numToFind As Long Dim rowCountSrc As Long ' Проход по всем значениям столбца A на листе "Лист1" For rowCountSrc = lastRowDest To 7 Step -1 numToFind = wsDestination.Cells(rowCountSrc, 1).Value ' Найти дубликат и уникальное значение duplicatedRowNum = 0 uniqueRowNum = 0 For rowNum = 7 To rowCountSrc - 1 If wsDestination.Cells(rowNum, 1).Value = numToFind Then If duplicatedRowNum = 0 Then duplicatedRowNum = rowNum Else uniqueRowNum = rowNum Exit For End If End If Next rowNum ' Если найдены дубликат и уникальное значение, копируем значение из 6-й строки в соответствующей колонке If duplicatedRowNum > 0 And uniqueRowNum > 0 Then wsDestination.Cells(duplicatedRowNum, dateCol).Value = wsDestination.Cells(uniqueRowNum, dateCol) End If Next rowCountSrcЭтот код будет проверять столбец A в "Лист1" на наличие дубликатов числа, находить дважды встречающееся число и соответствующую ему строку, а затем копировать значение из этой строки и найденного столбца на шестой строке в том же столбце строки с уникальным числом.