excel - 有选择地复制和粘贴具有给定条件的行
问题描述
我正在尝试根据 J 列中出现的单词“是”来选择表中的行。
我有一个从 A 列到 J 列的表,我想选择 J 列中有“是”的行,然后只将这些行粘贴到新工作表中。
选择后,我需要将这些行复制到新的工作表或 Word 文档中。
我尝试了一系列论坛,这是针对 Windows MS Excel 软件的,使用 VBA 宏。
我正在使用以下 VBA,但遇到问题:
Sub Macro1()
Dim rngJ As Range
Dim cell As Range
Set rngJ = Range("J1", Range("J65536").End(xlUp))
Set wsNew = ThisWorkbook.Worksheets.Add
For Each cell In rngJ
If cell.Value = "Yes" Then
cell.EntireRow.Copy
wsNew.Sheets("Sheet1").Range("J65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
End If
Next cell
End Sub
任何帮助将不胜感激!
解决方案
使用这样的东西
Option Explicit
Public Sub CopyYesRowsToNewWorksheet()
Dim wsSource As Worksheet
Set wsSource = ThisWorkbook.ActiveSheet 'better define sheet by name ThisWorkbook.Worksheets("SourceSheet")
Dim DataRangeJ As Variant 'read "yes" data into array for faster access
DataRangeJ = wsSource.Range("J1", wsSource.Range("J" & wsSource.Rows.Count).End(xlUp)).Value
Dim wsNew As Worksheet
Set wsNew = ThisWorkbook.Worksheets.Add
Dim NextFreeRow As Long
NextFreeRow = 1 'start pasting in this row in the new sheet
If IsArray(DataRangeJ) Then
Dim iRow As Long
For iRow = LBound(DataRangeJ) To UBound(DataRangeJ) 'loop through data array
If DataRangeJ(iRow, 1) = "yes" Then
wsNew.Rows(NextFreeRow).Value = wsSource.Rows(iRow).Value 'copy the values of the row
NextFreeRow = NextFreeRow + 1
End If
Next iRow
ElseIf DataRangeJ = "yes" Then 'if only the first row has data
wsNew.Rows(NextFreeRow).Value = wsSource.Rows(1).Value
End If
End Sub
线
wsNew.Rows(NextFreeRow).Value = wsSource.Rows(iRow).Value
只复制值而不格式化。如果您还想复制格式,请将其替换为
wsSource.Rows(iRow).Copy Destination:=wsNew.Rows(NextFreeRow)
推荐阅读
- javascript - 执行 Ajax 请求时返回 null
- html - 从 iframe 在 HTML 中美化 JSON?
- jquery - 带有联系表 7 的 WP Elementor - 在文本字段中显示文件上传位置
- docker - adminer 容器不断自我重建并自动启动
- r - 根据另外两列中的条件省略列中包含重复项的行
- sql - 在 PL/SQL 中选择对象内的对象
- bash - 客户端在收到所有响应后未关闭与服务器的连接
- java - 从国家列表中填充州的下拉列表 - angularjs
- python - 当我们可以通过在views.py中添加视图和在urls.py中添加urls时,是否需要在ModelAdmin类的管理页面中添加自定义视图?
- netbeans - ProjectClassPathModifier 和 ProjectClassPathExtender