提示:其它语言是由 Google 机器翻译的。 你可以访问 English 版本。
登录
x
or
x
x
马上登记
x

or

如何复制和粘贴Excel中的非空白单元格?

我们大多数人可能会遇到这个问题,当我们复制包含一些空白单元格的数据列表,然后将它们粘贴到另一列时,空白单元格也会被粘贴。 这是非常烦人的,当我们不需要空白,并且只想粘贴非空白单元格时。 在这种情况下,我们如何快速方便地在Excel中复制和粘贴非空白单元格? 以下是您解决问题的一些快速技巧:

使用“转至特殊”命令仅复制并粘贴非空白单元格

使用“过滤器”功能仅复制并粘贴非空白单元格

使用Array Formula复制并粘贴非空白单元格

使用VBA代码只复制并粘贴非空白单元格

使用Kutools for Excel复制并粘贴非空白单元格 好idea3


好idea2选择非空白单元格(从选择或整张表格中快速选择非空白单元格。)

doc选择非空单元格1


箭头蓝色右泡 使用“转至特殊”命令仅复制并粘贴非空白单元格


随着 去特别 命令,您可以先选择所有数据,然后将其复制并粘贴到其他位置。

1。 选择您想要使用的数据列表。

DOC-仅复制-nonblanks1

2。 然后点击 主页 > 查找和选择 > 去特别,看截图:

DOC-仅复制-nonblanks1

3。 在 去特别 对话框,检查 常量 选项,看截图:

DOC-仅复制-nonblanks1

4。 然后点击 OK,并且只有值单元格已被选中列表中。

DOC-仅复制-nonblanks1

5。 然后将数据复制并粘贴到所需的位置。 只有非空白的单元格值已被粘贴。 看截图:

DOC-仅复制-nonblanks1

注意:此方法仅适用于常量,它不适用于公式单元格。


箭头蓝色右泡 使用“过滤器”功能仅复制并粘贴非空白单元格

在此 筛选 功能可以帮助您首先筛选非空白单元格,然后可以根据需要将它们复制并粘贴到其他单元格。

2。 点击 数据 > 筛选,看截图:

doc只复制nonblanks6

3。 然后单击选定列表中单元格右下角的下拉按钮,然后取消选中 空白 选项下的下拉菜单。 看截图:
DOC-仅复制-nonblanks1

4。 然后点击 OK,所有非空白单元格都被过滤掉,如下图所示:

DOC-仅复制-nonblanks1

5。 最后,您可以复制过滤的数据并将其粘贴到您需要的任何位置。

注意:通过这种方式,值和公式都会生效。


箭头蓝色右泡 使用Array Formula复制并粘贴非空白单元格

要仅复制和粘贴非空白单元格,还可以应用以下数组公式。

公式 再也不用担心Excel中长的公式了! Kutools for Excel's 自动文本 可以将所有公式添加到组中
作为自动文本,并解放你的大脑! 点击这里了解自动文本 点击这里获得免费试用

1。 除了您的数据,请将下列公式输入空白单元格:

=LOOKUP("zzzzz",CHOOSE({1,2},"",INDEX(A:A,SMALL(IF($A$1:$A$15<>"",ROW($A$1:$A$15)),ROWS($B$1:B1)))))

DOC-仅复制-nonblanks1

注意:在上面的公式中, A1:A15 是您要使用的数据列表。您可以根据需要更改它。

2。 然后按 Shift + Ctrl + Enter 键,然后选择单元格B1,然后将填充句柄拖到要包含此公式的范围,并且已提取所有非空白单元格值。 看截图:

DOC-仅复制-nonblanks1

3。 因为它们是公式,所以当您将它们复制到其他地方时,您应该将它们复制并粘贴为值。

注意:此公式仅适用于常数,不适用于公式单元格。


箭头蓝色右泡 使用VBA代码只复制并粘贴非空白单元格

如果您对VBA代码感兴趣,则可以执行以下代码来完成此任务。

1。 按住 ALT + F11 键,然后打开 Microsoft Visual Basic for Applications窗口.

2。 点击 插页 > 模块,并将以下代码粘贴到 模块窗口.

VBA代码:在Excel中仅复制并粘贴非空白单元格

Sub PasteNotBlanks()
'Update 20140325
Dim rng As Range
Dim InputRng As Range, OutRng As Range
xTitleId = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
If InputRng.Columns.Count > 1 Then
    MsgBox "Please select one column."
    Exit Sub
End If
Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
InputRng.SpecialCells(xlCellTypeConstants).Copy Destination:=OutRng.Range("A1")
End Sub

3。 然后按 F5 键运行此代码,会出现一个提示框,提醒您选择要使用的数据范围。 看截图:

DOC-仅复制-nonblanks1

4。 然后点击 OK,另一个提示框会弹出,让你选择一个单元格来放置数据。

DOC-仅复制-nonblanks1

5. 点击 OK 以完成此代码,并且只有非空白单元格值已粘贴到您指定的位置。

注意:此代码仅适用于常量。


箭头蓝色右泡 使用Kutools for Excel复制并粘贴非空白单元格

有没有比上面更简单的方法? 当然, Kutools for Excel's 选择非空白单元格s实用工具可以帮助您选择非空单元格,然后复制并粘贴它们。

Kutools for Excel, 与超过 120 方便的Excel功能,提高工作效率,节省工作时间。

免费安装 Kutools for Excel,请按照以下步骤操作:

1。 选择单元格区域,然后单击 Kutools > 选择 > 选择非空白单元格。 看截图:
doc选择非空单元格2

2。 然后选择非空白细胞,按下 按Ctrl + C 复制它们,然后转到选择要输出清除结果的单元格,然后按 按Ctrl + V 粘贴选定的非空白单元格。 看截图:
doc选择非空单元格3

箭头蓝色右泡 仅复制并粘贴非空白单元格



Kutools for Excel:300 +函数您必须在Excel中, 从这里60天免费试用

粘贴到可见范围 (仅将数据复制并粘贴到可见或已过滤的单元格中。)

excel插件工具,只将数据粘贴到已过滤的单元格,并忽略隐藏的单元格

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及你以前用过的任何东西; 加密单元格 密码; 创建邮件列表 并发送电子邮件...
  • 超级方程式酒吧 (轻松编辑多行文字和公式); 阅读布局 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不丢失数据; 分裂细胞含量; 组合重复的行/列...防止重复的细胞; 比较范围...
  • 选择复制或唯一 行; 选择空行 (所有细胞都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择......
  • 精确复制 多个单元格而不更改公式参考; 自动创建参考 多张表; 插入项目符号,复选框等等......
  • 提取文本,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级过滤器 (将过滤方案保存并应用到其他工作表); 高级排序 按月/周/日,频率等; 特殊过滤器 用粗体,斜体......
  • 结合工作簿和工作表; 根据键列合并表; 将数据拆分为多个表格; 批量转换xls,xlsx和PDF...
  • 超过300强大的功能。 支持Office / Excel 2007-2019和365。 支持所有语言。 在您的企业或组织中轻松部署。 全功能30天免费试用。
kte tab 201905

Office选项卡为Office提供选项卡式界面,使您的工作更轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,Publisher,Access,Visio和Project。
  • 在同一窗口的新选项卡中打开并创建多个文档,而不是在新窗口中。
  • 通过50%提高您的工作效率,每天为您减少数百次鼠标点击!
官方底部
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Mickael · 2 years ago
    Thanks for the great tips!
    I am using the Find & Select feature, but it's taking a long time because my spreadsheet contains 70 columns and 450k rows. Is there a way to fasten the process?
  • To post as a guest, your comment is unpublished.
    Peter · 3 years ago
    When i select and copy only non-blank cells, how can i then paste it somewhere else with keeping the same empty ranges between them?
  • To post as a guest, your comment is unpublished.
    cvh · 3 years ago
    These tools delete the blank cells and compress the row. I want the format to be retained, including the spaces, but I do not want empty cells to overwrite cells containing existing data. i.e. I want to add the new, copied, cells in a column onto an existing column.
  • To post as a guest, your comment is unpublished.
    Quintin · 4 years ago
    Hi #abc

    I have used your formula =LOOKUP("zzzzz",CHOOSE({1,2},"",INDEX('List of Overdue items'!A:A,SMAL L(IF('List of Overdue items'!A$1:A$15 00"",ROW('List of Overdue items'!A$1:A$15 00)),ROWS('List of Overdue items'!B$1:B2)) )))

    I have data in one Worksheet and want to copy that data into another worksheet (same doc). Can you help?
  • To post as a guest, your comment is unpublished.
    Hellooo · 4 years ago
    Is there a way to make the macro work when referencing between different sheets?
  • To post as a guest, your comment is unpublished.
    em07 · 5 years ago
    This formula is absolutely amazing, thank you.

    Unfortunately it breaks when trying to copy from another sheet, is there a workaround?
    • To post as a guest, your comment is unpublished.
      abc · 4 years ago
      correct the references when using the formula between different sheets. It does work.

      =LOOKUP("zzzzz",CHOOSE({1,2},"",INDEX('List of Overdue items'!A:A,SMALL(IF('List of Overdue items'!A$1:A$1500"",ROW('List of Overdue items'!A$1:A$1500)),ROWS('List of Overdue items'!B$1:B2)))))
  • To post as a guest, your comment is unpublished.
    etchvee · 5 years ago
    thanks for the super formula:

    =LOOKUP("zzzzz",CHOOSE({1,2},"",INDEX(A:A,SMALL(IF($A$1:$A$15"",ROW($A$1:$A$15)),ROWS($B$1:B1)))))