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
代码部分有点乱,我再重新贴张图。
展开
 我来答
cnbubble
2017-07-25 · TA获得超过2611个赞
知道大有可为答主
回答量:1990
采纳率:83%
帮助的人:824万
展开全部
主要是你代码里面用了两个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是不是等于第一个。
其他可能产生的影响根据调试情况进行更改。
MCE 中国
2025-03-12 广告
虚拟筛选 (Virtual Screening, VS) 是基于小分子数据库开展的活性化合物筛选。利用小分子化合物与药物靶标间的分子对接运算,虚拟筛选可快速从几十至上百万分子中,遴选出具有成药性的活性化合物,大大降低实验筛选化合物数量,缩短... 点击进入详情页
本回答由MCE 中国提供
新华电脑99
2017-07-19 · TA获得超过900个赞
知道答主
回答量:493
采纳率:0%
帮助的人:137万
展开全部
你能不能长话短说哦
追问
数据部分每行都有A和B, 为什么使用图3的代码只选出来了后两行的数据。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式