【问题标题】:How do I make sure my formula's are only in cells with input?如何确保我的公式只在有输入的单元格中?
【发布时间】:2016-11-25 18:50:35
【问题描述】:

我目前有一个将单元格从某一列复制到新列的公式。它看起来像这样:

=IF(INDEX(Sheet1!B9:B1048576;1;0)=0;"";INDEX(Sheet1!B9:B1048576;1;0))

而我所做的就是将这个公式复制到整个列中:

C6:C1048576

我需要这个的原因是我不知道表 1 上的数据会有多大。这样做的问题是,它让我的 Excel 变得非常慢,因为它一直在计算所有这些数百万个未使用的单元格。所以我正在寻找一种方法来避免在数百万个单元格中复制我的公式。

我在想也许我可以创建一个函数来计算带有文本的单元格数量,并基于此我可以插入我的公式。但我似乎找不到如何做到这一点。

也许还有一种更简单的方法可以将单元格从一列复制到新列?

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    如果您只是复制一列,为什么需要index?您可以将=index(B9:B1234567896,1,0) 替换为=B9

    事实上,你应该可以写=B:B——例如,如果你在单元格A42中写这个,它将查找B42。

    (给B:B一个名字,你可以让事情更清楚:例如=cust_email。)

    如果您确实需要index,请尝试使用=index(…)&"" 而不是=if(index(…)=0,"",index(…)),如果您要删除0s,其中index 复制一个空单元格。 (这会将数字转换为文本。)

    对于“保持公式与数据同步”的问题,我没有很好的答案。 (我从未接触过 VBA,但里面会有一些东西。)您可以尝试拥有 10,000 行公式和一个警告功能,如果第 10,001 个数据行不为空,它会提醒您?还是计算公式列和数据列中的非空白并在数据行多于公式行时提醒您的警告功能?

    【讨论】:

    • 感谢您的意见!我更改了以下内容: =IF(INDEX(Sheet1!B3:B1000;1;0)=0; "";INDEX(Sheet1!B3:B1000;1;0)) 到:IF(Sheet1!B:B=0 ; "";Sheet1!B:B)。我的解决方案是将我的公式限制在前 1000 行,因为我不希望文件有更多的行,这样 excel 仍然可以顺利运行。
    猜你喜欢
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多