Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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
Excel VBA将值与列进行比较_Vba_Excel - Fatal编程技术网

Excel VBA将值与列进行比较

Excel VBA将值与列进行比较,vba,excel,Vba,Excel,我有以下问题: 我有一个excel,有两列A和B。A中有不同的序列号,可以包含不同B值的值。行与行之间的两列中都可以有空单元格 VBA脚本需要执行的操作: 脚本必须获取B的值并在A列中搜索。记住:这些值可以是:A567=2174/ENJFA7384和B45=ENJFA7384->这意味着它们匹配。如果它们匹配,则应在C列中写入“X”。如果a中的B值不匹配,则将继续 我已经试着去实现它,但是程序崩溃了,因为它效率很低。下面是代码(该脚本将单元格标记为黄色,而不是写“X”): 如果有任何问题,请随时

我有以下问题: 我有一个excel,有两列A和B。A中有不同的序列号,可以包含不同B值的值。行与行之间的两列中都可以有空单元格

VBA脚本需要执行的操作: 脚本必须获取B的值并在A列中搜索。记住:这些值可以是:A567=2174/ENJFA7384和B45=ENJFA7384->这意味着它们匹配。如果它们匹配,则应在C列中写入“X”。如果a中的B值不匹配,则将继续

我已经试着去实现它,但是程序崩溃了,因为它效率很低。下面是代码(该脚本将单元格标记为黄色,而不是写“X”):

如果有任何问题,请随时提问。 你有什么想法可以让它工作吗?任何新想法都将受到高度赞赏。 提前谢谢你

编辑 下面是脚本应该做什么的示例图片: 为什么要为vba而烦恼

您只需在C列中填写以下内容:

=if(A1=B1,"X","")
注释后编辑:要查看A列的所有内容,可以设置范围:

=IF(IFERROR(MATCH(B1,A1:A10,0),FALSE),"X","")
只需输入单元格C1或任何要启动的单元格,确保“B1或B16”是要检查的第一个单元格并向下拖动

编辑2查看图像并注意“无Val”更新。。。

我想你在寻找这样的东西:

Sub test()


For i = 1 To Cells(Rows.Count, 10).End(xlUp).Row 'just change "1" to whenever     column you want to count rows from
For b = 1 To Cells(Rows.Count, 12).End(xlUp).Row

Dim search As Variant, Find As Variant

search = Cells(b, 12).Value
Find = Cells(i, 10).Value

If Find Like "*" & search & "*" Or Find = search Then

Cells(b, 2).Offset(0, 1).Value = "x"

End If

If Cells(i, 1).Value = "" Then
Exit Sub
End If

Next b
Next i

End Sub
它对我有用,所以我希望它也能帮助你


*编辑以在列中查找B值,并将“X”放在搜索的B值旁边

为什么要使用VBA进行此操作

我尝试使用以下情况:

      | Column A | Column B | Column C | Column D
Row 2 |          | 111/aaa  |      aaa | =IFERROR(FIND(C2;B2);0)
Row 3 |          | 222/bbb  |          | =IFERROR(FIND(C2;B3);0)
Row 4 |          |          |          | =IF(D2+D3=0;"X";D2+D3)

这就是你想要的吗?

OP正在搜索A:-)中任意一行的B值,可能
if(isnumber(匹配(“*”&b1&“*”,A:A,0)),“X”,”)
@Jeeped-Wow,谢谢你的快速回答。你的意思是我把它放在一个excel单元格中,比如
=if(isnumber(match(“*”&b1&“*”,a:a,0)),“X”,“)
?是的,上面的一个或者上面的回答中的Solar Mike的答案。你的意思是:
如果(IFERROR(match(P2,B2:B1000,0),FALSE),“X”,“)
(列被改编)。我在哪里写代码?当我把它写在一个单元格中时,它会给我一个错误,询问我是否真的想放一个函数。谢谢你的回答!但是,代码不适合我。它只是在第一行c列中加了一个“X”。问题是B列的任何值都可以在A列的任何地方。但是B的一些值不在A列。我希望你理解我的问题。谢谢你的想法。好吧,我可能对你的问题理解得很糟糕,我以为你从B中的A中搜索值,所以它会在C中的B值旁边放上“X”,但如果你能提供文件,帮助你会容易得多。B列值是否允许跟随A列中的A
/
?我不太明白你的意思。我试着说,A中的值可以不仅仅包括B值。像数字和斜杠在B的实际值之前。我希望你能理解,我不知道如何更好地描述->上面的例子说明了我的猜测。B如何包含在a中有任何模式吗?B值总是a值中的最后9个字符吗?谢谢你的回答!但是,C列中的值可以是B列中的任何位置。例如,111/aaa可以是B列第294行中的值。当aaa在C列211行时,我必须找到它(在B294中),并用“X”标记它旁边的单元格。我在问题中添加了一张图片作为进一步解释。
      | Column A | Column B | Column C | Column D
Row 2 |          | 111/aaa  |      aaa | =IFERROR(FIND(C2;B2);0)
Row 3 |          | 222/bbb  |          | =IFERROR(FIND(C2;B3);0)
Row 4 |          |          |          | =IF(D2+D3=0;"X";D2+D3)