我在采购积压文件中有一个新公式,用于比较货运代理提供的日期和系统中的日期。但是,有时容器名称不同或有错误,因此我还需要检查vlookup中的字符(大多数情况下是“空格”或“-”)。我想知道使此公式更快运行的方法,例如用户定义的函数,甚至是宏(每周更新3-4次,并且已经有一个宏来更新整个工作簿) 非常感谢!
说明:基本上,我们正在使用“ abcd1234”容器,并使用转发器excel文件对其进行了检查,并比较了两个文件中的日期。之所以这么长,是因为有时会出现错误文件创建容器,例如“ abc 1234”或“ abc1234-”等。
公式的屏幕截图为here
= IF(AK2 =“”;“未上船”“; IF(ISNUMBER(LEFT(AK2; 1)* 1);”没有容器“; IF(ISERROR(VLOOKUP(IF(ISNUMBER(SEARCH( ” “; AK2)); LEFT(AK2; FIND(” “; AK2)-1); IF(ISNUMBER(SEARCH(”-“; AK2)); LEFT(AK2; FIND(”-“; AK2)-1); AK2))); dates_in_DHL; 9; 0)); IF(ISBLANK(AX2);“ pas dans planning“;”请输入收据交易日期 verify“); IF(ISBLANK(AX2); IF(VLOOKUP(IF(ISNUMBER(SEARCH(” “; AK2)); LEFT(AK2; FIND(” “; AK2)-1); IF(ISNUMBER(SEARCH(”-“; AK2)); LEFT(AK2; FIND(”-“; AK2)-1); AK2))); planned_dates; 10; 0)= BZ2 ;“ 计划列“&”中的日期正确。 DHL的日期是 “&DAY(VLOOKUP(IF(ISNUMBER(SEARCH(” ;; AK2)); LEFT(AK2; FIND(“ “; AK2)-1); IF(ISNUMBER(SEARCH(”-“; AK2)); LEFT(AK2; FIND(”-“; AK2)-1); AK2))); planned_dates; 10; 0))& “-”&MONTH(VLOOKUP(IF(ISNUMBER(SEARCH(“ “; AK2)); LEFT(AK2; FIND(” “; AK2)-1); IF(ISNUMBER(SEARCH(”-“; AK2)); LEFT(AK2; FIND(”-“; AK2)-1); AK2))); planned_dates; 10; 0))& “-”&YEAR(VLOOKUP(IF(ISNUMBER(SEARCH(“ “; AK2)); LEFT(AK2; FIND(” “; AK2)-1); IF(ISNUMBER(SEARCH(”-“; AK2)); LEFT(AK2; FIND(”-“; AK2)-1); AK2))); planned_dates; 10; 0)); IF(VLOOKUP(IF(ISNUMBER(SEARCH(“ “; AK2)); LEFT(AK2; FIND(” “; AK2)-1); IF(ISNUMBER(SEARCH(”-“; AK2)); LEFT(AK2; FIND(”-“; AK2)-1); AK2)));计划日期; 10; 0)> 0 ; VLOOKUP(IF(ISNUMBER(SEARCH(“ “; AK2)); LEFT(AK2; FIND(” “; AK2)-1); IF(ISNUMBER(SEARCH(”-“; AK2)); LEFT(AK2; FIND(”-“; AK2)-1); AK2))); planned_dates; 10; 0); IF (VLOOKUP(IF(ISNUMBER(SEARCH(“ “; AK2)); LEFT(AK2; FIND(” “; AK2)-1); IF(ISNUMBER(SEARCH(”-“; AK2)); LEFT(AK2; FIND(”-“; AK2)-1); AK2))); dates_in_DHL; 9; 0)> BZ2 ; VLOOKUP(IF(ISNUMBER(SEARCH(“ “; AK2)); LEFT(AK2; FIND(” “; AK2)-1); IF(ISNUMBER(SEARCH(”-“; AK2)); LEFT(AK2; FIND(”-“; AK2)-1); AK2))); dates_in_DHL; 9; 0);”的 DHL中的日期早于/与积压中的日期“&”相同。 DHL的日期 是“&DAY(VLOOKUP(IF(ISNUMBER(SEARCH(”“; AK2)); LEFT(AK2; FIND(” “; AK2)-1); IF(ISNUMBER(SEARCH(”-“; AK2)); LEFT(AK2; FIND(”-“; AK2)-1); AK2))); dates_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))); dates_in_DHL; 9; 0))& “-”&YEAR(VLOOKUP(IF(ISNUMBER(SEARCH(“ “; AK2)); LEFT(AK2; FIND(” “; AK2)-1); IF(ISNUMBER(SEARCH(”-“; AK2)); LEFT(AK2; FIND(”-“; AK2)-1); AK2)); dates_in_DHL; 9; 0))) ));“那里 是收据交易日期,请验证“))))