1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как в Excel отображать только строки с определенным текстом?

Как запретить печать ячеек в Excel

Как предотвратить печать содержимого отдельных ячеек (или всей строки или столбца) в Excel, оставив их видимыми на экране при редактировании файла? В идеале, я хотел бы иметь возможность делать это с ячейками внутренней электронной таблицы (т.е. не только с правым столбцом (столбцами) или нижней строкой (строками)). Скрытие строки (строк) или столбца (столбцов) неприемлемо, поскольку мне нужно сохранить размер ячеек, чтобы сохранить общий вид листа.

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

Для этого можно применить обычное (не условное) форматирование. Чтобы отформатировать ячейку, строку и/или столбец, используйте ленту внизу («Главная» * «Ячейки» * «Формат») или нажмите Ctrl + 1.

На вкладке «Число» выберите Категория = «Пользовательский» и в поле «Тип» введите

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

Если вы используете Office 2010, в разделе «Файл -> Печать -> Параметры страницы -> Лист (вкладка)» вам нужно выбрать опцию «Область печати». В моем примере будут напечатаны только столбцы A:J, однако на экран выводится все.

Это — аспект диалога:

Скриншот
(Нажмите на изображение, чтобы увеличить)

Это можно также открыть как «Разметка страницы». → «Настройки страницы» → (угловая кнопка) → «Настройки страницы» → «Лист»:

Это решение не требует от вас выполнения определенных действий до и после каждого задания печати. Оно основано на концепции использования «области печати», предложенной Теренсом и Доном Ливси. Удалите ячейки, которые вы не хотите печатать, поместив их за пределы области печати. Если вам этого достаточно, то все готово.

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

  • Вставить «форму». (Лучше всего подходит прямоугольник). Поместите его над ячейкой, в которой должны появиться данные. Визуально отформатируйте его так, как вы хотите, чтобы он выглядел. Лучше всего не иметь границ. Установите цвет заливки на выбранный вами цвет фона или не используйте цвет заливки, чтобы цвет заливки базовой ячейки просвечивал (а сама фигура была невидимой).
  • Настройте форму на отображение содержимого нужной ячейки, выбрав форму и набрав ссылку (например, =D15 ) в строке формы в верхней части. Не вводите форму просто так; в этом случае формула ( =D15 ) будет выведена дословно.
  • Щелкните форму правой кнопкой мыши и выберите Формат формы. На вкладке «Свойства» можно выбрать, печатать или нет форму (сняв флажок «Печатать объект»). (В Excel 2013 это находится в разделе Настройки формы → Размер и свойства → Свойства).
Читайте так же:
Как быстро преобразовать числа в английские слова в Excel?

Если бы мне пришлось следовать вашим инструкциям, я бы поступил следующим образом:

Редактор кода (VBA) предоставляет следующую функциональность:

Чтобы скрыть столбцы или строки, напечатать их, а затем раскрыть.

Или измените соответствующую часть, чтобы скрыть столбцы (в данном примере скрыты столбцы B и D)

Или скрыть все строки с пустой ячейкой в столбце А:

Я решил ту же проблему, создав отдельный лист и скопировав туда информационную ссылку. Скопируйте весь исходный лист (Ctrl + C ) и вставьте его. Перейдите на новый лист и щелкните правой кнопкой мыши первую ячейку. В параметрах вставки появится значок ссылки. Если вы вставите изображение целиком, оно будет неформатированным, поэтому вам нужно будет это исправить. В пустых ячейках появятся нули. Это можно исправить, перейдя в «Файл» → «Параметры» → «Дополнительно» и сняв флажок «Показывать нули в ячейках с нулевыми значениями».

Любые ячейки, строки или столбцы, которые вы не хотите видеть на своих распечатках, теперь можно удалить. Распечатанный лист автоматически обновляется по мере обновления исходного листа.

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

У меня недостаточно очков репутации, чтобы комментировать другие сообщения, поэтому я добавлю «ответ» с некоторыми комментариями. У меня была такая же или похожая потребность, и у каждого подхода есть свои плюсы и минусы.

