
Excel中用两个条件来查找数据
做了一个简易的例子,用一个条件查找的时候,出力的结果跟预想一样。用两个条件查找的时候就出问题了,求vba大神给指点一下。图一是要被查询的数据,图二是用一个条件查找数据的代...
做了一个简易的例子,用一个条件查找的时候,出力的结果跟预想一样。用两个条件查找的时候就出问题了,求vba大神给指点一下。图一是要被查询的数据,图二是用一个条件查找数据的代码,下面的代码是用两个条件查找时的代码。Sub macro1() Dim rngSearchWord As Range Dim rngSearchWord_a As Range Dim strFirstAddress As String Dim blnHitWordFlg As Boolean With Sheets(1) For i = 1 To 3 Set rngSearchWord = .Columns(i).Find("A", LookAt:=xlPart) If Not rngSearchWord Is Nothing Then strFirstAddress = rngSearchWord.Address Do blnHitWordFlg = True If blnHitWordFlg = True Then MsgBox rngSearchWord.Address(0, 0) & "_行:" & rngSearchWord.Row 'add_start Set rngSearchWord_a = .Rows(rngSearchWord.Row).Find("B", LookAt:=xlPart) MsgBox rngSearchWord_a.Address(0, 0) & "_行:" & rngSearchWord_a.Row 'add_end End If Set rngSearchWord = .Columns(i).FindNext(rngSearchWord) If rngSearchWord Is Nothing Then Exit Do Loop Until strFirstAddress = rngSearchWord.Address End If Next End With End Sub
代码部分有点乱,我再重新贴张图。 展开
代码部分有点乱,我再重新贴张图。 展开
2个回答
展开全部
主要是你代码里面用了两个Find,这时不应该再用FindNext,
你的本意是 Find(A),再Find(B),再找下一个A,FindNext
但是实际上你这时FindNext是执行找下一个B。
将FindNext,改为:
Set rngSearchWord = .Columns(i).Find("A", After:=rngSearchWord LookAt:=xlPart)
并且将If rngSearchWord Is Nothing Then
的判断改为将第一次查找的Range或Address赋值给一个变量,判断这时的Range 或Address是不是等于第一个。
其他可能产生的影响根据调试情况进行更改。
你的本意是 Find(A),再Find(B),再找下一个A,FindNext
但是实际上你这时FindNext是执行找下一个B。
将FindNext,改为:
Set rngSearchWord = .Columns(i).Find("A", After:=rngSearchWord LookAt:=xlPart)
并且将If rngSearchWord Is Nothing Then
的判断改为将第一次查找的Range或Address赋值给一个变量,判断这时的Range 或Address是不是等于第一个。
其他可能产生的影响根据调试情况进行更改。

2025-03-12 广告
虚拟筛选 (Virtual Screening, VS) 是基于小分子数据库开展的活性化合物筛选。利用小分子化合物与药物靶标间的分子对接运算,虚拟筛选可快速从几十至上百万分子中,遴选出具有成药性的活性化合物,大大降低实验筛选化合物数量,缩短...
点击进入详情页
本回答由MCE 中国提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询