Таблицы. Обновить ячейку, если другая ячейка изменяется - PullRequest
1 голос
/ 14 июня 2019

не эксперт здесь.Работа с огромной таблицей Excel, своего рода конвейер продаж.Я хотел бы добиться следующего: если я изменю значение ячейки (в которой есть список проверки данных), я хочу, чтобы значение другой ячейки в той же строке изменилось.По сути, если возможность меняется на «Выигранный», я хочу, чтобы ячейка вероятности той же строки изменилась на 100%.Я немного искал и нашел решения, но большинство из них основано на использовании std excel, в то время как я специально использую таблицу (ListObject).Должен ли я «вести себя» по-другому?

Я не написал никакого кода для этого, так как мои навыки кодирования являются базовыми и основаны на интернет-копировании / вставке + редактировании.Использование формулы не вариант, так как я хочу, чтобы эта ячейка оставалась редактируемой для тех случаев, когда возможность не "выиграна".

Редактировать: я до сих пор делал следующее:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.ListObjects("tblSalesPipeline").ListColumns("Status").DataBodyRange) Is Nothing Then
        If Target.Value = "Won" Then
        MsgBox "Congratulations!"
    Else
        MsgBox "Idiot!"
    End If
  End If
End Sub

Очевидно, что MsbBox-ы - это просто тесты, чтобы увидеть, работает ли он.Теперь я должен понять, как обратиться к конкретной строке в столбце «Вероятность» ...

1 Ответ

1 голос
/ 15 июня 2019

Попробуйте использовать функцию смещения (1-й параметр - смещение строки, 2-й параметр - смещение столбца + для перемещения вправо, - для перемещения влево), предполагая, что столбец «Вероятность» - это два столбца вправо:

If Not Intersect(Target, Me.ListObjects("tblSalesPipeline").ListColumns("Status").DataBodyRange) Is Nothing Then
    If Target.Value = "Won" Then
        Target.Offset(0,2).Value2 = 1
        MsgBox "Congratulations!"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...