Excel-防止单元格文本溢出到下一个(空)单元格


71

如果Excel单元格中的文本太长而无法在该单元格的可见区域中显示,并且右侧的下一个单元格为空,则Excel会在该下一个单元格(以及下一个,接下来,根据需要)。我想改变这个;我想避免此文本溢出。

我知道我可以通过启用“自动换行”并调整行高来避免这种情况。但这不是我想要的。

我想更改Excel的默认行为,以便它仅在该单元格的可见区域中显示每个单元格的值。没有溢出,没有自动换行。

这可能吗?(顺便说一下,我正在使用Excel2010。)


5
如果事实证明这是不可能的,则可以在空白单元格中使用空格字符...
2012年

非常有趣-除了使用WordWrap,Font-AutoSize或其他单元格中的字符外,我不知道其他任何方式。
Jook 2012年

1
您可以通过选择所有单元格来截断多余的字符,转到Data / Text to Columns并在单元格中可以容纳的尽可能多的字符后指定一个换行符,而无需自动换行。记住跳过创建的包含额外字符的附加列!
卡兰2012年

我想这会回答您的问题: superuser.com/a/878605/497156
Sulaiman

“我知道我可以通过启用“自动换行”并调整行高来避免这种情况。” 谢谢!那是我选择的解决方案。
奥查多

Answers:


4

并非所有人都可以选择此选项,但是如果您将文档导入Google表格,则默认情况下支持此功能。在顶部菜单栏上,支持三种类型的自动换行。溢出,包装和修剪。您正在寻找剪辑。

根据要求,这对于某些人来说可能是一个可行的选择。


5
因此,您的答案实际上是说删除Excel并使用Google表格。
太阳迈克

就像我说的,不是每个人都可以选择,但是对于某些人来说可能是一个很好的解决方案。
yellavon '17

@SolarMike-谢谢。我很困惑,但是您的评论使这个答案更加合理。我认为&yellavon假设人们会对他的回答感到沮丧,因此这是防御性的-在实际解释答案之前。与实际发布的答案相比,您的评论更加简洁。
barrypicker

实际上,这恰好是最接近实际解决方案的答案。我不赞成在Excel中执行类似的操作。将列调整为所需的宽度,然后在列上启用字变形(这将导致所有行高增加),然后最终选择所有行并将行高调整为所需的高度。瞧!现在,您的单元格中的文本不会溢出到相邻的单元格中。(@ yellavon:我会接受您的回答,您可能希望对其进行更新以包含此EXcel行为,以便人们可以更轻松地访问解决方案)
e-mre

49

是的,您可以更改此行为,但您可能不希望由此引起的副作用。

无论相邻单元格是否包含数据,将单元格内容限制在单元格边界的关键是文本对齐方式Fill。选择您不想溢出的单元格,然后右键单击它们>设置单元格格式... > 对齐选项卡 > 水平对齐 > 填充

此方法的问题在于,当它足够短以适合单元格多次时,它将通过重复其内容来实际填充单元格。请参阅以下屏幕截图,这意味着什么。(请注意,B7充满与“短文本”。)

屏幕截图显示了默认和填充的不同文本对齐方式

看来您会被Benedikt帖子中的解决方法所困扰

请注意,您还可以'使用Benedikt的第一种非常聪明的方法,在相邻的单元格中打上勾号()。这样,您不必隐藏任何内容,可以防止单元格溢出,并且如果您将单元格复制为文本(假设在记事本中),您仍然会得到空文本,而不是空格或刻度。


2
因此,我建议您遵循Benedikt的方法用'字符填充空容器。现在我不知道我该赞成还是不赞成你的回答!:-p
Dan Henderson

我更加困惑。我看不到任何建议可用于'Benedikt的答案,包括在旧的编辑中!我都投票赞成,以防万一……
user568458 '16

1
@ user568458:我的笔记实际上是Benedikt答案的变体。您可以用' 而不是N/A按照Benedikt的建议填充单元格。我刚刚发现Benedikt 用任意值填充所有空白单元格的方法非常引人注目。
马库斯·曼格斯多夫

1
“填充”将导致数字也保持左对齐。
posfan12

多么...如此愚蠢。(Excel,不是这个答案。)
TJ Crowder

26

这是我的方法。

  1. 选项1:用“ N / A”填充所有空白单元格,然后使用“条件格式设置”使文本不可见。
  2. 选项2:使用0填充所有空白单元格,然后使用Excel设置隐藏零值。

填充所有空单元格:(在Mac上测试)

  • 编辑→转到...→特殊...(在Windows上:主页→编辑→查找和选择→转到特殊...)
  • 选择“空白”,然后单击“确定”。
  • 现在选择了所有空白单元格。不要点击任何东西。
  • 输入“ N / A”或0,然后按Ctrl+ Enter。这会将值插入所有选定的单元格。

隐藏“ N / A”的条件格式

  • 格式→条件格式。
  • 创建新规则。
  • 样式:经典,然后使用公式来确定要格式化的单元格。
  • 式: =A1="N/A"
  • 格式使用:自定义格式:字体颜色为白色,无填充。