Настройка области печати: это может работать в зависимости от макета листа, но не слишком хорошо обрабатывает несмежный выбор области печати. Или, возможно, он справляется с этим очень хорошо, но выбранный подход не работает в моем случае. Например, если у меня есть электронная таблица со столбцами AE и я хочу скрыть столбцы B и D при печати, тогда каждый напечатанный столбец помещается на отдельную страницу. Не совсем то, что я хотел.

Пустой текст: это может сработать в некоторых случаях, но остерегайтесь, что это не предотвратит утечку скрытых данных. Если вы пытаетесь скрыть конфиденциальную информацию, имейте в виду, что при печати в PDF данные все равно будут присутствовать в PDF-файле. Даже если он пустой на пустом месте, он все равно присутствует и может быть скопирован и вставлен из PDF-файла.

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

Читайте так же:
Как быстро вставить пустые / пустые строки в Excel?

Если щелкнуть правой кнопкой мыши на строке/столбце и выбрать «Скрыть», можно «скрыть» всю строку/столбец. В этом случае строка/столбец не будет печататься (или отображаться). Можно выделить несколько строк/столбцов путем перетаскивания, если они находятся рядом друг с другом, или щелчком и перетаскиванием, если они не находятся рядом друг с другом. Номер/буква столбца или строки не отображается, если столбец или строка скрыты. Выберите строки и столбцы с обеих сторон, щелкните правой кнопкой мыши и выберите «Показать».

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

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

Например, если вы хотите вывести один столбец для поставщика, другой — для склада, а третий показывает все, вы можете создать индивидуальное представление для каждого типа.

Еще один простой способ — временно очистить содержимое ячейки, выделив выделенные ячейки — щелкните правой кнопкой мыши и выберите пункт «Очистить содержимое».

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

Теперь вы можете печатать, а затем нажмите «Отмена», после чего все вернется на круги своя.

Удаление (скрытие) строк по условию

С помощью этого макроса можно удалить все строки листа, которые содержат искомый текст:

Чтобы просто скрыть эти строки вместо удаления, замените строку

Расширенная версия этого макроса — с использованием формы UserForm для ввода значения для поиска

Следующий код позволяет искать (а затем удалять или скрывать) некоторые условия:

ConditionalRowsDeleting.xls24 КБ
ConditionalRowsDeletingUsingUserform.xls45.5 КБ
  • 223034 просмотры

Комментарии

Я не занимаюсь поддержкой бесплатных макросов или изменением их по вашему вкусу.

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

Комментарии к этой статье в настоящее время не принимаются.

Пожалуйста, посоветуйте мне. Мое здоровье ухудшается в течение последней недели. Я не могу преобразовать существующие макросы, чтобы скрыть строки. У меня есть таблица с числами. В пользовательской форме нужно ввести это значение, и должна быть кнопка скрытия и показа. Помогите пожалуйста. Также можно иметь разное количество строк. А цифровые значения начинаются со второй строки.

Здравствуйте, у меня такая ситуация. Есть таблица, с 3000 строками, и примерно 25 столбиками
Первые 10 столбиков заполнены текстом, с 11 по 25 столбик бывают цифры. Как мне удалить полностью строку, если в столбики с 11 по 25 все пустые ячейки ? а если хоть одна ячейка заполнена, то строку не трогать? но на первые десять столбиков не надо обращать внимание

Читайте так же:
Как автоматически открывать файлы при запуске Excel?

Как создать такое же условие для объединенных ячеек, но с несколькими значениями?

Я должен был догадаться, какие листы надо обрабатывать, а какие нет?
Чтобы обработать ВСЕ листы, — напишите

Вы так добры, но я не могу найти «3», «3А», «3Б» или «4».

Подскажите, как сделать этот макрос для листов «2», «2A», «2B» и т. д.?

Sub УдалениеСтрокПоУсловию()
Dim ra As Range, delra As Range, ТекстДляПоиска As String
Application.ScreenUpdating = False ‘ отключаем обновление экрана

TextFind = «Hostname» ‘ удаляет строки с этим текстом

