0 / 0 / 0
Регистрация: 06.08.2012
Сообщений: 35
1

Скопировать выделенный диапазон без пустых строк

04.08.2013, 10:06. Показов 7258. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно в Exel 2010 копировать данные в буфер обмена без пустых ячеек. Для Select. не могу найти способа такого.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.08.2013, 10:06
Ответы с готовыми решениями:

Excel : Скопировать выделенный диапазон с первого листа на тот лист активной рабочей книги
8. Excel : Скопировать выделенный диапазон с первого листа на тот лист активной рабочей книги,...

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

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

Вывод пустых строк вошедших в диапазон Between
Есть запрос SELECT DATE_FORMAT(day_price.date,'%d.%m.%Y') as date, day_price.price,...

7
1358 / 323 / 82
Регистрация: 13.11.2008
Сообщений: 669
04.08.2013, 11:06 2
Фильтруете по непустым и копируете.
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
04.08.2013, 15:09 3
Или я б еще попробовал Range(...).Specialcells(xlcelltypeblanks)
0
1358 / 323 / 82
Регистрация: 13.11.2008
Сообщений: 669
04.08.2013, 15:20 4
Цитата Сообщение от Igor_Tr Посмотреть сообщение
Или я б еще попробовал Range(...).Specialcells(xlcelltypeblanks)
Так это выделение пустых. А вроде как просят не пустые...
Тогда уж так:
Visual Basic
1
Union(Cells.SpecialCells(2), Cells.SpecialCells(-4123)).Select
0
0 / 0 / 0
Регистрация: 06.08.2012
Сообщений: 35
04.08.2013, 15:36  [ТС] 5
Visual Basic
1
Selection.SpecialCells(xlCellTypeConstants).Copy
Всё равно метод SpecialCells не решает проблему, т. к. нужно копировать именно строки (в них могут быть пустые ячейки), но не копировать строки, состоящие только из пустых ячеек.
0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
04.08.2013, 16:11 6
Его можно крутить по разному. Что значит пустых? Полностью? Есть строки с каким-то кол-вом пустых ячеек? Их считать как нужные? etc. Поэтому я и вставил 5 коп. В общем вид был бы где-то такой (грубо):
Visual Basic
1
2
3
4
5
   set mrng=.usedrange
      mrng.specialcells(xlcelltypeblanks).rows.hidden=true
   set mrng=mrng.specialcells(xlcelltypevisible)
' ну и для проверки (!!! только !!!)
   mrng.select
Очень сильно я разочаровался в AutoFilter.

Добавлено через 4 минуты
To Prist. В #3 нет выделения - только определение чего-то, нам нужного. Выделение (select) в #6, и то только как демо.
0
The_Prist
04.08.2013, 17:23
  #7

Не по теме:

Igor_Tr, я знаком с синтаксисом. И я видел, что нет выделения. Да и вообще никакого действия. Разьве это важно? Мне казалось, что это не может послужить причиной для дальнейшего развития темы. Я-то лишь хотел указать на то, что ТС хочет определить не пустые строки. Вы же предложили совершенно обратную операцию. Вот и все. Если мой ответ Вас чем-то задел - извиняюсь, хотя не вижу за что.

0
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
04.08.2013, 19:08 8
To The_Prist. Мы как-то не туда... Мне наоборот нравится контраргументация, и я ее очень ценю. Честно. Поэтому люблю, когда в ветке много народа - всегда что-то интересное. И у меня негативный опыт с AutoFilter - на большом тормоз просто ужас. Для чего-то подобного, как у ТС, здесь Hugo121 предложил использовать ColumnDifferences. Сказал, что тоже быстрее. Пробовал - правда (хотя и так не верить ему нет смысла, всегда у него толково). А у меня еще появилась теперь идея - использовать RemoveDuplicates. Очень быстро работает, и на очень больших, и с кучей форматирования, и с удалением всего этого мусора. А пустые ряды - это ведь тоже дубликаты. Но останется один пустой ряд как оригинальный. Придумать, как его легко и быстро вычислить (если еще и куча просто пустых ячеек) - и тоже будет решение. Еще пару своих доков подготовлю на завтра, и поиграюсь. Что-то получится - скину.

Добавлено через 44 минуты
Вот игрушка получилась. В принцыпе - должна убивать два зайца. Убираем "случайные" дубликаты (по ходу), и удаляем все пустые строки. Так, на взгляд, должна работать быстро на больших массивах. Но пока не проверял. . Проверил только, что работает на 100%.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub sasd()
'Remove Empty via RemoveDublicate & SpecialCells
Dim mrng As Range, r1 As Range, marr(), n&, j&, i&
   With ActiveSheet
      Set mrng = .UsedRange:    n = mrng.Columns.Count
      ReDim marr(0 To n - 1):    j = 0
         For i = 1 To n:      marr(j) = i:   j = j + 1:   Next 'i
      mrng.RemoveDuplicates (marr), xlNo:  Set mrng = .UsedRange
      Set r1 = mrng.SpecialCells(xlCellTypeBlanks)
         For i = 1 To r1.Areas.Count
            If Application.CountA(mrng.Rows(r1.Areas(i).Row)) = 0 Then
               mrng.Rows(r1.Areas(i).Row).Delete Shift:=xlUp
               Exit For
            End If
         Next 'i
   End With
End Sub
Добавлено через 18 минут
Не так. Набор Areas может "пошутить" - он тоже умеет. Исправлено (в коде выше).

Добавлено через 11 минут
И забыл добавить. Сначала существующий нужный диапазон, вместе в пустыми, загнать одним движением в массив mARR (все равно потом для него будет Redim без сохранения). Массив выложить в нужном месте (в любом случае быстрее чем Copy, если не нужно Paste special). Все это укладывается в две строки где-то сверху. И дальше это мое творчество. Но если честно, это цикл For i.... Что-то бы попроще сюда.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.08.2013, 19:08
Помогаю со студенческими работами здесь

Подсчитать количество пустых строк в текстовом файле. Сформировать новый файл, в котором пустых строк нет
Задано произвольный текстовый файл. Подсчитать количество пустых строк в этом файле. Сформировать...

Как скопировать выделенный файл в listbox и переместить/скопировать в нужную директорию?
Как скопировать выделенный файл в listbox и переместить/скопировать в нужную директорию? вот код...

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

Объединить данные в 1 столбец без повторений и пустых строк
Как можно объединить данные в 1 столбец без повторений и пустых строк? С помощью кода.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru