Содержание
- Excel — если ячейка не пуста, скопируйте определенные ячейки строки на лист 2.
- Excel копировать ячейку если она не пустая
- Специальная вставка в Excel: пропускаем пустые ячейки, транспонируем и удаляем ссылки
- Базовые знания о Специальной вставке
- Преобразуем столбцы в строки (или наоборот)
- Транспонировать – кратко о главном
- Удаляем гиперссылки (много и быстро)
- Быстрое удаление гиперссылок – кратко о главном
- Пропускаем пустые ячейки
- Пропускаем пустые ячейки – кратко о главном
- Заполнение пустых ячеек значениями из соседних ячеек
- Способ 1. Без макросов
- Способ 2. Заполнение пустых ячеек макросом
- Способ 3. Power Query
Excel — если ячейка не пуста, скопируйте определенные ячейки строки на лист 2.
Обычно, если в Sheet1 ячейка в столбце I не пуста, скопируйте ячейки A, B, I и L на лист 2 в следующей доступной пустой строке. Провести петлю до конца рядов на Sheet1.
Я все время получаю код ошибки 9 или 450 в строке .Copy.
Я подключил модуль к кнопке на Sheet2. Не в этом ли причина?
Или мне следует использовать что-то отличное от функции CopyPaste?
Это код, который я пытался заставить работать.
Что вам говорят ошибки?
В текущем состоянии я получаю код ошибки 450 — «Неверное количество аргументов или недопустимые присвоения свойств».
Похоже, проблема в том, что вы пытаетесь скопировать сразу несколько ячеек, что не поддерживается (попробуйте сделать то же самое вручную на самом листе). Вам нужно скопировать либо одну ячейку, либо непрерывный диапазон. Вы можете либо сделать 4 копирования / вставки, либо напрямую установить значения в целевом листе.
Попробуйте изменить копирование / вставку на следующее (не проверено):
Как мне напрямую установить значения в целевом листе?
@Uvulagirl Также добавьте строку вверху модуля: Option Explicit и скомпилируйте проект, чтобы помочь идентифицировать необъявленные переменные или неизвестные объекты.
@Macros Thankyou за то, что указал на то, что я делал неправильно! Ценные уроки для меня. Я ценю вашу помощь! 🙂
Источник
Excel копировать ячейку если она не пустая
Прошу помочь с решением такой задачи: в листе имеем столбец с данными. Границы столбца точно известны. Некоторые ячейки столбца заполнены текстовой информацией, а какие-то пустые. Нужно скопировать и вставить в другой лист только заполненные ячейки. В прикладываемом файле отражен желаемый результат (см Лист1 и Лист2). Помогите добиться этого результата автоматическим путем. Спасибо.
Решение предпочтительно найти через формулу или функцию, если никак, тогда макрос.
Прошу помочь с решением такой задачи: в листе имеем столбец с данными. Границы столбца точно известны. Некоторые ячейки столбца заполнены текстовой информацией, а какие-то пустые. Нужно скопировать и вставить в другой лист только заполненные ячейки. В прикладываемом файле отражен желаемый результат (см Лист1 и Лист2). Помогите добиться этого результата автоматическим путем. Спасибо.
Решение предпочтительно найти через формулу или функцию, если никак, тогда макрос. kollymba
Сообщение Прошу помочь с решением такой задачи: в листе имеем столбец с данными. Границы столбца точно известны. Некоторые ячейки столбца заполнены текстовой информацией, а какие-то пустые. Нужно скопировать и вставить в другой лист только заполненные ячейки. В прикладываемом файле отражен желаемый результат (см Лист1 и Лист2). Помогите добиться этого результата автоматическим путем. Спасибо.
Решение предпочтительно найти через формулу или функцию, если никак, тогда макрос. Автор — kollymba
Дата добавления — 21.10.2014 в 14:02
Источник
Специальная вставка в Excel: пропускаем пустые ячейки, транспонируем и удаляем ссылки
Некоторые из Вас, должно быть, обратили внимание на такой инструмент Excel как Paste Special (Специальная вставка). Многим, возможно, приходилось испытывать недоумение, если не разочарование, при копировании и вставке данных в Excel. Вы вставляли данные и получали совсем не то, что ожидали получить. Я покажу Вам некоторые интересные трюки с использованием Специальной вставки и расскажу, как использовать некоторые полезные возможности этого инструмента, чтобы данные всегда выглядели именно так, как нужно.
После прочтения этой статьи Вы научитесь транспонировать, удалять ссылки и пропускать пустые ячейки при помощи инструмента Paste Special (Специальная вставка). После каждого раздела приведено краткое пошаговое резюме. Пользуйтесь ссылками быстрого доступа или распечатайте эти резюме на бумаге, поместите рядом с компьютером и используйте их как удобную инструкцию. Ну что ж, приступим!
Если Вы хотите при помощи инструмента Paste Special (Специальная вставка) научиться вставлять только значения или форматирование, копировать ширину столбцов, умножать и делить данные на заданное число, а также прибавлять и удалять значение сразу из целого диапазона ячеек обратитесь к статье Специальная вставка в Excel: значения, форматы, ширина столбцов .
Базовые знания о Специальной вставке
Прежде чем воспользоваться инструментом Paste Special (Специальная вставка), Вы должны иметь что-то в буфере обмена, иначе, при попытке использовать эти функции, они будут серого цвета и не активны, как на рисунке ниже.
Первым делом Вы должны скопировать данные в буфер обмена, иначе не сможете воспользоваться функцией Специальная вставка. На рисунке видно, что на Ленте и в контекстном меню, инструмент Paste Special (Специальная вставка) не активен:
Сначала Вы должны выбрать и скопировать любую информацию. После этого действия Excel хранит скопированные данные в буфере обмена. Теперь Вы можете использовать Специальную вставку. Есть два способа вызвать эту функцию. Оба открывают диалоговое окно Paste Special (Специальная вставка), которое предоставляет доступ к целому набору полезных настроек (см. рисунок ниже).
Воспользуйтесь одним из следующих способов:
- На вкладке Home (Главная) нажмите на маленький треугольник под словом Paste (Вставить) и в выпадающем меню выберите Paste Special (Специальная вставка).
- Щелкните правой кнопкой мыши, а затем в контекстном меню выберите Paste Special (Специальная вставка).
Заметьте, что после того, как Вы скопировали данные, Специальная вставка становится доступной.
Преобразуем столбцы в строки (или наоборот)
Оставим позади основы и давайте немного взбодримся. В следующем примере будем использовать таблицу, созданную для контроля калорий во время диеты. Допустим, таблица Вас устраивает, но не нравится, что наименования продуктов расположены вертикально. Хотелось бы расположить дни недели вертикально, а наименования продуктов – в строке. Другими словами, Вы хотите транспонировать эти данные.
Для этого выделяем данные, копируем их, ставим курсор в нужную ячейку, открываем меню инструмента Paste Special (Специальная вставка) и выбираем Transpose (Транспонировать) – все это показано на изображениях ниже. Видите, как просто сделать таблицу такой, как Вы хотите? Представьте себе все возможности, которые дает инструмент Transpose (Транспонировать).
Первый пример транспонирования таблицы:
Другое применение транспонирования, которое мне очень нравится, – это копирование данных из какого-либо источника и добавление их в текущую таблицу. Это отличный способ собирать воедино и приводить в соответствие данные из двух различных источников. Все данные будут выглядеть единообразно, и Вы с легкостью сможете настроить формулы.
Например, Вам в руки попадает вот такой шаблон (смотрите ниже), предоставленный компанией, чтобы заполнить отчёт о расходах при посещении конференции.
Однако, на конференции, которую Вы посещали, был предоставлен электронный отчёт в таком виде:
Просто скопируйте нужную информацию (в нашем случае B1:B11), поместите курсор в ячейку, в которую Вы хотите вставить эту информацию (ячейка C3 в шаблоне), нажмите Paste Special (Специальная вставка), а затем выберите опцию Transpose (Транспонировать). Вот что получится:
Отлично! Теперь вся информация выглядит единообразно, и Вы можете продолжать добавлять строки для всех совершаемых Вами поездок.
Транспонировать – кратко о главном
- Выберите данные.
- Скопируйте выбранные данные. Команда Cut (Вырезать) не позволит использовать Специальную вставку, поэтому воспользуйтесь именно командой Copy (Копировать).
- Поместите курсор в ячейку, в которую нужно вставить данные.
Замечание: Убедитесь, что имеется достаточно места для вставки данных. Не выделяйте всю строку или столбец, если не располагаете достаточным количеством свободного места. Убедитесь, что новые данные не будут записаны поверх существующих и нужных Вам.
- Нажмите PasteSpecial (Специальная вставка). Это можно сделать 2-мя путями:
- Щелкните правой кнопкой мыши и выберите в контекстном меню Paste Special (Специальная вставка).
- На вкладке Home (Главная) под командой Paste (Вставить) нажмите маленький треугольник и в открывшемся меню выберите Paste Special (Специальная вставка).
Оба способа откроют диалоговое окно Paste Special (Специальная вставка), в котором Вы найдёте множество полезных настроек.
Это было весело! Теперь давайте попробуем другую интересную функцию Специальной вставки. Этот трюк особенно полезен, когда требуется вставить текст, насыщенный гиперссылками. Гиперссылки иногда попадаются под руку в процессе работы с данными в Excel. Обратите внимание на синий подчёркнутый текст на рисунке ниже. В каждой ячейке столбца A содержится гиперссылка. Каждый раз, когда Вы кликаете по ячейке, компьютер открывает гиперссылку. Вы можете щелкать правой кнопкой мыши по каждой ячейке и выбирать команду Remove hyperlink (Удалить гиперссылку), но это займёт целую вечность. Представьте, если в Вашей таблице содержится 2000 строк и 1000 столбцов.
Вместо этого Вы можете использовать возможности Специальной вставки, чтобы удалить все эти гиперссылки разом. Готовы? Выделите все ячейки, из которых нужно удалить гиперссылки, и скопируйте их. Поместите курсор в новую ячейку.
Можно попробовать вставить скопированные данные в те же ячейки, но в таком случае Excel может сохранить синий цвет и подчёркивание шрифта. Если это произошло, просто очистите формат.
Нажмите Paste Special (Специальная вставка). В появившемся одноименном диалоговом окне выберите пункт Values (Значения) и нажмите ОК. После этого все гиперссылки будут удалены, и Вы сможете переместить данные на их исходное место. Очень просто, правда? Посмотрите на рисунки ниже, там показано пошаговое выполнение этой операции.
- Выделите все ячейки, из которых требуется удалить гиперссылки.
- Скопируйте их.
- Поставьте курсор в ячейку, куда необходимо вставить скопированные данные.
- Нажмите Paste Special (Специальная вставка).
- Выберите пункт Values (Значения).
- Нажмите ОК.
- Вырежьте и вставьте ячейки в любое нужное Вам место.
Пропускаем пустые ячейки
Вот ещё один пример (смотрите ниже). Допустим, у меня есть список дней рождения членов семьи и я хочу заменить название члена семьи его настоящим именем (из моего семейного списка контактов). Вы могли бы скопировать и вставить каждую ячейку на нужное место по отдельности, но это займёт очень много времени (особенно, если список длинный). Попробуем это сделать при помощи Специальной вставки.
Обычная команда Paste (Вставить) тут не поможет. Почему? – видно на рисунке ниже. Если Вы скопируете информацию (A6:A19) и вставите в ячейку E4, то эти приставучие пустые ячейки из столбца A будут записаны поверх данных в столбце E, которые Вы хотели бы сохранить. Не желаете ли узнать способ способный пропустить пустые ячейки?
Для этого скопируйте ячейки A5:A19, затем поместите курсор в первую ячейку области, куда необходимо вставить скопированные данные (E4). Далее нажмите Paste Special (Специальная вставка), поставьте галочку на опции Skip Blanks (Пропускать пустые ячейки) и нажмите ОК. Вуаля! Вы успешно скопировали данные из столбца A в столбец E, сохранив все нужные данные. Отличная работа! Это простой пример, но он показывает все возможности, которые открывает для Вас и Ваших таблиц инструмент Skip Blanks (Пропускать пустые ячейки).
Пропускаем пустые ячейки – кратко о главном
- Выберите данные, которые хотите скопировать.
- Скопируйте их.
- Поместите курсор в начальную ячейку области, в которую хотите скопировать.
- Нажмите Paste Special (Специальная вставка).
- Выберите Skip Blanks (Пропускать пустые ячейки).
- Нажмите ОК.
Теперь Вам известны основные принципы работы инструмента Специальная вставка и некоторые классные и супер-классные трюки. Вы можете транспонировать, удалять гиперссылки и пропускать пустые ячейки.
Источник
Заполнение пустых ячеек значениями из соседних ячеек
Как известно, для полноценной работы с данными (фильтрации, сортировки, подведения итогов и т.д.) нужен непрерывный список, т.е. таблица без разрывов (пустых строк и ячеек — по возможности). На практике же часто мы имеем как раз таблицы с пропущенными пустыми ячейками — например после копирования результатов сводных таблиц или выгрузок в Excel из внешних программ. Таким образом, возникает необходимость заполнить пустые ячейки таблицы значениями из верхних ячеек, то бишь.
В общем случае, может возникнуть необходимость делать такое заполнение не только вниз, но и вверх, вправо и т.д. Давайте рассмотрим несколько способов реализовать такое.
Способ 1. Без макросов
Выделяем диапазон ячеек в первом столбце, который надо заполнить (в нашем примере, это A1:A12).
Нажимаем клавишу F5 и затем кнопку Выделить (Special) и в появившемся окне выбираем Выделить пустые ячейки (Blanks) :
Не снимая выделения, вводим в первую ячейку знак «равно» и щелкаем по предыдущей ячейке или жмём стрелку вверх (т.е. создаем ссылку на предыдущую ячейку, другими словами):
И, наконец, чтобы ввести эту формулу сразу во все выделенные (пустые) ячейки нажимаем Ctrl + Enter вместо обычного Enter . И все! Просто и красиво.
В качестве завершающего мазка я советовал бы заменить все созданные формулы на значения, ибо при сортировке или добавлении/удалении строк корректность формул может быть нарушена. Выделите все ячейки в первом столбце, скопируйте и тут же вставьте обратно с помощью Специальной вставки (Paste Special) в контекстом меню, выбрав параметр Значения (Values) . Так будет совсем хорошо.
Способ 2. Заполнение пустых ячеек макросом
Если подобную операцию вам приходится делать часто, то имеем смысл сделать для неё отдельный макрос, чтобы не повторять всю вышеперечисленную цепочку действий вручную. Для этого жмём Alt + F11 или кнопку Visual Basic на вкладке Разработчик (Developer) , чтобы открыть редактор VBA, затем вставляем туда новый пустой модуль через меню Insert — Module и копируем или вводим туда вот такой короткий код:
Как легко можно сообразить, этот макрос проходит в цикле по всем выделенным ячейкам и, если они не пустые, заполняет их значениями из предыдущей ячейки.
Для удобства, можно назначить этому макросу сочетание клавиш или даже поместить его в Личную Книгу Макросов (Personal Macro Workbook), чтобы этот макрос был доступен при работе в любом вашем файле Excel.
Способ 3. Power Query
Power Query — это очень мощная бесплатная надстройка для Excel от Microsoft, которая может делать с данными почти всё, что угодно — в том числе, легко может решить и нашу задачу по заполнению пустых ячеек в таблице. У этого способа два основных преимущества:
- Если данных много, то ручной способ с формулами или макросы могут заметно тормозить. Power Query сделает всё гораздо шустрее.
- При изменении исходных данных достаточно будет просто обновить запрос Power Query. В случае использования первых двух способов — всё делать заново.
Для загрузки нашего диапазона с данными в Power Query ему нужно либо дать имя (через вкладку Формулы — Диспетчер имен), либо превратить в «умную» таблицу командой Главная — Форматировать как таблицу (Home — Format as Table ) или сочетанием клавиш Ctrl + T :
После этого на вкладке Данные (Data) нажмем на кнопку Из таблицы / диапазона (From Table/Range) . Если у вас Excel 2010-2013 и Power Query установлена как отдельная надстройка, то вкладка будет называться, соответственно, Power Query.
В открывшемся редакторе запросов выделим столбец (или несколько столбцов, удерживая Ctrl ) и на вкладке Преобразование выберем команду Заполнить — Заполнить вниз (Transform — Fill — Fill Down) :
Вот и всё 🙂 Осталось готовую таблицу выгрузить обратно на лист Excel командой Главная — Закрыть и загрузить — Закрыть и загрузить в. (Home — Close&Load — Close&Load to. )
В дальнейшем, при изменении исходной таблицы, можно просто обновлять запрос правой кнопкой мыши или на вкладке Данные — Обновить всё (Data — Refresh All) .
Источник
Большинство из нас может столкнуться с этой проблемой, когда мы копируем список данных, который содержит несколько пустых ячеек, а затем вставляем их в другой столбец, пустые ячейки также будут вставлены. Это очень раздражает, когда нам не нужны пробелы и мы хотим вставить только непустые ячейки. Как в таком случае быстро и удобно копировать и вставлять в Excel только непустые ячейки? Вот несколько быстрых приемов, чтобы решить эту проблему:
Скопируйте и вставьте только непустые ячейки с помощью команды Перейти к специальной
Копируйте и вставляйте только непустые ячейки с помощью функции фильтра
Скопируйте и вставьте только непустые ячейки с формулой массива
Скопируйте и вставьте только непустые ячейки с кодом VBA
Скопируйте и вставьте только непустые ячейки с Kutools for Excel
Скопируйте и вставьте только непустые ячейки с помощью команды Перейти к специальной
Для Перейти к специальному , вы можете сначала выбрать все данные, а затем скопировать и вставить их в другое место.
1. Выберите свой список данных, которые вы хотите использовать.
2. Затем нажмите Главная > Найти и выбрать > Перейти к специальному, см. снимок экрана:
3. В Перейти к специальному диалоговое окно, отметьте Константы вариант, см. снимок экрана:
4. Затем нажмите OK, и в списке выбраны только ячейки значений.
5. А затем скопируйте и вставьте данные в нужное место. И были вставлены только непустые значения ячеек. Смотрите скриншот:
Внимание: Этот метод доступен только для констант, он не применяется к ячейкам формулы.
Копируйте и вставляйте только непустые ячейки с помощью функции фильтра
Наблюдения и советы этой статьи мы подготовили на основании опыта команды Фильтр Функция может помочь вам сначала отфильтровать непустые ячейки, а затем вы можете скопировать и вставить их в другие ячейки по мере необходимости.
2. Нажмите Данные > Фильтр, см. снимок экрана:
3. Затем нажмите кнопку раскрывающегося списка в правом углу ячейки в выбранном списке и снимите флажок Пробелы вариант в раскрывающемся меню. Смотрите скриншот:
4, Затем нажмите OK, все непустые ячейки были отфильтрованы, как показано на следующем снимке экрана:
5. Наконец, вы можете скопировать отфильтрованные данные и вставить их в любое нужное место.
Внимание: Таким образом вступают в силу и значения, и формулы.
Скопируйте и вставьте только непустые ячейки с формулой массива
Чтобы скопировать и вставить только непустые ячейки, вы также можете применить следующую формулу массива.
1. Помимо ваших данных, введите в пустую ячейку следующую формулу:
=LOOKUP(«zzzzz»,CHOOSE({1,2},»»,INDEX(A:A,SMALL(IF($A$1:$A$15<>»»,ROW($A$1:$A$15)),ROWS($B$1:B1)))))
Внимание: В приведенной выше формуле A1: A15 — это список данных, который вы хотите использовать. Вы можете изменить его по своему усмотрению.
2, Затем нажмите Shift + Ctrl + Enter вместе, а затем выберите ячейку B1 и перетащите маркер заполнения в диапазон, который вы хотите содержать эту формулу, и все непустые значения ячеек были извлечены. Смотрите скриншот:
3. Поскольку они являются формулами, когда вы копируете их в другое место, вы должны копировать и вставлять их как значения.
Внимание: Эта формула доступна только для констант и не применяется к ячейкам формулы.
Скопируйте и вставьте только непустые ячейки с кодом VBA
Если вас интересует код VBA, вы можете выполнить следующий код, чтобы завершить эту задачу.
1. Удерживайте ALT + F11 ключи, и он открывает Окно Microsoft Visual Basic для приложений.
2. Нажмите Вставить > Модулии вставьте следующий код в Окно модуля.
Код VBA: копируйте и вставляйте только непустые ячейки в Excel
Sub PasteNotBlanks()
'Update 20140325
Dim rng As Range
Dim InputRng As Range, OutRng As Range
xTitleId = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
If InputRng.Columns.Count > 1 Then
MsgBox "Please select one column."
Exit Sub
End If
Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
InputRng.SpecialCells(xlCellTypeConstants).Copy Destination:=OutRng.Range("A1")
End Sub
3, Затем нажмите F5 Нажмите клавишу для запуска этого кода, появится окно с подсказкой, напоминающее вам о выборе диапазона данных, который вы хотите использовать. Смотрите скриншот:
4, Затем нажмите OKпоявится другое окно подсказки, в котором вы сможете выбрать ячейку для ввода данных.
5. Нажмите OK чтобы завершить этот код, и только непустые значения ячеек были вставлены в указанную вами позицию.
Внимание: Этот код доступен только для констант.
Скопируйте и вставьте только непустые ячейки с Kutools for Excel
Есть ли способ намного проще, чем указано выше? Конечно, Kutools for Excel‘s Выбрать непустую ячейкуУтилита s может помочь вам сначала выбрать непустые ячейки, а затем скопировать и вставить их.
После бесплатная установка Kutools for Excel, пожалуйста, сделайте следующее:
1. Выберите диапазон ячеек и щелкните Кутулс > Выберите > Выбрать непустые ячейки. Смотрите скриншот:
2. Затем выбираются непустые ячейки, нажимаем Ctrl + C чтобы скопировать их, затем выберите ячейку, в которой вы хотите вывести результат, нажмите Ctrl + V для вставки выбранных непустых ячеек. Смотрите скриншот:
Скопируйте и вставьте только непустую ячейку
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
NIRODAZ Пользователь Сообщений: 5 |
Помогите написать макрос, который копирует из ячейки данные, вставляет в другом документе, возвращается на первый документ, опускается на одну ячейку, опять копирует, вставляет в другом документе так же опустившись на 1 ячейку, все это при условии, что данные в ячейке есть. |
NIRODAZ Пользователь Сообщений: 5 |
Не знаю, как заставить макрос проверить в ячейке есть данные или она пустая |
VideoAlex Пользователь Сообщений: 656 |
#3 16.01.2017 12:53:46 cells().value Да, кстати, чтобы что-то скопировать не обязательно это выделять.
Изменено: VideoAlex — 16.01.2017 12:59:36 |
||
NIRODAZ Пользователь Сообщений: 5 |
В данном случае не проще, т.к. Нужно определенный диапазон ячеек охватить, между диапазонами пустая ячейка, размер диапазонов разный. |
ivan31888 Пользователь Сообщений: 207 |
#5 16.01.2017 13:38:48 Попробуйте так:
Но этот макрос реализован под мои задачи, какие у вас задачи…? <#0> |
||
NIRODAZ Пользователь Сообщений: 5 |
#6 16.01.2017 13:54:04 Есть тело цикла:
как оформить цикл, чтобы он выполнялся, если в активной ячейке есть данные? |
||
VideoAlex Пользователь Сообщений: 656 |
Мы увидим в конце концов пример как того требуют правила? If IsEmpty(Range(ВАША ЯЧЕЙКА)) = False Then ВАШЕ ТЕЛО ЦИКЛА Изменено: VideoAlex — 16.01.2017 14:47:14 |
ivan31888 Пользователь Сообщений: 207 |
#8 16.01.2017 15:28:47 попробуйте так:
Сделал как смог, может Гуру подправят… <#0> |
||
Если ячейка пустая, то копировать дынные с соседней. |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Обычно, если в Sheet1 ячейка в столбце I не пуста, скопируйте ячейки A, B, I и L на лист 2 в следующей доступной пустой строке. Провести петлю до конца рядов на Sheet1.
Я все время получаю код ошибки 9 или 450 в строке .Copy.
Я подключил модуль к кнопке на Sheet2. Не в этом ли причина?
Или мне следует использовать что-то отличное от функции CopyPaste?
Это код, который я пытался заставить работать.
Option Explicit
Sub copyPositiveNotesData()
Dim erow As Long, lastrow As Long, i As Long
lastrow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lastrow
If Sheet1.Cells(i, "I") <> "" Then
Worksheets("Sheet1").Activate
' *** next line gives Err#450 "Wrong # of arguments or invalid property assignments" ****
Worksheets("Sheet1").Range(Cells(i, "A"), Cells(i, "B"), _
Cells(i, "I"), Cells(i, "L")).Copy
Worksheets("Sheet2").Activate
erow = WorkSheet2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
ActiveSheet.Paste Destination:=Worksheets("Sheet2"). _
Range(Cells(i, "A"), Cells(i, "B"), Cells(i, "C"), Cells(i, "D"))
Worksheets("sheet1").Activate
End If
Next i
Application.CutCopyMode = False
End Sub
Перейти к ответу
Данный вопрос помечен как решенный
Ответы
3
Похоже, проблема в том, что вы пытаетесь скопировать сразу несколько ячеек, что не поддерживается (попробуйте сделать то же самое вручную на самом листе). Вам нужно скопировать либо одну ячейку, либо непрерывный диапазон. Вы можете либо сделать 4 копирования / вставки, либо напрямую установить значения в целевом листе.
Попробуйте изменить копирование / вставку на следующее (не проверено):
Sub copyPositiveNotesData()
Dim erow As Long, lastrow As Long, i As Long, ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
lastrow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lastrow
If Sheet1.Cells(i, "I") <> "" Then
With ws2
.Range("A" & i).Value = ws1.Range("A" & i).Value
.Range("B" & i).Value = ws1.Range("B" & i).Value
.Range("I" & i).Value = ws1.Range("I" & i).Value
.Range("L" & i).Value = ws1.Range("L" & i).Value
End With
End If
Next i
End Sub
Вам нужно использовать Application.Union для объединения 4 ячеек подряд, что-то вроде кода ниже:
Полный измененный код
Option Explicit
Sub copyPositiveNotesData()
Dim erow As Long, lastrow As Long, i As Long
Dim RngCopy As Range
With Worksheets("Sheet1")
lastrow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastrow
If Trim(.Cells(i, "I").Value) <> "" Then
Set RngCopy = Application.Union(.Range("A" & i), .Range("B" & i), .Range("I" & i), .Range("L" & i))
RngCopy.Copy ' copy the Union range
' get next empty row in "Sheet2"
erow = Worksheets("Sheet2").Cells(Worksheets("Sheet2").Rows.Count, 1).End(xlUp).Offset(1, 0).Row
' paste in the next empty row
Worksheets("Sheet2").Range("A" & erow).PasteSpecial xlPasteAll
End If
Next i
End With
Application.CutCopyMode = False
End Sub
Вы можете попробовать это (не проверено)
Option Explicit
Sub copyPositiveNotesData()
Intersect (Sheet1.Range("I2", Sheet1.Cells(.Rows.Count, "I").End(xlUp)).SpeciallCells(xlCellTypeConstants).EntireRow, Sheet1.Range("A:A", "B:B", "I:I", "L:L")).Copy Sheet2.Cells(Sheet2.Rows.Count, 1).End(xlUp).Offset(1, 0)
End Sub