有没有办法将一张工作表上的数据集中的所有空单元格复制并将空单元格粘贴到另一张工作表上的数据集中?
对于“销售表”中每个空白单元格,“插入”选项卡中对应的单元格也必须为空白。因此,我需要浏览并删除“插入”选项卡中对应的单元格。
例如,销售表单元格 H2 和 I2 为空白,因此插入单元格 D2 和 E2 应该为空白,这样这些单元格就没有插入语句。
答案1
解决了!!(2 种方法)
高水平
- 无法使用标准 CTRL + C 方法复制多个选择
- 因此,解决方案需要混合使用函数和/或 VB
方法 A 和 B
两种方法:
- 答:基于功能
- B: 基于 VB
方法 A:参见 Google 表格样本
方法 B:VB
Sub clr_corresponding()
'Pre-requisite: entirety of first data set (Sales) must be selected
On Error GoTo errtrap
addr_2 = InputBox("Enter top left cell of 2nd dataset - e.g. C15", "User input")
MsgBox ("If the entirety of List1 not already selected, you'll need to re-run this macro!")
For Each cell In Selection
cell.Activate
r_1 = ActiveCell.Row
c_1 = ActiveCell.Column
Exit For
Next
Selection.SpecialCells(xlCellTypeBlanks).Select
i = 0
For Each cell In Selection
cell.Activate
r_2 = ActiveCell.Row
c_2 = ActiveCell.Column
Range(addr_2).Offset(r_2 - r_1, c_2 - c_1).Clear
Next
'Range("K2").Offset(i - 1).Value = ActiveCell.Address
'cell.Address
'arr.Add (cell.Address) 'https://stackoverflow.com/questions/18097756/fastest-way-to-add-an-item-to-an-array
errtrap:
MsgBox ("Invalid selection")
Exit Sub
End Sub
比较
广告 (+) / 隐藏 (-):
A:
- 无宏
- 需要单独的部分(可能会使依赖关系变得更加棘手)
乙:
- 直接与目标输出表交互(例如“插入”表)
- 不必要的更改(例如由于输入不正确)无法撤消(在这种情况下需要恢复到上次保存的文档)
答案2
有一个非常简单的方法可以做到这一点。
转到空白的表格。
Sales Sheet
突出显示(选择)整个关注区域。不要害羞……如果您要在插入页上做同样的事情,您必须在这里全面了解。因此,如果插入页上的关注区域是 A1:LZS2020,则选择该区域。如果您知道坐标,请使用F5-GoTo
并输入它们。使用
F5-GoTo
,选择Special
,然后在对话框中选择Blanks
。请注意,它们现在是唯一突出显示的单元格。调出命名范围功能。创建一个名为的命名范围,例如
BlanksSalesSheet
。请注意,其“引用”公式将有一个(然而)长的单元格地址列表,与您突出显示的单元格相匹配。保存结果。单击命名范围并按 移动Enter
到“引用”部分,当它突出显示时,将其复制到剪贴板。返回单元格端。找到一个空单元格,按
F2
编辑它并粘贴您刚刚复制的材料。按Enter
。Shift-Some Arrow Key
按 突出显示第二个单元格,最好是空单元格。您将Find and Replace
只留下单元格地址,没有工作表名称材料。因此,找出该字符串是什么,在一个单元格中突出显示它并将其复制到剪贴板。Ctrl-H
按 查找和替换功能。粘贴到查找内容框中。确保使用内容框为空。全部替换。复制单元格地址字符串:
F2 (Edit), Ctrl-Home, Ctrl-SHIFT-End, Ctrl-C, ESC
应该可以。转到“插入”页面。输入命名范围功能。创建第二个命名范围,并适当命名(可能是 BlanksInserts)。将字符串粘贴=
到“引用”框中。
完成了。听起来像一场噩梦,但我确实花了 34 秒才完成。这是那种需要五到十分钟解释的事情,最后有人会说,“哦,你是说这样做吗?”,然后花 10 秒钟做这件事,让你在所有人面前看起来像个无聊的傻瓜。是的,那就这样做吧。
我马上就会介绍如何使用它。为了处理不断变化中的空白字段,您已经有了所需的命名范围,只需使用它突出F5-GoTo
显示下一组空白以确保正确,然后更改销售表的命名范围的“引用”条目。复制它,像上面一样编辑它,然后将其粘贴到插入表的命名范围的“引用”条目中。这样就完成了一半的工作。
好的,如何使用。在单元格上方的公式编辑栏左侧,有一个带有向下三角形的框,用于查看更多行并从中选择所有行。那里有什么?好吧,如果您还没有点击它,您只会看到活动单元格的单元格地址。或范围大小(如果您选择了五行两列,则为“5R x 2C”)。如果您碰巧有一个与突出显示的选项匹配的选择,您可能会看到命名范围名称。
确保您位于“插入”表上。单击向下的三角形/箭头。注意,您创建的两个命名范围已列出。可能更多,可能更多。无论如何,找到并单击“插入”页面的命名范围,可能是“空白插入”。注意,突然有一堆单元格突出显示。它们正是销售表上空白的单元格……因此请按DELETE
并在此处将它们清空。
完毕。
销售表页面中空白区域的每个单元格现在在插入页中也变为空白。就这么简单。
还要注意,插入页上的其他单元格均不受影响。因此,如果单元格 A1 中包含“cow”,则仍然会受到影响。
(如果这并不重要(“不知何故”和“令人惊讶地”),那么有一个更简单的方法可以做到这一点:只需选择并将销售表的所有内容复制到插入页面。但你肯定不想这样......)
因此,销售表上的 A1 可能有“43”,而在插入页上 A1 可能有“cow”,这可能是可取的。只有销售表页面上的空白单元格才会在插入页上被删除。插入页上的其他所有内容,无论是已填充内容还是本身为空白的,都会被保留下来,保持原样。这正是您所要求的。
再次,噩梦般的描述。非常简单快捷。