excel - 如何使用 vba 将过滤后的值仅粘贴到受此类过滤器影响的单元格中?
问题描述
我目前正在研究一个宏,它当前根据值过滤表,然后在应用过滤器后复制列下的数据(让它工作)。但是,我不知道如何将这些值粘贴到同一个表中,从而覆盖不同列中可见单元格下的数据。正在复制以红色(图片)突出显示的值,现在我只需将它们粘贴到以黄色突出显示的单元格中。谢谢!
Public Sub DxcDateUpdate()
Application.ScreenUpdating = False
Dim Mwb As Workbook
Dim ws As Worksheet
Set Mwb = ThisWorkbook
Set ws = Mwb.Worksheets("Commission")
Set ws2 = Mwb.Worksheets("test")
lr = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
ws.Range("A1").AutoFilter Field:=31, Criteria1:="DXC/TPV.com Enrollment"
ws.Range("AG2:AG" & lr).SpecialCells(xlCellTypeVisible).Copy Destination:=ws.Range '''here is where idk what to do?'''
Application.ScreenUpdating = True
End Sub
解决方案
您不能将不连续的范围粘贴为不连续的。您应该在每个范围单元格之间迭代并使用偏移量复制它,或者使用c.row
. 请尝试下一个改编的代码:
Sub DxcDateUpdate()
Dim Mwb As Workbook, ws As Worksheet, rngVis As Range, c As Range, LR As Long
Set Mwb = ThisWorkbook
Set ws = Mwb.Worksheets("Commission")
Set ws2 = Mwb.Worksheets("test")
LR = ws.cells(ws.rows.Count, 1).End(xlUp).row
ws.Range("A1").AutoFilter field:=31, Criteria1:="DXC/TPV.com Enrollment"
Set rngVis = ws.Range("AG2:AG" & LR).SpecialCells(xlCellTypeVisible)
For Each c In rngVis.cells
c.Offset(0, -28).value = c.value
Next
End Sub
当然,为了使代码更快,您应该使用一些优化行(ScreenUpdating = False,EnableEvents = False,Calculation = xlCalculationManual,后面是True
, True
, xlCalculationAutomatic
)。
推荐阅读
- javascript - 使用本地存储保持状态不会在反应类组件中保存视图类型的状态数据
- python - Pycharm 指定索引所需的模块而不是我的整个 python 包?
- reactjs - 将 hooks 错误的顺序从 context 更改为 useEffect
- android - 如何指定数据类型以强制执行继承和接口?
- python - ESPN CricInfo 超出最大递归深度
- jdbc - Jdbc 源连接器在 Kafka 连接中为 Redshift 持有更多活动会话?
- powershell - 与 Powershell 的欧洲/Ridgemont SPO 连接有何不同?
- sql - 多重索引个性:边界重复键
- macos - 找不到“SDL2/SDL.h”文件
- javascript - 如果使用 node js 和 yarn 单击按钮,我应该如何开始在 src/test/file.me 中编写代码?