删除 Excel 中的行不会重置最后一个单元格(已使用的范围)

Tom*_*not 6 microsoft-excel

我有一个大于 7MB 的 Excel 文件。为了了解权重的来源,我使用了SU 问题中描述的方法。

我将大部分重量缩小到一张纸,并执行ctrl+End检查该纸中的最后一个单元格是什么。奇怪的是,该单元格位于工作表中的最后一行(即第 1048576 行)。

alt然后,我继续清除所有未使用的行的格式,然后 - 以防万一 - 使用+ Shift+alt+ Shift+选择所有空白行(在我的数据下方),然后右键单击并删除。

然而,在保存文件、关闭它并再次打开它之后 - 按ctrl+End仍然会将我带到最后一个单元格。

我已经阅读了与手动执行此操作等效的 VBA,似乎这个SO Question指的是同一件事 - Worksheet.UsedRange属性。

在深入研究 VBA 之前,我可以手动执行一些操作来解决此问题吗?

PS 在将其标记为重复之前,请注意,我在寻找答案时故意用尽了其他选项。

编辑:

为了澄清一下,我已经看到了这个答案(并尝试过)和这篇知识库文章(也尝试过) - 没有雪茄。与最近的答案相同。

Pro*_*ous 7

我感谢您为记录您的努力而付出的额外努力。\xc2\xa0谢谢。

\n\n

我经常使用不适合你的方法来重置臃肿的书籍。\xc2\xa0 我只能识别出两个区别:

\n\n

首先是我从未尝试过右键单击->删除。我是键盘手,所以我一直使用Alt+ E+ D。\xc2\xa0 这应该不重要,但奇怪的事情发生了。

\n\n

第二个区别是我从来没有像你一样被卡住,它总是在保存后重置。\xc2\xa0那里有很大的帮助,对吗?

\n\n

一些可能的解决方案如下:

\n\n

水平/垂直膨胀

\n\n

今天我遇到了一个问题,我的 VBA 垂直合并工作表,而我的工作表水平莫名其妙地膨胀。\xc2\xa0我最初感到困惑和担心,因为我只有垂直膨胀并且没有想到要水平检查,直到我尝试重置失败了两次。为了完整起见,请幽默我,并防止这种情况发生在你身上:

\n\n
    \n
  1. 首先关闭所有其他 Excel 会话,以便当前工作簿是唯一打开的工作簿。
  2. \n
  3. 转到右侧的数据并选择第一个空列 - 整个列。
  4. \n
  5. Ctrl+ Shift+
  6. \n
  7. Alt+ E,然后D.
  8. \n
  9. Ctrl+ Shift+ End
  10. \n
  11. Alt+ E,然后D.
  12. \n
  13. Ctrl+Home
  14. \n
  15. 滚动到数据底部
  16. \n
  17. 选择第一个空行 - 整行。
  18. \n
  19. Ctrl+ Shift+
  20. \n
  21. Alt+ E,然后D.
  22. \n
  23. Ctrl+ Shift+ End
  24. \n
  25. Alt+ E,然后D.
  26. \n
  27. Ctrl+Home
  28. \n
  29. Ctrl+S
  30. \n
\n\n

是的,两条Ctrl++线是多余的,但我认为你可以Shift承受End15 次击键。

\n\n

您“不应该”需要在保存工作簿后关闭它,但我不会建议您这样做。\xc2\xa0 试一试。\xc2\xa0如果这不起作用,那么 - 尝试 VBA真快。

\n\n

VBA 方式

\n\n

不要害怕 VBA 的糟糕之处,它是一个很棒的工具,我们只需要几秒钟就可以做得很好。

\n\n
    \n
  1. 确保可疑工作表已打开且处于活动状态。
  2. \n
  3. Alt+F11打开编辑器。
  4. \n
  5. Ctrl+G打开立即窗口。
  6. \n
  7. 键入?activesheet.usedrange.address并按Enter
  8. \n
  9. 如果范围看起来正常(太大),那么问题不在于您的范围。
  10. \n
  11. 如果范围太大。然后activesheet.usedrange键入并按Enter注意第一个命令使用了?,而这个没有。\xc2\xa0 这是因为当我们希望 VBA 显示文本时使用问号,这样我们就可以看到一个值或状态。如果我们不使用问号,那么我们就是在告诉 VBA 执行一个操作。
  12. \n
  13. 按下 后Enter,将光标放在使用 的行上,?然后按下Enter
  14. \n
  15. 如果范围改变了,那么你就完成了。\xc2\xa0如果它是相同的,那么你仍然有问题。
  16. \n
