Страницы: 1
RSS
Обновление данных списка, Как обновить данные в раскрывающемся списке?
 
Добрый день. Есть список, некая турнирная таблица. Созданы графы для учета победы в том или ином соревновании разных команд. Создан раскрывающийся список и данные берутся оттуда. Как удалить или добавить новую команду - понятно.
Команда "Солнышко" переименовалась в команду "Звездочка". Однако, в уже заполненной таблице из раскрывающегося списка осталось прежнее название. Проверка данные обводит неверные данные и позволяет исправить это в ручном режиме. А есть ли способ, чтобы данные автоматически подтягивались из измененного списка команд?
 
Цитата
sa-agat написал:
А есть ли способ, чтобы данные автоматически подтягивались из измененного списка команд?
Для этого необходимо видеть данные. Приложите небольшой файл-пример, конфиденциальную информацию замените на яблоки/груши.
 
sa-agat, преобразуйте свою таблицу в умную. Тогда данные будут автоматом меняться.
Не столь важно что ты делаешь, важно как ты это делаешь! (Джимми Лансфорд)
 
Я приложила файл. Не знаю, насколько умная получилась таблица. Если она недостойна этого звания, то я буду очень благодарна за разьяснение, как сделать правильно
 
Цитата
sa-agat написал:
Если она недостойна этого звания, то я буду очень благодарна за разьяснение, как сделать правильно
:D  :D  :D
Умные таблицы в Excel
Ваш список команд, кстати, и есть Умная таблица)
Согласие есть продукт при полном непротивлении сторон
 
Умную таблицу сделала, спасибо. Однако, если в столбце, который берет данные из этой таблицы, уже есть апельсины, а тут команда решила, что апельсины это мелко и теперь они Великие апельсины, то в выпадающем фильтре, конечно, название изменится.  А вот уже заполненные строки останутся просто апельсинами. Мне бы эту информацию подтянуть, о переименовании.
 
это только макросом, подойдет?
 
Ух. Ну если по-другому никак, я готова. Будем познавать новое. Только, если это возможно, напишите как можно проще.  
 
Код
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ru As Range
    On Error Resume Next
    Set ru = Intersect(Target, ActiveSheet.UsedRange)
    On Error GoTo 0
    If ru Is Nothing Then Exit Sub
    
    Dim vl As Validation
    Dim ra As Range
    Dim rv As Range
    Dim cl As Range
    Dim ya As Long
    For Each cl In ru.Cells
        On Error Resume Next
        Set vl = cl.Validation
            If Not vl Is Nothing Then
                Set rv = Range(Mid(vl.Formula1, 2))
                If Not rv Is Nothing Then
                    ya = WorksheetFunction.Match(cl.Value, rv, 0)
                    If ya > 0 Then
                        Set ra = rv.Cells(ya, 1)
                        Application.EnableEvents = False
                        cl.FormulaR1C1 = "=" & ra.Address(1, 1, xlR1C1)
                        Application.EnableEvents = True
                    End If
                End If
            End If
        On Error GoTo 0
    Next
End Sub
В модуль листа.
Страницы: 1
Наверх