文科生自学VBA-Resize和End方法实例

--学而时习之,不亦说乎?有朋自远方来,不亦乐乎?学习编程成就更好的自己--

微软公司Office软件在商业办公领域一直占据着主流和主导地位,其中Excel在数据处理和分析领域有着强大的影响力,大部分人在经历几年职场历练后可以熟练的使用Excel函数透视表功能,基本可以轻松完成绝大多数工作和任务。但实际上Office的强大和独特之处还在于VBA,因为VBA能够胜任好多个性化二次开发,减少重复机械劳动从而实现办公自动化,开发效率高且开发周期短,尤其对于Excel重度使用者来说会了VBA简直就是如虎添翼啊!!!(本人外语专业毕业,机缘巧合爱上编程,自学道路曲曲折折,痛并快乐!)在这里总结一下自学VBA遇到的难点和重点,分享码过的代码和要点总结,希望能够给初学者一点启示和鼓励,同时愿意结交更多大神交流有助提升自己的水平。

今天介绍两个VBA基础知识点:Resize方法End方法在VBA处理数据时经常选定指定范围内的数据进行加工(删除,移动或复制),那么选定数据范围就一定要了解Resize方法-明确固定范围,而另一个是End方法-锚定数据表边缘,下面通过一个实例来讲解:

如下截图:

文科生自学VBA-Resize和End方法实例

需求任务:

从左侧数据表提取包含“数学”学科数据到右侧形成新的数据集合

方法一-逐一判断左表数据提取到右表中,再删除空行

遍历循环判断用Resize方法指定数据范围复制到对应位置:

文科生自学VBA-Resize和End方法实例

遍历循环判断用Resize方法指定数据范围删除空行数据:

注意:Resize方法是已明确知道数据的固定范围了。

文科生自学VBA-Resize和End方法实例

方法二-复制全部有效数据过去,再遍历循环判断删除多余行

使用End方法选定全部有效数据范围并复制到对应位置:

文科生自学VBA-Resize和End方法实例

遍历循环判断“学科字段”删除多余数据:

注意:End方法适用于多个连续的单元格数据集

文科生自学VBA-Resize和End方法实例

代码汇总如下:

Sub Use_Resize_Move()
Application.ScreenUpdating = False
Sheets("Sample").Select
Dim i As Long, lr As Long
lr = ActiveSheet.UsedRange.Rows.Count
For i = 2 To lr Step 1
    If Range("C" & i) = "数学" Then
        Range("A" & i).Resize(1, 4).copy Range("H" & i) '使用Resize方法固定单元格范围,以某个单元格起步向下和向右行走
    End If
Next i
Application.ScreenUpdating = True
End Sub

Sub Use_Resize_Delete()
Application.ScreenUpdating = False
Sheets("Sample").Select
Dim i As Long, lr As Long
lr = ActiveSheet.UsedRange.Rows.Count
For i = lr To 2 Step -1
    If Range("H" & i) = "" Then
        Range("H" & i).Resize(1, 4).Delete '使用Resize方法固定单元格范围,以某个单元格起步向下和向右行走
    End If
Next i
Application.ScreenUpdating = True
End Sub

Sub Use_End_Move()
Application.ScreenUpdating = False
Sheets("Sample").Select
    '使用End方法来选定所有有效数据,注意单元格内容必须是连续的
    Range(Range("A2"), Range("A2").End(xlToRight).End(xlDown)).copy Range("H2")
Application.ScreenUpdating = True
End Sub

Sub Use_End_Delete()
Application.ScreenUpdating = False
Sheets("Sample").Select
Dim i As Long, lr As Long
lr = ActiveSheet.UsedRange.Rows.Count
'倒序判断删除不需要的数据
For i = lr To 2 Step -1
    If Range("J" & i) <> "数学" Then
        Range("H" & i).Resize(1, 4).Delete
    End If
Next i
Application.ScreenUpdating = True
End Sub

END

我为人人,人人为我!!欢迎大家关注,点赞和转发!!!

~~人生不是赛场,梦想不容退场~~不断努力学习蜕变出一个更好的自己,不断分享学习路上的收获和感悟帮助他人成就自己!!!

展开阅读全文

页面更新:2024-05-26

标签:微软公司   方法   空行   有朋自远方来   遍历   范围内   数据表   多余   学科   实例   成就   位置   领域   数学   代码   数据   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top