\n\n

非常隐藏的工作表

\n\n

最后的任务是寻找隐藏的工作表。\xc2\xa0不只是隐藏,而是非常隐藏(我不是编造的)。

\n\n
    \n
  1. 项目资源管理器应该已经在屏幕左侧打开。按Ctrl+R如果不是,
  2. \n
  3. Excel 版本之间的窗口存在细微差别,但它们都具有相同的展开/折叠树行为。\xc2\xa0
  4. \n
  5. 显示的项目数量取决于打开的 Excel 工作簿和加载项的数量。如果您关闭了所有其他工作簿并且显示了多个项目,那么您还有其他事情要做,我们稍后会详细介绍。
  6. \n
  7. 现在,找到您的项目并展开文件夹以公开工作簿对象(各个工作表和对象ThisWorkbook)。\xc2\xa0您将认出它们,因为它们将您的工作表名称放在括号中。
  8. \n
  9. 找到后,通过工作表选项卡查找工作簿中未列出的名称。
  10. \n
  11. 如果找到,请在资源管理器窗口中选择它,然后转到属性窗口(位于资源管理器或 下方F4)。
  12. \n
  13. 向下滚动找到可见,它应该是两个值之一:xlhiddenxlveryhidden
  14. \n
  15. 在值内部单击以打开下拉菜单,然后选择xlvisible
  16. \n
  17. 如果不是这些,那么您选择了错误的工作表,并且可能选择了错误的项目, - 仔细检查您的选择。\xc2\xa0
  18. \n
  19. 如果您找到并取消隐藏这些工作表,请返回到每一个工作表并重置这些范围,以查看您的书是否缩小(不要忘记重新隐藏工作表。
  20. \n
\n\n

仅供参考: Excel 中的隐藏/取消隐藏上下文菜单中不会列出非常隐藏的工作表,因此它是保护配置和辅助列的更好方法之一。

\n\n
    \n
  1. 我们已经完成了 VBA,所以关闭编辑器并返回 Excel。按Ctrl+F3打开名称管理器。
  2. \n
  3. 查找意外的命名范围。\xc2\xa0我通常不建议删除命名范围,除非您非常熟悉您的工作簿,因为如果删除范围,许多高效的 Excel/VBA\xc2\xa0 解决方案将无法正常运行他们需要; 但是,如果您发现某个范围有错误、指向不存在的工作簿、引用未使用的范围或具有其他一些明显错误的值,那么就可以删除它们了。
  4. \n
\n\n

其他一些有用的建议

\n\n

这比我预期的要长得多,所以我会尽力结束它......

\n\n
    \n
  • 检查您的条件格式 - 就像命名范围一样,您正在寻找明显错误或复制的条件。

  • \n
  • 检查您的查询和数据模型。

  • \n
  • 确认您在难以找到的位置没有图片/图表/ listobjects(我们与名称管理器进行的检查应该捕获大多数,但不是全部)。

  • \n
  • 验证您的自定义配置设置是否不正常(我注意到主页选项卡上一位同事的样式库填充了相同的 20% 口音,展开它后发现有数百个。使用 VBA 编辑器,我输入?activeworkbook.styles.count并它返回了超过 19,000 个;作为比较,我的有 47)。

  • \n
  • 注意过度格式化 - 格式化为货币的数十万行数字与使用单元格边框格式化的数十万行不同,这些单元格边框的图案就像迷宫一样,具有不同的颜色和许多不同的自定义数字格式、符号和字体。

  • \n
  • 检查数据本身,几百行跨越 20 列,每个单元格都填充到极限将是一个令人尴尬但可能导致膨胀的原因

  • \n
  • 最后,核选项。\xc2\xa0将每个工作表单独保存为 CSV 文本文件并将其导入到新的工作簿中...这个东西保证可以工作,除非你有损坏的数据 - 但需要重建你的格式、连接和 bla bla bla 可能会很痛苦。

  • \n
\n

  • 感谢您对我的第一篇文章的帮助。现在,我有一个现实的期望,即编辑团队将跟随我完成每条线索,确保逗号正确地位于分号中的句号下方,并且每个词形变化都以斜体显示以示强调。 (2认同)