У меня есть новая формула в файле журнала покупок, чтобы сравнить даты, указанные нашим экспедитором, и даты в нашей системе.Однако иногда имена контейнеров отличаются или имеют ошибки, поэтому мне также нужно проверять наличие символов в vlookup ("пробел" или "-" большую часть времени).Мне интересно, как заставить эту формулу работать быстрее, например, пользовательскую функцию или даже макрос (это обновляется 3-4 раза в неделю, и уже есть макрос для обновления всей книги) Большое спасибо!
Объяснение : в основном мы берем контейнер "abcd1234" и проверяем его с помощью файла форвардеров Excel и сравниваем даты в обоих файлах.Что делает это длинным, так это то, что иногда возникают ошибки при создании файла-контейнера, например "abc 1234" или "abc1234-" и т. д.
Снимок экрана формулы здесь
= IF (AK2 = ""; "NOT ON BOAT YET"; IF (ISNUMBER (LEFT (AK2; 1) * 1); "НЕ КОНТЕЙНЕР"; IF (ISERROR (VLOOKUP (IF (ISNUMBER (SEARCH (""); AK2)); LEFT (AK2; НАЙТИ (""; AK2) -1); IF (ISNUMBER (ПОИСК ("-"; AK2)); LEFT (AK2; НАЙТИ ("-"; AK2) -1);AK2)); date_in_DHL; 9; 0)); IF (ISBLANK (AX2); "планирование передачи данных"; "Дата транзакции получения, пожалуйста, подтвердите"); IF (ISBLANK (AX2); IF (VLOOKUP (IF)(ISNUMBER (SEARCH (""; AK2)); LEFT (AK2; НАЙТИ (""; AK2) -1); IF (ISNUMBER (SEARCH ("-"; AK2)); LEFT (AK2; НАЙТИ ("-"); AK2) -1); AK2)); plan_dates; 10; 0) = BZ2; "Дата указана правильно с запланированным столбцом" & ". Дата DHL -" & DAY (VLOOKUP (IF (ISNUMBER (SEARCH (""); AK2)); LEFT (AK2; НАЙТИ (""; AK2) -1); IF (ISNUMBER (ПОИСК ("-"; AK2)); LEFT (AK2; НАЙТИ ("-"; AK2) -1);AK2)); планируемые даты; 10; 0)) & "-" & MONTH (VLOOKUP (IF (ISNUMBER (SEARCH ("; AK2)); ВЛЕВО (AK2; НАЙТИ (" "; AK2) -1); IF (ISNUMBER(ПОИСК ( "-"; AK2)); LEFT (AK2; НАЙТИ ("-"; АК2) -1); АК2)); плановые_даты; 10; 0)) & "-" & ГОД (VLOOKUP (IF (ISNUMBER (ПОИСК (""; АК2)); ВЛЕВО (AK2; НАЙТИ(""; AK2) -1); IF (ISNUMBER (SEARCH ("-"; AK2)); LEFT (AK2; НАЙТИ ("-"; AK2) -1); AK2)); запланированные_даты; 10; 0)); IF (VLOOKUP (IF (ISNUMBER (SEARCH (""; AK2)); LEFT (AK2; НАЙТИ (""; AK2) -1); IF (ISNUMBER (SEARCH ("-"; AK2)); LEFT (AK2; НАЙТИ ("-"; AK2) -1); AK2)); плановые_даты; 10; 0)> 0; VLOOKUP (IF (ISNUMBER (SEARCH (""; AK2)); ВЛЕВО (AK2; НАЙТИ (""; АК2) -1); ЕСЛИ (ЕЧИСЛО (ПОИСК ( "-"; АК2)); ЛЕВЫЙ (АК2; FIND ( "-"; АК2) -1); АК2)); planned_dates; 10; 0); IF (VLOOKUP (IF (ISNUMBER (SEARCH (""; AK2)); LEFT (AK2; НАЙТИ (""; AK2) -1); IF (ISNUMBER (SEARCH ("-"; AK2)); ВЛЕВО (AK2; НАЙТИ ("-"; AK2) -1); AK2)); date_in_DHL; 9; 0)> BZ2; VLOOKUP (IF (ISNUMBER (SEARCH (""; AK2)); ВЛЕВО (AK2; НАЙТИ (""; AK2) -1); IF (ISNUMBER (SEARCH ("-"; AK2)); LEFT (AK2; НАЙТИ ("-"; AK2) -1); AK2)); date_in_DHL; 9; 0); "Дата в DHL:ранее / совпадает с датой в списке «&».Датой DHL является "& DAY (VLOOKUP (IF (ISNUMBER (SEARCH (";; AK2)); ЛЕВЫЙ (AK2; НАЙТИ (""; AK2) -1); IF (ISNUMBER (SEARCH ("-"; AK2)); LEFT (AK2; НАЙТИ ("-"; AK2) -1); AK2)); date_in_DHL; 9; 0)) & "-" & MONTH (VLOOKUP (IF (ISNUMBER (SEARCH (""; AK2));LEFT (AK2; FIND (""; AK2) -1); IF (ISNUMBER (SEARCH ("-"; AK2)); LEFT (AK2; FIND ("-"; AK2) -1); AK2)); date_in_DHL; 9; 0)) & "-" & YEAR (VLOOKUP (IF (ISNUMBER (SEARCH (""; AK2)); LEFT (AK2; НАЙТИ (""; AK2) -1); IF (ISNUMBER (SEARCH ("-"; AK2)); ВЛЕВО (AK2; НАЙТИ (" - "; AK2) -1); AK2)); date_in_DHL; 9; 0)))));" Есть дата транзакции квитанции, пожалуйста, проверьте "))))