Добрый день! На Лист2 Данные, в первой и во второй колонки. В первой текст, во второй число или текстовые значения. Необходимо при вводе числа или текстового значения в колонке 1 Лист1 находило это число или значения в колонке 2 Лист2 и извлекало данные с колонки 1 Лист2 той же строки соответственно и заменяло на Лист1 колонка 1 введенное значение. Во второй колонке Лист1 необходимо вести счет введенных данных. Если значение введено впервые установить 1, если значение введено повторно прибавить счет к предыдущему - вновь введенное удалить из Лист 1 столбец 1 и 2! следующий ввод данных начинать с первой пустой ячейки под списком Лист1 столбец 1. Пример во вложении, но при повторе данные значения счета суммируются, но введенные повторы не удаляются
Sanja, Прветсвую вас. Возможное название темы: "Сопоставление и счётчик значений с удалением дубликатов в Excel VBA". Baidut, Вроде бы не первый день на форуме а название темы не можете придумать сами. Возможно я не так понял влпрос но попробую решить её.
Код
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
Dim existingRow As Long
If Target.Column <> 1 Or Target.Cells.Count > 1 Then Exit Sub
If IsEmpty(Target.Value) Then Exit Sub
Application.EnableEvents = False
Application.ScreenUpdating = False
With ThisWorkbook.Worksheets("Лист2")
Dim matchRow As Variant
matchRow = Application.Match(Target.Value, .Range("A:A"), 0)
If Not IsError(matchRow) Then
Target.Value = .Cells(matchRow, 1).Value
Else
Application.EnableEvents = True
Application.ScreenUpdating = True
Exit Sub
End If
End With
Dim lastRow As Long
lastRow = Me.Cells(Me.Rows.Count, 1).End(xlUp).Row
For i = 1 To lastRow
If i <> Target.Row Then
If Me.Cells(i, 1).Value = Target.Value Then
existingRow = i
Exit For
End If
End If
Next i
If existingRow > 0 Then
Dim countVal As Long
countVal = Me.Cells(existingRow, 2).Value
Me.Cells(existingRow, 2).Value = countVal + 1
Me.Rows(Target.Row).Delete
Else
Target.Offset(0, 1).Value = 1
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub