Я работаю на 2 таблицы.
"Таблица 1" - это список текущих документов, которые я импортирую и хочу оставить без изменений. Файл не отформатирован никак.
Таблица 2 - это список клиентов, с которыми я работаю, и таблица Excel.
Теперь я пытаюсь создать формулу в таблице 2, которая для каждого клиента будет искать свои счета в таблице 1 и выбирать тот, который ближе всего к их соответствующей дате оплаты (или другим способом - счет, который имеет срок оплаты). дата ближайшая к сегодняшнему дню).
То, что я попробовал, было:
Column F - Due dates
Column A - Customer number
Column C - Document type
{=MIN(IF([Documents.XLSX]Sheet1!$F$2:$F$30000>TODAY();[Documents.XLSX]Sheet1!$F$2:$F$30000))}
Что дало мне общую ближайшую дату, которая была за один день, но она была взята из всех документов от всех клиентов, что не является удовлетворительным.
Я тогда попытался добавить второе условное желание отфильтровать только счета
{=MIN(IF(AND([Documents.XLSX]Sheet1!$C$2:$C$30000="INVOICE";[Documents.XLSX]Sheet1!$F$2:$F$30000>TODAY());[Documents.XLSX]Sheet1!$F$2:$F$30000))}
Чем, к сожалению, все стало шатко.
Конечно, я мог бы добавить третье условие с номерами клиентов, но это все равно не сработало бы.
{=MIN(IF(AND([Documents.XLSX]Sheet1!$C$2:$C$30000="INVOICE";[Documents.XLSX]Sheet1!$F$2:$F$30000>TODAY();[Documents.XLSX]Sheet1!$F$2:$F$30000=[@CustomerNumber]);[Documents.XLSX]Sheet1!$F$2:$F$30000))}
Я также попытался обойти с помощью функции в форме чего-то похожего на это:
=INDEX(AD3:AD9;MATCH(1;INDEX((AG3=AA3:AA9)*(AG4=AB3:AB9)*(AG5=AC3:AC9);0;1);0))
В которых AD являются значениями AG, являются входными данными, AA AB и AC являются различными массивами для условий (таких как типы документов, имя клиента и т.д.) Поскольку первые два условия могут выглядеть как AG3 и AG4, я предполагаю, что последнее условие должно быть сформулировано по-разному таким образом, чтобы диапазон входных данных был также диапазоном для вывода.
Пример:https://i.stack.imgur.com/S8HCs.png
Теперь в этом примере формула для Боба должна вернуть значение 30.10.2018, так как это ближайший счет на сегодня. Хотя для Джона это ничего не должно возвращать, так как его счет уже просрочен.
РЕДАКТИРОВАТЬ: В конце концов мне удалось выяснить это самостоятельно. Публикация полученной формулы для тех, кто может наткнуться на эту тему в будущем:
{=MIN(IF(([Documents.XLSX]Sheet1!$C$2:$C$30000="Invoice")*([Documents.XLSX]Sheet1!$F$2:$F$30000>TODAY())*(TEXT([@Customer];0)=[Documents.XLSX]Sheet1!$A$2:$A$30000);[Documents.XLSX]Sheet1!$F$2:$F$30000))}
Это формула массива, так что, конечно, Ctrl + Shift + Enter
Однако, если у кого-то есть идея, как получить одинаковые результаты с помощью комбинации индекс-совпадение, я был бы более чем счастлив узнать.