Макрос для чистки excel

Метод Range.Clear для полной очистки диапазона ячеек из кода VBA Excel. Методы очистки отдельных свойств и их групп в ячейках. Примеры использования.

Методы очистки ячеек

Метод Очищаемые свойства Примечание
Range.Clear Почти все свойства Ширина и высота ячеек не изменяются
Range.ClearComments Комментарии Для Excel в составе Office 365
Range.ClearContents Формулы и значения Исходное форматирование сохраняется
Range.ClearFormats Свойства, задающие форматы В том числе отмена объединения ячеек
Range.ClearHyperlinks Гиперссылки Текст и форматирование сохраняются
Range.ClearNotes Примечания и заметки Примечания – для локальных программ Excel, заметки – для Excel в составе Office 365
Range.ClearOutline Структура данных Смотрите, что такое структурирование данных

Range – выражение, возвращающее диапазон ячеек.

Примеры использования

1. Удаление гиперссылки из ячейки A1
Cells(1, 1).ClearHyperlinks

2. Очистка диапазона A1:L50 от формул и значений
Range("A1:L50").ClearContents

3. Очистка всех свойств ячеек в столбцах A:K
Columns("A:K").Clear

4. Очистка форматирования ячеек в строках 1:20
Rows("1:20").ClearFormats

Методы очистки диапазонов ячеек в VBA Excel возвращают очищаемые свойства ячеек к значениям по умолчанию. К таким, как на вновь созданном стандартном рабочем листе. При любых методах очистки высота строк и ширина столбцов не изменяются.


Фразы для контекстного поиска: очистка ячеек, очистка ячейки, очистка формул, очистка от формул, удаление формул, очистка значений, удаление значений, очистка форматов, удаление форматирования, удаление форматов.


 

Marat Ta

Пользователь

Сообщений: 440
Регистрация: 11.02.2021

Был файл Excel с 10 листами — размер 100 кб.
Отдал на заполнение, вернули размером в 20 мб, открывается по 30 минут. Добавилось данных не так уж и много.
Копирование листов в новый файл не дало результат.

Нужен макрос для прохода по всем ячейкам 1 листа и удаление с них «скрытого мусора».

Изменено: Marat Ta15.02.2021 10:23:57

 

DANIKOLA

Пользователь

Сообщений: 424
Регистрация: 17.08.2019

Здравствуйте. На этом сайте есть две отличные статьи:
«

Как уменьшить размер файла

» и «

Зачистка текста

«. Гляньте, может чего полезного по вашей теме найдете.

 

Marat Ta

Пользователь

Сообщений: 440
Регистрация: 11.02.2021

Это не то….
Это какой то мусор в ячейках после сбоя.
Несколько лет назад было уже такое и был макрос (утерян). Он проходил по всем ячейкам и очищал от мусора… долго правда…. но после этого размер  файла уменьшался с мб до кб и быстро открывался.
Сейчас даже при вводе числа в ячейку паузы… хотя на листе всего 30 строк и 8 столбцов.  

Изменено: Marat Ta15.02.2021 10:29:29

 

Mershik

Пользователь

Сообщений: 8277
Регистрация: 03.12.2015

Marat Ta,  вы бы показали хоть часть этого мусора в книге.

Не бойтесь совершенства. Вам его не достичь.

 

Marat Ta

Пользователь

Сообщений: 440
Регистрация: 11.02.2021

Я пробовал копировать по отдельным листам, удалять все данные на листе…. размер 1 листа все равно не менее 2 мб и не сжимается ничем.
Выделял весь лист и удалял все. Размер файла не меняется.

Мусор в пустых ячейках.

Тот макрос остался на прежней работе. Я помню что там было что то  Сlear***** с каждой ячейкой по циклу по всему листу. Данные и форматы сохранялись.

Изменено: Marat Ta15.02.2021 10:40:10

 

Mershik

Пользователь

Сообщений: 8277
Регистрация: 03.12.2015

#6

15.02.2021 10:38:01

Marat Ta, ссылкой на диск например

Цитата
Я помню что там было что то  Сlear*****

https://vremya-ne-zhdet.ru/vba-excel/metod-range-clear/

Изменено: Mershik15.02.2021 10:50:21

Не бойтесь совершенства. Вам его не достичь.

 

Marat Ta

Пользователь

Сообщений: 440
Регистрация: 11.02.2021

Большое спасибо. Буду проверять все варианты из статьи.

Изменено: Marat Ta15.02.2021 10:58:19

 

TSN

