從範圍中刪除空單元格

問題的形成

我們有一系列單元格的數據包含空單元格:

 

任務是刪除空單元格,只留下帶有信息的單元格。

方法 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)))

而且,必須以數組公式的形式輸入,即粘貼後按 Enter (像往常一樣)和 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 中插入宏代碼的位置

 

發表評論