保存的excel文件大小太大VBA

保存的excel文件大小太大VBA

你好我有一个宏,它可以复制原始文件然后使用=INDEX()匹配文件函数

这是我的代码

ActiveSheet.Range("N:N").FormulaR1C1 = _
    "=INDEX('" & filename1 & folder & "[" & ffname & "]Accounts'!C11,MATCH(C3,'" & filename1 & folder & "[" & ffname & "]Accounts'!C6,0))"
ActiveSheet.Range("N:N").Select
Selection.Copy
ActiveSheet.Range("J:J").Select
Selection.PasteSpecial Paste:=xlPasteValues
Range("N:N").Select
Selection.Delete

嗯,代码没有问题,但我的问题是每次程序保存复制的数据时文件大小都会变大。来自16 千字节2,608 千字节

我还尝试添加此代码,程序将识别该列中最后使用的单元格以进行匹配

LastRow = ActiveSheet.Range("C1").CurrentRegion.Rows.Count

有没有办法在宏上解决这个问题?


顺便说一下,这不是我第一次使用=INDEX()函数来匹配来自另一个文件的数据。其余的都还可以,但只有在这个子帐户上,文件大小比原始文件大

答案1

执行以下操作将解决您的问题:

  1. 检查原始文件的字节(大小)。
  2. 将您要使用宏复制的数据复制并粘贴到新文件中并获取字节(大小)。
  3. 然后尝试宏并找出两者之间的区别。

  4. 另一种可能性是,您的数据可能填充了不必要的空格。

答案2

您在整个 N 列(如果使用 Excel 2007 或更新版本,则为 1048576 个单元格)中输入公式,这就是为什么您会得到一个大文件,其中保存了大量无用的数据。

例如,修改宏以将其插入=""新工作簿的整个 A 列会将文件大小从 9KB 更改为 5579KB。通过解压缩工作簿并查看工作表的 .xml 文件,您可以看到每个单元格的值都设置为0

<row r="1" spans="1:1" x14ac:dyDescent="0.2">
    <c r="A1" t="s">
        <v>0</v>
    </c>
</row>

要解决这个问题,您应该减少输入公式的行数。LastRow如果数据是连续的(没有空白单元格),那么使用问题中的应该可以工作。

LastRow = ActiveSheet.Range("C1").CurrentRegion.Rows.Count

相关内容