Пользователь

Сообщений: 217
Регистрация: 07.05.2014

#8

15.02.2021 11:01:26

1. Возможно в файле имеются связи с другими книгами или файлами, что может влиять на быстродействие и размер
Посмотреть можно
Вкладка Данный >> Подключения > Изменить связи

2. Также могут быть в большом количестве именованные диапазоны, имена

Код
'' Поиск, удаление имен в файле
Sub delNames()
Dim nms
  With ThisWorkbook
    For Each nms In .Names
        Debug.Print nms; Space(3); nms.Name
        nms.Delete
    Next
  End With
End Sub

3. Также возможно поможет

Код
'' Очистка страниц книги
Sub ClearSheets()
Dim sht
  With ThisWorkbook
    For Each sht In .Sheets
     Debug.Print sht.Name
     sht.Cells.ClearComments
     sht.Cells.ClearFormats
     sht.Cells.ClearHyperlinks
     sht.Cells.ClearNotes
     sht.Cells.ClearOutline
    Next
  End With
End Sub

Изменено: TSN15.02.2021 11:15:53

 

Marat Ta

Пользователь

Сообщений: 440
Регистрация: 11.02.2021

#9

15.02.2021 16:28:51

Это не подошло.
К тому же убирает все форматы и оформления ячеек. А в том варианте макроса все оставалось без изменений.

Сохранил файл в формате xlsb
При открытии вышла ошибка обнаружено содержимое, которое не удалось прочитать — восстановить?

Цитата
Восстановленные записи: Рисунок из части /xl/drawings/drawing1.xml (Рисованная фигура)

После этого файл стал в 120kb вместо 20мб и работает быстро.

 

TSN

Пользователь

Сообщений: 217
Регистрация: 07.05.2014

#10

15.02.2021 17:38:12

Цитата
Marat Ta написал:
К тому же убирает все форматы и оформления ячеек.

sht.Cells.ClearFormats — эта часть кода убирает все форматы и оформления ячеек.

 

Marat Ta

Пользователь

Сообщений: 440
Регистрация: 11.02.2021

#11

15.02.2021 18:13:28

Вы неправильно поняли — таблица красиво оформлена и нужно было оставить все как есть.

В общем, привезли с работы и тот самый макрос….

Код
Sub Clear()
 For i= ActiveSheet.Shapes.Count to 1 Step -1
        ActiveSheet.Shapes(i).Delete
 Next i
End Sub

Выполнение на i7, 128mb RAM шло около 15-20 минут … все зависло в Windows7 …. но после завершения — файл 120 кб.

 

memo

Пользователь

Сообщений: 1423
Регистрация: 28.02.2018

Excel 2013/2016

#12

15.02.2021 18:48:38

Цитата
Marat Ta написал:
128mb RAM

Интересно, на какой барахолке было куплено это ОЗУ?))

 

_Igor_61

Пользователь

Сообщений: 3007
Регистрация: 18.07.2016

#13

15.02.2021 18:57:16

Цитата
Marat Ta написал:
В общем, привезли с работы и тот самый макрос….

И кто же на Вашей работе Shapes-ами увлекается? Ищите здесь:

Цитата
Marat Ta написал:
Отдал на заполнение, вернули размером в 20 мб

и насчет

Цитата
Marat Ta написал:
Копирование листов в новый файл не дало результат.

Нужно копировать не лист целиком, а только данные

 

Marat Ta

Пользователь

Сообщений: 440
Регистрация: 11.02.2021

Ram 128gb — опечатка.

Только данные не получалось — так как сложное оформление и заново все передвигать…  если копировать только выделив прямоугольный участок.  

 

Николай

Пользователь

Сообщений: 230
Регистрация: 20.10.2020

Ученик

#15

15.02.2021 19:56:51

Marat Ta, ага

Цитата
Marat Ta написал:
Ram 128gb — опечатка.

. 😂😂😂
Вы сами в это верите? С таким объемом памяти вы бы и не заметили Никаких Тормозов в работе с любыми программами, не говоря уже про эксэль…

 

Marat Ta

Пользователь

Сообщений: 440
Регистрация: 11.02.2021

На другие приложения не жалуюсь по производительности

А вот Excel именно с этим файлом подвисал конкретно.

 

_Igor_61

Пользователь

Сообщений: 3007
Регистрация: 18.07.2016

#17

15.02.2021 20:46:01

Цитата
Marat Ta написал:
Excel именно с этим файлом подвисал конкретно

