excel - 使用 VBA 将符合条件的行复制到 Excel 中的两个或多个不同工作表中
问题描述
有没有人愿意帮助一个真正自学成才的初学者(对学习这些东西充满热情)?
对于库存和订单文件,我正在寻找一种将表中匹配 1 个条件的行复制到另一张表的方法。同时,我希望将所有其他行(不符合 1 标准)复制到另一张工作表中。
我做到了可以将表 ORDERS 上的表 ORDERS 的行复制到表 INSTOCKORDERS 上的表 INSTOCKORDERS 中。但我真正想要的是从所有订单中制作两张不同的床单。一个带有已订购且有库存的物品。还有一张没有库存的订单/物品。执行此操作后,它应该清空 ORDERS 表。之后,下一次它应该将 ORDERS 放入最后一行下方的表 INSTOCKORDERS 和 NOSTOCKORDERS 中。
我对排序的意思是将所有库存数量为 0 的项目放在表的顶部,我认为这可以更容易地将所有具有 0 项目的项目复制到 NOSTOCKORDERS 并将所有其他项目复制到 INSTOCKORDERS。但是我不知道如何使这成为一个整洁的工作动作,更不用说如何开始了(对不起我的初学者无知......)我经历了一些以前的问题,遇到了 AutoFilter,但没有得到它......
Sub CopyOrders()
'Sorting column STOCK in ORDERS from a-z
Worksheets("Orders").ListObjects("Orders").Sort. _
SortFields.Clear
Worksheets("Orders").ListObjects("Orders").Sort. _
SortFields.Add2 Key:=Range("Orders[[#All],[STOCK]]"), SortOn:= _
xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With Worksheets("Orders").ListObjects("Orders").Sort
.Apply
End With
'Copying the table ORDERS to INSTOCKORDERS
Range("Orders").Copy Range("InStockOrders")
End Sub
解决方案
你是对的,自动过滤功能就是你想要的。自动过滤器需要一个过滤条件,然后需要被告知要在哪个列(字段)中找到条件。然后,您需要在过滤后复制剩余的可见单元格。在下面的代码中,将 Workbooks、Worksheets 和 Range 替换为您的工作簿所需的内容:
Sub FilterNoStock()
Workbooks.Worksheets.Range.AutoFilter Field=5, Criteria1:="0", VisibleDropDown:=True
Workbooks.Worksheets.Range.SpecialCells(xlCellTypeVisible).Copy
End Sub
同样,您可以过滤除 1 个值之外的所有值:
Sub FilterInStock()
Workbooks.Worksheets.Range.AutoFilter Field=5, Criteria1:="<>" & "0", VisibleDropDown:=True
Workbooks.Worksheets.Range.SpecialCells(xlCellTypeVisible).Copy
End Sub
我还建议将此与 Rows.Count 函数配对,以便能够仅动态复制包含数据的行,并将其粘贴到 InStock 和 NoStock 工作表中的列表末尾。使用 Rows.Count 方法,您可以让 VBA 计算您拥有的行数,将其设置为一个变量,然后使用该变量来声明您的范围的长度。现在您正在复制整个工作表,如果您尝试在 InStock 和 NoStock 工作表中编译多个订单,这将是一个问题,因为粘贴会覆盖之前订单中的所有数据:Rows.Count 的描述
推荐阅读
- macos - 在 Mojave 中打开 DiffMerge SnailSVN 的问题
- java - HP ALM Rest API 401 身份验证错误?
- docker - Docker:来自卷的文件未在目标中更新
- python - 无法使用 FindPython cmake 模块链接到 Python
- jquery - 在 Sharepoint 2010 中添加动态链接到 listview webpart
- java - 在 java 中将 JSON 对象导入 MongoDB
- git - 如何使用密码 ssh 添加到远程服务器
- prolog - 使用prolog查找多条路径的最短距离
- wordpress - 错误的月份会在 WordPress 发布的帖子上自动更新
- typescript - 为什么不能在 Typescript 3 中合并品牌枚举?