Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: 兰色幻想

VBA80集第12集作业上交贴:非空行

  [复制链接]
发表于 2022-7-26 18:31 | 显示全部楼层
看看

回复

使用道具 举报

发表于 2022-8-16 14:21 | 显示全部楼层
回复

使用道具 举报

发表于 2022-8-19 14:07 | 显示全部楼层
我就是来看看什么作业,然后学习学习!
回复

使用道具 举报

发表于 2022-8-19 17:17 | 显示全部楼层
感谢老师,我来看看答案
回复

使用道具 举报

发表于 2022-8-23 11:44 | 显示全部楼层
学习
回复

使用道具 举报

发表于 2022-9-7 21:33 | 显示全部楼层
1

回复

使用道具 举报

发表于 2022-9-8 15:56 | 显示全部楼层
想看答案

回复

使用道具 举报

发表于 2022-9-8 18:45 | 显示全部楼层
好好学习学习
回复

使用道具 举报

发表于 2022-9-9 15:27 | 显示全部楼层
看答案
回复

使用道具 举报

发表于 2022-9-12 12:08 | 显示全部楼层
第一题条件定位非空单元格后就卡在赋值的问题了,突然不给用循环不知道如何给A列赋值,后来参考楼上前辈使用交集区域赋值的思路才做出来,不过这道题真的很有意思。第二题增加了工作簿是否打开的判断,还延伸学习选择性粘贴pastespecial的方法
  1. <hide>Sub P12第一题()

  2. '调用条件定位constant常量,找到B:D列的非空单元格
  3. '利用range属性entirerow返回整行,使用intersect方法与A列形成矩阵交集获得对应的Range对象,并对交集区域赋值数字1
  4. Application.Intersect(Columns(1), Range("B:D").SpecialCells(xlCellTypeConstants).EntireRow) = 1

  5. End Sub


  6. Sub P12第二题()

  7. Dim wbx As Workbook                                 '声明工作簿循环变量wbx
  8. Dim ywb As Workbook                                 '声明数据源对象变量ywb
  9. Dim x As Integer                                    '声明循环变量x
  10. Dim lastrg As Range                                 '声明数据区域最后一个单元格变量lastrg

  11. For Each wbx In Workbooks                           '循环所有工作簿,判断a.xls是否已打开
  12. If wbx.Name = "a.xls" Then                          '如已打开,对象变量ywb进行初始化赋值,退出循环
  13. Set ywb = wbx
  14. Exit For
  15. End If
  16. Next wbx

  17. '若对象变量ywb未赋值,打开同目录下的a.xls,并赋值ywb
  18. If ywb Is Nothing Then Set ywb = Workbooks.Open(ThisWorkbook.Path & "/a.xls")


  19. '循环ywb所有工作表
  20. For x = 1 To ywb.Sheets.Count
  21. '以每个工作表A1单元格为顶点,定位数据区域的最后一个单元格
  22. Set lastrg = Sheets(x).Range("a1").CurrentRegion.SpecialCells(xlCellTypeLastCell)
  23. '第一个工作表,即以A1单元格为顶点复制数据,选择性粘贴至第2题的A1单元格
  24. If x = 1 Then
  25. ywb.Sheets(1).Range("A1", lastrg).Copy
  26. ThisWorkbook.Sheets("第2题").Range("a1").PasteSpecial Paste:=xlPasteValues
  27. Else
  28. '其他工作表,则以A2单元格为顶点复制数据,选择性粘贴至第2题A列非空单元格下方
  29. ywb.Sheets(x).Range("A2", lastrg).Copy
  30. ThisWorkbook.Sheets("第2题").Range("a65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
  31. End If
  32. Next x

  33. ywb.Close False                 '不保存关闭ywb

  34. End Sub
  35. </hide>
复制代码

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 08:40 , Processed in 0.324540 second(s), 5 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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