Страницы: 1
RSS
Изменение значений выпадающего списка
 
Вопрос такой. Для полей столбца A заданы выпадающие списки (основанные на значениях из столбца B).
После изменения значений в столбце B выпадающие списки меняются автоматически. Но ранее выбранные значения в столбце A, естественно, сохраняют свои старые значения.

Можно ли без использования VBA обеспечить синхронизацию значений столбца A (ранее выбранных из старого выпадающего списка) с фактическими значениями столбца B (на основе которых строится выпадающий список) ?
Если положить, что в столбце B число строк не меняется (меняются только значения).

Можно выполнить простую замену старого значения на новое.
Но если список выбора большой и в этом списке изменены все значения (например, 100), то вручную придётся делать 100 замен (100 старых значений на 100 новых).


Как решить эту задачу?
 
одним действием:
Ctrl+H
что заменить
на что заменить
заменить все
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Необходимо, чтобы это происходило автоматически.
Список B может находится совсем на другом листе. И этот список может меняться в наименованиях. А наименования в списке A надо перевыбирать.
 
Цитата
Как решить эту задачу?
напишите макрос
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
в том то и дело что я к сожалению не знаю как он пишется. может вы подскажете куда можно обратится или к кому? а может где посмотреть как они пишутся?
 
Цитата
Протасова написал: Можно ли без использования VBA
Цитата
Ігор Гончаренко написал: напишите макрос
Цитата
Протасова написал: я к сожалению не знаю как он пишется
Так можно макросом или не можно?
Согласие есть продукт при полном непротивлении сторон
 
всё таки макросом(( просто уже понимаю что без него не обойтись! уже кучу ресурсов прочла, но никак понять не могу.
Помогите пжл
 
Тогда с Вас файл-пример (в формате Excel). И укажите в нем НА ЧТО менять значения в ячейках с вып.списками при изменении этих списков
Согласие есть продукт при полном непротивлении сторон
 
Вот пожалуйста, небольшой пример
в примере допустим к фамилии добавляется еще и имя
Вася
Петя
Саша
Изменено: Протасова - 06.02.2018 13:10:24
 
В модуль листа со списками (Лист2)
Код
Dim oldValue

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B3:B" & Cells(Rows.Count, "B").End(xlUp).Row)) Is Nothing And Target.Count = 1 Then
    oldValue = Target.Value
End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B3:B" & Cells(Rows.Count, "B").End(xlUp).Row)) Is Nothing And Target.Count = 1 Then
    If Target.Value <> oldValue Then
    On Error Resume Next
    Application.EnableEvents = False
    With Worksheets("Лист1")
        With .Range("C2:C" & .Cells(.Rows.Count, "C").End(xlUp).Row)
            Set iCell = .Find(oldValue, LookIn:=xlValues)
            If Not iCell Is Nothing Then
                firstAddress = iCell.Address
                Do
                    iCell.Value = Target.Value
                    Set iCell = .FindNext(iCell)
                Loop While Not c Is Nothing And iCell.Address <> firstAddress
            End If
        End With
    End With
    End If
End If
Application.EnableEvents = True
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Спасибо большое)
Сейчас попробую вставить в исходный файл)))
 
Вот это максимально приближено к исходному заданию)))
 
См.файл
Согласие есть продукт при полном непротивлении сторон
 
Может я что-то не так делаю, но при изменении имени на Лист2, автоматом не меняется значение на Листе1.
Было семен, я поставила саша. на Листе1, так и остался семен
 
Пробуйте
Согласие есть продукт при полном непротивлении сторон
 
Виталий...вы не поверите))) но она не работает))) в выпадающем списке всё меняется, не спорю. а вот на первом Лист1 надо делать перевыбор)))
 
Цитата
Протасова написал: не работает
Вы мой файл тестируете? Или где-то в своем? У меня работает...
Согласие есть продукт при полном непротивлении сторон
 
прям в вашем смотрю. у меня не получается(((
я просто его открыла, меняю имя и у меня на Лист1 всё без изменений.
Может  я что не так делаю?
 
Ну вот еще версия
Согласие есть продукт при полном непротивлении сторон
 
Виталий)))) Я поняла, почему у меня не работал) я открывала в Excel 2007 и там у меня не работало. Сейчас открыла в Excel2016 и всё получилось!!!! Спасибо вам большущее.
Ещё один маленький вопрос))) А это можно как-то подстроить под функционал более ранних версий Excel?? Допусти 2003 или 2007??
И вопрос совсем не по теме))) А где такому чуду обучают??
 
Цитата
Протасова написал: я открывала в Excel 2007 и там у меня не работало
Странно все это...Код макроса не имеет каких-то специфических команд, появившихся в более поздних версиях. Теоретически он должен работать и в 2003 и даже в 97-м
Согласие есть продукт при полном непротивлении сторон
 
Вот
Изменено: Протасова - 07.02.2018 16:07:33
 
Ну вроде уже все учел  :)  
Согласие есть продукт при полном непротивлении сторон
 
возможно настроить макрос таким образом, чтобы изменения на листе1, происходили при изменении значения либо в столбце C, либо в столбце D, данного листа
Вот такой вопрос))
Изменено: Протасова - 13.02.2018 17:54:35
 
Цитата
Протасова написал: либо в столбце C, либо в столбце D, данного листа
А каким боком там столбец 'D'? Значения в столбце 'A', которые используются в выпадающем списке, никак от него (от столбца 'D') не зависят
Согласие есть продукт при полном непротивлении сторон
 
как же так. на втором листе в столбцеA формируется значение исходя из столбцов B, C, D (через функцию СЦЕПИТЬ) и там присутствует D
 
Цитата
Протасова написал: столбцеA формируется значение исходя из столбцов B, C, D
Ткните меня носом, где в СЦЕПИТЬ участвует столбец D
Код
=СЦЕПИТЬ(B4;" ";"=";C4;"=")
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
Ткните меня носом, где в СЦЕПИТЬ участвует столбец D
=СЦЕПИТЬ(B3;" ";"=";C3;"=";" ";"<";D3;">")

вот это я скопировала из файла, который я вчера вставила. ну у вас там есть столбецD в принципе?)) и там стоит значение 28. и в наименовании стоит
Composite   #112 Turquoise 2L Clear =M= <28>
 
Цитата
Протасова написал: у вас там есть столбецD в принципе?
Спасибо, столбец D нашел (что я бы я без Вас делал))). Только почему Вы формулу не распространили на весь столбец А?
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
Только почему Вы формулу не распространили на весь столбец А?
Виталий, простите пжл))) я уже тоже это увидела, просто это дополнение делала не я... :cry:  :oops:  :oops:

Спасибо большое!
Изменено: Протасова - 14.02.2018 13:30:34
Страницы: 1
Наверх