Страницы: 1
RSS
истребление всех пустых ячеек в листе
 
Сразу прошу прощения, если этот вопрос уже поднимался, но не смогла найти поиском, ели сразу пошлёте (в смысле - переадресуете ;-)) буду чрезвычайно признательна! Видимо, для того, чтобы правильно задать вопрос, надо знать бОльшую часть ответа. (с) Р.Шекли Вообщем, диспозиция такая - ежемесячно имею табличку шириною в 10 столбцов и высотою в 50000 строк,из нее формирую отчеты для разных граждан. Граждане испытывают ко мне скрытую ненависть, ибо отчеты получаются шварцдробительно тяжелые, так как в исходной таблице ниже последней строки (и правее последнего столбца)с информацией живут пустые строки (и столбцы), истребить которые мне не удалось пока, но интуитивно верю, что если с этими строками попрощаться, то и отчеты станут легче, и жизнь станет счастливее. Помогите плз справиться с этой проблемой. К сожалению, файл прикрепить не могу, так как там полнейший конфиденшнал. Всем заранее благодарна за помощь и за терпение к тупизму ламеров.
 
{quote}{login=леди-джип}{date=05.10.2010 07:56}{thema=истребление всех пустых ячеек в листе}{post}Граждане испытывают ко мне скрытую ненависть, ибо отчеты получаются шварцдробительно тяжелые, так как в исходной таблице ниже последней строки (и правее последнего столбца)с информацией живут пустые строки (и столбцы), истребить которые мне не удалось пока, но интуитивно верю, что если с этими строками попрощаться, то и отчеты станут легче, и жизнь станет счастливее. {/post}{/quote}1. Вы заблуждаетесь. Если строки ДЕЙСТВИТЕЛЬНО пустые - то веса файлу они не прибавляют.  
2. Удалить их невозможно. Можно только скрыть.  
3. Вы хотите что бы файл в пол ляма заполненных ячеек весил меньше 100 кило? Архивируйте. Не факт что это получится.  
 
ЗЫ Выложить файл такого размера Вы здесь всё-равно не смогли-бы. Почитайте правила :)
 
Л-Д - "ежемесячно имею табличку шириною в 10 столбцов и высотою в 50000 строк,из нее формирую отчеты".  
А из зала говорят: "Давай подробности" :-)  
Z.  
80204
 
{quote}1. Вы заблуждаетесь. Если строки ДЕЙСТВИТЕЛЬНО пустые - то веса файлу они не прибавляют.  
2. Удалить их невозможно. Можно только скрыть.  
3. Вы хотите что бы файл в пол ляма заполненных ячеек весил меньше 100 кило? Архивируйте. Не факт что это получится.  
 
ЗЫ Выложить файл такого размера Вы здесь всё-равно не смогли-бы. Почитайте правила :){/post}{/quote}  
 
ух ты, спасибо за реактивный ответ!    
 
1. строки реально пустые, как ну ...блин с чем сравнить то... ну как мозг регины дубовицкой  
2,3. не , там не пол ляма, там всего 50 тыщ строчек, мне следовало пробельчик после разряда поставить. А как их скрыть, может, поможет?
 
{quote}{login=Z}{date=05.10.2010 08:08}{thema=}{post}Л-Д - "ежемесячно имею табличку шириною в 10 столбцов и высотою в 50000 строк,из нее формирую отчеты".  
А из зала говорят: "Давай подробности" :-)  
Z.  
80204{/post}{/quote}  
 
подробностей масса, но , боюсь, они лишь уведут в сторону от решения моего вопроса. в любом случае, работа с такими файлами личной жизни не прибавляет, зато жить становится веселее.
 
{quote}{login=леди-джип}{date=05.10.2010 08:18}{thema=Re: Re: истребление всех пустых ячеек в листе}{post}{quote}  
1. строки реально пустые, как ну ...блин с чем сравнить то... ну как мозг регины дубовицкой  
2,3. не , там не пол ляма, там всего 50 тыщ строчек, мне следовало пробельчик после разряда поставить. А как их скрыть, может, поможет?{/post}{/quote}  
1. :-)  
2,3 Скрыть строки - Ctrl+Shift+ стрелка вниз - ПКМ скрыть.  
Скрыть столбцы - Ctrl+Shift+ стрелка вправо - ПКМ скрыть.  
Пол-ляма это 50 000*10, так что всё правильно :-)  
 
ЗЫ Не поможет :-)
 
{quote}{login=леди-джип}{date=05.10.2010 08:18}{thema=Re: Re: истребление всех пустых ячеек в листе}{post}1. строки реально пустые, как ну ...блин с чем сравнить то... ну как мозг регины дубовицкой  
2,3. не , там не пол ляма, там всего 50 тыщ строчек, мне следовало пробельчик после разряда поставить. А как их скрыть, может, поможет?{/post}{/quote}  
1. :-)  
2,3 Скрыть строки - Ctrl+Shift+ стрелка вниз - ПКМ скрыть.  
Скрыть столбцы - Ctrl+Shift+ стрелка вправо - ПКМ скрыть.  
Пол-ляма это 50 000*10, так что всё правильно :-)  
 
ЗЫ Не поможет :-)  
 
 
 
{60603}
 
Л-Д! Говорливая вы наша - подробности нужны для того, чтобы понять почему или из-за чего(!) у вас отчеты получаются типа калифорнийского Арчи... А до  ядерных бомб или индивидуальных резино-технических изделий нам дела нет - поменяйте на апельсины в бочках...  
Z.  
66081
 
{quote}{login=Z}{date=05.10.2010 08:30}{thema=}{post}Л-Д! Говорливая вы наша - подробности нужны для того, чтобы понять почему или из-за чего(!) у вас отчеты получаются типа калифорнийского Арчи... А до  ядерных бомб или индивидуальных резино-технических изделий нам дела нет - поменяйте на апельсины в бочках...  
Z.  
66081{/post}{/quote}  
 
там всё менять придется, это детализация всех телефонов конторы одной, я их рассылаю начальникам отделов, чтобы они следили за личной и общественной жизнью подчиненных и оберегали их от недальновидных поступков.  
 
подробность важная, наверное, вот такая - для формирования отчетов использую макрос, который для выгрузки детализации по каждому номеру в отдельный файл выглядит следующим образом:    
  ActiveSheet.Range("$A$1:$P$55422").AutoFilter Field:=1, Criteria1:= _  
       "9031000000"  
   Range("A1:N55422").Select  
   Selection.Copy  
   Workbooks.Add  
   ActiveSheet.Paste  
   Columns("A:A").ColumnWidth = 11.71  
   Columns("H:H").Select  
   Selection.ColumnWidth = 12.43  
   Columns("G:G").ColumnWidth = 11.71  
   Columns("G:G").ColumnWidth = 13.43  
   Columns("K:K").ColumnWidth = 19.86  
   Application.CutCopyMode = False  
   ChDir "D:\beeline1\иванова"  
   ActiveWorkbook.SaveAs Filename:= _  
       "D:\beeline1\иванова\9031000000_09_10.xls", FileFormat:=xlExcel8, _  
       Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _  
       CreateBackup:=False  
       ActiveWindow.Close  
   Range("C50248").Select  
   ActiveSheet.Range("$A$1:$P$64549").AutoFilter Field:=1  
 
так как делала сама, могла накосячить, но своими глазами косяк не увидать. Получается файл по каждому номеру телефона размером около мегабайта. При этом строк там может быть совсем несколько.  
 
при этом, когда из того же массива данных автофильтром выбираю все разговоры по конкретному номеру телефона, выделяю эти самые данные для отчета и тупо копирую в новый файл, файл получается очень даже легонький и небольшой. Но вручную неохота , ведь нанотехнологии кругом.
 