Ключевые слова — «именно с этим файлом«. Marat Ta, Вам об этом и говорят с самого начала обсуждения, а Вы все про то, что Excel виноват… Вы ответы помогающих вообще читаете?

Цитата
_Igor_61 написал:
Ищите здесь:
Отдал на заполнение, вернули размером в 20 мб

:D  Просто не не так вернули файл, который Вы отдавали на заполнение (см. #13)

 

БМВ

Модератор

Сообщений: 21385
Регистрация: 28.12.2016

Excel 2013, 2016

Marat Ta, Если накопировано объектов, то удалите  их сразу через F5/special/Objects …..

По вопросам из тем форума, личку не читаю.

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

Миш, может быть не все так просто.
Несколько лет назад попадался файл, в котором сидела картинка ~5mb, однако, ни на одном из листов ее не было. Пришлось удалять через RAR.

 

Marat Ta

Пользователь

Сообщений: 440
Регистрация: 11.02.2021

Разносили данные девушки, которые Excel на начальном уровне владеют.
Файл испортился или из-за сбоя или вируса.

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

Не знаю, что чистит макрос с 11 сообщения, долго — но результат есть.

Изменено: Marat Ta15.02.2021 21:32:49

 

Николай

Пользователь

Сообщений: 230
Регистрация: 20.10.2020

Ученик

И всё же, при 128gb ram это что-то заоблачное… Или же как тут на сайте у Николая Павлова в приёмах есть статья про файл Эксель где в нём хранятся другие файлы, типа как сейф. Могу ошибаться, надо проверить на этом сайте или на другом. Проверьте.

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Marat Ta, пришлите на почту тот, который до удаления мкусора. Интересно посмотреть.

 

Marat Ta

Пользователь

Сообщений: 440
Регистрация: 11.02.2021

Хорошо. Завтра утром с работы отправлю.  

 

БМВ

Модератор

Сообщений: 21385
Регистрация: 28.12.2016

Excel 2013, 2016

#24

15.02.2021 23:15:13

Цитата
Николай написал:
И всё же, при 128gb ram это что-то заоблачное…

что-то Лунтиком повеяло. Николай,  4 поста, как минимум 3 из них имеют нулевую пользу.

Цитата
RAN написал:
Миш, может быть не все так просто.

согласен, надо смотреть оригинал и можно допускать что сбой но больше похоже на то что при заполнении накопировали  и прежде всего ActiveSheet.Shapes.Count получить. То что удаление по одному дает результат уже говорит что размножен объект, возможно он имеет нулевой размер или скрыт. Ну а то что по одному удаление длится так долго, так тоже не удивительно.

По вопросам из тем форума, личку не читаю.

 

Николай

Пользователь

Сообщений: 230
Регистрация: 20.10.2020

Ученик

#25

16.02.2021 00:43:06

БМВ, а кто такой ваш

Цитата
БМВ написал:
Лунтиком повеяло

? Не знаком я с ним. И да,я не профи как вы. НО, повторяюсь снова вы мужики реально верите что при таком Объёме памяти у ТС

Цитата
Marat Ta написал:
вернули размером в 20 мб, открывается по 30 минут.

.
БМВ,  ищите дальше… А я пока по наблюдаю со стороны за вашим поиском.
Хотя не давно была такая же похожая тема

Пустой лист размером 33 Мб.

Удачи в Поисках!!!  :idea:

Изменено: Николай16.02.2021 00:44:01

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#26

16.02.2021 00:56:08

Цитата
Николай написал: реально верите что при таком Объёме памяти… размером в 20 мб, открывается по 30 минут…?

А Вы не верите в зацикливания?

 

Николай

Пользователь

Сообщений: 230
Регистрация: 20.10.2020

Ученик

vikttur, верю, встречал такие файлы. Но на моём старом мамонте с 12гб. оперативки на борту не открывались по 30 минут. Не скажу сколько файл весил, не помню, честно.
UPD. А я вот не верю про 128 гигов оперативки и про 30 минут.

Изменено: Николай16.02.2021 01:33:52

 

TSN

Пользователь

Сообщений: 217
Регистрация: 07.05.2014

#28

16.02.2021 09:43:05

Цитата
Marat Ta написал:
Отдал на заполнение, вернули размером в 20 мб
Разносили данные девушки, которые Excel на начальном уровне владеют.

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

 

Marat Ta

Пользователь

Сообщений: 440
Регистрация: 11.02.2021

https://wdfiles.ru/fa19f5

Весь файл загрузить не могу, интернет с телефона 3g — дорогой. Сам файл не сжимается, оставил только 1 лист — перевел в формат 2003 (только с ним хорошо сжимает 7zip).
В принципе, зависание хоть и не такое заметное видно и на этой версии файла.

Как будет возможность доступа к бесплатному интернету — скину полную версию.

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

#30

16.02.2021 11:07:38

?ActiveSheet.shapes.count
99167 линий высотой и шириной 0
кто-то очень постарался
так что ничего удивительного!  :D

Макрос очистки свойств файла Excel

Rash

Дата: Среда, 19.08.2015, 13:43 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 6


Репутация:

0

±

Замечаний:
20% ±


Excel 2013

Добрый день!

Данный макрос осуществляет чистку свойств файла Excel (автор, кем сохранен, организация и т.д.).
Но есть проблема, при сохранении в другом формате, например из xls в xlsx, возникает ошибка, т.к. данные для сохранения берутся не из диалогового окна.
Как сделать, чтобы при сохранении файла из xls в xlsx и наоборот все было корректно?
Заранее спасибо!

[vba]

Код

Dim FileName, nMode

Application.ScreenUpdating = False
With ActiveWorkbook
‘.RemoveDocumentInformation xlRDIVersions
.RemoveDocumentInformation xlRDIRemovePersonalInformation
.RemoveDocumentInformation xlRDIEmailHeader
.RemoveDocumentInformation xlRDIRoutingSlip
.RemoveDocumentInformation xlRDISendForReview
.RemoveDocumentInformation xlRDIDocumentProperties
‘.RemoveDocumentInformation xlRDITemplate
‘.RemoveDocumentInformation xlRDIInkAnnotations
.RemoveDocumentInformation xlRDIDocumentServerProperties
.RemoveDocumentInformation xlRDIDocumentManagementPolicy
.RemoveDocumentInformation xlRDIContentType
.RemoveDocumentInformation xlRDIAll
End With
‘ save as
Set fd = Application.FileDialog(msoFileDialogSaveAs)
With fd
If .Show Then
FileName = .SelectedItems(1)
if ActiveWorkbook.FileFormat = 51 Then
nMode = xlOpenXMLWorkbook
else
nMode = xlWorkbookNormal
end if
ActiveWorkbook.SaveAs FileName, nMode
End If
End With
Set fd = Nothing
Application.ScreenUpdating = True

[/vba]
[moder]Для оформления кода используйте теги (кнопка #). Исправила на первый раз[/moder]

Сообщение отредактировал PelenaСреда, 19.08.2015, 14:03

 

Ответить

Karataev

Дата: Четверг, 20.08.2015, 14:45 |
Сообщение № 2

Группа: Проверенные

Ранг: Старожил

Сообщений: 1330


Репутация:

528

±

Замечаний:
0% ±


Excel

При возникновении ошибки, какая строка кода выделяется желтым?

 

Ответить

Rash

Дата: Четверг, 20.08.2015, 16:06 |
Сообщение № 3

Группа: Пользователи

Ранг: Прохожий

Сообщений: 6


Репутация:

0

±

Замечаний:
20% ±


Excel 2013

Спасибо за отклик.
Открываю допустим xls файл, сохраняю его в формате xlsx, но он не открывался до переименования его обратно в xls.

Сообщение отредактировал RashЧетверг, 20.08.2015, 16:22

 

Ответить

Rash

Дата: Четверг, 20.08.2015, 16:17 |
Сообщение № 4

Группа: Пользователи

Ранг: Прохожий

Сообщений: 6


Репутация:

0

±

Замечаний:
20% ±


Excel 2013

Файл сохраняется, при открытии ошибка (во вложении)

К сообщению приложен файл:

3458739.jpg
(13.9 Kb)

Сообщение отредактировал RashЧетверг, 20.08.2015, 16:22

 

Ответить

KSV

Дата: Четверг, 20.08.2015, 16:42 |
Сообщение № 5

Группа: Друзья

Ранг: Ветеран

Сообщений: 770


Репутация:

255

±

Замечаний:
0% ±


Excel 2013

Дык, все правильно :)
Вы же в диалоге выбираете формат .xlsx, соответственно и расширение файла в .SelectedItems(1) у вас тоже .xlsx, а затем в .SaveAs сохраняете его в формате xlExcel8.
В результате, файл сохраняется с расширением .xlsx, но в формате Excel 2003, поэтому при открытии такого .xlsx и возникает ошибка, т.к. видя расширение .xlsx Excel пытается получить структуру BIFF12, а получает BIFF8
Чтобы сохранять файл в формате, выбранном в диалоге, замените свой код на: [vba]

Код

Sub SaveAs1()
      ActiveWorkbook.RemoveDocumentInformation xlRDIAll
      ‘ save as
      With Application.FileDialog(msoFileDialogSaveAs)
          If .Show Then .Execute
      End With
End Sub

[/vba]

UPD
Просто, не понятно, что вы хотите получить в конечном итоге?…
Если вам нужно разрешить пользователям сохранять файл только в формате .xls или .xlsx, то можно так: [vba]

Код

Sub SaveAs2()
     Dim FileName As String, FileFormat As XlFileFormat
     ActiveWorkbook.RemoveDocumentInformation xlRDIAll
     ‘ save as
     With Application.FileDialog(msoFileDialogSaveAs)
         .InitialFileName = ActiveWorkbook.Name  ‘ имя файла в диалоге
         .FilterIndex = 4                        ‘ тип файла в диалоге
         If .Show Then
             FileName = .SelectedItems(1)
             If .FilterIndex <> 4 Then
                 ‘ меняем расширение и тип файла на тот, который хотим использовать по умолчанию (игнорируя тип, выбранный пользователем в диалоге)
                 FileName = Left$(FileName, InStrRev(FileName, «.»)) & «xlsx»
                 FileFormat = xlWorkbookDefault
             Else
                 FileFormat = xlExcel8 ‘ пользователь в диалоге казал тип Office 2003 (разрешенный)
             End If
             ActiveWorkbook.SaveAs FileName, FileFormat
         End If
     End With
End Sub

[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333

Сообщение отредактировал KSVЧетверг, 20.08.2015, 17:31

 

Ответить

Rash

Дата: Пятница, 21.08.2015, 09:35 |
Сообщение № 6

Группа: Пользователи

Ранг: Прохожий

Сообщений: 6


Репутация:

0

±

Замечаний:
20% ±


Excel 2013

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

 

Ответить

Main

Оценка: 99.2%5 Голосов

Общая

Небольшой макрос для очистки файла Excel от мусора, что поможет так-же уменьшить его размер.

Для запуска редактора макросов в Excel нажимаем Alt+F11, вставляем и запускаем следующий макрос:

sub DelObject()
     For Each i In ActiveSheet.Shapes
          i.Delete
     Next
end sub

  • Просмотров: 10046

Sub Clear_Cell()
Dim r As Range, ur As Range
Set ur = Cells(1, 1) ‘ очищаемую ячейку — в формируемый диапазон ‘

For Each c In ActiveSheet.UsedRange.Cells
If Not c.Locked Then
If c.MergeCells Then
c.MergeArea.ClearContents
Else
c.ClearContents
End If
End If
Next c

Set ur = Nothing ‘ освобождаем память ‘
End Sub

Sub Clear_Cell()
Dim r As Range, ur As Range
Set ur = Cells(1, 1) ‘ очищаемую ячейку — в формируемый диапазон ‘

For Each c In ActiveSheet.UsedRange.Cells
If Not c.Locked Then
If c.MergeCells Then
c.MergeArea.ClearContents
Else
c.ClearContents
End If
End If
Next c

Set ur = Nothing ‘ освобождаем память ‘
End Sub

Sub Clear_Cell()
Dim r As Range, ur As Range
Set ur = Cells(1, 1) ‘ очищаемую ячейку — в формируемый диапазон ‘

For Each c In ActiveSheet.UsedRange.Cells
If Not c.Locked Then
If c.MergeCells Then
c.MergeArea.ClearContents
Else
c.ClearContents
End If
End If
Next c

Set ur = Nothing ‘ освобождаем память ‘
End Sub

Источник

Как очистить ячейки в Excel? Выборочная очистка ячеек от содержимого

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

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

Как очистить ячейки стандартными средствами Excel?

Для очистки ячеек от информации в Excel предусмотрено несколько режимов. Для того, чтобы их увидеть, выделяем диапазон, который будет подвергнут очистке и на вкладке «Главная» в группе кнопок «Редактирование» заходим в меню кнопки «Очистить».

Рассмотрим пункты меню кнопки «Очистить» более детально.

Как очистить все в выделенном диапазоне ячеек?

При выборе первого пункта «Очистить все», из ячеек выделенного диапазона будет удалена абсолютно вся информация.

Как очистить только форматы в выбранном диапазоне ячеек?

При выборе второго пункта «Очистить форматы» из выделенного даипазона будет удалена информация, связанная с форматом, то есть информация о шрифтах, их размерах, цветах, способах начертания и так далее, а точнее говоря, все эти параметры будут приведены к параметрам, используемым по умолчанию.

Как очистить ячейки от содержимого?

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

Как очистить ячейки от примечаний?

Выбрав пункт четвертый «Очистить примечания», из выделенного диапазона будут удалены только примечания, вся остальная информация сохранится.

Как очистить ячейки средствами VBA?

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

Использование надстройки позволяет:

1. Одним кликом мыши вызывать диалоговое окно макроса прямо из панели инструментов Excel;

2. на выбор пользователя удалять значения ячеек, примечания, гиперссылки, форматы, шрифты, заливки, рамки и объединения ячеек;

3. выбирать по своему усмотрению один из четырех режимов обработки данных (смотри скриншот).

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

Надстройка легко устанавливается и запускается одним нажатием кнопки, выведенной прямо в главное меню Excel.

Источник

Удаление пустых ячеек из диапазона

Постановка задачи

Имеем диапазон ячеек с данными, в котором есть пустые ячейки:

Задача — удалить пустые ячейки, оставив только ячейки с информацией.

Способ 1. Грубо и быстро

  1. Выделяем исходный диапазон
  2. Жмем клавишу F5, далее кнопка Выделить(Special) . В открывшмся окне выбираем Пустые ячейки(Blanks) и жмем ОК.

Выделяются все пустые ячейки в диапазоне.

  • Даем в меню команду на удаление выделенных ячеек: правой кнопкой мыши Удалить ячейки (Delete Cells) со сдвигом вверх.
  • Способ 2. Формула массива

    Для упрощения дадим нашим рабочим диапазонам имена, используя Диспетчер Имен (Name Manager) на вкладке Формулы (Formulas) или — в Excel 2003 и старше — меню Вставка — Имя — Присвоить (Insert — Name — Define)


    Диапазону B3:B10 даем имя ЕстьПустые, диапазону D3:D10 — НетПустых. Диапазоны должны быть строго одного размера, а расположены могут быть где угодно относительно друг друга.

    Теперь выделим первую ячейку второго диапазона (D3) и введем в нее такую страшноватую формулу:

    В английской версии это будет:
    =IF(ROW()-ROW(НетПустых)+1>ROWS(ЕстьПустые)-COUNTBLANK(ЕстьПустые),»»,INDIRECT(ADDRESS(SMALL((IF(ЕстьПустые<>«»,ROW(ЕстьПустые),ROW()+ROWS(ЕстьПустые))),ROW()-ROW(НетПустых)+1),COLUMN(ЕстьПустые),4)))

    Причем ввести ее надо как формулу массива, т.е. после вставки нажать не Enter (как обычно), а Ctrl+Shift+Enter. Теперь формулу можно скопировать вниз, используя автозаполнение (потянуть за черный крестик в правом нижнем углу ячейки) — и мы получим исходный диапазон, но без пустых ячеек:

    Способ 3. Пользовательская функция на VBA

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

    Для этого откройте редактор Visual Basic (ALT+F11), вставьте новый пустой модуль (меню Insert — Module) и скопируйте туда текст этой функции:

    Не забудьте сохранить файл и вернитесь из редактора Visual Basic в Excel. Чтобы использовать эту функцию в нашем примере:

    1. Выделите достаточный диапазон пустых ячеек, например F3:F10.
    2. Идем в меню Вставка — Функция (Insert — Function) или жмем на кнопку Вставить функцию(Insert Function) на вкладке Формулы (Formulas) в новых версиях Excel. В категории Определенные пользователем (User Defined) выберите нашу функцию NoBlanks.
    3. В качестве аргумента функции укажите исходный диапазон с пустотами (B3:B10) и нажмите Ctrl+Shift+Enter, чтобы ввести функцию как формулу массива.

    Источник

    Excel макрос для очистки ячеек

    Я не волшебник. Я только учусь

    nikitan95 Дата: Суббота, 01.09.2012, 17:12 | Сообщение № 3
    light26 Дата: Суббота, 01.09.2012, 17:14 | Сообщение № 4
    nikitan95 Дата: Суббота, 01.09.2012, 17:17 | Сообщение № 5
    light26 Дата: Суббота, 01.09.2012, 17:27 | Сообщение № 6
    nikitan95 Дата: Суббота, 01.09.2012, 17:31 | Сообщение № 7
    light26 Дата: Суббота, 01.09.2012, 17:40 | Сообщение № 8

    Я не волшебник. Я только учусь

    light26 Дата: Суббота, 01.09.2012, 17:50 | Сообщение № 9
    nikitan95 Дата: Суббота, 01.09.2012, 17:51 | Сообщение № 10
    nikitan95 Дата: Суббота, 01.09.2012, 17:53 | Сообщение № 11
    Gustav Дата: Суббота, 01.09.2012, 18:03 | Сообщение № 12

    [/vba]
    Запустите, убедитесь, что выделяются нужные ячейки и жмите Delete.

    Выделение затрагивает только числа (константы) в диапазоне, формулы не трогаются. Когда освоитесь и обретете уверенность, то можно сразу очищать, не выделяя:
    [vba]

    [/vba]
    Причем, последнюю команду можно выполнить в Окне отладке редактора VBA, не создавая отдельного макроса.

    Ну, хотя собственно всё это можно выполнить и вручную!

    [/vba]
    Запустите, убедитесь, что выделяются нужные ячейки и жмите Delete.

    Выделение затрагивает только числа (константы) в диапазоне, формулы не трогаются. Когда освоитесь и обретете уверенность, то можно сразу очищать, не выделяя:
    [vba]

    [/vba]
    Причем, последнюю команду можно выполнить в Окне отладке редактора VBA, не создавая отдельного макроса.

    Ну, хотя собственно всё это можно выполнить и вручную! Gustav

    [/vba]
    Запустите, убедитесь, что выделяются нужные ячейки и жмите Delete.

    Выделение затрагивает только числа (константы) в диапазоне, формулы не трогаются. Когда освоитесь и обретете уверенность, то можно сразу очищать, не выделяя:
    [vba]

    [/vba]
    Причем, последнюю команду можно выполнить в Окне отладке редактора VBA, не создавая отдельного макроса.

    Ну, хотя собственно всё это можно выполнить и вручную! Автор — Gustav
    Дата добавления — 01.09.2012 в 18:03

    nikitan95 Дата: Суббота, 01.09.2012, 18:04 | Сообщение № 13
    Gustav Дата: Суббота, 01.09.2012, 18:12 | Сообщение № 14

    200?’200px’:»+(this.scrollHeight+5)+’px’);»> Range(«E5:BM24»).SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents

    Ну, хотя собственно всё это можно выполнить и вручную!

    Вручную:
    1. Выделяете E5:BM24
    2. Ctrl+G, Выделить
    3. Константы, оставить только флажок «числа», OK
    4. Клавиша Delete

    200?’200px’:»+(this.scrollHeight+5)+’px’);»> Range(«E5:BM24»).SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents

    Ну, хотя собственно всё это можно выполнить и вручную!

    Вручную:
    1. Выделяете E5:BM24
    2. Ctrl+G, Выделить
    3. Константы, оставить только флажок «числа», OK
    4. Клавиша Delete Gustav

    200?’200px’:»+(this.scrollHeight+5)+’px’);»> Range(«E5:BM24»).SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents

    Ну, хотя собственно всё это можно выполнить и вручную!

    Вручную:
    1. Выделяете E5:BM24
    2. Ctrl+G, Выделить
    3. Константы, оставить только флажок «числа», OK
    4. Клавиша Delete Автор — Gustav
    Дата добавления — 01.09.2012 в 18:12

    nikitan95 Дата: Суббота, 01.09.2012, 18:14 | Сообщение № 15
    nikitan95 Дата: Суббота, 01.09.2012, 18:22 | Сообщение № 16
    Gustav Дата: Суббота, 01.09.2012, 18:25 | Сообщение № 17

    На эту тему у меня следующее предложение.

    Когда очистите ячейки (вручную!) алгоритмом моего сообщения №14, сделайте еще раз почти так же, а именно:

    Вручную:
    1. Выделяете E5:BM24
    2. Ctrl+G, Выделить
    3. Пустые ячейки, OK
    4. В строке адреса ячейки (слева от строки ввода) задаете имя типа «ДляОчистки».

    В следующий раз, когда подойдет время чиститься, просто выделите через Ctrl+G диапазон «ДляОчистки» и нажмите Delete.

    На эту тему у меня следующее предложение.

    Когда очистите ячейки (вручную!) алгоритмом моего сообщения №14, сделайте еще раз почти так же, а именно:

    Вручную:
    1. Выделяете E5:BM24
    2. Ctrl+G, Выделить
    3. Пустые ячейки, OK
    4. В строке адреса ячейки (слева от строки ввода) задаете имя типа «ДляОчистки».

    В следующий раз, когда подойдет время чиститься, просто выделите через Ctrl+G диапазон «ДляОчистки» и нажмите Delete. Gustav

    На эту тему у меня следующее предложение.

    Когда очистите ячейки (вручную!) алгоритмом моего сообщения №14, сделайте еще раз почти так же, а именно:

    Вручную:
    1. Выделяете E5:BM24
    2. Ctrl+G, Выделить
    3. Пустые ячейки, OK
    4. В строке адреса ячейки (слева от строки ввода) задаете имя типа «ДляОчистки».

    В следующий раз, когда подойдет время чиститься, просто выделите через Ctrl+G диапазон «ДляОчистки» и нажмите Delete. Автор — Gustav
    Дата добавления — 01.09.2012 в 18:25

    Источник

    Adblock
    detector

    Макрос для очистки

    Автор Сергей Калинин, 26.02.2014, 23:18

    « назад — далее »

    Добрый день.
    Пытаюсь создать тесты в екселе(2007) но наткнулся на одну беду.
    Нужен макрос очищающий значение флажков, переключателей и списков(Проверка данных, списки) во всех листах в книге.


    Sub clear()
    Dim i%, RowMax&, rng As Range
    If MsgBox("Очистить ячейки?", vbYesNo, "Подтверждение") = vbNo Then Exit Sub
    On Error Resume Next
        For i = 1 To ThisWorkbook.Sheets.Count
            With ThisWorkbook.Sheets(i)
                RowMax = .Range("B:V").Find("укажите символ для поиска и очистки", , , xlWhole, xlByRows, xlPrevious).Row
                Set rng = .Range("укажите диапазон" & CStr(RowMax))
                rng.SpecialCells(xlCellTypeConstants).ClearContents
                Set rng = Nothing
            End With
        Next
    End Sub


    то что нужно! как раз это искал, спасибо!


    • Профессиональные приемы работы в Microsoft Excel

    • Обмен опытом

    • Microsoft Excel

    • Макрос для очистки

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

    Применить кнопку, чтобы очистить конкретное содержимое ячейки с помощью кода VBA


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

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

    1. Нажмите Вставить > Формы > Прямоугольники , чтобы выбрать форму прямоугольника, а затем перетащите мышь, чтобы нарисовать кнопку прямоугольника в любом месте листа, как вам нужно, см. снимок экрана:

    кнопка doc очистить ячейки 1

    2. Затем введите текст и отформатируйте кнопку формы, как вам нужно, см. Снимок экрана:

    кнопка doc очистить ячейки 2

    3. Затем вы должны вставить код VBA, удерживая ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.

    Код VBA: очистить содержимое определенных ячеек:

    Sub Clearcells()
    'Updateby Extendoffice
    Range("A2", "A5").Clear
    Range("C10", "D18").Clear
    Range("B8", "B12").Clear
    End Sub
    

    Внимание: В приведенном выше коде: A2, A5 указать, что он очистит ячейки в диапазоне A2: A5, а не только две ячейки по отдельности, вы можете добавить несколько диапазонов, например Диапазон («B8», «B12»). Очистить сценарий внутри кода, чтобы очистить.

    4. Затем сохраните и закройте окно кода, а затем свяжите код с кнопкой формы, щелкните кнопку правой кнопкой мыши и выберите Назначить макрос, В Назначить макрос диалогового окна, выберите Клирселлс кодовое имя из Имя макроса список и щелкните OK кнопку, чтобы выйти из этого диалогового окна. Смотрите скриншот:

    кнопка doc очистить ячейки 3

    5. А теперь, когда вы нажимаете Очистить все Кнопка, определенные вами ячейки очищаются сразу, см. снимок экрана:

    кнопка doc очистить ячейки 4


    Лучшие инструменты для работы в офисе

    Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

    • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
    • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
    • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
    • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
    • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
    • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
    • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
    • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
    • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

    вкладка kte 201905


    Вкладка Office: интерфейс с вкладками в Office и упрощение работы

    • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
    • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
    • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

    офисный дно

    Комментарии (63)


    Оценок пока нет. Оцените первым!

    Понравилась статья? Поделить с друзьями:
  • Макрос для чекбокса excel
  • Макрос для форматирования текста в excel
  • Макрос для форматирования таблиц в word
  • Макрос для форматирования таблиц в excel
  • Макрос для флажка excel