Хотите именованный список с непостоянными ячейками - PullRequest
0 голосов
/ 29 апреля 2018

Я думал, что это должно быть обычным делом, но мой поиск не дал ничего значащего. Я бы предпочел решение Excel, а не VBA.

У меня есть лист предложений с такими деталями, как номер (столбец D), дата и т. Д., А также столбец, в котором указано, преобразовано ли предложение (в бизнес).

На листе накладных у меня есть список накладных. Требуется всегда ссылаться на номер предложения, по которому выставляется этот счет. Для устранения человеческих ошибок соответствующие номера предложений должны быть доступны в виде раскрывающегося списка. Следовательно, в раскрывающемся списке должны отображаться только номера предложений, на которые может быть выставлен счет (предложение преобразовано в бизнес).

Это означает, что непостоянные ячейки (скажем, D3, D4, D6 и D10 - где преобразованное предложение - «да») из листа предложения должны быть значениями, доступными в раскрывающемся списке проверки данных в листе счета-фактуры. Как мне этого добиться?

Edit: Добавление изображения, представляющего 2 листа.

I have shown 2 sheets in 1 image

1 Ответ

0 голосов
/ 02 мая 2018

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

Example

Я добавил пару дополнительных столбцов, чтобы подсчитать, сколько раз был выставлен счет-фактуру, а затем еще Да / Нет, чтобы упростить соблюдение формулы индекса. Вы увидите, что в моем примере можно выбрать только 2 значения, так как другие были полностью выписаны.

Страшная формула в Q1

=IFERROR(INDEX($A$2:$H$1000,SMALL(IF(($H$2:$H$1000="Yes"),ROW($A$2:$H$1000)-1),ROW(1:1)),1),"")

Это формула массива, поэтому вы должны использовать SHIFT CTRL ENTER вместо просто ENTER в строке формул. {} будут добавлены бэкеты, если вы все сделаете правильно.

Чтобы разбить его, INDEX($A$2:$H$1000 выбирает данные вашего предложения и еще несколько строк ниже (1000). SMALL(IF(($H$2:$H$1000="Yes") смотрит на мой дополнительный столбец Да / Нет для "Да". ROW($A$2:$H$1000)-1) возвращает номер строки минус 1, чтобы учесть тот факт, что наш диапазон начинается с A 2 . ROW(1:1) говорит, что мы хотим найти первое совпадение в списке, а ),1) возвращает значение в первом столбце диапазона $ A $ 2: $ H $ 1000.

Поскольку ROW(1:1) возвращает первый результат, вам нужно будет выполнить автоматическое заполнение, чтобы получить больше результатов. При этом формула будет копироваться как 1: 1, 2: 2, 3: 3 ... и т. Д. Я заполнил строку 50, чтобы получить приличное количество результатов.

Вы можете установить диапазон проверки на Q1:Q50, но тогда у вас будет много пустого пространства в раскрывающемся списке, поэтому посмотрите на ячейку R1.

="Q1:Q" & COUNTA(Q1:Q50)-COUNTBLANK(Q1:Q50)

Эта формула создает диапазон на основе результатов в столбце Q. Вы можете использовать это значение в диапазоне проверки данных, введя.

=INDIRECT($R$1)

Таким образом создается необходимый вам динамический диапазон.

Вам не нужно использовать дополнительные столбцы, которые я добавил, но формулы:

=COUNTIF(M2:M1000,A2) для подсчета счета-фактуры

=IF(AND(F2="Yes",G2<E2),"Yes","No"), чтобы проверить, можно ли по-прежнему выставлять счет.

если вы хотите использовать их, я бы порекомендовал отформатировать данные в виде таблицы, чтобы формулы автоматически копировались в новые строки.

Также Я бы посоветовал поместить список индексов на другой лист, чтобы строки не удалялись и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...