【发布时间】:2017-11-08 11:26:01
【问题描述】:
我正在尝试遍历多个工作表来检测一个值。这个值将存在于许多工作表中,但我想找到最早的一个。每个选项卡都包含每周数据。第一周将首次包含数据。下周将包括前几周的数据。我的目标是找出首次报告用户的时间。我用 for 循环、匹配和索引函数尝试了不同的 VBA 代码,但没有运气。
我决定使用以下功能:
=IF(ISERROR(VLOOKUP(A3,DataExtract.xlsx!Table1[#Data],1,FALSE)),"","6/11/2017")
这行代码完美运行并完成了任务,但只能搜索 24 个工作表中的 1 个。
我尝试多次运行此命令,但没有成功
=IF(ISERROR(VLOOKUP(A2,DataExtract.xlsx!Table1[#Data],1,FALSE)),"","6/11/2017"), IF(ISERROR(VLOOKUP(A2,DataExtract.xlsx!Table2[#Data],1,FALSE)),"","13/11/2017"), IF(ISERROR(VLOOKUP(A2,DataExtract.xlsx!Table3[#Data],1,FALSE)),"","2017 年 11 月 20 日")
每个不同的表都包含存储在不同工作表中的每周数据。
是否可以修改此代码以使其正常工作,或者我唯一的机会是继续搜索宏来完成我的任务?任何帮助将不胜感激。
【问题讨论】:
-
公式是一个公式,而不是列表。所以你可以试试
=if(not(iserror(vlookup(...))),"6/11/2017",if(not(iserror(vlookup(...))),"13/11/2017",if(not(iserror(vlookup(...))),"20/11/2017","")))。即在第一个表中寻找成功; else 在第二个中寻找成功;否则在第三个中寻找成功。注意一般结构是=if(successful_lookup_1,value_1,if(successful_lookup_2,value2,if(successful_lookup_3,value_3,"")))。但如果我要检查的工作表超过 3 或 4 张,我肯定会使用 VBA 脚本。 -
您希望输出是什么?这个公式
IF(<whatever>,"","6/11/2017")只能返回空值或 6/11/2017(或返回错误)。 -
我希望输出是一个特定的日期,具体取决于它找到用户的选项卡(周)。非常感谢@AlexP,我从没想过你会在 if 和 iserror 之间使用 not 。它现在可以通过多个工作表工作,即使第二个结果不正确,但我会解决这个问题
标签: excel