2016-06-08 5 views
2

У меня есть серия наборов данных (которые позже будут использоваться для заполнения comboboxes), и я попытался настроить динамические диапазоны, чтобы перечислять только ячейки с полезными данными. Всего имеется 160 строк данных, но количество строк, которые будут заполнены, будет сильно отличаться.Динамические диапазоны снова - еще раз, с текстовыми строками

В случае, если он имеет отношение к нему (если динамические диапазоны обнаружения "" не пустым, к примеру), формулу, используемую для заполнения ячеек в диапазоне является

{=IF(ROW()-ROW(StartPort_NoBlanks)+1>ROWS(StartPort_Blanks)-COUNTBLANK(StartPort_Blanks),"",INDIRECT(ADDRESS(SMALL((IF(StartPort_Blanks<>"",ROW(StartPort_Blanks),ROW()+ROWS(StartPort_Blanks))),ROW()-ROW(StartPort_NoBlanks)+1),COLUMN(StartPort_Blanks),4)))} 

(на основе @ DennisWilliamson годов ответ на https://superuser.com/questions/189737/dynamically-updating-list-of-unique-column-entries-in-excel)

до сих пор я пытался как

='Saves_FilterLookups'!$C$3:INDEX('Saves_FilterLookups'!$C$3:$C$162, COUNTA('Saves_FilterLookups'!$C$3:$C$162)) 

и

=OFFSET('Saves_FilterLookups'!$C$3,0,0,COUNTA('Saves_FilterLookups'!$C:$C),1) 

... но оба дают мне весь список, включая «пустые» ячейки.

Большинство диапазонов содержат текстовые строки; один из других диапазонов содержит даты.

Что мне не хватает? Как это исправить?

EDIT: Чтобы дать немного контекста, вот немного списка. Полный список содержит записи, разбросанные по его длине, дубликаты удаляются во второй столбец, и все они объединены в один блок в третьем столбце. Они затем заполняется в выпадающий список в UserForm, но все заготовки приходят тоже ...

Source to combobox

+1

Я считаю, что это будет полезно, если вы дадите примерный ввод и вывод. Легко неверно истолковать описательно заданные цели. – zaptask

+0

Сделано ... думаю. Надеюсь, это немного разъяснит. –

+0

Не пространство, нет; все пустые ячейки являются "" "" пробелами с формулами, но там нет никаких пробелов. Я дам LEN проверить попытку и вернуться к вам. –

ответ

1

Вот возможное решение для вас ... предостережение сота над списком должно быть пустым

=IFERROR(INDEX($A$2:$A$13,MATCH(0,INDEX(COUNTIF($B$1:B1,$A$2:$A$13),0,0),0)),"") 

Это будет генерировать список всего за один шаг и удалить пробелы.

Я считаю, что ваш COUNTA - ваш преступник. COUNTA будет считать все ячейки с чем-то в них ... и, к сожалению, «это что-то». Поэтому вам нужно будет удалить счетчик "". поэтому я добавил -COUNTIF и принял тот же диапазон, что и раньше. Имя рабочего листа не требуется, если все выполняется на том же рабочем листе.

=OFFSET('Saves_FilterLookups'!$C$3,0,0,COUNTA('Saves_FilterLookups'!$C$3:$C$162)-COUNTIF('Saves_FilterLookups'!$C$3:$C$162,""),1) 
+0

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

+0

Работая с вашим предложением, я изменил '$ C: $ C' на ограниченный диапазон и скорректировал для перекрытия. '= OFFSET (Saves_FilterLookups! $ C $ 3,0,0, COUNTA (Saves_FilterLookups! $ C $ 3: $ C $ 162,1) -COUNTIF (Saves_FilterLookups! $ C $ 3: $ C $ 162," ") - 1)' отлично работает , Если вы хотите отредактировать это в своем ответе, я позову его. Благодаря! –

+0

Я отредактировал формулу и заметил ошибку в ней одновременно. ваш COUNTA (C3: C162,1) имеет значение 1, которого действительно не должно быть. это может отбросить счет. и последний -1, возможно, не должен быть там в результате ... и потенциально вы хотели набрать, 1 вместо этого не уверены. Попробуйте отредактированную формулу и посмотрите, работает ли она. –