如何在没有缺少数据的单元格的情况下将缺少数据的列表压缩到新列表?


0
Column A    to     Column B
0.83               0.83
0.6                0.6
#N/A               0.99
#N/A               0.93
0.99    
#N/A    
0.93    

如何在没有缺少数据的单元格的情况下将缺少数据的列表压缩到新列表?


2
为什么不使用自动过滤器和过滤器“不等于:#N / A”?excel autofilter确实知道#N / A,#DIV / 0或#NAME等错误。
nixda 2013年

Answers:


1

您的问题并不具体说明您要执行此操作的频率或您需要执行此操作的列数。这是快速而肮脏的方法。如果你需要很多列的东西,那么使用vba可能会更好

  1. 选择包含数据的列。添加过滤器(数据菜单 - >过滤器)。
  2. 选择列表的下拉列表,然后取消选中错误的复选框
  3. 选择列中的第一个单元格。
  4. 按CTRL + SHIFT + DOWN选择其他可见单元格
  5. 按CTRL + C进行复制
  6. 移动到工作簿中的新工作表(或按SHIFT + F11创建一个新工作表)
  7. 按CTRL + V粘贴数据,没有错误

注意:对于旧版本的Excel,您必须使用过滤器下拉菜单中的“自定义过滤器”(“不等于”错误)。你可以在这里快速找到(在标题“Excel Custom AutoFilters”下查找)。

@Nixda:yikes ..我没有注意到你在评论中给出了基本相同的答案,直到我在回答之后刷新页面


1

除了tiktok的Autofilter解决方案(当然更灵活),这是另一个“快速和脏”的修复,稍微缩短:

  1. 选择列A(Ctrl- Space
  2. 首页 - > 查找和选择 - > 转到Ctrl- G) - > 特殊Alt- S
  3. 根据其公式(Alt- F)或常量(Alt- O),选择任一选项并取消选中错误Alt- E
  4. 复制(Ctrl- C) - 这将选择每个不是错误的单元格。
  5. 选择目标(例如单元格B1)并粘贴(Ctrl- V

完成!

如果您不想要数据的副本而只是删除错误,您也可以修改步骤3以选择错误,然后只删除它们((Ctrl- -


1

或者使用公式(根据您的需要调整)。从B1开始并复制下来。

=IFERROR(INDEX($A$1:$A$10,SMALL(IF(ISNUMBER($A$1:$A$10),ROW($A$1:$A$10)),ROW(A1))),"")

这是一个数组公式,必须用Ctrl+ Shift+ 确认Enter

在此输入图像描述

如果数据不是A1到A10,而是H25到H34,请使用

=IFERROR(INDEX($H$25:$H$34,SMALL(IF(ISNUMBER($H$25:$H$34),ROW($A$1:$A$10)),ROW(A1))),"")

注意公式如何仍显示Row($ A $ 1:$ A $ 10)。对于有效条目,此部分将返回1到10之间的数字,这是INDEX拉出正确行所需的数字。

此外,最后一行(A1)保持不变,因为它从一个向上返回数字,并将用于查找最小(1),第二最小(2),第三最小(3)等值。


这就像我正在寻找的东西(我需要一个公式来避免复制/粘贴),但这个特殊的公式不起作用。例如,所写的IF语句不完整。什么是value_if_false?此外,如果A1:A10中的相应单元格是错误,似乎设置为返回空白单元格(“”),但我希望新列表继续到下一个数字并删除所有错误。
user197426 2013年

如上所述,公式可能需要调整以满足您的需求。IF语句不是完整的,因为False参数是可选的。是的,如果出现错误,它将返回一个空白单元格,以便具有此公式的最后一行不显示错误值。如果您不知道有多少N / A值,则需要将公式向下复制到与原始数据中的值一样多的行,以满足所有值良好的可能性。...
teylyn 2013年

...错误陷阱只是确保公式的最后几行没有显示错误,其中没有从原始值返回任何值。更具体地说明您的数据集,然后我可以使用更具体的公式更新我的答案。
teylyn 2013年

你似乎完全误解了这个公式。它不会为原始数据中的每个错误值返回空白。你有没有尝试过?在A1到A10中创建数据集,将公式放入B1(使用Ctrl-Shift-Enter),然后复制到B10。
teylyn 2013年

我一直在玩这个公式,如果我的列表从A1开始,我能够让它工作,但如果它从不同的列开始则不能(显然我将A1:A10更改为适当的单元格)。我有一个从H25开始的清单。我是否需要在公式中添加有关列的内容?我对数组公式没有很好的理解,索引和行函数似乎也让我感到困惑。如果没有很好地理解公式,我似乎无法修改它以满足我的需要。
user197426 2013年

1

我需要在@teylyn的回答中澄清一些事情。在上面的例子中,数组公式应该被复制粘贴到B1中(或者公式输出所需数据位置的第一个单元格)...然后点击C + S + E,然后取出该单元格并将其向下拖动所需数量的输出单元 - 例如 - 上例中的4。上面有点令人困惑,微软自己的帮助网站没有帮助任何用户,因为它指示用户突出显示任何数组公式的输出单元格,然后输入你的公式到第一个单元格,然后点击C + S + E 。我花了一段时间试图解决这个问题,直到我意识到我的第一步是错误的,这让我很生气。

如果你突出显示,粘贴公式,C + S + E,它将无法工作。只有在粘贴C + S + E,然后将公式向下拖动或穿过目标单元格时,它才会起作用。

所以这样的东西也会起作用:

= IFERROR(INDEX(A:A,SMALL(IF(ISNUMBER(A:A),ROW(A:A)),ROW(A1))), “”)

如果你的数据在D栏中,或者像这样:

= IFERROR(INDEX($ d:$ d,SMALL(IF(ISNUMBER($ d:$ d),ROW($ d:$ d)),ROW(D1))), “”)

...但是最后的“行”引用必须保留为相对引用,因为当您向下拖动目标单元格时,它将使用D2,D3,D4等填充公式。

所以,具体而言: - 突出显示一个目标单元格 - 粘贴到其中= IFERROR(INDEX(A:A,SMALL(IF(ISNUMBER(A:A),ROW(A:A)),ROW(A1))), “”) - control + shift + enter - 再次突出显示该单元格 - 将角落框向下拖动到输出单元格所需的行数/列数

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.