Добрый день. Подскажите пож. можно ли открыть выпадающий список с помощью формул (без использования формы "проверки данных" и макроса)? Допустим, что у меня есть поименованный диапазон (список) на который можно сослаться. Заранее благодарю за ответ.
Добрый день. Подскажите пож. можно ли открыть выпадающий список с помощью формул (без использования формы "проверки данных" и макроса)? Допустим, что у меня есть поименованный диапазон (список) на который можно сослаться. Заранее благодарю за ответ.tanver
Я конкретизирую пример (вложила файл). Мне надо сделать выборку их списка (база данных), если значения встречаются один, или большее количество раз.
Спасибо.
Я конкретизирую пример (вложила файл). Мне надо сделать выборку их списка (база данных), если значения встречаются один, или большее количество раз.tanver
Варианты: связанные выпадающие списки; сводные таблицы...
Связанные выпадающие списки больше подходит! Мне бы хотелось, чтобы в ячейке (куда требуется "подтянуть" данные) либо сразу появлялось значение из базы данных (если одно предприятие = одному виду товара). Либо (если товаров несколько выпадал список конкретно с товарами/услугами, относящимися к данному предприятию. Если такое возможно.
Варианты: связанные выпадающие списки; сводные таблицы...
Связанные выпадающие списки больше подходит! Мне бы хотелось, чтобы в ячейке (куда требуется "подтянуть" данные) либо сразу появлялось значение из базы данных (если одно предприятие = одному виду товара). Либо (если товаров несколько выпадал список конкретно с товарами/услугами, относящимися к данному предприятию. Если такое возможно.tanver
Private Sub Worksheet_Change(ByVal Target As Range) Dim arr, i& If Target.Count > 1 Then Exit Sub If Target.Column = 1 Then If Len(Target) Then
arr = Sheets("База").Range("A1").CurrentRegion.Value With CreateObject("Scripting.Dictionary") For i = 1 To UBound(arr) .Item(arr(i, 1)) = .Item(arr(i, 1)) & ", " & arr(i, 2) Next If .exists(Target.Value) Then 'On Error Resume Next Target.Offset(, 1).Validation.Delete Target.Offset(, 1).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:=Mid$(.Item(Target.Value), 3)
End If End With Else Target.Offset(, 1).Validation.Delete End If End If End Sub
[/vba]
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim arr, i& If Target.Count > 1 Then Exit Sub If Target.Column = 1 Then If Len(Target) Then
arr = Sheets("База").Range("A1").CurrentRegion.Value With CreateObject("Scripting.Dictionary") For i = 1 To UBound(arr) .Item(arr(i, 1)) = .Item(arr(i, 1)) & ", " & arr(i, 2) Next If .exists(Target.Value) Then 'On Error Resume Next Target.Offset(, 1).Validation.Delete Target.Offset(, 1).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:=Mid$(.Item(Target.Value), 3)
End If End With Else Target.Offset(, 1).Validation.Delete End If End If End Sub
1. лист "База" называется "справочник предприятий" 2. лист "РЕЕСТР" ="Реестр" 3. на листе "Реестр" перечень предприятий начинается в ячейке С555 и продолжается вниз (в примере перечень предприятий начинается с ячейки A3) 4. на листе "Реестр" выбор товара должен происходить в столбце I, соответственно начиная с ячейки I555 5. на листе "справочник предприятий" перечень предприятий расположен в столбце A (начинается с A2), а товар в столбце F (начинается с F2)
Сможете поменять? Я попробовала, у меня не получилось.
RAN,
1. лист "База" называется "справочник предприятий" 2. лист "РЕЕСТР" ="Реестр" 3. на листе "Реестр" перечень предприятий начинается в ячейке С555 и продолжается вниз (в примере перечень предприятий начинается с ячейки A3) 4. на листе "Реестр" выбор товара должен происходить в столбце I, соответственно начиная с ячейки I555 5. на листе "справочник предприятий" перечень предприятий расположен в столбце A (начинается с A2), а товар в столбце F (начинается с F2)
Сможете поменять? Я попробовала, у меня не получилось.tanver