SAS888
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору maratino По 1-му вопросу: Искать и удалять значения ранее вставленных строк, по большому счету невозможно, т.к. если предположить, что есть строки с одинаковыми значениями в столбцах со 2-го по 9-й. Поэтому, предлагаю, в предварительно скрытый столбец (в примере это столбец № 22) при вставке данных, заносить номер выбранной строки. Затем, при удалении искать в этом столбце номер (что проще и корректнее) и удалять именно эти значения. Примерно так: Код: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim i As Long, x As Range If Target.Cells.Count > 1 Or Intersect(Target, Range("A3:A2000")) Is Nothing Then Exit Sub Target.Font.Name = "Marlett": Columns(1).HorizontalAlignment = xlCenter If Target = "a" Then Target.ClearContents Set x = Columns(22).Find(Target.Row, LookAt:=xlWhole) If Not x Is Nothing Then Range(Cells(x.Row, 14), Cells(x.Row, 22)).Delete Shift:=xlUp Else Target = "a": i = Cells(Rows.Count, 14).End(xlUp).Row + 1 Range(Cells(Target.Row, 2), Cells(Target.Row, 9)).Copy Cells(i, 14): Cells(i, 22) = Target.Row End If End Sub | По 2-му вопросу: Если таблица предварительно отсортирована по 1-му столбцу (а если нет, то это можно сделать макросом), то можно, например, так: Код: Sub Main() Dim i As Long: Application.ScreenUpdating = False For i = Cells(Rows.Count, 1).End(xlUp).Row To 3 Step -1 If Cells(i, 1) = Cells(i - 1, 1) Then Cells(i - 1, 2) = Cells(i, 2) + Cells(i - 1, 2): Rows(i).Delete End If Next End Sub |
|