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

自动调整Excel中的列宽,同时排除某些单元格/行,excel,cells,except,column-width,Excel,Cells,Except,Column Width,我曾多次寻找相关问题,但从未找到类似的问题。每个人都想知道如何调整列宽,这很简单,我有一个更微妙的问题 我喜欢自动调整,创建外观整洁的表格,并确保所有内容都可见(也就是说,ctrl-a,在列之间的顶部双击),但如果有一个单元格有一长段文本(如表格底部的注释),它会使该列宽400像素,以捕获整个文本,当我只希望它根据我的列标题或表数据进行更新时我希望能够将此文本单元格标记为excel忽略以进行自动调整。 如果您同意将其居中,则可以将该单元格对齐(以及右侧的1个单元格)设置为“跨选择居中”,并将其忽

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

我喜欢自动调整,创建外观整洁的表格,并确保所有内容都可见(也就是说,ctrl-a,在列之间的顶部双击),但如果有一个单元格有一长段文本(如表格底部的注释),它会使该列宽400像素,以捕获整个文本,当我只希望它根据我的列标题或表数据进行更新时我希望能够将此文本单元格标记为excel忽略以进行自动调整。

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


有人能做到这一点吗?

如果您对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")

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

这可能是最好的解决方案,但我有几个问题。这是否可以扩展到2d范围,这样我就可以突出显示整个表格,而不仅仅是一行?或者,老实说,最好使用相反的方法,“自动拟合所有不在X、Y或Z单元格中的数据”(或者,范围A13:H20)?那么,你到底是如何运行它的呢?你把它叫做细胞中的UDF吗?或者是否有一个VBA运行空间,您需要在其中键入看起来像VBA的命令“AutoFitHeader Range(“X:Z”)”?我发现,至少在Office 2016中,他们实现了一个基本上正是我想要的命令。Home->Cells->Format->AutoFitColumnWidths(Alt->H O I)。您可以选择某些行或某些单元格等,然后使用该命令仅通过高亮显示的单元格自动调整高亮显示的列。谢谢-非常有用!:)这很有效,在许多情况下,在此类单元格中启用文本换行是有意义的。谢谢!