随着数据的增加自动填充公式并动态排序

时间:2018-03-21 19:57:13

标签: excel excel-vba sorting vba

我想在工作表中对数据进行排序,每天在第二张工作表中获取新行。

问题是,如果我使用SMALL() - 函数并自动填充单元格直到最后一行(A102482或类似的东西),我的文件变得非常庞大且滞后(> 20mb)。

当然,添加新行的人可以将第二个工作表中的公式扩展为新行,但这根本不是用户友好的!

什么是最好的解决方案?我想到了vba-code,它计算第一个工作表中的条目,然后运行像这样的代码

for (i to numberrows; i++) { SMALL(A + i + 2*3, i) }

填写第二个工作表中的前几行,以便excel文件不会太大......

提前致谢!

编辑:

更具体一点:

我要求excel做的是复制工作表并将行排序在第二个工作表上。当表格消耗时,排序表当然有更多的值。此过程应自动完成,用户只需在第一个工作表中输入新数据,并在第二个工作表中查看结果。让第二个工作表的单元格全部已经填充SMALL()函数不是一个选项,因为这在我的情况下可以工作,但这太慢了,文件太大了......

2 个答案:

答案 0 :(得分:1)

我想我在这里找到了答案:

Excel VBA: AutoFill Multiple Cells with Formulas

很抱歉我的问题太误导了,基本上上面的答案就是我所要求的...感谢您的时间和答案!

编辑:链接到包含答案的特定帖子

答案 1 :(得分:1)

我建议从数据透视表中创建第二个表,即从属表。

每次刷新数据时,第一张纸都会增大和缩小,可以设置为在打开文件时自动刷新。方法如下:

使用“插入>表格”格式化第一个列表。然后使用“使用数据透视表进行汇总”或“插入>数据透视表”(相同功能的2个名称)将数据透视表放在下一页上。

Make your data into a table

将所需的所有列放在显示的数据透视表向导上的“行标签”下的第二个工作表中。

enter image description here

在数据透视表工具下>设计>布局>小计,选择“不显示小计”。 在数据透视表工具下>设计>布局> Grand Totals,选择“Off for Rows and Columns”。 在数据透视表工具下>设计>布局>报告布局,选择“以表格形式显示。”

Here's what you get

请注意,如果行标签中列表顶部没有唯一的内容,类似于我的示例中的“ID”(= ROW()),数据透视表将使用您可能的数据执行智能操作不想要。

以下是如何在文件打开时自动刷新事物。或者,您右键单击表格并选择“刷新”。

PivotTable options Refresh data on file open

如果您想在每次数据更改时刷新数据透视表,请输入

Sheets("Sheet2").PivotTables(1).PivotCache.Refresh

(将“Sheet2”替换为表格所在的工作表的名称;激活左侧的数据表;在第一个下拉列表中选择工作表,然后选择第二个下拉列表上的更改以访问Sub Worksheet_Change代码区域)

...这里:

Refresh PivotTable on data changes

干杯!