Excel копировать ячейку если она не пустая

Содержание

  1. Excel — если ячейка не пуста, скопируйте определенные ячейки строки на лист 2.
  2. Excel копировать ячейку если она не пустая
  3. Специальная вставка в Excel: пропускаем пустые ячейки, транспонируем и удаляем ссылки
  4. Базовые знания о Специальной вставке
  5. Преобразуем столбцы в строки (или наоборот)
  6. Транспонировать – кратко о главном
  7. Удаляем гиперссылки (много и быстро)
  8. Быстрое удаление гиперссылок – кратко о главном
  9. Пропускаем пустые ячейки
  10. Пропускаем пустые ячейки – кратко о главном
  11. Заполнение пустых ячеек значениями из соседних ячеек
  12. Способ 1. Без макросов
  13. Способ 2. Заполнение пустых ячеек макросом
  14. Способ 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 (Специальная вставка), которое предоставляет доступ к целому набору полезных настроек (см. рисунок ниже).

Воспользуйтесь одним из следующих способов:

  1. На вкладке Home (Главная) нажмите на маленький треугольник под словом Paste (Вставить) и в выпадающем меню выберите Paste Special (Специальная вставка).
  2. Щелкните правой кнопкой мыши, а затем в контекстном меню выберите Paste Special (Специальная вставка).

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

Преобразуем столбцы в строки (или наоборот)

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

Для этого выделяем данные, копируем их, ставим курсор в нужную ячейку, открываем меню инструмента Paste Special (Специальная вставка) и выбираем Transpose (Транспонировать) – все это показано на изображениях ниже. Видите, как просто сделать таблицу такой, как Вы хотите? Представьте себе все возможности, которые дает инструмент Transpose (Транспонировать).

Первый пример транспонирования таблицы:

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

Например, Вам в руки попадает вот такой шаблон (смотрите ниже), предоставленный компанией, чтобы заполнить отчёт о расходах при посещении конференции.

Однако, на конференции, которую Вы посещали, был предоставлен электронный отчёт в таком виде:

Просто скопируйте нужную информацию (в нашем случае B1:B11), поместите курсор в ячейку, в которую Вы хотите вставить эту информацию (ячейка C3 в шаблоне), нажмите Paste Special (Специальная вставка), а затем выберите опцию Transpose (Транспонировать). Вот что получится:

Отлично! Теперь вся информация выглядит единообразно, и Вы можете продолжать добавлять строки для всех совершаемых Вами поездок.

Транспонировать – кратко о главном

  1. Выберите данные.
  2. Скопируйте выбранные данные. Команда Cut (Вырезать) не позволит использовать Специальную вставку, поэтому воспользуйтесь именно командой Copy (Копировать).
  3. Поместите курсор в ячейку, в которую нужно вставить данные.

Замечание: Убедитесь, что имеется достаточно места для вставки данных. Не выделяйте всю строку или столбец, если не располагаете достаточным количеством свободного места. Убедитесь, что новые данные не будут записаны поверх существующих и нужных Вам.

  1. Нажмите PasteSpecial (Специальная вставка). Это можно сделать 2-мя путями:
    • Щелкните правой кнопкой мыши и выберите в контекстном меню Paste Special (Специальная вставка).
    • На вкладке Home (Главная) под командой Paste (Вставить) нажмите маленький треугольник и в открывшемся меню выберите Paste Special (Специальная вставка).

