社区首页 >问答首页 >是否有一种方法可以在Excel中使用VBA执行多个检查

是否有一种方法可以在Excel中使用VBA执行多个检查
EN

Stack Overflow用户
提问于 2020-01-20 03:13:46
回答 1查看 77关注 0票数 0

我希望检查多个单元格上的值,根据结果更改当前单元格中的数据。我下面的方法工作得很好,但效果很差。我的目标是设置多个检查(每个条件一次)或一个检查每个条件的函数。

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

代码语言:javascript
代码运行次数:0
复制
=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属性。

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

自动取消->检查单元格的文本是否为"AUTO"

  • Refunded预订>检查单元格的值是否大于1,以及同一行的单元格是否

  • Nagios预订->检查B列(同一行)中单元格的值是否为0

  • 零票证预订>检查单元格在U列(同一行)中的值是否为0

最后一次检查还没有建立,这是我最麻烦的。我想检查订单被确认的日期和取消的日期(这是可能的)。可能没有取消日期,也可能只有取消日期。

由于有可能没有使用相同的场地参考资料(唯一ID)进行确认/取消预订,我尝试过,但未能做到。

代码语言:javascript
代码运行次数:0
复制
=IF(OR(IFERROR(VLOOKUP(A2,Confirmed,33,FALSE)=0,0),IFERROR(VLOOKUP(A2,Cancelled,33,FALSE)=0,0)),1,2)

或者这个

代码语言:javascript
代码运行次数:0
复制
=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)))

让我知道需要什么细节才能更好地理解我的答案。例如,最后一个公式有一个vlookup,column_index(33)是日期。

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

  • 确认是另一张确认预订的列表。
  • 取消是单独一张中取消预订的列表。
  • 剧院是一张单独纸张中的剧院/事件列表,以评估预订是为活动还是为剧院。
  • 状态列表是新创建的响应Variatus的答案.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-20 04:11:37

你的配方是不可渗透的。首先,我们不知道您的命名范围“确认”位于何处,因为另一个SEARCH("Event",AO126)将返回一个数字,即AO126是否持有“无值参考事件”或“事件”,而不是最终,您的公式只有在抛出和出错时才返回有用的结果,最后,它将评估结果的结果,而不是直接从母亲的胸部饮用。

这样的话,我将创建一个命名范围,最好是在一个单独的单张中,专用于列表并隐藏在视线之外(和干扰),值为“零票预订”、“退款预订”、“自动取消”和"Nagios预订“。我将在这里以状态的名称来提及这个范围。使用此范围输入验证下拉列表,从中选择AP:AS中的单元格内容,或者在公式中引用它,如=IF(B126=0, Index(Statuses,4),""。引入此范围的直接效果将使您能够使用等式测试(如IF(AS126=INDEX(Statuses,1),True,False) )替换公式中的所有搜索函数。

接下来,您的公式只计算两个条件,即AS126是否为空。请将此逻辑工作到您的公式的基础:=IF(AS126="","Do one thing","Do the other")。它将处理所有的AND条件。

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

如前所述,如果AS126是空白的,您应该做什么?这是一个您尚未透露的秘密。试着用同样的方法来解决这个问题。将可能的值分配给指定的范围,使用该范围填充工作表中的单元格,然后使用匹配结果从另一个范围返回一个值(而不是像我前面所做的那样)。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59822090

