Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Выпадающий список в ячейке из названий листов книги - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Выпадающий список в ячейке из названий листов книги
Vasil74 Дата: Суббота, 11.03.2017, 22:06 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Требуется выполнить обычный выпадающий список с перечнем существующих листов книги
Прошу помочь с формулой в "Проверке данных" - "Список" - "Источник"


Спасибо за ответы!
 
Ответить
СообщениеТребуется выполнить обычный выпадающий список с перечнем существующих листов книги
Прошу помочь с формулой в "Проверке данных" - "Список" - "Источник"

Автор - Vasil74
Дата добавления - 11.03.2017 в 22:06
bmv98rus Дата: Суббота, 11.03.2017, 23:22 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4147
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
Vasil74,
Вы подразумеваете список который автоматически строится? Ищите на форуме. Есть способ вытащить. Пример в приложении, автор ответа, buchlotnik.
К сообщению приложен файл: Get.workbook.xlsm (69.5 Kb)


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеVasil74,
Вы подразумеваете список который автоматически строится? Ищите на форуме. Есть способ вытащить. Пример в приложении, автор ответа, buchlotnik.

Автор - bmv98rus
Дата добавления - 11.03.2017 в 23:22
n0leg68 Дата: Суббота, 11.03.2017, 23:50 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 88
Репутация: 11 ±
Замечаний: 0% ±

Excel 2013
Если именно выпадающий список листов, то можно сделать и макросом, при добавлении новых листов просто нажимай на кнопку и они тоже появятся в выпадающем списке...
[vba]
Код
Sub SheetsToValidation()
Dim i As Long, Arr()
Dim shp As Worksheet
    ReDim Arr(1 To Sheets.Count)
    For i = 2 To Sheets.Count
        Arr(i) = Sheets(i).Name
    Next
    [A1].Validation.Delete
    [A1].Validation.Add Type:=xlValidateList, Formula1:=Join(Arr, ",")
End Sub
[/vba]
К сообщению приложен файл: 123.xlsm (21.4 Kb)
 
Ответить
СообщениеЕсли именно выпадающий список листов, то можно сделать и макросом, при добавлении новых листов просто нажимай на кнопку и они тоже появятся в выпадающем списке...
[vba]
Код
Sub SheetsToValidation()
Dim i As Long, Arr()
Dim shp As Worksheet
    ReDim Arr(1 To Sheets.Count)
    For i = 2 To Sheets.Count
        Arr(i) = Sheets(i).Name
    Next
    [A1].Validation.Delete
    [A1].Validation.Add Type:=xlValidateList, Formula1:=Join(Arr, ",")
End Sub
[/vba]

Автор - n0leg68
Дата добавления - 11.03.2017 в 23:50
Perfect2You Дата: Воскресенье, 12.03.2017, 14:44 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 237
Репутация: 59 ±
Замечаний: 0% ±

Excel 2010
Резюмируя вышесказанное:
Если Вам в одну ячейку и при добавлении листа не забудете макрос запускать, то вариант ответа 3 - лучший выбор. только For i = 2 лучше заменить на For i = 1 (чтобы первый лист не терять) и [A1] заменить на Activecell (чтобы не в A1 помещать, а в выделенную ячейку).
Но если таких ячеек много и нужно постоянно следить за пополнением списка в каждой, то для хранения списка листов лучше всего выбрать отдельный столбец какого-нибудь технического листа, чтоб кто-то не повредил.
В источнике лучше задать динамический массив, например
Код
=Лист1!B1:ИНДЕКС(Лист1!B:B;ПРОСМОТР(;-1/ДЛСТР(Лист1!B:B);СТРОКА(Лист1!B:B)))

А вот как его наилучшим образом пополнять - дело тонкое. Формулы - хорошо, но кончиться могут (если листы добавляются постоянно). Макрос - замечательно, но надо его грамотно на событие повесить, чтобы не запускался слишком часто, но и вновьдобавленные листы вовремя помещал или удаленные не зевал.


Сообщение отредактировал Perfect2You - Воскресенье, 12.03.2017, 14:46
 
Ответить
СообщениеРезюмируя вышесказанное:
Если Вам в одну ячейку и при добавлении листа не забудете макрос запускать, то вариант ответа 3 - лучший выбор. только For i = 2 лучше заменить на For i = 1 (чтобы первый лист не терять) и [A1] заменить на Activecell (чтобы не в A1 помещать, а в выделенную ячейку).
Но если таких ячеек много и нужно постоянно следить за пополнением списка в каждой, то для хранения списка листов лучше всего выбрать отдельный столбец какого-нибудь технического листа, чтоб кто-то не повредил.
В источнике лучше задать динамический массив, например
Код
=Лист1!B1:ИНДЕКС(Лист1!B:B;ПРОСМОТР(;-1/ДЛСТР(Лист1!B:B);СТРОКА(Лист1!B:B)))

