我有一个包含 100000 行公式的 Excel 电子表格(C 栏)将引用我粘贴的数据A 栏。当我想复制结果列表时,我选择单元格C1和ctrl++选择整个范围,然后I shift+ 。downctrlc
我面临的问题是,包含公式的空单元格仍被视为有值。因此,如果我只粘贴 97000 行A 栏,当我想从中选择数据时C 栏我无法正确使用ctrl++ shift,down因为它一直选择到 C100000。有什么方法可以在移动单元格或选择范围时忽略公式中计算值为空或不存在的单元格?
答案1
您可以使用该Find
工具来选择Find All
列中的值。然后Ctrl-A
选择所有值。但是对于 100,000 个项目(或 97,000 个),这将花费相当长的时间。或者您可以使用简短的 VBA 宏来选择范围。
或者,您可以使用下面编写的宏来扩展光标所在的任何单元格,以包含从第一个单元格到显示数据的最后一个单元格的列中的所有单元格。
它可以被硬编码到特定的列,并且如果您愿意,甚至可以在宏中包含复制/粘贴值序列。
Option Explicit
Sub SelectWithValues()
Dim R As Range
Dim LastRow As Long
With Columns(Selection.Column)
Set R = .Cells.Find(what:="*", after:=.Cells(1, 1), _
LookIn:=xlValues, searchorder:=xlByRows, _
searchdirection:=xlPrevious)
If Not R Is Nothing Then
Set R = Range(Cells(1, R.Column), R)
R.Select
End If
End With
End Sub
要输入此宏(子),alt-F11
请打开 Visual Basic 编辑器。确保您的项目在 Project Explorer 窗口中突出显示。然后,从顶部菜单中选择插入/模块,并将下面的代码粘贴到打开的窗口中。
要使用此宏(子),请确保光标位于要选择的列中。alt-F8
打开宏对话框。按名称选择宏,然后RUN
。