Excel VBA-在过滤的列中移动过去的隐藏单元格

时间:2018-02-23 12:46:49

标签: excel-vba vba excel

我有一个代码,我需要将数据从E列中的过滤单元复制到A列。过滤器由循环完成,因此数据逐个显示。我需要做的就是直接从我的活动单元格中移出一个单元格,但问题是,我不知道下面是什么单元格值,如果我使用偏移量,excel只复制下一个隐藏单元格。

以下是宏如何工作的简要概述:

第一个Cell是E1(标题和活动单元格),下一个单元格是E102(值我必须复制到A102)。

然后循环激活,第一个细胞是E1,然后下一个细胞是E365(复制到A365)。 等等...

下一个值也是不可预测的,因此我无法调用该值。

我尝试过以下代码,但发送密钥似乎无法正常工作

Cells.Find(What:="Header", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 3).Range("A1").Select

Application.Wait Now + TimeValue("00:00:01")
Application.SendKeys "{DOWN}"

Selection.Copy
ActiveCell.Offset(0, -3).Range("A1").Select
Selection.Paste

1 个答案:

答案 0 :(得分:0)

通常您需要使用Areas属性,但您有一个特殊情况,您只需要第二个单元格。

'assume column E has been filtered
With Worksheets(ActiveSheet.Name)
    With Intersect(.UsedRange, .Range("E:E"))
        With .Resize(.Rows.Count - 1, .Columns.Count).Offset(1, 0)
            .SpecialCells(xlCellTypeVisible)(1).Offset(0, -4) = _
                .SpecialCells(xlCellTypeVisible)(1).Value
        End With
    End With
End With

我不知道为什么你的代码会说.Offset(0,-3),因为A列是E列的-4偏移量。