Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有使用VBA在Excel中执行多个检查的方法_Excel_Vba_Statistics - Fatal编程技术网

是否有使用VBA在Excel中执行多个检查的方法

是否有使用VBA在Excel中执行多个检查的方法,excel,vba,statistics,Excel,Vba,Statistics,我希望检查多个单元格范围内的值,根据结果改变当前单元格中的数据。我下面的方法很有效,但效果很差。我的目标是设置多个检查(每个标准一个)或一个检查每个标准的函数 下图显示了我在每个单元格中所做的当前设置。 在第列中,我有以下公式: =IFERROR(IF(ISNUMBER(SEARCH("Zero Ticket Booking",AS126)),"Zero Ticket Booking",IF(ISNUMBER(SEARCH("Refunded Booking",AS126)),"Refunded

我希望检查多个单元格范围内的值,根据结果改变当前单元格中的数据。我下面的方法很有效,但效果很差。我的目标是设置多个检查(每个标准一个)或一个检查每个标准的函数

下图显示了我在每个单元格中所做的当前设置。 在第列中,我有以下公式:

=IFERROR(IF(ISNUMBER(SEARCH("Zero Ticket Booking",AS126)),"Zero Ticket Booking",IF(ISNUMBER(SEARCH("Refunded Booking",AS126)),"Refunded Booking",IF(ISNUMBER(SEARCH("Automatic Cancellation",AS126)),"Automatic Cancellation",IF(ISNUMBER(SEARCH("Nagios Booking",AS126)),"Nagios Booking",IF(AND(ISNUMBER(SEARCH("Theatre",AO126)),(ISBLANK(A126))),"No Venue Ref - Theatre",IF(AND(ISNUMBER(SEARCH("Event",AO126)),ISBLANK(A126)),"No Venue Ref - Event", IF(ISNUMBER(SEARCH("Event",AO126)),VLOOKUP(A126,Confirmed,40,FALSE),FALSE))))))),"Didn't Rebook")
此公式检查同一行上它前面的单元格,以检查上次执行的检查是否能够识别order属性

作为我需要做的检查的简要背景

  • 自动取消-->检查单元格文本是否为“自动”
  • 退款预订-->检查单元格的值是否大于1且单元格位于同一行
  • Nagios Booking-->检查B列(同一行)中的单元格值是否为0
  • 零票证预订-->检查U列(同一行)中的单元格值是否为0
尚未设置的最终检查是我最麻烦的。我想检查订单确认日期和取消日期(这是可能的)。可能没有取消日期或只有取消日期

由于可能不会有相同场馆参考号(唯一ID)的确认/取消预订,我尝试过,但未能成功

=IF(OR(IFERROR(VLOOKUP(A2,Confirmed,33,FALSE)=0,0),IFERROR(VLOOKUP(A2,Cancelled,33,FALSE)=0,0)),1,2)
还是这个

=IF(AND(VLOOKUP(A4,Confirmed,33,FALSE)>0,(VLOOKUP(A4,Cancelled,33,FALSE)> 0)),VLOOKUP(A4,Confirmed,33,FALSE)>VLOOKUP(A4,Cancelled,33,FALSE), IF(AND(VLOOKUP(A4,Confirmed,33,FALSE)<1,(VLOOKUP(A4,Cancelled,33,FALSE)> 0)),"NOT CONF/ YES CANC", IF(AND(VLOOKUP(A4,Confirmed,33,FALSE)>0,(VLOOKUP(A4,Cancelled,33,FALSE)>1)),"YES CONF/NO CANC",2)))
=IF(AND(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(是/和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(和)(
让我知道需要什么样的细节才能更好地理解我的答案。例如,最后一个公式有一个vlookup,列_索引(33)是日期

编辑:我的列表现在包括:

  • “已确认”是一个单独的表单中的已确认预订列表
  • “已取消”是一张单独的表格中的已取消预订列表
  • 剧院是一份剧院/活动清单,另附一页,以供参考 评估预订是针对活动还是剧院
  • 状态列表是新创建的,以响应Variatus的回答

你的配方是不可渗透的。一方面,我们不知道您的命名范围“确认”位于何处,另一方面,
搜索(“事件”,AO126)
将返回一个数字,无论AO126是包含“无值引用-事件”还是仅包含“事件”,而不是最后,您的公式仅在抛出并出错时返回有用的结果,最后,它是对结果的评估,而不是直接从母亲的胸口喝水

话虽如此,我将创建一个命名范围,最好是在一个单独的列表中,并且隐藏(和干扰),其中包含值“零票预订”、“退款预订”、“自动取消”和“Nagios预订”。在这里,我将通过状态名称来引用此范围。使用此范围可提供验证下拉列表,从中选择AP:AS中的单元格内容或在公式中引用它,如
=IF(B126=0,索引(状态,4),“”
。引入此范围的直接效果将是使您能够用等式测试替换公式中的所有搜索函数,如
IF(AS126=Index(状态,1),对,错)

接下来,您的公式只计算两个条件,即AS126是否为空。请将此逻辑应用到公式的基础中:
=if(AS126=“”,“做一件事”,“做另一件事”)
。这将处理所有的
条件

如果AS126不是空的,这个公式应该可以工作。
索引(Statuses,(MATCH(AS126,Statuses,0))
。MATCH只在匹配字符串所在的状态中查找行号

如前所述,如果AS126为空,该怎么办是您尚未披露的秘密。但是,请尝试用相同的方法解决此问题。将可能的值指定给命名区域,使用该区域填充工作表中的单元格,然后使用匹配结果从另一个区域返回值(而不是像我上面所做的那样)


假设您在AO126中有“零票预订”。因此
MATCH(AO126,Statuses,0)
将返回1。假设您有一个命名范围“Output”,其中包含“a,B,C,D”。
INDEX(Output,1)
因此将返回“a”。因此
INDEX(Output,MATCH(AO126,Statuses,0))
也将返回“a”。你可以用它来简化你的公式。

你已经在你的帖子中添加了
vba
标签,但我看不到有任何关于vba的内容。你想创建一些vba代码来运行这些检查吗?如果是的话,你应该提供你的代码,这样我们就可以进一步提供帮助。嗨,Dean,我不确定解决方案是否会涉及vba,将其作为op打开我尝试过使用VBA,但没有成功。我在AW列中设置了一个索引检查公式,
=IF(AH2=“AUTO”,Index(Statuses,3),IF(B2=0,Index(Statuses,4),IF(AND(AN2=“Cancelled”,AI2>1),Index(Statuses,2),IF(U2=0,Index(Statuses,1),“Valid Data”))
我现在需要添加更多的状态,以进一步考虑每个预订的状态。没有状态的将是我可以使用的数据。使用状态的目的是确保没有打字错误打乱您的评估。为此,您应该尝试删除公式中的文本,即“自动”、“取消”、“有效数据”可能是允许的,因为它是由公式编写的,但它可能会在下一个公式中出现,然后会变得混乱。您有太多的列,其中包含太多不重要的信息。如果您要查找的是没有分类的其余列,请尝试直接使用它。索引函数在这里非常有用,谢谢Variatus,很抱歉没有提前确认。