Excel精英培训网

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

[已解决]VBA用数组用for循环 查找等于52的所有单元格

[复制链接]
发表于 2017-3-11 16:22 | 显示全部楼层 |阅读模式
本帖最后由 laoau138 于 2017-3-12 21:28 编辑

VBA用数组用for循环   查找等于52的所有单元格
最佳答案
2017-3-12 20:29
Public Sub find52()
Dim alldata As Variant
Dim i As Integer
Dim n As Integer
Dim rg As Range
Set rg = Nothing


alldata = ActiveSheet.UsedRange.Value
For i = 1 To ActiveSheet.UsedRange.Rows.Count
    For n = 1 To ActiveSheet.UsedRange.Columns.Count
        If alldata(i, n) = 52 Then
            If rg Is Nothing Then
               Set rg = Cells(i, n)
            Else
               Set rg = Union(Cells(i, n), rg)
            End If
        End If
    Next
Next
rg.Select


End Sub

按你要求。不过,数组不如楼上直接单元格操作简便吧。
VBA用数组用for循环   查找等于52的所有单元格.jpg

VBA用数组用for循环 查找等于52的所有单元格.rar

14.92 KB, 下载次数: 6

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-3-11 17:52 | 显示全部楼层
Sub z52()

    For Each i In Range("a1:G10")
        If i.Value = 52 Then
            x = x + 1
            If x = 1 Then
                Set rg = i
            Else
                Set rg = Union(rg, i)
            End If
        End If
    Next i
   
    rg.Select
               
End Sub

评分

参与人数 1 +6 收起 理由
laoau138 + 6 来学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-3-11 17:58 | 显示全部楼层
砂海 发表于 2017-3-11 17:52
Sub z52()

    For Each i In Range("a1:G10")

结果正确但没有用数组,更没有用for循环
回复

使用道具 举报

发表于 2017-3-12 20:29 | 显示全部楼层    本楼为最佳答案   
Public Sub find52()
Dim alldata As Variant
Dim i As Integer
Dim n As Integer
Dim rg As Range
Set rg = Nothing


alldata = ActiveSheet.UsedRange.Value
For i = 1 To ActiveSheet.UsedRange.Rows.Count
    For n = 1 To ActiveSheet.UsedRange.Columns.Count
        If alldata(i, n) = 52 Then
            If rg Is Nothing Then
               Set rg = Cells(i, n)
            Else
               Set rg = Union(Cells(i, n), rg)
            End If
        End If
    Next
Next
rg.Select


End Sub

按你要求。不过,数组不如楼上直接单元格操作简便吧。

评分

参与人数 1 +6 收起 理由
laoau138 + 6 来学习

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-3-12 21:28 | 显示全部楼层
wenzili 发表于 2017-3-12 20:29
Public Sub find52()
Dim alldata As Variant
Dim i As Integer

果然高手继续努力啊
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 23:10 , Processed in 0.275036 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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