【问题标题】:Looking for a value through iserror and vlookup through worksheets通过 iserror 查找值并通过工作表进行 vlookup
【发布时间】: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


【解决方案1】:

感谢评论这篇文章的用户的帮助,我已经设法解决了我的问题。

以下代码是我需要的。当它搜索的值在位于不同工作簿的第一个表中未找到时,它使用第二个 if 函数作为第一个表达式的 false 部分。

=IF(NOT(ISERROR(VLOOKUP(F2,DataExtract.xlsx!Table1[Email Address],1,FALSE))),"6/11/2017", IF(NOT(ISERROR(VLOOKUP(F2,DataExtract.xlsx!Table2[Email Address],1,FALSE))),"13/11/2017","Not There"))

【讨论】:

    猜你喜欢
    • 2021-06-22
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 2022-06-13
    • 2014-08-15
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多