Оба способа откроют диалоговое окно Paste Special (Специальная вставка), в котором Вы найдёте множество полезных настроек.

  • Поставьте галочку в строке опции Transpose (Транспонировать).
  • Это было весело! Теперь давайте попробуем другую интересную функцию Специальной вставки. Этот трюк особенно полезен, когда требуется вставить текст, насыщенный гиперссылками. Гиперссылки иногда попадаются под руку в процессе работы с данными в Excel. Обратите внимание на синий подчёркнутый текст на рисунке ниже. В каждой ячейке столбца A содержится гиперссылка. Каждый раз, когда Вы кликаете по ячейке, компьютер открывает гиперссылку. Вы можете щелкать правой кнопкой мыши по каждой ячейке и выбирать команду Remove hyperlink (Удалить гиперссылку), но это займёт целую вечность. Представьте, если в Вашей таблице содержится 2000 строк и 1000 столбцов.

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

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

    Нажмите Paste Special (Специальная вставка). В появившемся одноименном диалоговом окне выберите пункт Values (Значения) и нажмите ОК. После этого все гиперссылки будут удалены, и Вы сможете переместить данные на их исходное место. Очень просто, правда? Посмотрите на рисунки ниже, там показано пошаговое выполнение этой операции.

    1. Выделите все ячейки, из которых требуется удалить гиперссылки.
    2. Скопируйте их.
    3. Поставьте курсор в ячейку, куда необходимо вставить скопированные данные.
    4. Нажмите Paste Special (Специальная вставка).
    5. Выберите пункт Values (Значения).
    6. Нажмите ОК.
    7. Вырежьте и вставьте ячейки в любое нужное Вам место.

    Пропускаем пустые ячейки

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

    Обычная команда Paste (Вставить) тут не поможет. Почему? – видно на рисунке ниже. Если Вы скопируете информацию (A6:A19) и вставите в ячейку E4, то эти приставучие пустые ячейки из столбца A будут записаны поверх данных в столбце E, которые Вы хотели бы сохранить. Не желаете ли узнать способ способный пропустить пустые ячейки?

    Для этого скопируйте ячейки A5:A19, затем поместите курсор в первую ячейку области, куда необходимо вставить скопированные данные (E4). Далее нажмите Paste Special (Специальная вставка), поставьте галочку на опции Skip Blanks (Пропускать пустые ячейки) и нажмите ОК. Вуаля! Вы успешно скопировали данные из столбца A в столбец E, сохранив все нужные данные. Отличная работа! Это простой пример, но он показывает все возможности, которые открывает для Вас и Ваших таблиц инструмент Skip Blanks (Пропускать пустые ячейки).

    Пропускаем пустые ячейки – кратко о главном

    1. Выберите данные, которые хотите скопировать.
    2. Скопируйте их.
    3. Поместите курсор в начальную ячейку области, в которую хотите скопировать.
    4. Нажмите Paste Special (Специальная вставка).
    5. Выберите Skip Blanks (Пропускать пустые ячейки).
    6. Нажмите ОК.

    Теперь Вам известны основные принципы работы инструмента Специальная вставка и некоторые классные и супер-классные трюки. Вы можете транспонировать, удалять гиперссылки и пропускать пустые ячейки.

    Источник

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

    Как известно, для полноценной работы с данными (фильтрации, сортировки, подведения итогов и т.д.) нужен непрерывный список, т.е. таблица без разрывов (пустых строк и ячеек — по возможности). На практике же часто мы имеем как раз таблицы с пропущенными пустыми ячейками — например после копирования результатов сводных таблиц или выгрузок в 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 хорошая идея3


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

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

    1. Выберите свой список данных, которые вы хотите использовать.

    doc-copy-only-nonblanks1

    2. Затем нажмите Главная > Найти и выбрать > Перейти к специальному, см. снимок экрана:

    doc-copy-only-nonblanks1

    3. В Перейти к специальному диалоговое окно, отметьте Константы вариант, см. снимок экрана:

    doc-copy-only-nonblanks1

    4. Затем нажмите OK, и в списке выбраны только ячейки значений.

    doc-copy-only-nonblanks1

    5. А затем скопируйте и вставьте данные в нужное место. И были вставлены только непустые значения ячеек. Смотрите скриншот:

    doc-copy-only-nonblanks1

    Внимание: Этот метод доступен только для констант, он не применяется к ячейкам формулы.


    стрелка синий правый пузырь Копируйте и вставляйте только непустые ячейки с помощью функции фильтра

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

    2. Нажмите Данные > Фильтр, см. снимок экрана:

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

    3. Затем нажмите кнопку раскрывающегося списка в правом углу ячейки в выбранном списке и снимите флажок Пробелы вариант в раскрывающемся меню. Смотрите скриншот:
    doc-copy-only-nonblanks1

    4, Затем нажмите OK, все непустые ячейки были отфильтрованы, как показано на следующем снимке экрана:

    doc-copy-only-nonblanks1

    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)))))

    doc-copy-only-nonblanks1

    Внимание: В приведенной выше формуле A1: A15 — это список данных, который вы хотите использовать. Вы можете изменить его по своему усмотрению.

    2, Затем нажмите Shift + Ctrl + Enter вместе, а затем выберите ячейку B1 и перетащите маркер заполнения в диапазон, который вы хотите содержать эту формулу, и все непустые значения ячеек были извлечены. Смотрите скриншот:

    doc-copy-only-nonblanks1

    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 Нажмите клавишу для запуска этого кода, появится окно с подсказкой, напоминающее вам о выборе диапазона данных, который вы хотите использовать. Смотрите скриншот:

    doc-copy-only-nonblanks1

    4, Затем нажмите OKпоявится другое окно подсказки, в котором вы сможете выбрать ячейку для ввода данных.

    doc-copy-only-nonblanks1

    5. Нажмите OK чтобы завершить этот код, и только непустые значения ячеек были вставлены в указанную вами позицию.

    Внимание: Этот код доступен только для констант.


    стрелка синий правый пузырь Скопируйте и вставьте только непустые ячейки с Kutools for Excel

    Есть ли способ намного проще, чем указано выше? Конечно, Kutools for Excel‘s Выбрать непустую ячейкуУтилита s может помочь вам сначала выбрать непустые ячейки, а затем скопировать и вставить их.

    После бесплатная установка Kutools for Excel, пожалуйста, сделайте следующее:

    1. Выберите диапазон ячеек и щелкните Кутулс > Выберите > Выбрать непустые ячейки. Смотрите скриншот:
    документ выберите непустую ячейку 2

    2. Затем выбираются непустые ячейки, нажимаем Ctrl + C чтобы скопировать их, затем выберите ячейку, в которой вы хотите вывести результат, нажмите Ctrl + V для вставки выбранных непустых ячеек. Смотрите скриншот:
    документ выберите непустую ячейку 3

    стрелка синий правый пузырь Скопируйте и вставьте только непустую ячейку


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

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

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

    вкладка kte 201905


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

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

    офисный дно

     

    NIRODAZ

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

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

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

     

    NIRODAZ

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

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

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

     

    VideoAlex

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

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

    #3

    16.01.2017 12:53:46

    cells().value
    а не проще ли скопировать все непустые ячейки сразу?

    Да, кстати, чтобы что-то скопировать не обязательно это выделять.

    Код
    Sub excample()
     If IsEmpty(Range("A1")) = True Then
     MsgBox "Ячейка пустая"
     Else
     MsgBox "Ячейка непустая"
     End If
    End Sub

    Изменено: VideoAlex16.01.2017 12:59:36

     

    NIRODAZ

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

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

    В данном случае не проще, т.к. Нужно определенный диапазон ячеек охватить, между диапазонами пустая ячейка, размер диапазонов разный.

     

    ivan31888

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

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

    #5

    16.01.2017 13:38:48

    Попробуйте так:

    Код
    Sub Макрос2()
    x = Cells(Rows.Count, 3).End(xlUp).Row
    Set Z = Range("b1")
    For i = 1 To x
       If Z = 0 Then
       Set Z = Z.Offset(-1, 0)
       Z.Copy
       Set Z = Z.Offset(1, 0)
       Z.Select
       Selection.PasteSpecial Paste:=xlPasteValues
       Set Z = Z.Offset(1, 0)
       Else
       Set Z = Z.Offset(1, 0)
       End If
    Next
    MsgBox ("значение х  " & x & Z)
    End Sub
    

    Но этот макрос реализован под мои задачи, какие у вас задачи…?

    <#0>
    Бессмысленно осмысливать смысл неосмысленными мыслями.

     

    NIRODAZ

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

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

    #6

    16.01.2017 13:54:04

    Есть тело цикла:

    Код
    Windows("нереализованные товары1.xlsm").Activate
    ActiveCell.Offset(1,0).Range("A1").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("нереализованные товары.xlsx").Activate
    ActiveCell.Offset(1,0).Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,  SkipBlanks:=False, Transpose:=False

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

     

    VideoAlex

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

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

    Мы увидим в конце концов пример как того требуют правила?
    Чем вас не устроила проверка на наличие данных которую я дал?

    If IsEmpty(Range(ВАША ЯЧЕЙКА)) = False Then ВАШЕ ТЕЛО ЦИКЛА
    if Range(Ваша ячейка).value <> «» then СДЕЛАТЬ ТО ЧТО НАДО

    Изменено: VideoAlex16.01.2017 14:47:14

     

    ivan31888

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

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

    #8

    16.01.2017 15:28:47

    попробуйте так:

    Код
    Sub HHH()
    
    Dim WB1 As String, WB2 As String, x As Range, y As Range  'Описываем переменные
    
    WB1 = Workbooks("нереализованные товары1.xlsm").Name 
    
    WB2 = Workbooks("нереализованные товары.xlsx").Name 
    Set y = Workbooks("нереализованные товары.xlsx").Sheets("Лист1").Range("A1")
    
    Set x = Workbooks("нереализованные товары1.xlsm").Sheets("Лист1").Range("A1")
    x.Select
    s = Cells(Rows.Count, 1).End(xlUp).Row 
    For i = 1 To s
    Windows(WB1).Activate
    Set x = Range("A1")
    x = x.Offset(1, 0)
    If x > 0 Then
    Application.CutCopyMode = False
    Selection.Copy
    
    Windows(WB2).Activate
    
    ActiveCell.Offset(1, 0).Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Else
    Exit Sub
    End If
    Next
    
    
    End Sub
    

    Сделал как смог, может Гуру подправят…

    <#0>
    Бессмысленно осмысливать смысл неосмысленными мыслями.

    Если ячейка пустая, то копировать дынные с соседней.

    vladislaf

    Дата: Четверг, 21.04.2016, 17:29 |
    Сообщение № 1

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

    Ранг: Новичок

    Сообщений: 29


    Репутация:

    1

    ±

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


    Excel 2013

    Добрый день!
    Скажите пожалуйста можно ли написать формулу.
    Если ячейка в столбце F пустая, то надо скопировать данные с соседней ячейки столбца E.
    Если в ячейке в столбце F есть данные, то пропускаем её.
    Много данных, полдня надо потратить.
    Файлик прикрепил.

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

    4829689.xlsx
    (14.1 Kb)

     

    Ответить

    pabchek

    Дата: Четверг, 21.04.2016, 17:41 |
    Сообщение № 2

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

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

    Сообщений: 931


    Репутация:

    218

    ±

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


    Excel 2007

    Не совсем понял. Так?
    или так?

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

    9250295.xlsx
    (15.2 Kb)


    «Учиться, учиться и еще раз учиться!»
    WM: R399923528092

    Сообщение отредактировал pabchekЧетверг, 21.04.2016, 17:43

     

    Ответить

    gling

    Дата: Четверг, 21.04.2016, 17:44 |
    Сообщение № 3

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

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

    Сообщений: 2449


    Репутация:

    652

    ±

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


    2010

    Пишите в пустой столбец формулу протягиваете вниз, копируете столбец с результатом и вставляете в столбец F спец.вставка—значения.


    ЯД-41001506838083

     

    Ответить

    vladislaf

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

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

    Ранг: Новичок

    Сообщений: 29


    Репутация:

    1

    ±

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


    Excel 2013

    Круто!
    Спасибо!

     

    Ответить

    Обычно, если в 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
    

    Другие вопросы по теме

    Понравилась статья? Поделить с друзьями:

    А вот еще интересные статьи:

  • Excel копия листа в другую книгу
  • Excel копировать ширину столбца
  • Excel копируются значения а не формулы
  • Excel копировать часть строки
  • Excel копируется только текст

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии