隐藏列excel中的空单元格(NON EXPENSIVE - 计算时间)

时间:2012-08-17 02:21:30

标签: excel excel-formula

我有一栏:

1 - name

3 - name


6 - name

我想让另一列显示非空单元格,如下所示:

1 - name
3 - name
6 - name

我在OSX上运行它,所以我不能使用VBA。我也不能使用数据过滤器,因为这一栏位于实际数据的右侧,如果我过滤它,它也会隐藏相关数据。

最终我试图让一个列(任何列)只显示非空单元格值,每行一个,具有自动更新功能。

根据下面的建议,我尝试了以下方法: =INDEX(BRsat,SMALL((IF(LEN(BRsat),ROW(INDIRECT("1:"&ROWS(BRsat))))),ROW(L1)),1)‌ 但是它将计算时间延迟到极限,在7个不同的标签上实施一次后,计算机点击落后超过15秒。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

一些建议:

  1. 使用Pearson中的此数组公式 - 下面的屏幕截图
  2. 手动(非VBA)SpecialCells方法更容易
  3. SpecialCells方法

    • 将带有间隙的列复制到右侧
    • 选择新列,按F5,Special并检查空白
    • 右键单击,选择Delete,然后选择checlk shift cells up

    此3步骤流程的前两个步骤(选择空白)显示在Debra Dalgleish's site

    数组公式方法

    enter image description here

答案 1 :(得分:1)

给它一个镜头,输入为Ctrl+Shift+Enter的数组公式):

快速粘贴版本(注意:您需要将这些引用更改为工作表中的引用 - 我使用了A1:A7中的数据[见图片]):

=IFERROR(INDEX($A$1:$A$7, SMALL(--(IF($A$1:$A$7<>"",ROW($A$1:$A$7),100000)),ROW())), "")

更长的形式(更好地了解正在发生的事情):

=IFERROR(
        INDEX(
              $A$1:$A$7,
              SMALL(
                  --(IF($A$1:$A$7<>"",ROW($A$1:$A$7),100000)),ROW())),
   "")

基本上,我们在列上使用索引公式。 row参数使用SMALL()公式来查找列包含空值的所有实例,然后分配一个任意高的数字,希望永远不会匹配(这可能是不好的做法:)) 。 k的{​​{1}}参数(要匹配的数组中的第k个元素)只是行号,这意味着当您在列表中向下时,您将不会匹配当前列表中的项目

enter image description here