将范围粘贴到已筛选的表中

将范围粘贴到已筛选的表中

我们有以下 Excel 表:

开始情况

单元格 A2 至 A10 已过滤:选项 3 和选项 4 已过滤。现在我们要将 A12:A16 中的数字粘贴到可见单元格旁边(即 B2:B10)。我们怎样才能做到这一点?

答案1

让 Y 和 Z 代表两个临时列(即超出您的数据)。

  1. 将您的数据从 A12-A16 移动到 B12-B16。
  2. 在 Y2 中,输入=ROW()。(在 Excel 2010 中,=ROW可能会起作用,甚至可能是必需的。)
  3. 向下拖至 Y10。
  4. 选择 Y2-Y10,键入Alt+ ;。(@Sean:谢谢你教我这个技巧!)
  5. 复制;然后单击 A12 并粘贴。
  6. 输入=IFERROR(VLOOKUP(Y2,A$12:B$16,2,FALSE),"")Z2 并向下拖至 Z10。(现在看起来应该像 B12-B16 中的数据。)
  7. 关闭过滤。
  8. 复制 Z2-Z10,并将值粘贴到 B2-B10 中。
  9. (删除 Y 列和 Z 列。)

答案2

我找不到一种无需借助 VBA 即可粘贴并避免隐藏行的方法(我可以在复制之前使用ALT+仅复制可见项目)。;

此宏将复制 A12:16 到 B2,并向下复制,跳过隐藏行

Sub Paste2VisRows()

Dim rFrom As Range, rTo As Range
Dim i As Long, Ofset As Long

Set rFrom = Range("A12:A16")
Set rTo = Range("B2")

For i = 1 To rFrom.Rows.Count
    Do Until Not rTo.Offset(Ofset).Rows.Hidden
        Ofset = Ofset + 1
    Loop
    rFrom.Rows(i).Copy Destination:=rTo.Offset(Ofset)
    Ofset = Ofset + 1
Next i

End Sub

答案3

从@SeanCheshire 复制宏代码并稍加修改,这样它会提示用户选择复制区域和粘贴区域。

复制区域可以选择范围,例如A1:A10,粘贴区域只需选择1个单元格,例如B11,如果让B12到B14隐藏,那么它会粘贴到B11,B15,B16,... B23

Sub Paste2VisRows()

Dim rFrom As Range, rTo As Range
Dim i As Long, Ofset As Long

Dim RngCopySelection As Range
Set RngCopySelection = Application.InputBox("Please select copy area", "Area Selection", , , , , , 8)

Dim RngPasteSelection As Range
Set RngPasteSelection = Application.InputBox("Please select paste area", "Area Selection", , , , , , 8)

Set rFrom = RngCopySelection
Set rTo = RngPasteSelection

For i = 1 To rFrom.Rows.Count
    Do Until Not rTo.Offset(Ofset).Rows.Hidden
        Ofset = Ofset + 1
    Loop
    rFrom.Rows(i).Copy Destination:=rTo.Offset(Ofset)
    Ofset = Ofset + 1
Next i

End Sub

答案4

其想法是将所需的行排序到表格的顶部,粘贴数据,然后恢复到原始顺序。

  1. 用 1 填充单独的临时列
  2. 移除过滤器
  3. 确保只有包含所需数据的行上的单元格才填充 1
  4. 在另一列中对整个表格进行编号
  5. 使用 1 对表格进行升序排序
  6. 粘贴所需数据
  7. 使用数字列恢复原始顺序
  8. 删除临时列

注释。* 使用 Office 2007。* 据我所知,这是唯一合乎逻辑的方法。

相关内容