Excel复制粘贴,包括隐藏列

Excel复制粘贴,包括隐藏列,excel,Excel,我使用的是Excel 2016工作表,由于UI原因,它隐藏了两列。我需要能够过滤出数据,然后将其复制粘贴到另一个表中,隐藏列保持不变,并在粘贴到目标后显示(它将包含更长的类似事务日志,而不仅仅是一次复制粘贴) 添加目标图片-即希望将B列和C列的隐藏内容粘贴到目标电子表格中这可能吗? 在一篇文章中问两个问题可能不是很好的形式,但是除了手动执行过滤和复制粘贴功能到另一个电子表格之外,还有其他选择吗?即: 运行手动过滤器以清除数量字段中的空白 挑选 执行手动Ctrl+C-Ctrl+V功能 有没有

我使用的是Excel 2016工作表,由于UI原因,它隐藏了两列。我需要能够过滤出数据,然后将其复制粘贴到另一个表中,隐藏列保持不变,并在粘贴到目标后显示(它将包含更长的类似事务日志,而不仅仅是一次复制粘贴)

添加目标图片-即希望将B列和C列的隐藏内容粘贴到目标电子表格中这可能吗?

在一篇文章中问两个问题可能不是很好的形式,但是除了手动执行过滤和复制粘贴功能到另一个电子表格之外,还有其他选择吗?即:

  • 运行手动过滤器以清除数量字段中的空白
  • 挑选
  • 执行手动Ctrl+C-Ctrl+V功能

有没有办法让它更容易?不幸的是,到目前为止还没有VBA或宏体验

编辑-完全误解了这个问题

复制时希望包含隐藏单元格-这是隐藏单元格的标准行为,但不是筛选列的标准行为。如果您想要避免VBA abd,您正在处理小的连续范围,那么一个简单的公式可能是最简单的解决方案

使用您的示例,我将任意命名源工作表“Sheet1”和目标工作表“Sheet2”。在Sheet2中,单击单元格A2并在公式栏中键入:=Sheet1!A3现在单击单元格A2的右下角,将其向右拖动,穿过D2,然后向下拖动到D7。 高亮显示范围后,按ctrl C进行复制,然后右键单击以粘贴特殊值

你完了

下面是一个VBA解决方案:

Sub copyrng()

Dim srcrng As Range
Dim tmprng As Range
Dim dstrng As Range
Dim srcws As Worksheet
Dim dstws As Worksheet



Set srcrng = Application.InputBox("Area to copy", "Source", Type:=8)
Set srcws = srcrng.Parent
Set tmprng = Application.InputBox("Top Left Corner of Destination",  "Destination", Type:=8)
Set dstws = tmprng.Parent
Set dstrng = dstws.Range(tmprng.Address, tmprng.Parent.Cells(tmprng.Row + srcrng.Rows.Count - 1, tmprng.Column + srcrng.Columns.Count - 1))

dstrng = srcrng.Value

 End Sub
第一个答案(回答错误的问题)

您可以使用“转到…”复制可见单元格

高亮显示要复制的区域,按Ctrl G,单击“特殊…”,选择“仅可见单元格”,然后按Ctrl C进行复制


现在,粘贴时所有隐藏的单元格都将被保留。

不,使用常规Excel功能无法做到这一点,因为Excel无法知道当其中一列的值为空时要跳过哪些列/单元格,这必须由人来决定和完成

也许现在是进入宏世界的好时机,因为您不需要自定义代码,但可以使用录制的宏而无需进一步操作。此Excel功能适用于像您这样没有经验的用户

  • 查看/宏/录制宏

  • 命名宏

做你需要做的,记住Excel通过在后台将你的每一个动作转换成VBA代码来记录你的每一个动作。对于您的情况,请执行以下操作:

  • 使用过滤器组合框过滤空白
  • 使用
    CTRL-G
    /Special/Current Region选择区域(不要用鼠标或键盘选择单元格,您的代码应该是通用的,不应该包含手动区域,因为您不想进行任何编码)
  • CTRL-C
    复制
  • 如果“待粘贴”单元格并非适用于所有情况,则应停止在此处录制宏。如果粘贴单元是固定的,则在录制宏时粘贴内容
录制宏后,请使用以下命令为新宏指定快捷方式: 宏/查看宏/选项菜单

瞧!现在,您可以使用该键盘快捷键完全执行录制宏时所执行的操作。如果录制时未粘贴内容,则可以使用宏快捷键切换到要粘贴的单元格,然后按
CTRL-V


当您有足够的信心时,请尝试中的编辑菜单,看看手头有什么代码,可能会做一些小的更改等。我看到许多人一开始不熟悉基本的编码,但在Excel中看到此功能后,不知何故开始编写自己的代码。祝你好运

深奥易懂的代码很酷,但是

dstws = activesheet
将始终是源,因为activesheet在inputbox之后直接返回

我试着把它改成

Set dstws = tmprng.Parent
但出于某种原因,这打破了传统

Set dstrng = dstws.Range..
我得到一个运行时错误1004对象的方法范围_工作表失败

如果我能解决这个问题,这个解决方案将适用于任何目的地,甚至其他文件


另一种方法是使用vba取消筛选数据,然后进行复制,然后重新启用相同的筛选器。完成后,您可以到任何地方粘贴剪贴板上的内容。

我认为@sql scholar不希望在粘贴时包含隐藏的单元格,底部的屏幕截图清楚地显示只有可见的单元格被复制。我知道他/她只想缩短筛选-选择-复制-粘贴过程。对不起,我认为我在截图上做得很糟糕,因为我应该添加一个所需方式的示例,因为当前截图显示了当前发生的情况,这意味着隐藏列被留下,但我需要将它们包括在内!然而,第二部分是正确的-我还想知道是否也有可能自动化这个过滤器的复制和粘贴过程,再次抱歉让这篇文章有点混乱,因为我询问了两个不同的技术问题。除此之外。非常感谢您的反馈。不幸的是,公式选项不起作用。它们是不同的Excel文件/工作簿,虽然我知道您也可以将Excel公式指向另一个文件,而不仅仅是另一个工作表,但问题是初始工作簿(“Sheet1”)在处理后不会保留更长时间,而另一个目标工作表(“Sheet2”)将有所有事务的日志。听起来是时候深入了解VBA了。好消息,您已经在使用可用的最佳资源之一—stackoverflow!我提供的代码显示了在工作表之间传输数据的一种方法。用这个