Я борюсь с обновлением ряда листов, содержащих основные данные.
Пользователь может обновить регистр ("TK_Register") новым элементом или изменить существующий элемент в (")EditEX ") лист. Данные на листе EditEx хранятся на уровне C32: P56 и сохраняются в следующей пустой строке листа TK_Register (столбцы от A до N)
Используя другой код, я могу вызвать все конкретные строки на основе ссылкиномер (хранится на листе EditEX в ячейках O32: O56 и на листе TK_Register в столбце M).
При запуске этого кода
- excel получает все данные из листа EditEx C32:P56
- Вставляет эти данные в следующую пустую строку на листе TK_Register
- Автофильтры на основе столбца "N" для "НЕТ" (т.е. не нужно сохранять эту строку)
- Удаляет строки, которые были отфильтрованы (это строки, которые не были использованы и содержат данные по умолчанию)
- Нефильтрует данные
Здесь я получаю проблему. Это добавление всех данных на лист TK_Register включает в себя новые элементы, а также предыдущие элементы, которые были обновлены. Поскольку нам нужно регулярно добавлять, обновлять и изменять, когда нам нужно будет снова его редактировать, мы хотим видеть только самые последние позиции на листе EditEx.
Затем пользователь может вносить изменения в любой извызванные строки и / или добавление новой.
Мой код ниже работает только в том случае, если дублируется последний номер строки (столбец M). Если добавляется более 1 строки, она не находит дубликатов. Я знаю, что пройду этот долгий путь, но любые идеи, как я могу сделать это, будут искать каждый ссылочный номер (столбец M), который будет вставлен (будет несколько строк), если найден, обновите эту строку новыми данными, если не найдены,добавить к следующим доступным строкам.
Sub SaveUpdatedRec()
Dim rng4 As Range
Set rng4 = Sheets("EditEx").Range("C32:P56")
Sheets("TK_Register").Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(rng4.Rows.Count, rng4.Columns.Count).Cells.Value = rng4.Cells.Value
Sheets("TK_Register").Range("A1:N1000").AutoFilter field:=14, Criteria1:="NO"
Application.DisplayAlerts = False
Sheets("TK_Register").Range("A2:N1000").SpecialCells(xlCellTypeVisible).Delete
Application.DisplayAlerts = True
On Error Resume Next
Sheets("TK_Register").ShowAllData
On Error GoTo 0
Sheets("AI_Register").Select
Range("A1").Select
Dim lrow1 As Long
For lrow1 = Worksheets("AI_Register").Cells(Rows.Count, "M").End(xlUp).Row To 2 Step -1
If Cells(lrow1, "M") = Cells(lrow1, "M").Offset(-1, 0) Then
Cells(lrow1, "M").Offset(-1, 0).EntireRow.Delete
End If
Next lrow1
ActiveWorkbook.RefreshAll
Sheets("EditEx").Select
ActiveWindow.SmallScroll Down:=-120
Range("B13").Select
MsgBox ("Record Updates have been Saved")
End Sub