复制
相关文章
重绘与回流_html回流重绘
浏览器在渲染一个页面时,会将页面分为很多个图层,图层有大有小,每个图层上有一个或多个节点。 也就是我们各种各样的Dom标签
全栈程序员站长
2022/11/01
1.4K0
重绘与回流_html回流重绘
回流重绘
HTML默认是流式布局,css与js会打破这种布局,改变DOM的几何属性与外观属性。在绘制时根据渲染树布局,再根据布局绘制,这就是回流重绘。
岳泽以
2022/11/21
6390
重排与重绘
原文地址:http://www.cun-xu.cn/index.php/2018/12/25/重排与重绘/
IMWeb前端团队
2019/12/03
1.2K0
重排与重绘
回流和重绘
我们要明确页面在文档加载完成之后到完全显示中间的过程是 根据文档生成DOM树(包括display:none的节点) 在DOM树基础上根据节点的几何属性(margin/padding/width/height等)生成render树(不包括display:none、head节点但会包含visibility:hidden节点) 在render树基础上进行进一步渲染包括color,outline等样式 reflow: 当render树中的一部分或者全部因为大小边距等问题发生改变而需要重建的过程叫做回流 rep
念念不忘
2019/03/29
8800
“重绘” 和 “重排”
重绘是指一个元素外观改变所触发的浏览器行为,大概就是外观属性的改变,像,背景颜色,等
用户3055976
2019/10/31
8030
HTML中的重绘与回流
在认识重绘和回流之前,我们先认识一下一个页面加载的时候,会发生什么?   页面加载时,生成一个DOM树,DOM Tree里包含了构成页面所有的标签。Style Sheets(CSS样式表)会生成一个Style Rules。当DOM Tree和Style Rules一起构建出了Render Tree,对于Render Tree的理解:Render Tree和DOM Tree类似,但是Render Tree能够识别样式,在Render Tree上,每一个node(节点)都有自己的Style(样式),但隐藏的节点或是不会用于显示的部分不会包含在Render Tree上。
刘亦枫
2020/03/19
1.5K0
HTML中的重绘与回流
浏览器的重排重绘
完整高频题库仓库地址:https://github.com/hzfe/awesome-interview
HZFEStudio
2021/09/12
1.1K0
MFC-4简单的窗口重绘(非部分重绘)
#include <afxwin.h> #include "resource.h" #include <afxtempl.h> //定义模板类的头文件 class MyDocument : public CDocument { public: CArray<CPoint,CPoint &> pArray;//<保存的数据类型,读取保存数据类型的返回值> void AddPoint(CPoint p) { pArray.Add(p); } CPoint GetPoint(int i) {
liulun
2022/05/09
6900
页面优化——重绘和回流[通俗易懂]
一、写在前面 页面优化在面试的过程中经常遇到的问题,今天就来总计一下重绘和回流的问题。 二、重绘和回流是什么 我们都知道一个页面从加载到完成,首先是构建DOM树,然后根据DOM节点进行几何布局形成render树(渲染树),当渲染树构建完成后,页面就根据DOM树开始布局,渲染树也根据设置的样式渲染这些节点。 在这一过程中,比如我们删除DOM节点,修改一个元素的宽高,页面布局发生变化,DOM树也发生变化,那么肯定要重新构建DOm树,而DOM树和渲染树紧密相连,DOM树渲染完了,渲染树也会随之进行渲染,这个过程就称为回流。 在比如说,我们给一个元素修改颜色,这样的行为是不会影响页面的布局的,DOM树不会发生改变,但是颜色变了,渲染树得重新绘制,这就是重绘。 所以说回流一定会触发重绘,重绘不一定触发回流。 题外话: 1、由于display:none的元素不在页面渲染,渲染树的构建不包含这些节点。但是visibility为hidden的元素会在渲染树中。因为display为none会脱离文档流,visibility为hidden虽然看不到,但类似与透明度为0,其实还在文档流中,还是有渲染的过程。 2、尽量避免使用表格布局,当我们不给表格的td设置固定的宽度的时,一列的td的宽度会以最宽的td的宽作为渲染的标准,假设前几行的td在渲染时都渲染好了,结果下面的某行特别宽,table为了统一宽度,前几行的td会回流重新计算宽度,这是一个比较耗时的操作。 三、怎么样减少回流 回流会重构DOM树,渲染树也得重新渲染,比较麻烦,哪些行为可以引发回流,如何去避免呢? 1、DOM的删除行为 比如删除某个节点,或者给父元素插入子节点,这类操作都会触发回流。如果我们插入多个子节点的话,可以使用documentfragment。 2、几何属性的变化 比如说元素的宽度变了,border变了,字体大小变了,这种直接会引发页面的布局的改变,也会触发回流。如果我们需要改变多个属性,做好的是将这些改变定义在一个class中,直接修改class名,这样只会触发一次回流。 3、元素的位置发生改变 修改一个元素的左右margin,padding之类的操作,所以在元素位移的动画,不要更改margin之类的值,使用定位脱离文档流后进行改变位置。 4、获取文章的偏移量之类的属性 例如我们需要获取scrollTop、scrollLeft、scrollWidth、offsetTop、offsetLeft、offsetWidth、offsetHeight之类的属性的时候,浏览器为了保证值的正确性也会回流进行获取,所以如果你要不多次操作,最好取完进行缓存。 5、页面初次渲染触发回流 页面的初次渲染触发回流这样无法避免。 6、浏览器窗口尺寸的改变 resize事件的发生也会触发回流。
全栈程序员站长
2022/11/17
9460
JS引发页面重排重绘的代价
示例 目标是修改div内容,3种实现方式,看下每种方式的执行时间 <html> <body> <div id="myDiv1"></div> <div id="myDiv2"></div> <div id="myDiv3"></div> <script> var times = 10000; // 方式1 console.time(1); for(var i = 0; i < times; i++) { document.getElementById('myDiv1').innerHTML += 'a'
dys
2018/04/02
1.2K0
DOM优化之重绘和回流
浏览器内核中的JS 引擎和渲染引擎是独立存在的,当我们用JS去操作DOM时,本质上是JS引擎和渲染引擎之间进行的“跨界交流”。
九旬
2020/10/23
9020
使用重绘项美化WinForm中的控件
如果你觉得项目中的ComboBox、ListBox或其它的Winforms控件不能满足你的显示要求,包括窗体在内很多控件都支持重绘修改显示样式。下面的示例完成对ComBox数据项的重绘,希望能起到抛砖引玉的作用。
张果
2022/05/09
1.1K0
使用重绘项美化WinForm中的控件
你真的了解回流和重绘吗
回流和重绘可以说是每一个web开发者都经常听到的两个词语,我也不例外,可是一直不是很清楚这两步具体做了什么事情。最近由于部门内部要做分享,所以对其进行了一些研究,看了一些博客和书籍,整理了一些内容并且结合自己的体会,写了这篇文章,希望可以帮助到大家。
嘿嘿嘿
2018/12/25
1.3K0
浏览器的回流与重绘 (Reflow & Repaint)
当Render Tree中部分或全部元素的尺寸、结构、或某些属性发生改变时,浏览器重新渲染部分或全部文档的过程称为回流。 会导致回流的操作:
Nealyang
2019/09/29
6890
重绘和回流(Repaint & Reflow),如何优化
由于节点的几何属性发生改变或者由于样式改变而不影响布局的,称为重绘,例如outline,visibility,color,background-color等,重绘的代价是高昂的,因为浏览器必须验证DOM树上其他节点的可见性。
刘嘿哈
2022/10/25
7820
浏览器的渲染流程--重排、重绘、合成
定义: 当通过JS或css改变了元素的宽度、高度等,修改了元素的几何位置属性,那么浏览器会触发重新布局,解析之后的一系列子阶段,这个过程就叫重排。无疑, 重排需要更新完整的渲染流水线,所以开销也是最大的。
用户7741497
2022/03/06
1.1K0
页面重绘和回流(重排)以及优化
1. 当render tree中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变而需要重新构建。这就称为回流(reflow)。每个页面至少需要一次回流,就是在页面第一次加载的时候。在回流的时候,浏览器会使渲染树中受到影响的部分失效,并重新构造这部分渲染树,完成回流后,浏览器会重新绘制受影响的部分到屏幕中,该过程成为重绘。 2. 当render tree中的一些元素需要更新属性,而这些属性只是影响元素的外观,风格,而不会影响布局的,比如background-color。则就叫称为重绘。 回流何时发生:
windseek
2018/06/15
1K0
什么是回流与重绘 (Reflow & Repaint)
在讨论今天的主角之前,我们要先了解一下浏览器的渲染机制。以Google,Firefox,Safari为例,Firefox 使用Geoko——Mozilla 自主研发的渲染引擎,Safari 和Chrome 都使用 webkit。
w候人兮猗
2020/12/21
8780
你真的了解回流和重绘吗
最近有空对其进行了一些研究,看了一些博客和书籍,整理了一些内容并且结合一些例子,写了这篇文章,希望可以帮助到大家。
嘿嘿嘿
2018/12/19
5K4
你真的了解回流和重绘吗
浏览器渲染之回流重绘
回流和重绘是前端开发的高频词汇之一,你可以在各种面经,性能优化相关文章可以看到,但是很多都是草草带过。本文带你从浏览器渲染流程中了解回流与重绘的原理。
政采云前端团队
2021/09/30
1.7K0
浏览器渲染之回流重绘

相似问题

SvelteJS与ReactJS呈现差异(重绘/再流)

24

如何强制reactJS重绘?

21

快速重绘视图

10

重绘视图Android

10

视图不会重绘

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文