2016-11-25 69 views
0

我目前有一个公式,将某个列的单元格复制到一个新列。它看起来像这样:我如何确保我的公式只在包含输入的单元格中?

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

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

C6:C1048576 

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

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

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

回答

0

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

实际上,您应该可以编写=B:B - 如果您在单元格A42中编写它,它将查找B42,例如。

(给B:B一个名字,你可以使事情更加清晰:=cust_email例如)

如果你真的需要index,尝试=index(…)&""代替=if(index(…)=0,"",index(…)),如果您要移除0 S其中index副本空细胞。 (这会将数字转为文字。)

对于“保持公式与数据同步”问题,我没有一个好的答案。 (我从来没有碰过VBA,但那里会有东西。)你可以尝试使用10,000行公式和一个警告函数,如果第10,001行的数据行不是空白,它会提醒你。或者在公式列和数据列中计算非空白的警告函数,并在数据行比公式行多的情况下提醒您?

+0

感谢您的输入! 我改变了以下内容: = IF(INDEX(Sheet 1中B3:B1000; 1; 0)= 0; “”; INDEX(Sheet 1中B3:!B1000; 1; 0)) 到: IF(Sheet1!B:B = 0;“”; Sheet1!B:B)。 而我的解决方案是只限制我的公式到前1000行,因为我不希望有更多行的文件,那么这种方式的Excel仍然运行平稳。 – CvP

相关问题