excel中用vba查找关键字,据其进行逻辑判断往特定格子中填充数据

比如在每一行的B列查找关键字“X”,如果有则在该行第E列的格子中填充数值A。
多谢各位大侠!

诚如楼上二位的回答,这个需求用公式实现是最为便利的,用VBA的话可以参考下面的内容,运行速度会比一级仁兄提供的更快些。

Sub strOffset()
    Dim rng As Range
    Dim iStr As String, newStr As String
    iStr = "X"
    newStr = "A"
    For Each rng In Intersect(ActiveSheet.UsedRange, Columns("B"))
        If InStr(1, rng.Text, iStr, vbBinaryCompare) Then
            rng.Offset(, 3) = newStr
        End If
    Next
End Sub

实际应用时,修改iStr和newStr两个变量就可以了。

                            ----Excel资深初学者

追问

哇!好专业!有个小小的问题,运行后填充数字的列偏左了一列,还有13%被显示为0.13,可以解决这个问题吗?多谢了

追答

列数调整Offset(, 3)里面的数字就可以了,提问的是从B向E偏移,所以是3,再向右一列就是4,以此类推。

单元格写入数值型字符串要用到Format函数设置格式,调整后的代码如下

Sub strOffset()
    Dim rng As Range
    Dim iStr As String, newStr As String
    iStr = "X"
    newStr = Format("13%", "0%")
    For Each rng In Intersect(ActiveSheet.UsedRange, Columns("B"))
        If InStr(1, rng.Text, iStr, vbBinaryCompare) Then
            rng.Offset(, 4) = newStr
        End If
    Next
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-15
用公式就可实现的:
E1中输入
=IF(ISERR(FIND("X",B1)),"","A")

下拉填充。追问

多谢,非常有用!就是有个小缺点,应用到整张表之后E列有些格子为空,如果再用这个方法换个关键字填充那些空格的话,原来填好的数据又会变动。有没有可以灵活变动关键字的方法呢?

追答

不知你要的是什么样的效果。试试以下公式,满意吗?!
=IF(ISERR(FIND("X",B1)),"不含x","A")

第2个回答  2015-01-15
这里用循环查找

Sub aa()

Dim x As Integer, x1 As Integer

For x = 1 To [b65536].End(3).Row

For x1 = 1 To Len(Cells(x, 2))

If Mid(Cells(x, 2), x1, 1) = "X" Or Mid(Cells(x, 2), x1, 1) = "x" Then

Cells(x, "e") = "A"

Exit For

End If

Next

Next

End Sub

也可以用findnext查找追问

多谢大侠,学习了。就是那个关键字在一个句子里,用mid是不是取不到,每行G列有句子,想实现如果每行G列句子中有“橡胶”,则在该行第L列填充“13%”。

相似回答