Снова динамические диапазоны — снова с текстовыми строками

У меня есть ряд наборов данных (позже они будут использоваться для заполнения выпадающих списков), и я попытался настроить динамические диапазоны, чтобы перечислить только ячейки с полезными данными. Всего имеется 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)

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

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

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

РЕДАКТИРОВАТЬ: Чтобы дать немного контекста, вот немного списка. Полный список содержит записи, разбросанные по его длине, дубликаты удаляются во второй столбец, а все они объединяются в единый блок в третьем столбце. Затем они заполняются в поле со списком в пользовательской форме, но также появляются все пробелы...

Источник в поле со списком


person Andrew Perry    schedule 08.06.2016    source источник
comment
Я считаю, что будет полезно, если вы дадите пример ввода и вывода. Легко неверно истолковать описательно заданные цели.   -  person zaptask    schedule 08.06.2016
comment
Готово... думаю. Надеюсь, это немного прояснит ситуацию.   -  person Andrew Perry    schedule 08.06.2016
comment
Не пробелы, нет; все пустые ячейки "" пусты с формулами, но там нет пробелов. Я попробую проверить LEN и вернусь к вам.   -  person Andrew Perry    schedule 08.06.2016
comment
Это не космическая проблема. это проблема подсчета. СЧЕТ и СЧЁТЕСЛИ. Я попытался выполнить СЧЁТЕСЛИ(диапазон,‹›&), но это не сработало, несмотря на то, что в демо-версии говорилось, что это сработает.   -  person Forward Ed    schedule 08.06.2016
comment
Ваш комментарий, на который я отвечал, кажется, исчез. LEN возвращает 0 для пустых ячеек, как и должно быть.   -  person Andrew Perry    schedule 08.06.2016


Ответы (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)
person Forward Ed    schedule 08.06.2016
comment
Да, имя рабочего листа есть для определения диапазона. Я попробую ваше предложение и вернусь к вам. - person Andrew Perry; 08.06.2016
comment
Исходя из вашего предложения, я изменил $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) работает хорошо. Если вы хотите отредактировать это в своем ответе, я поставлю галочку. Спасибо! - person Andrew Perry; 08.06.2016
comment
Я редактировал формулу и одновременно заметил в ней ошибку. ваш COUNTA(C3:C162,1) имеет ,1, которого на самом деле не должно быть. это может сбить счет. и последний -1, возможно, не должен быть там в результате... и, возможно, вы хотели ввести ,1 вместо этого не уверены. Попробуйте отредактированную формулу и посмотрите, работает ли она. - person Forward Ed; 08.06.2016
comment
Ааааа, это объясняет, почему он получил эту дополнительную 1, которую мне пришлось поставить -1, чтобы исправить. Опасности копирования-вставки кода и предположения, что учебник понятен правильно. :-D - person Andrew Perry; 08.06.2016
comment
Я оставил ,1 там, потому что формат смещения OFFSET(REFERENCE, ROWS SHIFT, COLUMN SHIFT, # ROWS to RETURN, # COLUMNS to RETURN) Теперь последние два являются необязательными, но мне нравится помещать их именно в то, что делает последний ,1. Его поговорка возвращает 1 столбец шириной. - person Forward Ed; 08.06.2016
comment
...и теперь ни одна из чертовых вещей не работает. О, динамические диапазоны, что вы меня так бесите? - person Andrew Perry; 08.06.2016
comment
Хорошо, я попробую это. Ваше здоровье. - person Andrew Perry; 08.06.2016
comment
Нашел проблему. Некоторые управляющие символы были введены со знаком минус (- вместо -), что нарушало формулу. Избавился от них и теперь работает. Скопируйте и вставьте, кажется, это действительно важно для меня сегодня. Спасибо тебе за твое терпение. - person Andrew Perry; 08.06.2016
comment
Хорошо, собака рада это слышать, поскольку она смотрит на меня, желая пойти на утреннюю прогулку, и я говорю НЕТ, нужно ответить на вопрос! Прочь на ПРОГУЛКУ теперь все же. Приятного утра 8) - person Forward Ed; 08.06.2016
comment
Мой вечер - как раз собирался домой с работы. Удачной прогулки и еще раз спасибо. :-) - person Andrew Perry; 08.06.2016