Excel VBA编程 目的是做如下判断,A列相同的值对应的B列值相同。如果为真,那么反馈“正常

Excel VBA编程 目的是做如下判断,A列相同的值对应的B列值相同。如果为真,那么反馈“正常”,如果为假,反馈“异常”。

dim myBoo as boolean
myBoo = True
‘如果只判断一行:
if range("A1").value=range("B1").value then myBoo = False
’如果需要判断多行
dim I as integer
for I = 1 to 100
if range("A" & I).value=range("B" & I).value then myBoo = False: exit for
next
if myBoo then
msgbox "正常"
else
msgbox "异常"
end if追问

能解释一下吗?

我是if...then写的,If worksheet function.vlookup(cells(I,1),range("A:B"),2,0)=cells(I,2) then ... 可以满足要求,但还是不快

我是if...then写的,If worksheet function.vlookup(cells(I,1),range("A:B"),2,0)=cells(I,2) then ...

追答

myBoo用来表示判断结果。
range("A" & I)和range("B" & I)用来取第I行A、B列单元格的值
一旦发现不同,判断结果为false,终止循环
最后再根据判断结果选择反馈信息
你用vlookup会有问题的,vlookup只能找到第一个匹配项,不适用多行。
比如:A1=2,B1=2,A2=2,B2=3
当算到A2时,vlookup(A2,A:B,2,0)的结果是2,而不是3,就判断错了

追问

我表达的有歧义,我要判断的复杂一些,A列相同的值对应的B列值唯一,则为正常,否则为异常。举例(只有两行数):如果第一行A列值m,B列值2,第二行A列值m,B列值2。则在C列一、二行显示正常。如果第一行A列值m,B列值2,第二行A列值m,B列值1。则在C列一、二行显示异常。其实目的就是找出一对多的m出来。

追答

如果是这样,公式就可以的,比代码快得多
1)C列做辅助列:C1=A1&B1,复制粘贴
2)D列做辅助列:D1=C1=A1&VLOOKUP(A1,A:B,2,0),复制粘贴
3)E1=IF(SUMPRODUCT(1/COUNTIF(OFFSET(A1,0,0,COUNTA(A:A),1),OFFSET(A1,0,0,COUNTA(A:A),1)))=SUMPRODUCT(1/COUNTIF(OFFSET(C1,0,0,COUNTA(A:A),1),OFFSET(C1,0,0,COUNTA(A:A),1))),"正常","异常")
则E1显示判断结果,D列显示不匹配项的位置(False),足矣。用代码的话,一旦数据量大了会慢得让你头疼死的。

追问

就是数据量太大。公式很慢,我使用的if...then 凑合可以满足需要。还是很谢谢!最佳给你了!

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-03-04
用公式可以实现,干嘛用宏。
第2个回答  2015-03-04
用IF函数追答

公式为:=IF(A1=B1,“正常”,“异常”)

追问

亲,你好像没有看明白问题哟。

能不能帮忙再想想

第3个回答  2015-03-04
函数公式就可以搞定了追问

数据量大,公式慢!

excel 用vba 宏中 用一个for循环 将 一列满足条件的后面加上 需要的数...
1、打开一个表,选中序列,点击工具-宏,开始录制。2、录制完成后按alt+f11 切换到代码编辑窗口,设置变量i为长整形,并且设置一个for循环,循环次数比要添加的工资条标签大,在end sub之前加next。3、按alt+f11切换到excel界面,再录制一个删除标题的宏,修改代码,添加for循环按alt+f8调出宏窗口。4...

请教EXCEL中如何A列数据改变,对应的B、C、D等列数据跟着改变
一.当你调用A列所在的数据的时候,那么后面就会显示他们的某些规定属性 答:这个确实用函数就可以做到但不是IF(),而是要用VLOOKUP()不要着急,一看到我说函数,就来劲!接着往下看 二.当鼠标但在BC列时,可以看出什么都没有的,没有函数的 答:可能你的这个表确实用VBA编写了,但是也不一定 你眼睛看到...

EXCEL中如何将A列相同项所对应的B列数据按C列要求合并至D列,并且数 ...
可用PHONETIC函数实现。示例如下:假定合并如图所示的“一班”的同学名字到D列,名字之间以逗号分隔。D2的公式:=SUBSTITUTE(SUBSTITUTE(PHONETIC(OFFSET(A$1,MATCH(C2,A:A,)-1,,COUNTIF(A:A,C2),2)),C2,","),",",,1)其中:OFFSET(A$1,MATCH(C2,A:A,)-1,,COUNTIF(A:A,C2),2) 得...

EXCEL中,判断A列指是不是属于B列中数值,如果不属于,格式变成红色。怎么...
全选A列后打开菜单“格式”-“条件格式”-“条件1”-“公式”,旁边输入:=and(a1<>"",countif(b:b,a1)=0)最后点开“格式”按钮选择红色并保存后就可以了。

EXCEL中如何编写VBA判断循环多行单元格数值及赋值.
Sub abc()Dim r As LongFor r = 1 To 1000 If Range("A" & r) = 0 Then Range("F" & r).FormulaR1C1 = "RC1&RC2&RC3"Next rEnd Sub请修改循环大小为所需的数值。另外,[A1]=0时,[F1]=A2&B2&C2,还是=A1&B1&C1 ?上面的代码是 =A1&B1&C1 ...

在EXCEL中 如何用VBA查找某特定单元格并返回该单元格的行和列值?
代码解析:RngFind过程使用Find方法在工作表Sheet1的A列中查找InputBox函数对话框中所输入的值,并查找该值所在的第一个单元格。第6到第13行代码在工作表Sheet1的A列中查找InputBox函数对话框中所输入的值。应用于Range对象的Find方法在区域中查找特定信息,并返回Range对象,该对象代表用于查找信息的第...

Excel 关于VBA中IF多条件语句的用法,虚心求教
实例:对于第一列的第一行到第十行单元格,作如下判断,如果单元格为空值了那么在相应的第二列单元格输出“VBA教研室”。程序:Sub 判断语句()Dim i As Integer For i = 1 To 100 If Cells(i, 1) = "" Then Cells(i, 2) = "VBA教研室"Exit For End If Next End Sub 4、if ……...

Excel中IF函数如何同时设置两个满足的条件,即满足任意一个即为Ture?
工具:Office2007 方法如下:如下数据,如果A列等于“鱼”或者B列等于1,则返回“真”,否则为“假”:输入公式如下:下拉填充得到结果:

excel里如何用vba实现如下图所示的凑数功能?
然后在某个固定单元(比如A1)输入合计值,让公式自动完成每一种组合下A列各行的值。并设立条件格式,如果A列在100~200之间(也就是合计值成功分配在总分配阀值中),就把整行染黄色,如果A列小于100(也就是合计值少于需要的分配值),就染蓝色,如果A列大于200(也就是合计值太多了没法全部分配)...

excel if vba.len 可以设置两位和三位吗
我是随便对ABC三列的和值输入的,我知道可能有负值的可能,现请将24行改为:上面那段代码属于VBA语言。如下数据,如果A列等于“鱼”或者B列等于1,则返回“真”,否则为“假”:对是对了,不过用select case编的话会简洁点,谢谢条件与条件之间可以用 "And, Or, Not" 等。判断符可以用 "=,<,...

相似回答