Excel - запобігання переливу тексту клітини в наступну (порожню) комірку


72

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

Я знаю, що я можу цього уникнути, включивши "обгортання слів" та регулюючи висоту рядка. Але це не те, що я хочу.

Я хочу змінити DEFAULT поведінку Excel, щоб воно відображало значення кожної комірки лише у видимій області цієї комірки. Ніякого переповнення, жодного обгортання слів.

Чи можливо це? (До речі, я використовую Excel 2010).


5
якщо це виявиться неможливим, ви можете використовувати пробіл у порожніх клітинках ...
Квільйон

досить цікаво - я не знаю іншого способу, ніж використання WordWrap, Font-AutoSize або символів в інших клітинках.
Джок

1
Можна обрізати зайві символи, вибравши всі комірки, перейшовши Data / Text to Columnsта вказавши перерву після того, як кількість символів може вміститися в клітинку без загортання / переповнення. Не забудьте пропустити додатковий стовпець, який містить додаткові символи!
Каран

Я думаю, це відповість на ваше запитання: superuser.com/a/878605/497156
Сулейман

"Я знаю, що я можу цього уникнути, включивши" обгортання слів "та регулюючи висоту рядка." Дякую! Це моє обране рішення.
Очадо

Відповіді:


4

Це може бути не для всіх, але якщо ви імпортуєте документ у Google Таблиці, ця функція підтримується за замовчуванням. На верхній панелі меню підтримуються три типи обгортання тексту. Переповнення, загортання та затискання. Ви шукаєте кліп.

Залежно від вимог, це може бути життєздатним варіантом для деяких людей.


5
Тож ваша відповідь насправді говорить: киньте Excel і перейдіть з Google аркушами.
Сонячний Майк

Як я вже говорив, це не варіант для всіх, але може бути хорошим рішенням для деяких.
yellavon

@SolarMike - дякую. Я був розгублений, але ваш коментар вирішує цю відповідь. Я думаю, & yellavon припускає, що люди будуть балакатися на його відповідь і як такий є захисним - перш ніж насправді пояснити відповідь. Ваш коментар більш стислий порівняно з фактично опублікованою відповіддю.
barrypicker

Насправді це відповідає найбільш близькою до фактичного рішення. Я виявив, що в Excel ви можете зробити щось подібне до цього. Відрегулюйте стовпчик на потрібну ширину, а потім увімкніть виправлення слів на стовпчику (це призведе до збільшення всіх висот рядків), а потім, нарешті, виберіть усі рядки та відрегулюйте висоту рядків на потрібну висоту. Вуаля! Тепер у вас є текст у клітинках, які не переповнюються на сусідні комірки. (@ Yellavon: Я прийму вашу відповідь. Ви можете поновити її, щоб вона містила цю поведінку в програмі Excel, щоб люди могли легше отримати доступ до рішення)
e-mre

49

Так, ви можете змінити таку поведінку, але ви, ймовірно, не захочете побічних ефектів, які це викликає.

Ключовим фактором обмеження вмісту комірки до меж комірки, незалежно від того, чи містить сусідня комірка дані, є вирівнювання тексту Fill. Виберіть комірки, які не хочете переповнювати, і клацніть правою кнопкою миші на них> Форматування комірок ... > Вкладка Вирівнювання > Горизонтальне вирівнювання > Заповнення

Проблема цього методу полягає в тому , що це буде на самому ділі заповнити клітини, повторюючи їх зміст , коли воно досить коротким , щоб поміститися в клітинними кілька разів. Дивіться нижче скріншот, що це означає. (Зверніть увагу, що B7він заповнений "коротким текстом".)

Знімок екрана, що показує різну поведінку вирівнювання тексту за замовчуванням та заливкою

Здається, ви будете застрягати у вирішенні проблем на посаді Бенедикта

Зауважте, що ви також можете заповнити сусідні комірки символами галочки ( '), використовуючи перший, дуже розумний метод Benedikt . Таким чином вам нічого не потрібно приховувати, запобігайте переповненню комірок, і якщо ви копіюєте комірки як текст (скажімо, у блокнот), ви все одно отримуєте порожній текст, а не пробіли чи галочки.


2
Тому я взяв вашу пропозицію дотримуватися методу Бенедикта, щоб заповнити порожні місця 'символами. Тепер я не знаю, чи варто я підтверджувати вашу відповідь, чи його, чи що! :-p
Ден Хендерсон

Я ще більше розгублений. Я взагалі не бачу жодної пропозиції використовувати 'у відповіді Бенедикт, у тому числі в старих редакціях! Я підтримав обидва, про всяк випадок ...
user56reinstatemonica8

1
@ user568458: Моя примітка насправді була варіацією відповіді Бенедикта. Ви можете заповнити клітини ' замість того, щоб заповнити їх, N/Aяк запропонував 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, я вважаю, що це одне з найпростіших рішень, оскільки вам нічого не потрібно приховувати.
Метт

Це працювало найкраще для мене.
Пітер

Якщо впливає на статистичну функцію COUNTA, яка підраховує кількість комірок у діапазоні, який не є порожнім . Клітина, що відображає рядок нульової довжини в результаті формули, не порожня і буде зарахована.
Глибокоочевидний

4

Використовуйте горизонтальне вирівнювання тексту "Заливка" для комірки. Ви можете знайти його там же, що й інші параметри вирівнювання, які повинні вирішити вашу проблему

Вирівнювання тексту


4
Хіба це не було охоплено відповіддю Маркуса Мангельсдорфа ?
Stevoisiak

9
Також зауважте, що Маркус пояснює серйозну проблему цим методом - що якщо вміст комірки буде досить коротким, вони будуть дублюватися. Отже "A" стане "AAAAAAAA".
Блеквуд

Приємно, спасибі Клацніть правою кнопкою миші клітинки потрібно переформатувати, виберіть "Форматувати комірки", а все інше виконайте як настанову. Це спрацювало.
Catbuilts

4

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

Замість того, щоб вставляти 'фактичні значення даних, ви можете створити для цього новий виділений вертикальний стовпець, повністю заповнений 'символами до кінця.

1. Бар'єрний стовпчик

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

2. Вставте стовпчик "бар'єр" зліва від стовпців, які ви хочете захистити.

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

3. Згорніть бар'єрні стовпці, встановивши їх ширину стовпчика на невелике значення

Встановіть ширину стовпця на таке значення, як .1, або альтернативно, збережіть стовпці бар'єру ширшими, щоб вони виконували роль пробілу або міжбілейного пробілу.

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

Зверніть увагу, що ви повинні встановити ширину більше нуля; встановлення ширини стовпчика вертикального бар'єру до нуля повернеться до небажаного переповнення комірки.

4. Вуаля!


1

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

(Примітка. Я знайшов це і опублікував це як коментар до вибраної відповіді, але також розмістив його як відповідь, щоб було легше знайти інших.)


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

Заключна примітка: Я використав це для особистих проектів і вважав його надійним, але будь ласка, збережіть і створіть резервну копію вашої роботи, перш ніж спробувати будь-який незнайомий макрос .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.