Здравствуйте, уважаемые форумчане, помогите, пожалуйста, решить следующую задачу. У меня в одном столбце - список (N), в другом обычное поле (O). Нужно, чтобы при написании в столбце O определенных слов к ним подставлялись группы из столбца N, но не ко всем словам, а только к определенным, остальной ввод свободный.
Здравствуйте, уважаемые форумчане, помогите, пожалуйста, решить следующую задачу. У меня в одном столбце - список (N), в другом обычное поле (O). Нужно, чтобы при написании в столбце O определенных слов к ним подставлялись группы из столбца N, но не ко всем словам, а только к определенным, остальной ввод свободный.benza89
Pelena, я не против макроса, если Вы уделите этому время, так как список у меня побольше будет, то подставлю я всё сама, прошу только написать по 2 примера с каждой группы, например: "игры" - "StarCraft" и "CS 1.6", "книги" - "Убить пересмешника" и "Марсианин". Остальной принцип я пойму. (ну или игры - игра1, игра2, а книги - книга1, книга2, названия роли не играют).
Pelena, я не против макроса, если Вы уделите этому время, так как список у меня побольше будет, то подставлю я всё сама, прошу только написать по 2 примера с каждой группы, например: "игры" - "StarCraft" и "CS 1.6", "книги" - "Убить пересмешника" и "Марсианин". Остальной принцип я пойму. (ну или игры - игра1, игра2, а книги - книга1, книга2, названия роли не играют).benza89
Как вариант, оформить список фиксированных названий в виде умной таблицы и использовать макрос [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 15 Then Exit Sub Dim a Set a = Sheets("Лист1").ListObjects("игры").ListColumns(1).DataBodyRange.Find(Target.Value) If Not a Is Nothing Then Target.Offset(, -1) = "игры": Exit Sub Set a = Sheets("Лист1").ListObjects("книги").ListColumns(1).DataBodyRange.Find(Target.Value) If Not a Is Nothing Then Target.Offset(, -1) = "книги" End Sub
[/vba]
Как вариант, оформить список фиксированных названий в виде умной таблицы и использовать макрос [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 15 Then Exit Sub Dim a Set a = Sheets("Лист1").ListObjects("игры").ListColumns(1).DataBodyRange.Find(Target.Value) If Not a Is Nothing Then Target.Offset(, -1) = "игры": Exit Sub Set a = Sheets("Лист1").ListObjects("книги").ListColumns(1).DataBodyRange.Find(Target.Value) If Not a Is Nothing Then Target.Offset(, -1) = "книги" End Sub
Pelena, AlexM, огромное человеческое спасибо. Умной таблицей все работает. AlexM, С помощью формулы немножко не то, дело в том, что N идет списком и не всегда "хлеб" автоматически должен становится "едой", варианты могут меняться, но часть остается неизменна, как например, "paint"-"программы", а другие свободный выбор. То есть, есть часть слов, которая пишется в свободном поле (O), но эта часть слов привязана к словам из списка (N) и должна на них реагировать, а остальное набирается вручную. Ваш пример тоже интересен и полезен, тоже пригодится.
Pelena, AlexM, огромное человеческое спасибо. Умной таблицей все работает. AlexM, С помощью формулы немножко не то, дело в том, что N идет списком и не всегда "хлеб" автоматически должен становится "едой", варианты могут меняться, но часть остается неизменна, как например, "paint"-"программы", а другие свободный выбор. То есть, есть часть слов, которая пишется в свободном поле (O), но эта часть слов привязана к словам из списка (N) и должна на них реагировать, а остальное набирается вручную. Ваш пример тоже интересен и полезен, тоже пригодится.benza89