隐藏零

  • Excel→设置→视图。
  • 取消勾选“显示零值”。

_________________
  是Ctrl+ Enter不是 Ctrl+ Shift+Enter


13

尝试在不希望看到溢出的相邻单元格中输入公式=“”(两个双引号)。结果为“ null”,不显示任何内容,不会影响数学。


1
结合Benedikt的帖子,我相信这是最简单的解决方案之一,因为您不必隐藏任何东西。
马特

这对我来说效果最好。
彼得(Peter

如果会影响统计功能COUNTA,该功能将对不为空的范围内的单元格计数。根据公式显示长度为零的字符串的单元格不为空,将被计数。
深奥的

4

对单元格使用水平文本对齐方式“填充”。您可以在其他应该解决您问题的Alignment选项中找到它

填充文字对齐


4
Marcus Mangelsdorf的回答是否涵盖了这一点?
Stevoisiak

8
还要注意,马库斯(Marcus)解释了这种方法的严重问题-如果单元格的内容足够短,它们将被复制。因此,“ A”将变为“ AAAAAAAA”。
Blackwood

很好,谢谢。右键单击需要重新格式化的单元格,选择“设置单元格格式”,然后做剩下的作为指导。有效。
Catbuilts

4

扩展'用于阻止Excel向右溢出文本到相邻空白单元格的解决方案时,有时您不想通过在其中插入该值来修改/破坏数据列。

无需'在实际数据值中插入,而是可以为此目的创建一个新的专用垂直列,并完全填充'所有字符。

1.屏障栏

在此处输入图片说明

2.在要保护的列的左侧插入“屏障”列。

在此处输入图片说明

3.通过将屏障列的列宽度设置为较小的值来折叠它们

将列宽度设置为.1,例如,或者将障碍列保持更宽以充当页边空白或列间空白。

在此处输入图片说明

请注意,您必须将宽度设置为大于零;将垂直势垒列宽度设置为零将还原为有害的单元溢出行为。

4.瞧!


1

在Excel中,将列调整为所需的宽度,然后对该列启用字变形(这将导致所有行高增加),然后最终选择所有行并将行高调整为所需的高度。瞧!现在,在单元格中不会溢出到相邻单元格中的文本。

(注意:我找到了它,并将其作为注释发布在所选答案中,但也将其作为答案发布,因此对于其他人来说更容易找到。)


1
问题的第二段:“我知道我可以通过启用“自动换行”并调整行高来避免这种情况。但这不是我想要的。”
fixer1234

0

出于同样的思路,Google表格可能并不适合所有人,该宏可能并不适合所有人,但可能适合某人

它会在选定范围内运行,并用截断的文本替换溢出的单元格。

标志确定是否:

  • 有问题的文本将被复制到新工作表中的相同相对地址,或者被丢弃。

  • 截断的文本通过工作表公式进行了硬编码或链接 =LEFT()

  • 截断的文本将超链接到新工作表中的完整字符串。

默认为保留数据并使用两个链接。

Option Explicit

Sub LinkTruncatedCells()
    Dim rng As Range: Set rng = Selection
    Dim preserveValues As Boolean: preserveValues = True
    Dim linkAsFormula As Boolean: linkAsFormula = True
    Dim linkAsHyperlink As Boolean: linkAsHyperlink = True
    Dim w As Single
    Dim c As Range
    Dim r As Range
    Dim t As Long
    Dim l As Long
    Dim s As String
    Dim ws As Worksheet
    Dim ns As Worksheet
    Application.ScreenUpdating = False
    Set ws = rng.Parent
    For Each c In rng.Columns
        w = c.ColumnWidth
        t = 0
        l = 0
        For Each r In c.Rows
            If Len(r) > l Then
                s = r
                If CBool(l) Then r = Left(s, l)
                Do
                    r.Columns.AutoFit
                    If r.ColumnWidth > w And Len(s) > t Then
                        t = t + 1
                        r = Left(s, Len(s) - t)
                        l = Len(r)
                    End If
                Loop Until t = Len(s) Or r.ColumnWidth <= w
                r.ColumnWidth = w
                If r <> s And preserveValues Then
                    If ns Is Nothing Then
                        Set ns = ws.Parent.Worksheets.Add(after:=ws)
                    End If
                    ns.Range(r.Address) = s
                    If linkAsFormula Then r.Formula = "=LEFT(" & ns.Name & "!" & r.Address & "," & l & ")"
                    If linkAsHyperlink Then ws.Hyperlinks.Add Anchor:=r, Address:="", SubAddress:= _
                            ns.Range(r.Address).Address(external:=True)
                End If
            End If
        Next r
    Next c
    ws.Activate
    Application.ScreenUpdating = True
End Sub

最后说明:我已将其用于个人项目,并发现它可靠,但是在尝试任何不熟悉的宏之前,保存并备份您的工作

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.