Excel вставка в отфильтрованные строки
Вставка в отфильтрованные строки
Весьма распространенная ситуация, вопрос про которую мне задают почти на каждом тренинге. Есть таблица, в которой Фильтром (Данные — Фильтр) отобраны несколько строк. Задача — вставить какие-либо нужные нам значения именно в видимые отфильтрованные строки, пропуская при этом скрытые. Обычное копирование-вставка при этом не сработает, т.к. данные вставятся не только в видимые, но и в скрытые ячейки. Давайте посмотрим, как можно обойти эту проблему.
Способ 1. Вставка одинаковых значений или формул
Если вам нужно вставить одни и те же значения во все отфильтрованные строки списка, то все просто. Предположим, что у нас есть вот такой список сделок:
. и в нем нужно поставить фиксированную скидку в 1000 рублей каждому «Ашану».
Фильтруем наш список Автофильтром, оставляя на экране только «Ашаны». Вводим нужное значение в первую ячейку и протягиваем (копируем за правый нижний угол ячейки) вниз:
Умный Excel в данном случае понимает, что вы хотите ввести значения именно в отфильтрованные ячейки и делает то, что нужно:
Такой способ подойдет и для ввода значений и для ввода формул. Например, если скидка для «Ашанов» не фиксированная, а составляет 10% от суммы сделки, то в первую отфильтрованную строку можно ввести не константу (1000), а формулу (=C2*10%) и также скопировать вниз.
Способ 2. Макрос вставки любых значений
Другое дело, если вам необходимо вставить в отфильтрованные ячейки не одинаковые значения или формулы, а разные, да еще и брать их из другого диапазона. Тогда придется использовать несложный макрос. Нажмите сочетание клавиш Alt+F11, в открывшемся окне Visual Basic вставьте новый пустой модуль через меню Insert — Module и скопируйте туда этот код:
Как легко сообразить, макрос запрашивает у пользователя по очереди два диапазона — копирования и вставки. Затем проверяет, чтобы их размеры совпадали, т.к. разница в размерностях вызовет впоследствии ошибку при вставке. Затем макрос перебирает все ячейки в диапазоне вставки и переносит туда данные из диапазона копирования, если строка видима (т.е. не отфильтрована).
Ссылки по теме
Можно еще немного проще:
1. отфильтровать
2. выделить весь столбец — F5 — Выделить — Только видимые
3. не снимая выделения, ввести формулу в первую ячейку и нажать Ctrl+Enter
Спасибо за полезное уточнение
Спасибо Вам большое! Ваши «ПРИЕМЫ» спасает огромное количество рабочих часов!
Повесила макрос на горячую клавишу и красота
Вопрос.
1. Как провести копирование данных из одного фильтрованного диапазона в аналогичных по размерам другой?
2. Как сохранить макрос так, чтоб его можно было использовать в других открытыхсозданных файлах, чтоб он стал «постоянным»?
1. Вот так:
Sub PasteToVisible()
Dim copyrng As Range, pasterng As Range
Dim cell As Range, i As Long
‘запрашиваем у пользователя по очереди диапазоны копирования и вставки
Set copyrng = Application.InputBox(«Диапазон копирования», «Запрос», Type:=8)
Set pasterng = Application.InputBox(«Диапазон вставки», «Запрос», Type:=8)
‘проверяем, чтобы они были одинакового размера
If pasterng.Cells.Cells.Count <> copyrng.Cells.Count Then
MsgBox «Диапазоны копирования и вставки разного размера!»,vbCritical
Exit Sub
End If
‘переносим данные из одного диапазона в другой только в видимые ячейки
For Each cell In pasterng
If cell.EntireRow.Hidden = False Then
cell.Value = Cells(cell.Row, copyrng.Column).Value
End If
Next cell
End Sub
Николай Павлов, большое спасибо за макрос! Я, хоть и сталкивалась с excel, но с макросами дела не имела. А тут понадобилось в большущую таблицу выгрузки сайта, фильтруя ее значения, вставлять не цифры и формулы, а текст, уникальные названия товаров. Копировать значения ячеек по одному совершенно нереально, долго и запутаешься. А с макросом (диапазон вставки и копирования были на разных листах одной книги) все получилось, пока с одним значением фильтра. Но встретились в конце такая закавыка.
Фильтр сняла, вернее, поставила галочки у всех значений, как у вас в видео. Здесь было все нормально, все вернулось к прежнему виду, правда, я не проверила всю портянку. Только вот почему-то после нажатия кнопки сохранить мне выпало окошко — как будто ошибка. Там написано:
«выгрузка.csv» может содержать возможности несовместимые с форматом «CSV( разделители — запятые)». Сохранить книгу в этом формате?
Чтобы сохранить этот формат, удалив все несовместимые возможности, нажмите кнопку Да.
Чтобы сохранить все возможности, нажмите кнопку нет и сохраните файл в формате последней версии excel.
Чтобы узнать, какие возможности могут быть потеряны, нажмите кнопку Справка.
И вот я теперь не знаю, на какую кнопку нажимать, и что за возможности потеряются. Файл выгрузки большой — столбцов много, мне можно менять значения только одного столбца. Подскажите, что значит это сообщение?
Как вставить скопированные ячейки только в видимые/отфильтрованные ячейки
В общем-то смысл статьи уже, думаю, понятен из названия. Просто чуть-чуть расширю.
Ни для кого не секрет, что Excel позволяет выделить только видимые строки(например, если некоторые из них скрыты или применен фильтр).
если кто-то не знает, как это сделать: выделяем диапазон — Alt+;(для английской раскладки);Alt+ж(для русской). Подробнее можно почитать здесь.
Так вот, если скопировать таким образом только видимые ячейки, то скопируются они как положено. Но при попытке вставить скопированное в диапазон отфильтрованный(либо содержащий скрытые строки) — то результат вставки будет не совсем такой, как Вы ожидали. Данные будут вставлены даже в скрытые строки.
Копируем единый диапазон ячеек и вставляем только в видимые
Чтобы данные вставлялись только в видимые ячейки, можно применить такой макрос:
Option Explicit Dim rCopyRange As Range ‘Этим макросом копируем данные Sub My_Copy() If Selection.Count > 1 Then Set rCopyRange = Selection.SpecialCells(xlVisible) Else: Set rCopyRange = ActiveCell End If End Sub ‘Этим макросом вставляем данные, начиная с выделенной ячейки Sub My_Paste() If rCopyRange Is Nothing Then Exit Sub If rCopyRange.Areas.Count > 1 Then MsgBox «Вставляемый диапазон не должен содержать более одной области!», vbCritical, «Неверный диапазон»: Exit Sub Dim rCell As Range, li As Long, le As Long, lCount As Long, iCol As Integer, iCalculation As Integer Application.ScreenUpdating = False iCalculation = Application.Calculation: Application.Calculation = -4135 For iCol = 1 To rCopyRange.Columns.Count li = 0: lCount = 0: le = iCol — 1 For Each rCell In rCopyRange.Columns(iCol).Cells Do If ActiveCell.Offset(li, le).EntireColumn.Hidden = False And _ ActiveCell.Offset(li, le).EntireRow.Hidden = False Then rCell.Copy ActiveCell.Offset(li, le): lCount = lCount + 1 End If li = li + 1 Loop While lCount >= rCell.Row — rCopyRange.Cells(1).Row Next rCell Next iCol Application.ScreenUpdating = True: Application.Calculation = iCalculation End Sub
Для полноты картины, данные макросы лучше назначить на горячие клавиши(в приведенных ниже кодах это делается автоматически при открытии книги с кодом). Для этого приведенные ниже коды необходимо просто скопировать в модуль ЭтаКнига(ThisWorkbook):
Option Explicit ‘Отменяем назначение горячих клавиш перед закрытием книги Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.OnKey «^q»: Application.OnKey «^w» End Sub ‘Назначаем горячие клавиши при открытии книги Private Sub Workbook_Open() Application.OnKey «^q», «My_Copy»: Application.OnKey «^w», «My_Paste» End Sub
Теперь можно скопировать нужный диапазон нажатием клавиш Ctrl+q, а вставить его в отфильтрованный — Ctrl+w.
Tips_Macro_CopyPasteInHiddenRows.xls (46,5 KiB, 9 515 скачиваний)
Копируем только видимые ячейки и вставляем только в видимые
По просьбам посетителей сайта решил доработать данную процедуру. Теперь возможно копировать любые диапазоны: со скрытыми строками, скрытыми столбцами и вставлять скопированные ячейки также в любые диапазоны: со скрытыми строками, скрытыми столбцами. Работает совершенно так же, как и предыдущий: нажатием клавиш Ctrl+q копируем нужный диапазон(со скрытыми/отфильтрованными строками и столбцами или не скрытыми), а вставляем сочетанием клавиш Ctrl+w. Вставка производится так же в скрытые/отфильтрованные строки и столбцы или без скрытых.
Если в копируемом диапазоне присутствуют формулы, то во избежание смещения ссылок можно копировать только значения ячеек — т.е. при вставке значений будут вставлены не формулы, а результат их вычисления. Или если необходимо сохранить форматы ячеек, в которые происходит вставка — будут скопированы и вставлены только значения ячеек. Для этого надо заменить строку в коде(в файле ниже):
Вставить скопированные строки в Excel с учетом фильтра
Формирование отчета с учетом стандартного фильтра в форме
Здравствуйте! Подскажите можно ли сформировать Отчет с учетом стандартного фильтра в форме? в.
Как можно реализовать вывод суммы столбца с учетом фильтра
Имеется форма с БД , на форме TEXTBox в который выводится сумма определенного столбца таблицы, и.
Вставить строки в таблицу из файла Excel
Подскажите, пожалуйста ,как лучше осуществить задумку. Есть файл excel’ евый, нужно вытащить из.
Как из Excel вытащить нужные строки и вставить в форму
Доброго времени суток. Было поставлено задание написать именно на WPF небольшую программку. Сам я.
Скопировать предыдущие строки перед определенной строкой из текстового файла и вставить их в столбец Excel
Доброго времени суток! У меня есть текстовый файл, вида . Фильм1.
Предложенный Вам вариант такой заумный. Все это можно сделать простым копированием. Для этого:
1) Выделить нужный диапазон.
2) Нажать кнопку «ВыделитьВидемыеЯчейки».
3) Начать копирование (ну а далее обычно).
Вопрос в другом. Где найти кнопку «ВыделитьВидемыеЯчейки»? В Excel-2003 ее можно найти в настройках панелей управления.
Вопрос в другом. Где найти кнопку «ВыделитьВидемыеЯчейки»? В Excel-2003 ее можно найти в настройках панелей управления.
Вопрос в другом. Где найти кнопку «ВыделитьВидемыеЯчейки»? В Excel-2003 ее можно найти в настройках панелей управления.
Расскажу только про Excel-2003. Дома под рукой только он.
1) левой кнопкой мыши по любой панели кнопок (например, обычно включена панель «Стандартная»).
2) в появившемся контекстном меню список панелей экранных кнопок, в самом низу пункт «настройка». Выбрать его.
3) появится окно «Настройка», там на вкладке «Команды» два списка.
4) в правом списке выбрать категорию «Правка»
5) в левом появится список команд этой категории.
6) почти в самом конце этого (см.п.5) списка кнопка «ВыделитьВидемыеЯчейки»
7) на нее нужно нажать левой клавишей мыши, перетащить и отпустить на любой панели кнопок (лучше где-то в конце панели, чтоб логику панели не ломать).
8) закрыть панель настройки.
После вышеописанных действий кнопка «ВыделитьВидемыеЯчейки» будет там куда вы ее перетащили и можно будет выполнить все действия из моего предыдущего сообщения.
Кстати, если впоследствии Вам будет нужно удалить какие-то кнопки с панелей, то их можно перетаскивать в обратном порядке при наличии на экране окна «Настройка». Например, выбрали кнопку «Сохранить» (дискетка) и перетащили ее отпустив на окне «Настройка».
Работа с фильтрами в MS Office Excel на примерах
Рассмотрим, как можно искать информацию в MS Excel, используя фильтры.
Для этого откроем эксель и набросаем в нем небольшую таблицу.
Выделите любую ячейку в строке с заголовками, затем перейдите на вкладку «Данные» и щелкните на кнопке «Фильтр»:
В строке с заголовками нашей таблицы в каждом столбце появятся «стрелки».
Обратите внимание, что если в Вашей таблице нет строки с заголовками, то Excel, автоматически вставит фильтр в первую строку с данными:
Подготовительный этап завершен. Можно приступать к поиску информации.
Основы работы с фильтрами
Применение фильтров к таблице
Щелкните на значке в столбце «Менеджер». Откроется следующее меню:
В данном меню с помощью флажков Вы можете отмечать те элементы, по которым необходимо фильтровать данные.
Если в таблице много значений, то используйте строку поиска. Для этого начните вводить в нее часть слова, которое Вам необходимо найти. Список вариантов будет автоматически сокращаться.
Минус этого способа в том, что можно отметить только одно значение или несколько значений, содержащих искомую фразу, но абсолютно разные значения найти не удастся. Т.е., например, сразу найти таким образом менеджеров по имени Сергей и Александр не получится, но можно найти все значения, содержащие «Серг»: Сергей, Сергеев, Сергиенко и т.п.
Например, Вам нужно отметить только 2 значения из нескольких десятков. Снимать флажок вручную с каждой позиции кроме нужных достаточно затратно по времени. Для ускорения этого процесса снимите флажок с пункта «(Выделить все)». При этом снимутся все остальные флажки. Теперь можно отметить только те пункты, которые Вам нужны.
MS Excel поддерживает множественные фильтры, т.е. фильтр сразу по нескольким столбцам.
Например, Вам необходимо найти все заказы менеджера Иванова от 18.01.2014.
Для начала щелкните на в столбце «Менеджер» и выберите Иванова.
Теперь щелкните на в столбце «Дата отгрузки», снимите флажок с «(Выделить все)» и выберите 18.01.2014 или введите в строке поиска 18 и нажмите «ОК».
Таблица примет следующий вид:
Аналогичным образом Вы можете продолжить фильтровать данные по столбцам «Описание», «Кол-во» и т.д.
Обратите внимание, что в столбцах, по которым был применен фильтр, значокменяется на
.
Таким образом Вы всегда будете знать по каким столбцам происходит фильтрация данных.
Отмена фильтра
Для того, чтобы снять все фильтры сразу, перейдите на вкладку «Данные» и нажмите на кнопку «Очистить».
Если необходимо снять фильтр только с одного столбца, оставив фильтры по другим, то щелкните на значке данного столбца, напр., «Дата отгрузки» и щелкните на пункте «Удалить фильтр с »:
или
Если необходимо полностью отказаться от фильтров в таблице, то перейдите на вкладку «Данные» и щелкните на кнопке «Фильтр». Она перестанет подсвечиваться, из строки с заголовками исчезнут значки и
и в таблице отобразятся все данные.
После
Дополнительные настройки фильтров
В зависимости от типа содержимого столбцов у фильтров появляются дополнительные опции.
Текстовые фильтры
Щелкните на значке столбца «Менеджер», наведите курсор на «Текстовые фильтры», дождитесь появления меню и выберите любой из критериев отбора или пункт «Настраиваемый фильтр…». Появится следующее окно:
- 1. Условия «равно» или «не равно» предполагают, что искомое выражение стопроцентно совпадает с содержанием ячейки. Критерий «равно» оставляет в таблице только те строки, в которых содержится выбранное значение. Соответственно, критерий «не равно» оставляет все значения, кроме выбранного. Для упрощения задачи Вы можете выбрать нужное значение из выпадающего списка:
- 2. Условия «больше» и «меньше» предполагают, что в таблице останутся значения, которые по алфавиту начинаются с более ранней или более поздней буквы. Например, если выбрать значение «Иванов» при опции «больше», то в таблице останутся только те ячейки, которые начинаются на букву «Й»(Картов, Йогуртов и т.п.). А при опции «меньше» — значения на букву «З» (Захаров, Букин).
- 3. Единственное отличие условий «больше или равно» и «меньше или равно» от предыдущего пункта в том, что в фильтр включает и выбранное значение.
- 4. Если необходимо найти все значения, которые начинаются на «Ива», то используйте условие «начинается с», а если хотите узнать, сколько в таблице значений, оканчивающихся на «рович», то выберите опцию «заканчивается на».
- 5. Соответственно, условия «не начинается с» и «не заканчивается на» предполагают, что Вам не надо отображать в таблице значения, содержащие искомую фразу.
- 6. При выборе условий «содержит» или «не содержит» можно указать любую фразу или сочетание букв, которые необходимо включить или исключить из фильтра. Отличие этого пункта от пунктов 1, 4 и 5, в том, что искомая фраза может находится в любом месте ячейки. Например, задав в качестве фильтра «Ива», в результате получим «Иванов Алексей», «Сергей Иваровский», «кривая» и т.п.
Числовые фильтры
Большинство условий те же самые, что и при текстовых фильтрах. Рассмотрим только новые.
- 1. Условие «между». При выборе данного условия, в появившемся окне сразу же устанавливаются нужные критерии, что облегчает Вам задачу:
-
Вам остается только ввести значения с клавиатуры или выбрать их из списка.
- 2. Условие «Первые 10». Данный пункт имеет следующие опции:
- Показать наименьшие или наибольшие значения.
- Сколько значений отобразить.
- В данном пункте требуется пояснение по второму значению: % от количества элементов. Например, у Вас в таблице 15 строк с числовыми значениями. При выборе 20% в таблице останется только 15/100*20 = 3 строки.
- 3. При выборе условий «Выше среднего» или «Ниже среднего» Excel автоматически высчитывает среднее арифметическое значение в столбце и фильтрует данные согласно критерию.
Фильтр по дате
Данные условия не требуют специальных расшифровок, поскольку их значение легко понять из названий. Единственное на что стоит обратить внимание, что в стандартном окне выбора условий фильтра появляется кнопка Календарь для облегчения ввода даты.
И еще немного о фильтрах
Есть еще один способ фильтрации данных. Немного преобразуем нашу таблицу:
Как видите, мы ее раскрасили.
Теперь, например, нам необходимо найти все строки с Красоткиным. Щелкните правой кнопкой на ячейке с данным человеком и в появившемся меню выберите пункт «Фильтр». В новом меню есть несколько новых опций. В данном примере нам нужен пункт «Фильтр по значению…».
Если выбрать условие «Фильтр по цвету…», то в таблице останутся строки с ячейками того же цвета, что и активная ячейка (желтая заливка).
Если щелкнуть на «Фильтр по цвету шрифта…», то в нашей таблице останутся только ячейки с красным или черным шрифтом, в зависимости от того, какая ячейка активна в данный момент.
Последний пункт фильтра применим только в том случае, если в таблице используется условное форматирование со значками.
Как скопироавть отфильтрованные строки в новый Excel файл
Что делает макрос: Часто, когда вы работаете с набором отфильтрованных данных, вы хотите скопировать отфильтрованные строки в новую книгу. Конечно, вы можете вручную скопировать эти строки, просто открыть новую книгу и вставить строки, а затем отформатировать вновь вставленные данные так, чтобы все столбцы подходили. Но если вы делаете это достаточно часто, вы можете использовать макрос, чтобы ускорить процесс.
Как макрос работает
Этот макрос захватывает диапазон AutoFilter, открывает новую книгу, а затем вставляет данные.
Код макроса
Как этот код работает
- Шаг 1 использует свойство AutoFilterMode, чтобы проверить есть ли на листе автофильтры. Если нет, то мы выходим из процедуры.
- Каждый объект AutoFilter имеет свойство Range. Это свойство Range возвращает строки, к которым применяется Автофильтр, то есть он возвращает только те строки, которые отображаются в отфильтрованном наборе данных. На шаге 2 мы используем метод копирования, чтобы захватить эти строки, а затем вставить строки в новую книгу. Обратите внимание, что мы используем Workbooks.Add.Worksheets, это говорит Excel вставить данные в первый лист вновь созданной книги.
- Шаг 3 говорит Excel, чтобы размер столбцов соответствовал данным, которые мы только что вставили.
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код.