{quote}{login=леди-джип}{date=05.10.2010 08:52}{thema=Re: }{post}  
подробность важная, наверное, вот такая - для формирования отчетов использую макрос...{/post}{/quote}Вот с этого и начинать надо было!  
Ща Вам The_Prist или ещё кто макрос-то подкорректируют :)
 
Попробуйте и это.
Я сам - дурнее всякого примера! ...
 
{quote}{login=Serge 007}{date=05.10.2010 08:26}{thema=Сори за цитирование :-)}{post}{quote}{login=леди-джип}{date=05.10.2010 08:18}{thema=Re: Re: истребление всех пустых ячеек в листе}{post}1. строки реально пустые, как ну ...блин с чем сравнить то... ну как мозг регины дубовицкой  
2,3. не , там не пол ляма, там всего 50 тыщ строчек, мне следовало пробельчик после разряда поставить. А как их скрыть, может, поможет?{/post}{/quote}  
1. :-)  
2,3 Скрыть строки - Ctrl+Shift+ стрелка вниз - ПКМ скрыть.  
Скрыть столбцы - Ctrl+Shift+ стрелка вправо - ПКМ скрыть.  
Пол-ляма это 50 000*10, так что всё правильно :-)  
 
ЗЫ Не поможет :-)  
 
 
 
{60603}{/post}{/quote}  
 
ПОМОГЛО! БОЛЬШОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО! теперь еще хотелось бы понять - почему помогло, что было в этих ячейках такого, чего очистка ячеек не очищает и придает такой солидный вес файлам, но это уже программа-максимум..
 
{quote}{login=леди-джип}{date=05.10.2010 10:28}{thema=Re: Сори за цитирование :-)}{post}  
ПОМОГЛО! БОЛЬШОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО! теперь еще хотелось бы понять - почему помогло, что было в этих ячейках такого, чего очистка ячеек не очищает и придает такой солидный вес файлам, но это уже программа-максимум..{/post}{/quote}  
Значит было форматирование. Или данные. Больше вариантов нет...
 
{quote}{login=The_Prist}{date=05.10.2010 10:40}{thema=}{post}Лично я вообще не понимаю, как операция СКРЫТИЯ строк может повлиять на размер файла, да еще в сторону уменьшения оного. Это бред. Скорее всего из файла была удалена некая информация. Изменения размера можно было сразу не заметить из-за того, что файл после удаления не был сохранен. В некоторых случаях еще помогает не просто сохранение, а перезапуск файла{/post}{/quote}  
 
сам файл то в размере не поменялся. поменялись в размере отчеты, которые из него в отдельные файлы выгружались. Ваш макрос пока не применила, завтра буду применять, а то сёдня переполнение буфера ввода. В любом случае спасибо за участие в моей судьбе, завтра непременно отчитаюсь перед коллективом о пользе макросов в природе.
 
{quote}{login=The_Prist}{date=05.10.2010 10:40}{thema=}{post}Лично я вообще не понимаю, как операция СКРЫТИЯ строк может повлиять на размер файла, да еще в сторону уменьшения оного. Это бред. Скорее всего из файла была удалена некая информация. Изменения размера можно было сразу не заметить из-за того, что файл после удаления не был сохранен. В некоторых случаях еще помогает не просто сохранение, а перезапуск файла{/post}{/quote}  
 
простите сессия завершилась по таймауту, а я и не заметила и запостила инкогнито.    
 
спасибо за помощь и мотивацию к труду -завтра буду не только тупо списывать тело макроса и пытаться понимать смысл каждой строки. если энциклопедия MVB не обрадует доступностью ответов, то опять задолбаю вопросами, возможно, еще более тупыми, чем раньше!
 
