从范围中删除空单元格

问题的形成

我们有一系列单元格的数据包含空单元格:

 

任务是删除空单元格,只留下带有信息的单元格。

方法 1. 粗略和快速

  1. 选择原始范围
  2. 按下键 F5, 下一个按钮 近期亮点 (特别的). 在打开的窗口中,选择 空单元格(空白) 并点击 OK.

    从范围中删除空单元格

    范围内的所有空单元格都被选中。

  3. 我们在菜单中给出一个命令来删除选中的单元格:右击 - 删除单元格 (删除单元格) 与向上移动。

方法三:数组公式

为简化起见,让我们使用以下名称命名我们的工作范围 名称管理员 (名称管理器) 标签 公式 (公式) 或者,在 Excel 2003 和更早版本中,菜单 插入 - 名称 - 分配 (插入——名称——定义)

 

将范围命名为 B3:B10 有空, 范围 D3:D10 – 无空. 范围的大小必须严格相同,并且可以相对于彼此位于任何位置。

现在选择第二个范围(D3)的第一个单元格,然后在其中输入这个可怕的公式:

=IF(ROW() -ROW(NoEmpty)+1>NOTROWS(YesEmpty)-COUNTBLANK(YesEmpty);””;INDIRECT(ADDRESS(LOWEST((IF(Empty<>“”,ROW(Empty);ROW() + ROWS(有空))); LINE()-ROW(无空)+1); COLUMN(有空); 4)))

在英文版中,它将是:

=IF(ROW()-ROW(NoEmpty)+1>ROWS(Empty)-COUNTBLANK(Empty),””,INDIRECT(ADDRESS(SMALL((IF(Empty<>“”,ROW(Empty),ROW() +ROWS(HaveEmpty)),ROW()-ROW(NoEmpty)+1),COLUMN(HaveEmpty),4)))

而且,必须以数组公式的形式输入,即粘贴后按 输入 (像往常一样)和 Ctrl + Shift + Enter. 现在可以使用自动完成功能将公式复制下来(拖动单元格右下角的黑色十字)——我们将得到原始范围,但没有空单元格:

 

方法3. VBA中的自定义函数

如果怀疑您经常需要重复从范围中删除空单元格的过程,那么最好将您自己的用于删除空单元格的函数添加到标准集中一次,并在所有后续情况中使用它。

为此,请打开 Visual Basic 编辑器 (ALT + F11),插入一个新的空模块(菜单 插入 - 模块) 并在此处复制此函数的文本:

函数 NoBlanks(DataRange As Range) As Variant() Application.Caller.Cells.Count, DataRange.Cells.Count) ReDim Result(2 To MaxCells, 1 To 1) For Each Rng In DataRange.Cells If Rng.Value <> vbNullString Then N = N + 1 结果(N, 1 ) = Rng.Value End If Next Rng For N1 = N + 2 To MaxCells Result(N1, 2) = vbNullString Next N1 如果Application.Caller.Rows.Count = 2 Then NoBlanks = Application.Transpose(Result) Else NoBlanks = Result End If End 函数  

不要忘记保存文件并从 Visual Basic 编辑器切换回 Excel。 要在我们的示例中使用此功能:

  1. 选择足够范围的空单元格,例如 F3:F10。
  2. 进入菜单 插入 - 功能 (插入 - 功能)或点击按钮 插入功能 (插入函数) 标签 公式 (公式) 在较新版本的 Excel 中。 在类别中 用户自定义 (用户自定义) 选择我们的功能 无空白.
  3. 用 voids (B3:B10) 指定源范围作为函数参数,然后按 Ctrl + Shift + Enter将函数作为数组公式输入。

:

  • 使用简单的宏一次删除表中的所有空行
  • 使用 PLEX 插件一次删除工作表中的所有空行
  • 快速填充所有空单元格
  • 什么是宏,在 VBA 中插入宏代码的位置

 

发表评论