‘ перебираем все строки в используемом диапазоне листа
For Each ra In ActiveSheet.UsedRange.Rows
‘ если в строке найден искомый текст
If Not ra.Find(ТекстДляПоиска, , xlValues, xlPart) Is Nothing Then
‘ добавляем строку в диапазон для удаления
If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
End If
Next
‘ если подходящие строки найдены — удаляем их
If Not delra Is Nothing Then delra.EntireRow.Delete
End Sub

Если необходимо наоборот отобразить строки «EntireRow.Hidden = False»
То как осуществить поиск текста в скрытых строках/столбцах?

Здравствуйте. Подскажите, пожалуйста, как прописать макрос так, чтоб он:
1. удалял все строки с заливкой цветом, или
2. удалял все строки, содержащие какую либо ячейку с заливкой цветом.
Спасибо.

Игорь, спасибо за макрос — он облегчает жизнь! Есть ли у вас совет, как работать с этим макросом, защищая лист?

Добрый день! Подскажите пожалуйста, Как сделать макрос скрывающий строки при условии что в двух подряд столбцах 0 или пусто? и чтоб он запускался не при открытии файла, а кнопкой?
у меня вариант с условием одного столбца, как его исправить

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim d As Integer
d = UsedRange.Rows.Count + 1
For rwIndex = 1 To 31
colIndex = 3
If Cells(rwIndex, colIndex).Value = 0 Then
Rows(rwIndex).Hidden = True
End If
Next
End Sub

Буду очень благодарна:)

Здравствуйте! Количество больших таблиц часто вызывает у меня проблемы) В одной книге у меня 25 листов на каждой большой таблице, для удобства печати я создал макрос, который скрывает ненужные строки, столбцы и ячейки по очереди на каждом листе во всей книге. Я хочу иметь возможность развернуть скрытые ячейки во всей книге одним махом. И я не могу) Как исправить этот макрос, чтобы он работал в модуле «Эта книга» для всех листов сразу

Sub Show()
Columns.Hidden = False
Rows.Hidden = False

Врач назначил, спасибо большое! И извините за некорректность:)

Сандер, я написал код так, как вы просили, — если в ячейке присутствует цифра, то строка удаляется.
А вам надо было удалять только ячейки с ЧИСЛОМ (а не содержащие цифры)
Замените

Читайте так же:
Как быстро вставить имя пользователя Windows в ячейку в Excel?

Увы. аналогично работает «Удалить (скрыть) строки по условию», то есть, если присутствует текст, скажем, «Адаптер AT-2000 14 B22» — что там, что в вашем примере удаляется строка. Мысль — числа содержат что-то личное.

Сандер, так что попробуйте:

Здравствуйте! Прокручивал, читал — так и не нашел ответа на вашу проблему, а он таков: текстовая колонка и альтернативные числа — нужно удалить строки, содержащие числа (которые, естественно — разные). Спасибо.

Евгений, при работе макросов, отмена действий в Excel не работает
(что сделано макросом, никак не отменить, — так устроен Excel)

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

Здравствуйте, Нурьяна.
Моя программа нормально работает, — если ей правильно настроить
(настройка под каждый конкретный сайт, — от 1500 руб, + сама программа 2500 стоит)

PS: на будущее, размещайте коммент не в первой попавшейся статье, а в статье с описанием программы-парсера
http://excelvba.ru/programmes/Parser
можете сразу оформить заказ на парсер, в таком виде:
http://excelvba.ru/programmes/Parser/order

Здравствуйте Админ! Давно вас ищу. подрабатываю на СП закупках, и уже замучилась с заполнением каталогов, сил больше нет. Вроде бы купила граббер у одного программиста, но он меня не устраивает. Например, стоит 2800 за закупку, а работает с перебоями. Подскажите, как работает ваша программа и сколько она стоит, и можно ли ее настроить под сайт, на котором я работаю и пользоваться ей постоянно после оплаты?

Мы можем сделать все на заказ, чтобы все работало так, как нужно.

