Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1706|回复: 5

[已解决]在VBA中,如何实现类似update的功能

[复制链接]
发表于 2013-6-9 11:52 | 显示全部楼层 |阅读模式
33     测试     aaa
55     测试     ccc
66     测试     aaa
88     测试     ccc
33     测试     aaa
如上表,如何将第三列含cc,对应的第一列值挑选出较大值,对应的 第二列“测试” 改为“ok”
运行结果为
33     测试     aaa
55     测试     ccc
66     测试     aaa
88     ok        ccc
33     测试     aaa

最佳答案
2013-6-9 12:04
Sub test()
    Dim a, i, imax, arr, row0
    a = Cells(60000, 1).End(xlUp).Row
    arr = [a1].Resize(a, 3)
    For i = 1 To a
        If InStr(1, "cc", arr(i, 3)) > 0 Then
            If arr(i, 1) > imax Then imax = arr(i, 1): row0 = i
        End If
    Next i
    Cells(row0, 2) = "OK"
End Sub
发表于 2013-6-9 12:04 | 显示全部楼层    本楼为最佳答案   
Sub test()
    Dim a, i, imax, arr, row0
    a = Cells(60000, 1).End(xlUp).Row
    arr = [a1].Resize(a, 3)
    For i = 1 To a
        If InStr(1, "cc", arr(i, 3)) > 0 Then
            If arr(i, 1) > imax Then imax = arr(i, 1): row0 = i
        End If
    Next i
    Cells(row0, 2) = "OK"
End Sub
回复

使用道具 举报

发表于 2013-6-9 13:18 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-6-9 13:57 | 显示全部楼层
        If InStr(1, "cc", arr(i, 3)) > 0 Then
   这句话,总是跳过去,不能进入运行。  最后 row0 的值为空
回复

使用道具 举报

 楼主| 发表于 2013-6-9 13:58 | 显示全部楼层
把第四列的“测试”替换为"ok"
回复

使用道具 举报

 楼主| 发表于 2013-6-9 14:47 | 显示全部楼层
谢谢。InStr(1, arr(i, 3), "cc")
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-5 03:55 , Processed in 0.319830 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表