Excel - предотвращение переполнения текста ячейки в следующую (пустую) ячейку

72

Если у вас есть текст в ячейке Excel, который слишком длинный для отображения в видимой области этой ячейки, а следующая ячейка справа пуста, Excel позволяет отображать текст в этой следующей ячейке (и следующей, и далее по мере необходимости). Я хочу изменить это; Я хочу избежать этого переполнения текста.

Я знаю, что могу избежать этого, включив "перенос слов" и регулируя высоту строки. Но это не то, что я хочу.

Я хочу изменить поведение DEFAULT в Excel, чтобы оно отображало значение каждой ячейки только в видимой области этой ячейки. Без переполнения, без переноса слов.

Это возможно? (Я использую Excel 2010, кстати.)

е-MRE
источник
5
если это окажется невозможным, вы можете использовать символ пробела для пустых ячеек ...
Aprillion
довольно интересно - я не знаю другого способа, кроме использования WordWrap, Font-AutoSize или символов в других ячейках.
Jook
1
Вы можете обрезать дополнительные символы, выбрав все ячейки, перейдя Data / Text to Columnsи указав разрыв после того, как столько символов поместится в ячейку без переноса / переполнения. Не забудьте пропустить дополнительный созданный столбец, который содержит дополнительные символы!
Каран
Я думаю, что это ответило бы на ваш вопрос: superuser.com/a/878605/497156
Сулайман
«Я знаю, что могу избежать этого, включив« перенос слов »и регулируя высоту строк». Спасибо! Это мое выбранное решение.
Очадо

Ответы:

4

Это может быть не вариант для всех, но если вы импортируете документ в Google Sheets, эта функция поддерживается по умолчанию. В верхней строке меню поддерживаются три типа переноса текста. Переполнение, перенос и обрезка. Вы ищете клип.

В зависимости от требований, это может быть приемлемым вариантом для некоторых людей.

yellavon
источник
5
Таким образом, ваш ответ на самом деле гласит: бросьте Excel и отправляйтесь с листами Google.
Солнечный Майк
Как я уже сказал, не вариант для всех, но может быть хорошим решением для некоторых.
Йеллавон
@SolarMike - спасибо. Я был в замешательстве, но ваш комментарий улаживает этот ответ. Я думаю, что Йеллавон предполагает, что люди будут сопротивляться его ответу, и поэтому он является защитным - прежде чем объяснять ответ. Ваш комментарий является более сжатым по сравнению с фактическим опубликованным ответом.
barrypicker
На самом деле, это самый близкий к реальному решению ответ. Я обнаружил, что в Excel вы можете сделать что-то похожее на это. Отрегулируйте столбец до необходимой ширины, затем включите деформацию слов в столбце (что приведет к увеличению высоты всех строк), а затем, наконец, выберите все строки и отрегулируйте высоту строк до желаемой высоты. Вуаля! Теперь у вас есть текст в ячейках, который не перетекает в соседние ячейки. (@ Yellavon: я приму ваш ответ, вы можете обновить его, чтобы он содержал такое поведение EXcel, чтобы люди могли легче получать доступ к решению)
e-mre
49

Да, вы можете изменить это поведение, но вы, вероятно, не захотите побочных эффектов, которые это вызывает.

Ключом к ограничению содержимого ячейки до границ ячейки независимо от того, содержит ли соседняя ячейка данные, является выравнивание текста Fill. Выберите ячейки, которые вы не хотите переполнять, и щелкните их правой кнопкой мыши> Форматировать ячейки ... > вкладка «Выравнивание» > « Горизонтальное выравнивание» > « Заливка».

Проблема этого метода состоит в том , что это будет на самом деле заполнить клетки, повторяя их содержание , когда оно достаточно коротким , чтобы поместиться в клетке несколько раз. Смотрите скриншот ниже, что это значит. (Обратите внимание , что B7будет заполнен с «коротким текстом».)

Снимок экрана, показывающий различное поведение выравнивания текста по умолчанию и заливки

Похоже, вы застряли с обходными путями в посте Бенедикта

Обратите внимание, что вы также можете заполнить соседние ячейки галочками ( '), используя первый, очень умный метод Бенедикта . Таким образом, вам не нужно ничего скрывать, предотвращать переполнение ячеек, и если вы копируете ячейки как текст (скажем, в блокнот), вы по-прежнему получаете пустой текст, а не пробелы или галочки.

Маркус Мангельсдорф
источник
2
Поэтому я принял ваше предложение следовать методу Бенедикта, чтобы заполнить пустые места 'персонажами. Теперь я не знаю, должен ли я подтвердить ваш ответ, или его, или что! :-p
Дэн Хендерсон
Я еще больше запутался. Я не вижу никаких предложений для использования 'в ответе Бенедикта вообще, в том числе в старых редакциях! Я проголосовал за оба, на всякий случай ...
user56reinstatemonica8
1
@ user568458: Моя заметка была вариацией ответа Бенедикта. Вы могли бы заполнить клетки ' вместо того, чтобы заполнять их, N/Aкак предложил Бенедикт. Я только что нашел способ Бенедикта заполнить все пустые ячейки произвольным значением очень убедительным.
Маркус Мангельсдорф
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

Попробуйте ввести формулу = "" (это две двойные кавычки) в соседней ячейке, где вы не хотите видеть переполнение. Это оценивается как «ноль», который ничего не отображает и не повлияет на математику.

микросекунда
источник
1
В сочетании с постом от Бенедикта я считаю, что это одно из самых простых решений, так как вам не нужно ничего скрывать.
Мэтт
Это сработало лучше для меня.
Питер
Если влияет на статистическую функцию COUNTA, которая подсчитывает количество ячеек в диапазоне, которые не являются пустыми . Ячейка, отображающая строку нулевой длины в результате формулы, не является пустой и будет подсчитана.
Глубоко
4

Используйте горизонтальное выравнивание текста «Заполнить» для ячейки. Вы можете найти его там же, где и другие параметры выравнивания, которые должны решить вашу проблему.

Выравнивание текста

Томас
источник
4
Разве это не было охвачено ответом Маркуса Мангельсдорфа ?
Stevoisiak
9
Также обратите внимание, что Маркус объясняет серьезную проблему с этим методом - если содержимое ячейки достаточно короткое, оно будет продублировано. Таким образом, «А» станет «АААААААА».
Блэквуд
Хорошо, спасибо. Щелкните правой кнопкой мыши по ячейкам, которые необходимо переформатировать, выберите «Формат ячеек» и сделайте все остальное в качестве руководства. Это сработало.
Catbuilts
4

Расширяя решение использования 'для блокировки правостороннего разлива текста в Excel в соседние пустые ячейки, иногда вы не хотите изменять / повреждать столбец данных, вставляя туда это значение.

Вместо того, чтобы вставлять 'в ваши фактические значения данных, вы можете создать для этой цели новый выделенный вертикальный столбец, целиком заполненный 'символами.

1. Барьерная колонна

введите описание изображения здесь

2. Вставьте столбец «барьер» слева от столбцов, которые вы хотите защитить.

введите описание изображения здесь

3. Сверните столбцы барьера, установив для их ширины столбца небольшое значение

Установите для ширины столбца значение, например .1, или, альтернативно, оставьте столбцы барьера шире, чтобы они выполняли роль поля или пробела между столбцами.

введите описание изображения здесь

Обратите внимание, что вы должны установить ширину больше нуля; установка нулевого значения ширины столбца вертикального барьера приведет к нежелательному переполнению ячейки.

4. Вуаля!

Гленн Слэйден
источник
1

В Excel отрегулируйте столбец до необходимой ширины, затем включите деформацию слов в этом столбце (что приведет к увеличению высоты всех строк), а затем, наконец, выберите все строки и отрегулируйте высоту строк до требуемой высоты. Вуаля! Теперь у вас есть текст в ячейках, которые не перетекают в соседние ячейки.

(Примечание. Я нашел это и опубликовал как комментарий в выбранном ответе, но также опубликовал его как ответ, чтобы его было легче найти для других.)

е-MRE
источник
1
Второй абзац вопроса: «Я знаю, что могу избежать этого, включив« перенос слов »и регулируя высоту строк. Но это не то, что я хочу».
fixer1234
0

При том же мнении, что Google Sheets может быть не для всех , этот макрос может быть не для всех, но для кого-то .

Он проходит через выбранный диапазон и заменяет переполненные ячейки усеченным текстом.

Флаги определяют, если:

  • оскорбительный текст копируется на тот же относительный адрес в новом листе или, если он отбрасывается.

  • усеченный текст жестко запрограммирован или связан с помощью формулы листа =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

Последнее замечание: я использовал его для личных проектов и нашел его надежным, но, пожалуйста, сохраните и сделайте резервную копию своей работы, прежде чем пытаться использовать любой незнакомый макрос .

ProfoundlyOblivious
источник