Хоть убейте — не работает. Идея в том, что макрос срабатывает при нажатии на ячейку. Берет значение из текущей активной строки и 2 столбца, ищет на другом листе и должен его просто выделить. Вся идея.
В коде грешу на
«ВзятьДанные = Cells(ActiveCell.Row, 2).Value»
Он не берет значение -> не может найти его на другом листе. Как заставить его видеть значение. ( Кавычки ставил — не помогает.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim ra как пляж, finra как пляж

If Target.Cells.Value = «» Then Exit Sub
If Not Intersect(Target, Range(«AF3:AF5000»)) Is Nothing Then

ВзятьДанные = Cells(ActiveCell.Row, 2).Value
Sheets(«Результат»).Select
For Each cell In Range(«A3:A2000»).Cells
If cell = ВзятьДанные Then
If finra Is Nothing Then Set finra = cell Else Set finra = Union(finra, cell)
End If
Next

If Not finra Is Nothing Then finra.EntireRow.Select
Application.ScreenUpdating = True
End If
End Sub

Андрей, попробуйте.

Со скрытием строчек все отлично. но что делать, если в дальнейшем мне нужно некоторые скрытые строки вновь раскрыть (т.к. признак для скрытия для них может в будущем быть нерелевантен)?
Сделал такую билеберду, но скрытые строки он не раскрывает 🙁 Видимо не видит скрытые строки. Помогите советом пожалуйста!

Читайте так же:
Как автоматически отсортировать данные в таблицах Google по алфавиту?

Sub Макрос()
Dim ra As Range, delra As Range, ТекстДляПоиска As String
Application.ScreenUpdating = False

Para cada ra в ActiveSheet. Используемый диапазон. Ряды.

Если ra.Find(TextFind, , xlValues, xlPart) ничего не возвращает, тогда

If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
End If
Next

If Not delra Is Nothing Then delra.EntireRow.Hidden = False
End Sub

Кирилл, так попробуйте:
УдалятьСтрокиСТекстом = Worksheets(«ИмяВторогоЛиста»).range(«a2:a10»)
или так
УдалятьСтрокиСТекстом = Worksheets(2).range(«a2:a10»)

Здравствуйте, ваш макрос очень помогает, подскажите, пожалуйста, как сделать так, чтобы искомые слова брались не из строки = Array(«Имя*», «Количество», «текст ?», «цена*сти», «*78*»), а с другого листа.

Спасибо, заработало.
Ну я и тупой.

Sub погрузка()
Dim ra As Range, delra As Range
Application.ScreenUpdating = False ‘ отключаем обновление экрана

‘ ищем и удаляем строки, содержащие заданный текст
‘ (можно указать сколько угодно значений и использовать подстановочные знаки)
УдалятьСтрокиСТекстом = Array(«ИД пункта:», «ИД маршрута:», _
«Название модели:», «Склад отгрузки:»)

‘ перебираем все строки в используемом диапозоне листа
For Each ra In ActiveSheet.UsedRange.Rows
‘ перебираем все фразы в массиве
If ra.Row >= 17 Then
For Each word In УдалятьСтрокиСТекстом
Next word
End If
‘ если в очередной строке листа найден искомый текст
If Not ra.Find(word, , xlValues, xlPart) Is Nothing Then
‘ добовляем строку в диапазон для удаления
If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
End If
Next

‘ если подходящие строки найдены, то (оставте одну из следующих строк)
If Not delra Is Nothing Then delra.EntireRow.Hidden = True ‘ скрываем их
If Not delra Is Nothing Then delra.EntireRow.Delete ‘ удаляем их
End Sub

Пожалуйста, подскажите что не так, в таком исполнении не хочет удалять с 17 строки.
Gjlcrf;bnt xnj yt nfr

If ra.row >= 17 then
For Each word In УдалятьСтрокиСТекстом
.
Next word
end if

Похоже я не правильно выразил свою мысль, в макросе DeleteStrokeSomeConditions должны удаляться строки с определенным текстом только с 17 строки и до конца листа.

Вместо
If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
пишете
ra.Replace («Что заменить», «»)

Нужен макрос для удаления текста с определенной страницы.

Описание задачи указывает на необходимость использования функции Excel — заменить. Ctrl+H. Вы можете найти текст, написав его в find, оставив «Заменить на» пустым.

И может подсказать, как найти и удалить текст из конкретной строки.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector