2013-04-26 4 views
5

Итак, теперь у меня есть выпадающее меню, которое заполняется из диапазона на отдельном листе.EXCEL VBA - создание динамического раскрывающегося списка на основе диапазона ячеек и строки

Я хочу, чтобы иметь возможность уменьшить значения в выпадающем меню, только добавив значения, которые имеют текстовое значение из другой ячейки в каждом тексте значений.

, например: Ячейка A1 говорит: «таблица» Cell A2 является раскрывающейся, который тянет в значении из диапазона диапазона имеет «таблицу», «большой стол», «стул»

В настоящее время выпадающий список всех значений. В этом случае я бы хотел, чтобы он приводил только «таблицу» и «большую таблицу», поскольку в них есть «таблица».

пример моего файла можно найти здесь http://www.filedropper.com/example_1

Пожалуйста, помогите .. Я рву на себе волосы!

Благодаря Майк

+1

где ваш код? что у вас есть? – Juliusz

+0

Пожалуйста, проверьте http://stackoverflow.com/questions/how-to-ask и мой личный фаворит: http://mattgemmell.com/2008/12/08/what-have-you-tried –

+0

@K_B I думаю, что это немного несправедливо, поскольку я искал другие вопросы по этому поводу, и все из них, которые кажутся актуальными, не совсем то, что я ищу. Я не вижу возможности загрузить файл здесь, поэтому я написал пример в моем вопросе. Если вы можете сказать мне, как я могу загрузить таблицу Excel, я могу это сделать для вас. –

ответ

1

Вот один из способов сделать это без VBA:

(все инструкции, которые будут сделаны на листе с перечнем предметов, если не указано иное): enter image description here

  1. Поиск текста. В C2, введите =NOT(ISERROR(SEARCH('Choose Items'!$A$2,A2))) и скопируйте
  2. хиты Count в D2: =IF(C2,1,0), в D3: =IF(C3,D2+1,D2) - скопируйте
  3. Создание динамического списка: в F2: F9, поместите число 1-8. В G2 используйте эту формулу: =IFERROR(INDEX($A$2:$A$9,MATCH(F2,$D$2:$D$9,0)),IF(F2=1,"No match","")) и скопируйте.
  4. Создание динамического именованного диапазона - в поле Имя менеджера (Формулы ->Имя менеджера), введите новое имя ItemsDynamic и обеспечивают =OFFSET(Items!$G$2:$G$9,0,0,MAX(Items!$D$2:$D$9,1),1) как формулы.
  5. Используйте новый ItemsDynamic как источник вашего выпадающего списка в поле проверки

Done! Проверьте решение this file.

2

Это более упрощенный ответ.

Сначала введите элементы в лист «Элементы» в колонке-помощнике, скажем, колонку «C», используя формулу (для C2) и заполните.

=IFERROR(RIGHT($A2,LEN($A2)-FIND(" ",$A2)),$A2) 

Сейчас в листе «Выбрать элементы», для ячейки B2, используйте следующее в качестве источника в списке сверки данных -

=OFFSET(Items!$A$1,MATCH('Choose Items'!$A2,Items!$C$2:$C$10,0),,COUNTIF(Items!$C$2:$C$10,'Choose Items'!$A2),) 

Вы можете заполнить вниз, чтобы продлить проверку на другие строки колонки ' B '

В случае, если ваши данные в листе «Элементы» должны быть расширены до строк за пределами 10, соответствующим образом измените область действия функции смещения и функции countif, чтобы охватить все данные (после группировки в столбце «C», как обсуждалось ранее).

Убедитесь, что список в листе «Элементы» отсортирован по вспомогательному столбцу (по возрастанию или по убыванию), который в данном случае является столбцом «C».

Смежные вопросы