【问题标题】:Copy column of filtered cells and paste to different column复制过滤单元格的列并粘贴到不同的列
【发布时间】:2018-08-14 15:25:54
【问题描述】:

我目前正在编写代码来复制 CJ 列的过滤结果并将它们粘贴到 F 列中。当我尝试粘贴时,它仅粘贴到未过滤的区域并删除了该列的其余单元格。知道正确的代码吗?

With ActiveSheet
    With Intersect(.Range("CJ:CJ"), .UsedRange)
        .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible).Copy
    End With
End With
ActiveSheet.Range("F1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, 
_Operation:=xlNone, SkipBlanks:=False, Transpose:=False

谢谢!

【问题讨论】:

  • 明确一点:您想要复制隐藏的行吗?
  • @cybernetic.nomad,我不想复制隐藏的行。我只想复制过滤列中的数据并将其粘贴到相应过滤单元格中的 F 列。
  • @BruceWayne 已编辑

标签: excel vba copy paste


【解决方案1】:
for i = 1 to ActiveSheet.Range("C" & Rows.Count).End(xlUp).Row
    If Range("C" & i).entireRow.hidden = False then Range("F" & i).value = Range("C" & i).value
Next i

【讨论】:

  • 我收到错误“找不到指定范围内的隐藏属性”
  • 抱歉,忘记了EntireRow。立即尝试
  • 感谢您的编辑,现在可以使用了!有没有什么办法可以只格式化可见单元格,这样它就不必遍历整个表格?有 70,000 多行。
  • @papacoolaid666 - 您可以使用 Range 的 .SpecialCells(xlCellTypeVisible)。 IE。 Set myRng = Range("C1:C1000").SpecialCells(xlCellTypeVisible) // For each cel in myRng // ...
  • 实际上,当我运行代码时,它会将整个 F 列替换为整个 CJ 列。有没有办法让它只替换过滤时显示的单元格?
【解决方案2】:

这是我发现的满足过滤复制和粘贴的示例代码。

谢谢!

Sub CopyPasteFormula()
Dim Ws As Worksheet
Dim LRow As Long
Dim PasteRng As Range
Set Ws = Worksheets("Sheet1")
LRow = Ws.Range("K" & Rows.Count).End(xlUp).Row
Set PasteRng = Ws.Range("H1:H" & LRow).SpecialCells(xlCellTypeVisible)
Ws.Range("K:K").SpecialCells(xlCellTypeVisible).Copy
PasteRng.PasteSpecial xlPasteFormulas
Application.CutCopyMode = False 
End Sub

【讨论】:

    猜你喜欢
    • 2013-07-06
    • 2017-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 2019-09-21
    相关资源
    最近更新 更多