А вот как его наилучшим образом пополнять - дело тонкое. Формулы - хорошо, но кончиться могут (если листы добавляются постоянно). Макрос - замечательно, но надо его грамотно на событие повесить, чтобы не запускался слишком часто, но и вновьдобавленные листы вовремя помещал или удаленные не зевал.

Автор - Perfect2You
Дата добавления - 12.03.2017 в 14:44
Vasil74 Дата: Воскресенье, 12.03.2017, 15:15 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
bmv98rus, спасибо воспользовался этим методом, после танца с бубнами и помощью других сайтов - заработало (не хотел диспетчер имен нагружать но пришлось)

n0leg68, спасибо, этот метод работает, но сильно отнимает время, в плане обновлений, + ко всему этот метод не растянешь по нескольким местам, не доработав макрос.


Спасибо за ответы!
 
Ответить
Сообщениеbmv98rus, спасибо воспользовался этим методом, после танца с бубнами и помощью других сайтов - заработало (не хотел диспетчер имен нагружать но пришлось)

n0leg68, спасибо, этот метод работает, но сильно отнимает время, в плане обновлений, + ко всему этот метод не растянешь по нескольким местам, не доработав макрос.

Автор - Vasil74
Дата добавления - 12.03.2017 в 15:15
Vasil74 Дата: Воскресенье, 12.03.2017, 15:28 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Таким образом:
1. В диспетчере имен создаем имя и формулу:
Оглавление
Код
=ЗАМЕНИТЬ(ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1);1;НАЙТИ("]";ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1));"")&Т(ТДАТА())


2. На технический лист вставляем формулу
Код
=ЕСЛИОШИБКА(ИНДЕКС(Оглавление;СТРОКА(A1));"")


3. Растягиваем формулу вниз примерно на то количество листов, которое будет в книге (я не запарился и растянул на 1500 строк)

4. Идем на нужный лист на нужную ячейку в которой будет выпадающий список

5. Жмем на "Проверка данных"

6. Тип данных - "список"

7. Указываем источник (если он на листе "Технический лист" в столбце "A" то:
Код
=СМЕЩ('Технический лист'!$A$1;0;0;СЧЁТЗ('Технический лист'!$A:$A);1)


Спасибо за ответы!

Сообщение отредактировал Vasil74 - Воскресенье, 12.03.2017, 19:16
 
Ответить
СообщениеТаким образом:
1. В диспетчере имен создаем имя и формулу:
Оглавление
Код
=ЗАМЕНИТЬ(ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1);1;НАЙТИ("]";ПОЛУЧИТЬ.РАБОЧУЮ.КНИГУ(1));"")&Т(ТДАТА())


2. На технический лист вставляем формулу
Код
=ЕСЛИОШИБКА(ИНДЕКС(Оглавление;СТРОКА(A1));"")


3. Растягиваем формулу вниз примерно на то количество листов, которое будет в книге (я не запарился и растянул на 1500 строк)

4. Идем на нужный лист на нужную ячейку в которой будет выпадающий список

5. Жмем на "Проверка данных"

6. Тип данных - "список"

7. Указываем источник (если он на листе "Технический лист" в столбце "A" то:
Код
=СМЕЩ('Технический лист'!$A$1;0;0;СЧЁТЗ('Технический лист'!$A:$A);1)

Автор - Vasil74
Дата добавления - 12.03.2017 в 15:28
Vasil74 Дата: Воскресенье, 12.03.2017, 15:34 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Perfect2You, Ваша формула не вставляется в источник данных, excel говорит что этого нельзя делать )))


Спасибо за ответы!
 
Ответить
СообщениеPerfect2You, Ваша формула не вставляется в источник данных, excel говорит что этого нельзя делать )))

Автор - Vasil74
Дата добавления - 12.03.2017 в 15:34
Manyasha Дата: Воскресенье, 12.03.2017, 17:39 | Сообщение № 8
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 902 ±
Замечаний: 0% ±

Excel 2010, 2016
Vasil74, формулы нужно оформлять тегами (кнопка fx). Поправьте.


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеVasil74, формулы нужно оформлять тегами (кнопка fx). Поправьте.

Автор - Manyasha
Дата добавления - 12.03.2017 в 17:39
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!