在 Excel 中自动调整列宽,同时排除某些单元格/行

问题描述 投票:0回答:3

我多次寻找相关问题,但从未找到类似的问题。每个人总是想知道如何调整列宽,这很简单,我有更细致的问题。

我喜欢自动调整,使表格看起来干净并确保所有内容都可见(又名。;ctrl-a,双击列之间的顶部),但是如果您有一个单元格包含一长段文本(例如底部的注释)当我只想根据我的列标题或表数据更新时,它使该列的宽度约为 400 像素以捕获整个文本。 我希望能够标记此文本单元格以供 Excel 忽略以进行自动调整。

如果您同意将其居中,则可以将该单元格对齐方式(以及右侧的 1 个单元格)设置为“跨选择居中”,它将被忽略。但是,就像我上面的例子一样,我经常希望该文本左对齐或右对齐,不允许 C.A.S.去工作。

有人能够做到这一点吗?

编辑:经过十多年的搜索,我找到了答案。它是如上所述使用居中选择,但使用自定义数字格式自动用空格填充文本以实现所需的对齐方式。我在下面整理了一张图片来帮助以图形方式解释这一点。

这里还有可复制的自定义数字格式(它们只需要应用于最左侧的文本单元格,所有受影响的单元格都需要居中选择):

对于左对齐(删除引号,注意末尾空格):

“一般*;一般*;一般*;一般*”

对于右对齐(删除引号):

“*一般;*一般;*一般;*一般”

excel cell except column-width
3个回答
1
投票

不确定这是否是设计使然,但根据我的经验,自动调整大小会忽略任何打开换行文本的单元格。因此,也许可以考虑在自动调整大小时为您想要忽略的范围打开文本换行。


0
投票

如果您可以使用 VBA 解决方案,则可以编写自定义例程来执行此操作。在此示例中,如果您将想要的范围传递给“仅自动调整标题”,它实际上会将标题复制到干净的单元格,运行自动调整,然后将该自动调整的宽度应用到您的列:

Sub AutoFitHeader(HeaderRow As Range)

  Dim col As Range
  Dim ws As Worksheet
  Set ws = ActiveWorkbook.Worksheets.Add
  ws.Visible = xlSheetHidden

  Application.DisplayAlerts = False

  For Each col In HeaderRow
    ws.Range("A1").Value = col.Value
    ws.Columns("A").AutoFit

    col.EntireColumn.ColumnWidth = ws.Columns("A").ColumnWidth
  Next col

  ws.Delete

  Application.DisplayAlerts = True

End Sub

然后这样称呼它:

AutoFitHeader Range("A1:H1")

0
投票

我能够基于使用 Center Across Selection 找到解决方案(TLDR:请参阅对原始帖子的编辑)。 CAS 的优点在于,为了自动调整列宽,Excel 会忽略使用 CAS 文本对齐方式在单元格中键入的任何文本,只要 CAS 文本右侧至少有 1 个空白单元格即可也使用 CAS(因此它不能仅在 1 个单元上工作)。这仅适用于您想要居中的文本,对于其他任何内容,您需要修改此方法。

对于右对齐,将[您的文本]输入到要合并到对齐区域的最左侧单元格中,CAS区域(在格式,对齐,水平,跨选择中心下),选择带有文本的单元格并输入为自定义数字格式(格式、数字、自定义):

[* 通用;* 通用;* 通用;* 通用]

这对每个正;负;零;文本值使用标准通用格式,但采用每个值并重复(“*”)一个字符(“”)以将其填充在值之前以填充整个选择。

对于左对齐,与上面完全相同,除了自定义数字格式为:

一般* ;一般* ;一般* ;一般*

注意 * 后面的最后一个空格。

查看图形/Excel 格式的示例:

© www.soinside.com 2019 - 2024. All rights reserved.