我正在使用Excel 2016工作表,该工作表因UI原因而隐藏了几列。我需要能够过滤掉数据,然后将其复制粘贴到另一张表中,其中隐藏的列完好无损,并在目标粘贴后显示(它将包含更长的类似事务日志,而不仅仅是一个复制粘贴)。 p>
添加目标图片 - 即希望将列B和C的隐藏内容粘贴到目标电子表格中。 这可能吗?
在一篇文章中提出2个问题可能不是很好的形式,但有没有其他方法可以手动执行过滤和复制粘贴功能到另一个电子表格?即:
有没有办法让它更容易?不幸的是,没有VBA或宏观体验至今。
谢谢!
答案 0 :(得分:1)
编辑 - 完全误解了这个问题!
您希望在复制时包含隐藏的单元格 - 这是隐藏单元格的标准行为,但不适用于已过滤的列。如果你想避免使用VBA,你可以处理小的连续范围,那么简单的公式可能是最简单的解决方案。
使用您的示例,我将任意命名源工作表" 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 = ActiveSheet
Set tmprng = Application.InputBox("Top Left Corner of Destination", "Destination", Type:=8)
Set dstws = ActiveSheet
Set dstrng = dstws.Range(tmprng.Address, Cells(tmprng.Row + srcrng.Rows.Count - 1, tmprng.Column + srcrng.Columns.Count - 1))
dstrng = srcrng.Value
End Sub
第一个回答(回答错误的问题)
您可以使用" Go To ..."
复制可见单元格突出显示要复制的范围,按Ctrl G,单击&#34;特殊...&#34;,选择&#34;仅可见细胞&#34;,然后按Ctrl C复制。< / p>
现在粘贴时会留下所有隐藏的单元格。
答案 1 :(得分:1)
不,您不能使用常规Excel功能执行此操作,因为当其中一列具有空值时,Excel无法知道要跳过哪些列/单元格,这是必须由人员决定和完成的事情。
也许这是进入Macros世界的好时机,因为您不需要自定义代码,但可以使用录制的宏而无需进一步操作。此Excel功能适用于与您无关的缺乏经验的用户。
查看/宏/录制宏
命名您的宏
执行您需要的操作,请记住Excel通过在后台将其转换为VBA代码来记录您的所有动作。对于您的情况,请执行以下操作:
CTRL-G
/特殊/当前区域选择范围(不要通过鼠标或键盘选择单元格,您的代码应该是通用的,不应包含手动范围,因为您不想进行任何编码)CTRL-C
要复制录制宏后,使用以下命令为新宏指定快捷方式: 宏/查看宏/选项菜单
瞧!现在,您可以使用该键盘快捷键完成录制宏时所执行的操作。如果您在录制时未粘贴内容,则使用宏观快捷方式进行s / b并转到要粘贴的单元格,然后按CTRL-V
。
如果您有足够的信心,请尝试宏中的修改菜单,看看您手头有哪些代码,或者做一些小改动等。我看到很多人谁在开始时不熟悉基本编码,但在Excel中看到此功能后,不知何故开始编写自己的代码。祝你好运!
答案 2 :(得分:1)
非常明显的代码很酷,但是
indexer = ForwardTimewindowIndexer(
index_array=df.index,
window_size=pd.to_timedelta('1h'),
)
df['required_col'] = df['target'].rolling(indexer).sum().astype(bool)
将始终是源,因为活动表会在输入框之后直接返回。
我尝试将其更改为
dstws = activesheet
但是由于某种原因,这会破坏
Set dstws = tmprng.Parent
我收到运行时错误1004对象_Worksheet的方法范围失败?!?!
如果我可以解决此问题的话,该解决方案将可以在任何目标位置,甚至其他文件中为您服务。
另一种方法是使用vba取消过滤数据,然后进行复制,然后再打开相同的过滤器。完成后,您可以去任何地方并将现在粘贴的内容粘贴到剪贴板上。