{quote}{login=The_Prist}{date=05.10.2010 08:31}{thema=}{post}  
Не забудьте убить все форматирование - это может реально уменьшить размер.{/post}{/quote}  
Тема о излишних форматах ячеек и размере файла поднималась не раз на страницах форума и постоянным советом для уменьшения веса книги является убрать форматирование. Но Вот пример проделанный мной только что. Книга Excel 2003, содержащая 2 пустых листа при создании весит 13 824 байта.  Все ячейки одного листа (65 536 х256) заполнил цифрой «1» формат общий. Файл сохранил, и он стал весить 103 614 464 байта. На весь этот лист установил формат «финансовый» с двумя знаками после запятой, число в ячейках стало выглядеть так «1.00р.». Вес файла после сохранения не изменился даже на один байт.  
Дальше-больше: на ячейки всего листа установил отличные от стандартных,  заливку, границы, выравнивание, размер шрифта и много чего еще. Размер файла не изменился ни на йоту. Почему?  
А все говорят и повторяют: «форматы-форматы.  
С уважением, Александр.
 
Александр, а попробуйте в новой книге заполнить, например 30 ячеек в столбце единичкой шрифтом по умолчанию. Сохраните. В другой книге аналогично 30 ячеек, а затем в одной из ячеек измените шрифт. Например Arial (был по умолчанию) на Times New Roman. Сохраните. Сравните размеры. У меня 13824/15360.
 
{quote}{login=Юрий М}{date=07.10.2010 03:22}{thema=}{post}Александр, а попробуйте в новой книге заполнить, например 30 ячеек в столбце единичкой шрифтом по умолчанию. Сохраните. В другой книге аналогично 30 ячеек, а затем в одной из ячеек измените шрифт. Например Arial (был по умолчанию) на Times New Roman. Сохраните. Сравните размеры. У меня 13824/15360.{/post}{/quote}  
Юрий, уж полуночничать так до конца? у меня вторая книга, с измененным шрифтом в одной ячейке стала весить 14 336 байт, но при изменении шрифта во всех 30-ти ячейках и сохранении файла, вес не увеличился.  
С уважением, Александр.
 
На мой взгляд дело не в количестве ячеек, к которым был применён формат, а в количестве различных форматов. Попробуйте применить НЕСКОЛЬКО РАЗНЫХ форматов к различным ячейкам. Размер должен меняться.
 
{quote}{login=The_Prist}{date=05.10.2010 09:00}{thema=}{post}Ну вот как-то так можно чуть подкорректировать:  
 
Application.Screenupdating = False:Application.Calculation = xlManual  
   Dim lLastRow As Long  
   lLastRow = Cells.SpecialCells(11).Row  
   With Range("$A$1:$P$" & lLastRow)  
       .AutoFilter Field:=1, Criteria1:="9031000000"  
       .Copy  
   End With  
   Workbooks.Add  
   ActiveSheet.Paste 'Хотя если форматы не нужны, лучше использовать строку ниже(закомментированную)  
   'ActiveSheet.PasteSpecial xlPasteValues  
   Application.CutCopyMode = False  
   Columns("A:A,G:G").ColumnWidth = 11.71  
   Columns("H:H").ColumnWidth = 12.43  
   Columns("G:G").ColumnWidth = 13.43  
   Columns("K:K").ColumnWidth = 19.86  
 
   ChDir "D:\beeline1\иванова"  
   ActiveWorkbook.SaveAs "D:\beeline1\иванова\9031000000_09_10.xls", xlExcel8  
   ActiveWorkbook.Close  
   ActiveSheet.Range("$A$1:$P$64549").AutoFilter Field:=1  
Application.Screenupdating = True:Application.Calculation = xlAutomatic  
 
Еще можно чуть улучшить, зная в каком столбце может быть максимальное кол-во строк для копирования. И, возможно, надо в столбцах автоширину сделать, а не фиксированную. Сократится код и время выполнения.{/post}{/quote}  
 
Я очень Вам благодарна, применила предложенный Вами макрос, всё роскошно работает, сделала автоширину, действительно стало тупить быстрее и зрелищнее картинки по экрану скачут ;-)
Страницы: 1
Читают тему
Наверх