OK. Вот решение.
- Установите именованный диапазон. Я ввел 5 разных фруктов в одном столбце и 5 разных количеств в соседнем столбце (не важно, где, но должен быть смежным). Я назвал диапазон "Продукты", но любое другое имя подойдет также.
- Я создал список проверки данных. Я использовал ячейку G3, но любая другая будет одинаково подходящей. Я указал список проверки данных на
=INDEX(Products,0,1)
, что означает первый столбец диапазона Products
. Теперь я добавил код на лист. Этот код должен быть в листе кода листа , на котором находится G3. Этот кодовый лист будет иметь имя вроде Sheet1 (Sheet1) . Не используйте стандартный кодовый модуль с таким именем, как Module1 . Вот код:
Private Sub Worksheet_Change (ByVal Target As Range) '018
Const Trigger = "G3" ' change to suit
Dim Qty As Long
With Target
If .Address = Range(Trigger).Address Then
On Error Resume Next ' in case not found
Qty = Application.VLookup(.Value, Range("Products"), 2, False)
.Offset(0, 1).Value = Qty + 1
End If
End With
End Sub *
Обратите внимание, что Триггер ячейка называется "G3". Это должна быть ячейка, в которой находится раскрывающийся список проверки данных.
Этот код будет запускаться при каждом изменении Триггер . Вы делаете выбор там, и функция VLOOKUP найдет количество в столбце 2 диапазона Products
. Если элемент не найден в списке, он вернет 0, но вы можете установить проверку ячейки, чтобы предотвратить запись элемента, которого нет в списке. Код добавит единицу к найденному количеству и выдаст результат в .Offset(0, 1)
, что означает один столбец справа от ячейки Trigger .
Возможно, вы захотите сделать другие вещи с вашим идея. Я думаю, что система, которую я предлагаю, может быть адаптирована к тому, что вы имеете в виду, включая изменение количества в списке Products
.