Перенос ячеек при условии excel

Содержание

  1. Как в excel перенести данные с одного листа на другой с определенных ячеек
  2. Функция ВПР в Excel для чайников и не только
  3. Видео — «Быстрый перенос данных с помощью функции ВПР в Экселе»
  4. Функция ВПР в Экселе: пошаговая инструкция
  5. Особенности использования формулы ВПР в Excel
  6. Интервальный просмотр в функции ВПР
  7. Синтаксис и описание функции ВПР в Excel
  8. Как использовать именованный диапазон или таблицу в формулах ВПР
  9. Постановка задачи
  10. Ошибки #Н/Д и их подавление
  11. Аргументы функции
  12. Как пользоваться функцией ВПР в Excel
  13. Быстрое сравнение двух таблиц с помощью ВПР
  14. Как работает функция ВПР в Excel: несколько примеров для «чайников».
  15. Использование точного и приблизительного поиска.
  16. Использование нескольких условий.
  17. Как в excel перенести данные с одного листа на другой с определенных ячеек
  18. Копирование таблицы с сохранением структуры
  19. Способ 1: Специальная вставка
  20. Способ 2: Выделение столбцов перед копированием
  21. Способ 3: Вставка формул с сохранением формата
  22. Как в excel перенести данные с одного листа на другой с определенных ячеек

Как в excel перенести данные с одного листа на другой с определенных ячеек

Функция ВПР в Excel для чайников и не только

Самое простое применение функция ВПР это быстрый перенос данных из одной таблицы в другую.

Например, у вас есть большой прайс на 500 позиций и запрос от покупателя, скажем на 50 позиций (в реальности и прайс и запрос могут быть гораздо больше, но принцип от этого не меняется).

Вам нужно быстро найти цены на эти 50 позиций. Разумеется, можно отдельно искать каждую позицию в большом прайсе и потратить на это 30 – 60 минут, а можно сделать это менее чем за минуту при помощи функции ВПР.

Итак, у нас в прайсе 500 позиций. Позиции обозначаются следующим образом, буквами обозначается вид позиции, а цифрами модификация.

Например, «Стул_1» и «Стул_21» это два совершенно разных стула.

Цены в прайсе указаны для примера и вряд ли имеют отношение к реальным ценам.

В ООО «ЫкэА» пришел запрос от «Петровича».

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

Однако это нас не страшит, во-первых, у нас есть ВПР, во-вторых мы и не такое видали.

Петрович требует, чтобы мы очень быстро проставили цены в его запросе. Ждать он намерен максимум 5 минут. Ведь другие поставщики уже завалили его предложениями.

Нам не хочется терять такого клиента и мы практически мгновенно открываем прайс:

Получается у нас должно быть открыто два файла (две книги в Эксель). Запрос от Петровича и Прайс.

Это как раз то что необходимо, осталось только перенести цены из прайса в запрос.

Для этого перейдем в таблицу запроса и в первой ячейке столбца «Цены» (D4) введем «=впр» и два раза кликнем на значок функции:

Сразу же после этого, в строке формулы нужно поставить курсор внутри надписи ВПР и нажать Fx, перед вами появится окно с аргументами функции ВПР:

В аргументах функции вы говорите Экселю что и где нужно искать:

Искомое значение — это значение (в данном случае наименование), цену которого вы хотите найти в прайсе. Соответственно кликайте на первую ячейку столбца «Наименование».

Далее, сразу переходите в «Прайс»:

Теперь в аргументах функции заполните следующие поля:

Таблица — выделяете столбцы, которые содержат искомые наименования и цены, таким образом, чтобы наименования были крайним левым столбцом.

Так работает функция ВПР — ищет искомые значения в крайнем левом столбце (для ВПР это столбец №1). Когда ВПР находит искомое значение он начинает смотреть правее, в тот столбец, который вы указали в «Номере столбца».

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

Интервальный просмотр — ставьте 0. Ноль обозначает точное соответствие.

После заполнения аргументов функции нажимайте «Ок» и если всё сделано верно, то в столбце «Цена» (файл «Запрос от Петровича»), появится цена.

Вам нужно протянуть цены на оставшиеся ячейки:

Коллеги, вот и всё, вы овладели функцией ВПР.

Очень важное замечание!

Обратите внимание на то, что сейчас мы работали в двух разных файлах (книгах).

Когда работа идёт в двух разных книгах, Эксель автоматически закрепляет таблицу в функции ВПР:

Делает это он при помощи значка $, который проставляет перед столбцами и строками таблицы.

Это позволяет не съезжать формуле когда вы протягиваете её вниз. Это очень актуально когда вы работаете в рамках одного листа или одной книги (в этом случае Эксель автоматически Не закрепляет ячейки).

Давайте посмотрим что получиться если протянуть формулу «без закрепления»:

Обратите внимание, что для первой ячейки всё в порядке и диапазон B3:C502 точно соответствует той таблице, которую мы выделили для поиска данных, однако (без закрепления) так будет не всегда, по мере «протягивания» формулы ВПР вниз, будет смещаться и таблица, пока однажды, мы не увидим вот такую странную надпись #Н/Д:

#Н/Д значит что функция ВПР не смогла найти цену Стул_13 в прайсе и это не мудрено, ведь диапазон таблицы в формуле ВПР уехал ниже этого значения:

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

Очень важное замечание №2

Как вы заметили, формулы ссылаются на определённые ячейки, другими словами между формулами и исходными данными есть связь. Стоит изменить исходные данные и значения в формулах сразу изменятся.

Особенно остро это чувствуется в ВПР. Если вы вдруг забудетесь и в исходной табличке добавите лишний столбец в «неположенном месте», то в формула ВПР выдаст совсем неожиданные значения.

Поэтому, если вам не нужна связь между таблицами, рекомендую формулы превратить в данные.

Для этого нужно выделить столбец с формулами, нажать Ctrl+C и в левом верхнем углу выбрать «Вставить» — «Вставить значения».

Для тех кто не любит изучать картинки, я записал небольшое видео в котором показываю всё то, что мы проговорили выше (кроме вставки значений):

Видео — «Быстрый перенос данных с помощью функции ВПР в Экселе»

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

Это очень актуально для тех кто работает в закупках и отправляет заказы поставщику.

Обычно происходит следующая ситуация. Вы отправляете заказ поставщику, через некоторое время получаете ответ в виде счёта и сверяете заказ с счётом.

Всё ли есть в счёте, в нужном ли количестве, по правильным ли ценам и т.д.

Функция ВПР в Экселе: пошаговая инструкция

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

Во второй – цены:

Если перечень товаров в обеих таблицах совпадает, то, зная магическое сочетание Ctrl+C и Ctrl+V, данные о ценах можно легко подставить к данным о количестве. Однако очередность позиций в обеих таблицах не совпадает. Тупо скопировать цены и подставить к количеству не получится.

Поэтому мы не можем прописать формулу умножения и «протянуть» вниз на все позиции.

Что делать? Надо как-то цены из второй таблицы подставить к соответствующему количеству в первой, т.е. цену товара А к количеству товара А, цену Б к количеству Б и т.д.

Функция ВПР в Эксель легко справится с задачей.

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

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

Кликаем по надписи «ВПР». Открывается следующее диалоговое окно.

Теперь нужно заполнить предлагаемые поля. В первом окошке «Искомое_значение» нужно указать критерий для ячейки, в которую мы вписываем формулу. В нашем случае это ячейка с наименованием товара «А».

Следующее поле «Таблица». В нем нужно указать диапазон данных, где будет осуществляться поиск нужных значений. В нашем случае это вторая таблица с ценой. При этом крайний левый столбец выделяемого диапазона должен содержать те самые критерии, по которым осуществляется поиск (столбец с наименованиями товаров). Затем таблица выделяется вправо минимум до того столбца, где находятся искомые значения (цены). Можно и дальше вправо выделить, но это уже ни на что не влияет. Главное, чтобы выделенная таблица начиналась со столбца с критериями и захватывала нужный столбец с данными. Также следует обратить внимание на тип ссылок, они должны быть абсолютными, т.к. формула будет копироваться в другие ячейки.

Следующее поле «Номер_столбца» — это число, на которое столбец с искомыми данными (ценами) отстоит от столбца с критерием (наименованием товара) включительно. То есть отсчет идет, начиная с самого столбца с критерием. Если у нас во второй таблице оба столбца находятся рядом, то нужно указать число 2 (первый – критерий, второй — цены). Часто бывает, что данные отстоят от критерия на 10 или 20 столбцов. Это не важно, Excel все сосчитает.

Последнее поле «Интервальный_просмотр», где указывается тип поиска: точное (0) или приблизительное (1) совпадение критерия. Пока ставим 0 (или ЛОЖЬ). Второй вариант рассмотрен ниже.

Нажимаем ОК. Если все правильно и значение критерия есть в обеих таблицах, то на месте только что введенной формулы появится некоторое значение. Остается только протянуть (или просто скопировать) формулу вниз до последней строки таблицы.

Теперь легко рассчитать стоимость простым умножением количества на цену.

Формулу ВПР можно прописать вручную, набирая аргументы по порядку, и разделяя точкой с запятой (см. видеоурок ниже).

Особенности использования формулы ВПР в Excel

Функция ВПР имеет свои особенности, о которых следует знать.

1. Первую особенность можно считать общей для функций, которые используются для многих ячеек путем прописывания формулы в одной из них и дальнейшим копированием в остальные. Здесь нужно обращать внимание на относительность и абсолютность ссылок . Конкретно в ВПР критерий (первое поле) должно иметь относительную ссылку (без знаков $), так как у каждой ячейки свой собственный критерий. А вот поле «Таблица» должно иметь абсолютную ссылку (адрес диапазона прописывается через $). Если этого не сделать, то при копировании формулы диапазон «поедет» вниз и многие значения просто не найдутся, так как искать будет негде.

2. Номер столбца, указываемый в третьем поле «Номер_столбца» при использовании Мастера функций, должен отсчитываться, начиная с самого критерия.

3. Функция ВПР из диапазона с искомыми данными выдает первое сверху значение. Это значит, что, если во второй таблице, откуда мы пытаемся «подтянуть» некоторые данные, присутствуют несколько ячеек с одинаковым критерием, то в рамках выделенного диапазона ВПР захватит первое сверху значение. Об этом следует помнить. К примеру, если мы хотим к цене товара подтянуть количество из другой таблицы, а там этот товар встречается несколько раз (в нескольких строках), то к цене подтянется первое сверху количество.

4. Последний параметр формулы, который 0 (нуль), ставить нужно обязательно. Иначе формула может криво работать.

5. После использования ВПР саму формулу лучше сразу удалить, оставив только полученные значения. Делается это очень просто. Выделяем диапазон с полученными значениями, нажимаем «копировать» и на это же место с помощью специальной вставки вставляем значения. Если таблицы находятся в разных книгах Excel, то очень удобно разорвать внешние связи (оставив вместо них только значения) с помощью специальной команды, которая находится по пути Данные → Изменить связи.

После вызова функции разрывания внешних связей появится диалоговое окно, где нужно нажать кнопку «Разорвать связь» и затем «Закрыть».

Это позволит удалить сразу все внешние ссылки.

Интервальный просмотр в функции ВПР

Наступило время обсудить последний аргумент функции ВПР. Как правило, указываю 0, чтобы функция искала точное совпадение критерия. Но есть вариант приблизительного поиска, это называется интервальный просмотр.

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

Проще понять на примере. По результатам выполнения плана продаж каждому торговому агенту нужно выдать заслуженную премию (в процентах от оклада). Если план выполнен менее, чем на 100%, премия не положена, если план выполнен от 100% до 110% (110% не входит) – премия 20%, от 110% до 120% (120% не входит) – 40%, 120% и более – премия 60%. Данные находятся в следующем виде.

Требуется подставить премию на основании выполнения планов продаж. Для решения задачи в первой ячейке пропишем следующую формулу:

и скопируем вниз.

На рисунке ниже изображена схема, как работает интервальный просмотр функции ВПР.

Джеки Чан выполнил план на 124%. Значит ВПР в качестве критерия ищет во второй таблице ближайшее меньшее значение. Это 120%. Затем отсчитывает 2 столбца и возвращает премию 60%. Брюс Ли план не выполнил, поэтому его ближайший меньший критерий – 0%.

Синтаксис и описание функции ВПР в Excel

Итак, так как второе название этой статьи «Функция ВПР в Excel для чайников», начнем с того что узнаем, что же такое функция ВПР и что она делает? Функция ВПР на английском VLOOKUP, ищет указанное значение и возвращает соответствующее значение из другого столбца.

Как работает функция ВПР? Функция ВПР в Excel выполняет поиск по вашим спискам данных на основе уникального идентификатора и предоставляет вам часть информации, связанную с этим уникальным идентификатором.

Буква «В» в ВПР означает «вертикальный». Она используется для дифференциации функции ВПР и ГПР, которая ищет значение в верхней строке массива («Г» обозначает «горизонтальный»).

Функция ВПР доступна во всех версиях Excel 2016, Excel 2013, Excel 2010, Excel 2007, Excel 2003.

Синтаксис функции ВПР выглядит следующим образом:

Как видите, функция ВПР имеет 4 параметра или аргумента. Первые три параметра обязательные, последний – необязательный.

  1. искомое_значение – это значение для поиска.

Это может быть либо значение (число, дата или текст), либо ссылка на ячейку (ссылка на ячейку, содержащую значение поиска), или значение, возвращаемое некоторой другой функцией Excel. Например:

  • Поиск числа : =ВПР(40; A2:B15; 2) – формула будет искать число 40.
  • Поиск текста : =ВПР(«яблоки»; A2:B15; 2) – формула будет искать текст «яблоки». Обратите внимание, что вы всегда включаете текстовые значения в «двойные кавычки».
  • Поиск значения из другой ячейки : =ВПР(C2; A2:B15; 2) – формула будет искать значение в ячейке C2.
  1. таблица – это два или более столбца данных.

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

Итак, наша формула =ВПР(40; A2:B15; 2) будет искать «40» в ячейках от A2 до A15, потому что A – это первый столбец таблицы A2: B15.

  1. номер_столбца – номер столбца в таблице, из которой должно быть возвращено значение в соответствующей строке.

Самый левый столбец в указанной таблице равен 1, второй столбец – 2, третий – 3 и т. д.

Итак, теперь вы можете прочитать всю формулу =ВПР(40; A2:B15; 2). Формула ищет «40» в ячейках от A2 до A15 и возвращает соответствующее значение из столбца B (потому что B является вторым столбцом в указанной таблице A2:B15).

4. интервальный_просмотр определяет, ищете ли вы точное соответствие (ЛОЖЬ) или приблизительное соответствие (ИСТИНА или опущено). Этот последний параметр является необязательным, но очень важным.

Как использовать именованный диапазон или таблицу в формулах ВПР

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

Чтобы создать именованный диапазон, просто выберите ячейки и введите любое имя в поле « Имя », слева от панели « Формула ».

Функция ВПР в Excel – Присвоение имени диапазону

Теперь вы можете написать следующую формулу ВПР, чтобы получить цену Продукта 1:

Функция ВПР в Excel – Пример функции ВПР с именем диапазона

Большинство имен диапазонов в Excel применяются ко всей книге, поэтому вам не нужно указывать имя рабочего листа, даже если ваш диапазон поиска находится на другом листе. Такие формулы гораздо более понятны. Кроме того, использование именованных диапазонов может быть хорошей альтернативой абсолютным ссылкам на ячейки. Поскольку именованный диапазон не изменяется, когда формула копируется в другие ячейки, и вы можете быть уверены, что ваш диапазон поиска всегда останется верным.

Если вы преобразовали диапазон ячеек в полнофункциональную таблицу Excel (вкладка «Вставка» –> «Таблица»), вы можете выбрать диапазон поиска с помощью мыши, а Microsoft Excel автоматически добавит имена колонок или имя таблицы в формулу:

Функция ВПР в Excel – Пример функции ВПР с именем таблицы

Полная формула может выглядеть примерно так:

или даже =ВПР(“Продукт 1”;Таблица6;2).

Как и именованные диапазоны, имена столбцов являются постоянными, а ссылки на ячейки не изменятся независимо от того, где копируется формула ВПР.

Постановка задачи

Итак, имеем две таблицы – таблицу заказов и прайс-лист:

Задача – подставить цены из прайс-листа в таблицу заказов автоматически, ориентируясь на название товара с тем, чтобы потом можно было посчитать стоимость.

Ошибки #Н/Д и их подавление

Функция ВПР (VLOOKUP) возвращает ошибку #Н/Д (#N/A) если:

  • Включен точный поиск (аргумент Интервальный просмотр=0) и искомого наименования нет в Таблице.
  • Включен приблизительный поиск (Интервальный просмотр=1), но Таблица, в которой происходит поиск не отсортирована по возрастанию наименований.
  • Формат ячейки, откуда берется искомое значение наименования (например B3 в нашем случае) и формат ячеек первого столбца (F3:F19) таблицы отличаются (например, числовой и текстовый). Этот случай особенно характерен при использовании вместо текстовых наименований числовых кодов (номера счетов, идентификаторы, даты и т.п.) В этом случае можно использовать функции Ч и ТЕКСТ для преобразования форматов данных. Выглядеть это будет примерно так:
    =ВПР(ТЕКСТ(B3);прайс;0)
  • Функция не может найти нужного значения, потому что в коде присутствуют пробелы или невидимые непечатаемые знаки (перенос строки и т.п.). В этом случае можно использовать текстовые функции СЖПРОБЕЛЫ (TRIM) и ПЕЧСИМВ (CLEAN) для их удаления:
    =ВПР(СЖПРОБЕЛЫ(ПЕЧСИМВ(B3));прайс;0)
    =VLOOKUP(TRIM(CLEAN(B3));прайс;0)

Для подавления сообщения об ошибке #Н/Д (#N/A) в тех случаях, когда функция не может найти точно соответствия, можно воспользоваться функцией ЕСЛИОШИБКА (IFERROR) . Так, например, вот такая конструкция перехватывает любые ошибки создаваемые ВПР и заменяет их нулями:

Аргументы функции

  • lookup_value(искомое_значение) – это величина для поиска, из крайнего левого столбца таблицы. Это может быть значение, ссылка на ячейку или текстовая строка. В примере со студентами это их фамилии;
  • table_array (таблица) – это диапазон данных, в котором будет осуществлен поиск. Это может быть ссылка на диапазон ячеек или именованный диапазон. В примере с таблицей со студентами, это будет вся таблица, которая содержит оценку и фамилии студентов;
  • col_index (номер_столбца) – это порядковый номер столбца в диапазоне с данными, из которого будет получена искомая величина;
  • [range lookup]([интервальный_просмотр]) – этот аргумент указывает на точность совпадения данных при поиске. Укажите “0” – если точное, “1” – если приблизительное совпадение.

Как пользоваться функцией ВПР в Excel

Допустим, на склад предприятия по производству тары и упаковки поступили материалы в определенном количестве.

Стоимость материалов – в прайс-листе. Это отдельная таблица.

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

  1. Приведем первую таблицу в нужный нам вид. Добавим столбцы «Цена» и «Стоимость/Сумма». Установим денежный формат для новых ячеек.
  2. Выделяем первую ячейку в столбце «Цена». В нашем примере – D2. Вызываем «Мастер функций» с помощью кнопки «fx» (в начале строки формул) или нажав комбинацию горячих клавиш SHIFT+F3. В категории «Ссылки и массивы» находим функцию ВПР и жмем ОК. Данную функцию можно вызвать перейдя по закладке «Формулы» и выбрать из выпадающего списка «Ссылки и массивы».

Нажимаем ОК. А затем «размножаем» функцию по всему столбцу: цепляем мышью правый нижний угол и тянем вниз. Получаем необходимый результат.

Теперь найти стоимость материалов не составит труда: количество * цену.

Функция ВПР связала две таблицы. Если поменяется прайс, то и изменится стоимость поступивших на склад материалов (сегодня поступивших). Чтобы этого избежать, воспользуйтесь «Специальной вставкой».

  1. Выделяем столбец со вставленными ценами.
  2. Правая кнопка мыши – «Копировать».
  3. Не снимая выделения, правая кнопка мыши – «Специальная вставка».
  4. Поставить галочку напротив «Значения». ОК.

Формула в ячейках исчезнет. Останутся только значения.

Быстрое сравнение двух таблиц с помощью ВПР

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

    В старом прайсе делаем столбец «Новая цена».

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

Как работает функция ВПР в Excel: несколько примеров для «чайников».

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

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

Использование точного и приблизительного поиска.

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

Обратите внимание, что четвертый параметр равен 1.

Кое-что из результатов определено верно, но в большинстве случаев – ошибки. Функция продолжает просматривать данные столбца D с наименованиями товаров до тех пор, пока не встретит значение больше, чем заданное ей в качестве критерия поиска. Тогда она останавливается и возвращает цену.

Поиск цены на египетские бананы закончился на первой же позиции, так как во второй записаны сливы. А это слово по правилам алфавита стоит ниже, чем «Бананы Египет». Значит, дальше искать не нужно. Получили 145. И не важно, что это цена абрикосов. Поиск цены на сливы происходил до тех пор, пока в D15 не встретилось слово, которое по алфавиту стоит ниже: яблоки. Остановились и взяли цену из предыдущей строки.

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

Вы спросите: «А зачем тогда этот неточный просмотр, если с ним столько проблем?»

Он отлично подходит для выбора значений из определенных интервалов.

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

Если у нас количество товара 11 единиц, то мы просматриваем столбец D до тех пор, пока не встретим число, большее 11. Это 20 и находится оно в 4-й строке. Останавливаемся здесь. Значит, наша скидка расположена в 3-й строке и равна 3%.

Использование нескольких условий.

Еще один простой пример для «чайников» – как использовать при выборе нужного значения несколько условий?

Предположим, у нас есть список имен и фамилий. Нам нужно найти нужного человека и вывести сумму его дохода.

В F2 используем следующую формулу:

Разберем пошагово, как в этом случае работает ВПР.

В начале мы формируем условие. Для этого при помощи оператора & «склеиваем» вместе имя и фамилию, а между ними вставляем пробел.

Не забываем при этом пробел заключить в кавычки, иначе Excel не воспримет его как текст.

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

Дальше все происходит по уже отработанной схеме.

Можно попробовать подстраховаться на тот случай, если между именем и фамилией введено несколько пробелов. Знак пробела в формуле заменяем на знак подстановки «*».

Как в excel перенести данные с одного листа на другой с определенных ячеек

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

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

Копирование таблицы с сохранением структуры

Если у вас есть одна или несколько таблиц, форматирование которых необходимо сохранять при переносе, то обычный метод Ctrl+CCtrl+V не даст нужного результата.

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

Расширять вручную таблицы размером в 20-30 ячеек, тем более, когда у вас их несколько, не самая увлекательная задача. Однако существует несколько способов значительно упростить и оптимизировать весь процесс переноса при помощи инструментов, уже заложенных в программу.

Способ 1: Специальная вставка

Этот способ подойдёт в том случае, если из форматирования вам достаточно сохранить ширину столбцов и подтягивать дополнительные данные или формулы из другого файла/листа нет нужды.

  1. Выделите исходные таблицы и проведите обычный перенос комбинацией клавиш Ctrl+CCtrl+V.
  2. Как мы помним из предыдущего примера, ячейки получаются стандартного размера. Чтобы исправить это, выделите скопированный массив данных и кликните правой кнопкой по нему. В контекстном меню выберите пункт «Специальная вставка».

В результате у вас получится таблица идентичная той, что была в первом файле. Это удобно в том случае, если у вас десятки столбцов и выравнивать каждый, стандартными инструментами, нет времени/желания. Однако в этом методе есть недостаток — вам все равно придётся потратить немного времени, ведь изначально скопированная таблица не отвечает нашим запросам. Если это для вас неприемлемо, существует другой способ, при котором форматирование сохранится сразу при переносе.

Способ 2: Выделение столбцов перед копированием

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

  1. Выделить столбцы или строки с исходными данными.
  2. Просто скопировать и вставить, получившаяся таблица сохранит изначальный вид.

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

Способ 3: Вставка формул с сохранением формата

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

Чтобы выполнить операцию, сделайте следующее:

  1. Выделите и скопируйте исходник.
  2. В контекстном меню вставки просто выберите «Значения» и подтвердите действие.

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

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

Как в excel перенести данные с одного листа на другой с определенных ячеек

Эта статья поможет вам переместить всю строку на другой лист на основе значения ячейки.

Easily select entire rows based on cell value in a certian column:

The Select Specific Cells utility of Kutools for Excel can help you quickly select entire rows based on cell value in a certian column in Excel as below screenshot shown. After selecting all rows based on cell value, you can manually move or copy them to a new location as you need in Excel.

Kutools for Excel: with more than 200 handy Excel add-ins, free to try with no limitation in 60 days. Download the free trial Now!

Переместить всю строку на другой лист на основе значения ячейки с кодом VBA

Как показано на скриншоте ниже, вам нужно переместить всю строку с Sheet1 на Sheet2, если в столбце C существует определенное слово «Done». Вы можете попробовать следующий код VBA.

1. Нажмите другой+ F11 клавиши одновременно, чтобы открыть Microsoft Visual Basic для приложений окно.

2. В окне Microsoft Visual Basic для приложений щелкните Вставить > Модули. Затем скопируйте и вставьте в окно приведенный ниже код VBA.

VBA code 1: Move entire row to another sheet based on cell value

Внимание: В коде Sheet1 содержит ли рабочий лист строку, которую вы хотите переместить. И Sheet2 — рабочий лист назначения, на котором вы найдете строку. « C: C »- столбец содержит определенное значение, а слово« Готово ”- это определенное значение, на основе которого вы переместите строку. Пожалуйста, измените их в соответствии с вашими потребностями.

3. нажмите F5 нажмите клавишу для запуска кода, то строка, соответствующая критериям Sheet1, будет немедленно перемещена на Sheet2.

Внимание: Приведенный выше код VBA удалит строки из исходных данных после перемещения на указанный рабочий лист. Если вы хотите копировать только строки на основе значения ячейки, а не удалять их. Пожалуйста, примените приведенный ниже код VBA 2.

VBA code 2: Copy entire row to another sheet based on cell value

Переместить всю строку на другой лист на основе значения ячейки с помощью Kutools for Excel

Если вы новичок в коде VBA. Здесь я представляю Выбрать определенные ячейки полезности Kutools for Excel. С помощью этой утилиты вы можете легко выбрать все строки на основе определенного значения ячейки или разных значений ячеек на листе и скопировать выбранные строки на рабочий лист назначения по мере необходимости. Пожалуйста, сделайте следующее.

Перед применением Kutools for Excel, Пожалуйста, сначала скачайте и установите.

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

2. В дебюте Выбрать определенные ячейки диалоговое окно, выберите Весь ряд в Тип выбора раздел, выберите Равно в Конкретный тип раскрывающийся список, введите значение ячейки в текстовое поле и затем щелкните значок OK кнопку.

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

3. нажмите Ctrl + C ключи, чтобы скопировать выбранные строки, а затем вставить их в нужный рабочий лист.

Внимание: Если вы хотите переместить строки на другой лист на основе двух разных значений ячеек. Например, перемещая строки на основе значений ячеек «Готово» или «Обработка», вы можете включить Or условие в Выбрать определенные ячейки диалоговое окно, как показано на скриншоте ниже:

Если вы хотите получить бесплатную (30-дневную) пробную версию этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.

Источник

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

Maderex

Дата: Среда, 06.08.2014, 14:34 |
Сообщение № 1

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

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

Сообщений: 17


Репутация:

0

±

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


Excel 2013

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

Гуру экселя, ХЕЛП.

Заранее спасибо)

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

6470168.xlsx
(11.2 Kb)

 

Ответить

Russel

Дата: Среда, 06.08.2014, 14:40 |
Сообщение № 2

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

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

Сообщений: 1392


Репутация:

318

±

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


Excel 2010

Тупо фильтром не пойдет?

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

7933989.xlsx
(11.2 Kb)


QIWI 9173973973

 

Ответить

Maderex

Дата: Среда, 06.08.2014, 14:47 |
Сообщение № 3

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

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

Сообщений: 17


Репутация:

0

±

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


Excel 2013

Тупо фильтром не пойдет?
К сообщению приложен файл: 7933989.xlsx(11Kb)

К сожалению нет( Нужно что бы все в новую таблицу переносилось.

 

Ответить

китин

Дата: Среда, 06.08.2014, 14:51 |
Сообщение № 4

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

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


Excel 2007;2010;2016

может так?формула массива

Код

=ЕСЛИОШИБКА(ИНДЕКС($A$3:$A$14;НАИМЕНЬШИЙ(ЕСЛИ($B$3:$B$14<>»»;СТРОКА($A$3:$A$14)-2);СТРОКА(A1)));»»)

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

Maderex.xlsx
(12.0 Kb)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

Maderex

Дата: Среда, 06.08.2014, 14:53 |
Сообщение № 5

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

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

Сообщений: 17


Репутация:

0

±

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


Excel 2013

может так?формула массива
[Перевод / Translate]
=ЕСЛИОШИБКА(ИНДЕКС($A$3:$A$14;НАИМЕНЬШИЙ(ЕСЛИ($B$3:$B$14<>»»;СТРОКА($A$3:$A$14)-2);СТРОКА(A1)));»»)
К сообщению приложен файл: Maderex.xlsx(12Kb)

Крутяк, то что нужно, спасибо огромное)

 

Ответить

китин

Дата: Среда, 06.08.2014, 14:55 |
Сообщение № 6

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

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


Excel 2007;2010;2016

Maderex, зачем весь пост цитировать?и некрасиво и читать неудобно %)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

Arndt

Дата: Среда, 03.01.2018, 15:05 |
Сообщение № 7

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

Ранг: Прохожий

Сообщений: 5


Репутация:

0

±

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


Excel 2016

Гуру, помоги!

Как в моем случае использовать аналогичную формулу массива?
Полдня потратил в попытках приспособить ту, которая для Maderex’а.

«В файле пример как должно быть в итоге.»

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

888555.xlsx
(91.4 Kb)

 

Ответить

Arndt

Дата: Среда, 03.01.2018, 15:06 |
Сообщение № 8

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

Ранг: Прохожий

Сообщений: 5


Репутация:

0

±

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


Excel 2016

У меня примерно 1500 строк, если это имеет значение..

 

Ответить

китин

Дата: Четверг, 04.01.2018, 11:35 |
Сообщение № 9

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

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


Excel 2007;2010;2016

там только диапазоны поменять

Код

=ЕСЛИОШИБКА(ИНДЕКС($B$9:$B$1500;НАИМЕНЬШИЙ(ЕСЛИ($F$9:$F$1500<>»»;СТРОКА($B$9:$B$1500)-8);СТРОКА(A1)));»»)

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

Arndt.xlsx
(91.8 Kb)


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

Arndt

Дата: Четверг, 04.01.2018, 16:29 |
Сообщение № 10

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

Ранг: Прохожий

Сообщений: 5


Репутация:

0

±

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


Excel 2016

«…Если бы мы вводили обычную формулу в Excel, то закончили бы ввод нажатием клавиши Enter. Но поскольку это формула массива, то нужно нажать комбинацию клавиш Ctrl+Shift+Enter. Этим мы укажем Excel, что это не обычная формула, а формула массива, и он автоматически заключит ее в фигурные скобки..»

Часть решения для меня была здесь.

respect

 

Ответить

nipolka

Дата: Суббота, 30.01.2021, 16:50 |
Сообщение № 11

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

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

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


китин, не знаю есть ли смысл писать в эту тему сейчас, но все же, а предположим, что перенести нужно не только наименование, а еще какие-то столбцы из первой таблицы, а второе — как чтоб во второй таблице появлялся порядковый номер

 

Ответить

Pelena

Дата: Суббота, 30.01.2021, 17:34 |
Сообщение № 12

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Смысла нет. Вряд ли китин помнит задачу трёхлетней давности. Создайте свою тему с файлом примером.
Эта тема закрыта


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

 

mlm1

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

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

Интересует следующее  

  Нужно выполнить перенос данных из строк из одного листа на второй по условиям  

  есть строки с данными  
в первом столбце ставим цифру 1 (или другой знак)  
соответственно данная строка должна быть перемещена на второй лист или цифры убираем то и строка убирается со второго листа  
объем до ста строк

 

Hugo

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

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

Вы меня конечно извините, но как Вы собираетесь «или цифры убираем» из строки, которой уже нет?  
Компьютер думать не умеет — если ему сказали «ПЕРЕНЕСИ», то ведь он и перенесёт :)

 

mlm1

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

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

{quote}{login=Hugo}{date=02.12.2011 10:49}{thema=}{post}Вы меня конечно извините, но как Вы собираетесь «или цифры убираем» из строки, которой уже нет?  
Компьютер думать не умеет — если ему сказали «ПЕРЕНЕСИ», то ведь он и перенесёт :){/post}{/quote}  
убираем только из первого столбца  
т.е должно выполниться условие на втором листе  
если в столбце A1:A10 присуствует знак (цифра) то данная строка переносится на второй лист и соответственно если ничего нет то строка не переносится

 

Hugo

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

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

Давайте внесём ясность — по русски «перенести» значит что-то взять в одном месте и отнести в другое.  
Судя по общему описанию — Вам не нужно переносить, а нужно копировать.  
Пока нет ясности — нет кода.

 

mlm1

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

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

{quote}{login=Hugo}{date=02.12.2011 11:18}{thema=}{post}Давайте внесём ясность — по русски «перенести» значит что-то взять в одном месте и отнести в другое.  
Судя по общему описанию — Вам не нужно переносить, а нужно копировать.  
Пока нет ясности — нет кода.{/post}{/quote}  

  Да, не правильно выразился — скопировать требуется

 

Hugo

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

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

Такой вариант — всё в модуле второго листа.  
Копируются только данные — без форматов!  
Но пока не перешли на второй лист — данные не обновятся!  
Хотя это можно исправить — выполнять этот код не по событию перехода на второй лист, а по событию изменения на первом в столбце A.  
Всё зависит от неизвестной нам задачи в целом — так как сейчас будет работать быстрее.

 

mlm1

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

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

{quote}{login=Hugo}{date=02.12.2011 11:39}{thema=}{post}Такой вариант — всё в модуле второго листа.  
Копируются только данные — без форматов!  
Но пока не перешли на второй лист — данные не обновятся!  
Хотя это можно исправить — выполнять этот код не по событию перехода на второй лист, а по событию изменения на первом в столбце A.  
Всё зависит от неизвестной нам задачи в целом — так как сейчас будет работать быстрее.{/post}{/quote}  
Спасибо.Вроде подходит. Как скопировать макрос в др файл, книгу

 

Hugo

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

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

Правый клик на ярлыке листа — исходный код — копируете — правый клик на ярлыке листа — исходный код — вставляете

 

mlm1

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

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

{quote}{login=mlm1}{date=02.12.2011 12:19}{thema=Re: }{post}{quote}{login=Hugo}{date=02.12.2011 11:39}{thema=}{post}Такой вариант — всё в модуле второго листа.  
Копируются только данные — без форматов!  
Но пока не перешли на второй лист — данные не обновятся!  
Хотя это можно исправить — выполнять этот код не по событию перехода на второй лист, а по событию изменения на первом в столбце A.  
Всё зависит от неизвестной нам задачи в целом — так как сейчас будет работать быстрее.{/post}{/quote}  
Спасибо.Вроде подходит. Как скопировать макрос в др файл, книгу{/post}{/quote}  

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

 

Hugo

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

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

Это из-за    
a = Sheets(1).UsedRange.Value  
Если первый столбец пустой, то UsedRange начинается со второго столбца…  

  Нужно иначе диапазон определять.  
Можно прописать явно например так:  
a = Sheets(1).[a1:C1000].Value
но лучше для примера сделать так:  

    Private Sub Worksheet_Activate()  
   Dim a(), i&, ii&, x&  
   UsedRange.Clear  
   With Sheets(1)  
   a = .Range(.[C1], .Range(«A» & .Rows.Count).End(IIf(Len(.Range(«A» & .Rows.Count)), xlDown, xlUp))).Value
   End With  
   ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))  
   For i = 1 To UBound(a)  
       If Len(a(i, 1)) Then  
           ii = ii + 1  
           For x = 2 To UBound(a, 2): b(ii, x) = a(i, x): Next  
       End If  
   Next  
If ii > 0 Then [A1].Resize(ii, UBound(b, 2)) = b
End Sub

 

mlm1

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

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

{quote}{login=Hugo}{date=02.12.2011 12:53}{thema=}{post}Это из-за    
a = Sheets(1).UsedRange.Value  
Если первый столбец пустой, то UsedRange начинается со второго столбца…  

  Нужно иначе диапазон определять.  
Можно прописать явно например так:  
a = Sheets(1).[a1:C1000].Value
но лучше для примера сделать так:  

    Private Sub Worksheet_Activate()  
   Dim a(), i&, ii&, x&  
   UsedRange.Clear  
   With Sheets(1)  
   a = .Range(.[C1], .Range(«A» & .Rows.Count).End(IIf(Len(.Range(«A» & .Rows.Count)), xlDown, xlUp))).Value
   End With  
   ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))  
   For i = 1 To UBound(a)  
       If Len(a(i, 1)) Then  
           ii = ii + 1  
           For x = 2 To UBound(a, 2): b(ii, x) = a(i, x): Next  
       End If  
   Next  
If ii > 0 Then [A1].Resize(ii, UBound(b, 2)) = b
End Sub{/post}{/quote}  

  Проблема решена, но копируются первые две ячейки в строке.  
Как сделать так что бы копировалась полностью строка (или первые несколько ячеек например 5-10 ячеек)

 

Hugo

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

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

.Range(.[C1]
для 5-10 замените C на E-J :)

 

mlm1

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

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

{quote}{login=Hugo}{date=02.12.2011 01:26}{thema=}{post}.Range(.[C1]
для 5-10 замените C на E-J :){/post}{/quote}  

  Вставил пишет ошибку 1004 — что то не так

 

Hugo

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

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

 

mlm1

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

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

{quote}{login=Hugo}{date=02.12.2011 01:42}{thema=}{post}Для 5 — E  
для 10 — J  
:){/post}{/quote}  

  Теперь — понял

 

mlm1

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

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

{quote}{login=mlm1}{date=02.12.2011 02:06}{thema=Re: }{post}{quote}{login=Hugo}{date=02.12.2011 01:42}{thema=}{post}Для 5 — E  
для 10 — J  
:){/post}{/quote}  

  Теперь — понял{/post}{/quote}  

  Возможно ли выполнить такое -при копирование с нескольких листов или только с одного листа

 

Hugo

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

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

Можно и с нескольких.  
Просто взять данные или в несколько массивов и выгрузить один под другим, или брать несколько раз в один и выгружать несколько раз со сдвигом.  
Смотря сколько листов — если пара/тройка, то я бы сделал несколько массивов (чтоб не бегать по листам), и по Ubound(массив) определял сдвиг (ну это в обоих вариантах пригодится).

 

mlm1

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

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

{quote}{login=Hugo}{date=05.12.2011 03:17}{thema=}{post}Можно и с нескольких.  
Просто взять данные или в несколько массивов и выгрузить один под другим, или брать несколько раз в один и выгружать несколько раз со сдвигом.  
Смотря сколько листов — если пара/тройка, то я бы сделал несколько массивов (чтоб не бегать по листам), и по Ubound(массив) определял сдвиг (ну это в обоих вариантах пригодится).{/post}{/quote}  

  Есть 10 листов  
С каждого листа планируется копировать по 10 записей на один лист

 

mlm1

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

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

{quote}{login=mlm1}{date=05.12.2011 03:45}{thema=Re: }{post}{quote}{login=Hugo}{date=05.12.2011 03:17}{thema=}{post}Можно и с нескольких.  
Просто взять данные или в несколько массивов и выгрузить один под другим, или брать несколько раз в один и выгружать несколько раз со сдвигом.  
Смотря сколько листов — если пара/тройка, то я бы сделал несколько массивов (чтоб не бегать по листам), и по Ubound(массив) определял сдвиг (ну это в обоих вариантах пригодится).{/post}{/quote}  

  Есть 10 листов  
С каждого листа планируется копировать по 10 записей на один лист{/post}{/quote}  

  Подскажите как это реализовать

 

Hugo

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

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

Я уже подсказал :)  
А если Вам нужен полностью рабочий код — то нужен пример в файле с подробным объяснением. И время — у меня его сейчас нет, т.ч. может быть кто-то другой сделает…  
А вообще код то в общем готов — только в цикл по листам его поставить и место выгрузки динамически определить.

 

mlm1

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

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

{quote}{login=Hugo}{date=08.12.2011 12:46}{thema=}{post}Я уже подсказал :)  
А если Вам нужен полностью рабочий код — то нужен пример в файле с подробным объяснением. И время — у меня его сейчас нет, т.ч. может быть кто-то другой сделает…  
А вообще код то в общем готов — только в цикл по листам его поставить и место выгрузки динамически определить.{/post}{/quote}  

  Нужно решить по возможности следующую задачу  
Если в столбце А на Листе 1 и 2 присуствуют знак или цифра то на листе 2 отображаются данные из соответствующих строк (напротив кот в столбце А находятся цифры или знаки

 

Hugo

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

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

Не понял эту фразу:  
«Если в столбце А на Листе 1 и 2 присуствуют знак или цифра то на листе 2»  
Я думаю, подразумевался Лист3.  
Для двух конкретных листов можно так сделать (почему в коде [J1], я уже не помню, но не менял) — код для второго листа, где похожий уже есть:

  Option Explicit  

  Private Sub Worksheet_Activate()  
   Dim a(), i&, ii&, x&, sh, sdvig&  
   UsedRange.Clear  
   sdvig = 1  
   For Each sh In Array(«Лист1», «Лист3»)  
       ii = 0  
       With Sheets(sh)  
           a = .Range(.[J1], .Range(«A» & .Rows.Count).End(IIf(Len(.Range(«A» & .Rows.Count)), xlDown, xlUp))).Value
       End With  
       ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))  
       For i = 1 To UBound(a)  
           If Len(a(i, 1)) Then  
               ii = ii + 1  
               For x = 2 To UBound(a, 2): b(ii, x) = a(i, x): Next  
           End If  
       Next  
       If ii > 0 Then  
          Range(«A» & sdvig).Resize(ii, UBound(b, 2)) = b  
       sdvig = sdvig + ii  
       End If  
   Next  
End Sub

 

mlm1

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

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

{quote}{login=Hugo}{date=09.12.2011 10:29}{thema=}{post}Не понял эту фразу:  
«Если в столбце А на Листе 1 и 2 присуствуют знак или цифра то на листе 2»  
Я думаю, подразумевался Лист3.  
Для двух конкретных листов можно так сделать (почему в коде [J1], я уже не помню, но не менял) — код для второго листа, где похожий уже есть:

  Option Explicit  

  Private Sub Worksheet_Activate()  
   Dim a(), i&, ii&, x&, sh, sdvig&  
   UsedRange.Clear  
   sdvig = 1  
   For Each sh In Array(«Лист1», «Лист3»)  
       ii = 0  
       With Sheets(sh)  
           a = .Range(.[J1], .Range(«A» & .Rows.Count).End(IIf(Len(.Range(«A» & .Rows.Count)), xlDown, xlUp))).Value
       End With  
       ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))  
       For i = 1 To UBound(a)  
           If Len(a(i, 1)) Then  
               ii = ii + 1  
               For x = 2 To UBound(a, 2): b(ii, x) = a(i, x): Next  
           End If  
       Next  
       If ii > 0 Then  
          Range(«A» & sdvig).Resize(ii, UBound(b, 2)) = b  
       sdvig = sdvig + ii  
       End If  
   Next  
End Sub{/post}{/quote}  

  Спасибо работает

 

mlm1

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

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

#24

19.01.2012 14:52:24

{quote}{login=mlm1}{date=09.12.2011 10:36}{thema=Re: }{post}{quote}{login=Hugo}{date=09.12.2011 10:29}{thema=}{post}Не понял эту фразу:  
«Если в столбце А на Листе 1 и 2 присуствуют знак или цифра то на листе 2»  
Я думаю, подразумевался Лист3.  
Для двух конкретных листов можно так сделать (почему в коде [J1], я уже не помню, но не менял) — код для второго листа, где похожий уже есть:

  Option Explicit  

  Private Sub Worksheet_Activate()  
   Dim a(), i&, ii&, x&, sh, sdvig&  
   UsedRange.Clear  
   sdvig = 1  
   For Each sh In Array(«Лист1», «Лист3»)  
       ii = 0  
       With Sheets(sh)  
           a = .Range(.[J1], .Range(«A» & .Rows.Count).End(IIf(Len(.Range(«A» & .Rows.Count)), xlDown, xlUp))).Value
       End With  
       ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))  
       For i = 1 To UBound(a)  
           If Len(a(i, 1)) Then  
               ii = ii + 1  
               For x = 2 To UBound(a, 2): b(ii, x) = a(i, x): Next  
           End If  
       Next  
       If ii > 0 Then  
          Range(«A» & sdvig).Resize(ii, UBound(b, 2)) = b  
       sdvig = sdvig + ii  
       End If  
   Next  
End Sub{/post}{/quote}  

  Спасибо работает{/post}{/quote}  

  Добрый день  
Подскажите возможно ли выполнить следующее используя Ваш код  

  необходимо по условию копировать на разные листы  
если в столбце А есть знак, цифра — то данные копируются на лист 2  
если в столбце В есть знак, цифра — то данные копируются на лист 3  
Пример во вложении

Прикрепленные файлы

  • post_298750.xlsx (8.56 КБ)

0 / 0 / 0

Регистрация: 30.06.2016

Сообщений: 4

1

Перенос всех строк с заданным условием на другой лист

30.06.2016, 21:23. Показов 56124. Ответов 20


Студворк — интернет-сервис помощи студентам

Здравствуйте.

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

К примеру, у меня есть набор данных, из которых я хочу вычленить только те, где значение столбца URL = *instagram.com и перенести на другой лист вместе со всеми другими параметрами.

Читала много тем на форуме, но никак не могу провести параллели со своей задачей.

Очень буду рада помощи! Спасибо.

тест.xlsx



0



5942 / 3154 / 698

Регистрация: 23.11.2010

Сообщений: 10,524

30.06.2016, 21:25

2

Расширенный фильтр посмотрите



0



0 / 0 / 0

Регистрация: 30.06.2016

Сообщений: 4

30.06.2016, 21:32

 [ТС]

3

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

Пол дня сегодня промучилась над этим вопросом( Голова уже не соображает.

Если в примере я привела двадцать строк, то по работе я имею дело с массивом в несколько тысяч.

Мальчик занимавшийся макросами уволился, а на меня всех собак повесили.
Если кто может объяснить доходчиво, я попробую написать сама, но за что хвататься — не знаю!



0



5942 / 3154 / 698

Регистрация: 23.11.2010

Сообщений: 10,524

30.06.2016, 22:02

4

testpa, скопируйте на этот же лист, потом перенесете на другой лист



0



4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

30.06.2016, 22:13

5

Лучший ответ Сообщение было отмечено testpa как решение

Решение

testpa, Если

перед

тем, как вызвать диалоговое окно Расширенный фильтр, Вы активируете рабочий лист, куда необходимо скопировать все отфильтрованные данные, то всё сработает. А если захотите немного упростить себе жизнь, то в аттаче сможете найти пример с тем же расширенным фильтром.



3



0 / 0 / 0

Регистрация: 30.06.2016

Сообщений: 4

30.06.2016, 22:28

 [ТС]

6

Огромное спасибо! Все работает!!! Даже с кнопочкой

Но как вы это сделали?? Я вас очень прошу, объясните мне поэтапно, если после рабочего дня на это остались силы и терпение. Я не могу тупо пользоваться уже готовым( Если задача поменяется и нужно будет менять какие-то условия, то сяду в лужу. Хочется понять принцип работы, чтобы самой в дальнейшем решать. Нужно головой не только кушать)

Тысячи благодарностей вам)



0



4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

30.06.2016, 22:44

7

Собственно, я просто использовал расширенный фильтр, только программно. Единственный нюанс — исходный диапазон, там определяется как текущая область вокруг ячейки Упоминания!B3

Миниатюры

Перенос всех строк с заданным условием на другой лист
 



0



0 / 0 / 0

Регистрация: 30.06.2016

Сообщений: 4

30.06.2016, 23:19

 [ТС]

8

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

Добавлено через 9 минут
pashulka, и последнее) Скажите, а можно вот этот уже готовый фильтр превратить в макрос (и сделать для него такую же красивую кнопочку, как у вас).



0



4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

30.06.2016, 23:39

9



0



0 / 0 / 0

Регистрация: 19.10.2015

Сообщений: 13

07.06.2020, 01:01

10

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



0



4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

07.06.2020, 08:26

11

alyaska213, Если столбец, где находятся критерии отбора, является частью ‘именно этих’ столбцов, то указывайте конкретно их. А если речь идёт о несмежных столбцах, то копируете все столбцы и удаляете ненужные.

Или говорите более предметно, файл с абстрактными данными (в виде .xls/.xlsx, не картинки) в виде нескольких десятков строк. И что нужно копировать, по какому принципу(критерию). И не помешает сказать, сколько в реальности строк.



0



0 / 0 / 0

Регистрация: 19.10.2015

Сообщений: 13

07.06.2020, 11:48

12

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

В файле лист «Данные» строк будет не более 1500. По столбцу, выделенной красной заливкой, будет происходить фильтрование, по аналогии с сообщениями девушки выше (vk.com, facebook.com, и т.д.)

В листе «Выборка» — готовый вид отфильтрованных значений.



0



4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

07.06.2020, 13:43

13

В файле нет переноса только избранных столбцов.
А чтобы избежать очистки данных лишних столбцов, достаточно явно указать столбцы, т.е. вместо
wsSheet2.[A5].CurrentRegion.Clear написать что-то вроде wsSheet2.Range(«A5:H» & Rows.Count).Clear

или wsSheet2.Range(«A5:H» & wsSheet2.Rows.Count).Clear если в момент выполнения макроса — активным может быть лист, не имеющий ячеек, например, лист диаграммы



1



0 / 0 / 0

Регистрация: 19.10.2015

Сообщений: 13

07.06.2020, 21:02

14

pashulka, Превосходно и Волшебно!

Я прошу прощения за столь яркие эмоции, просто сам только буквально вчера начал изучать макросы.

Огромнейшее спасибо!!!

С Днем Святой Троицы!



0



0 / 0 / 0

Регистрация: 14.11.2020

Сообщений: 4

14.11.2020, 18:22

15

Здравствуйте!

Я методом тыка и многих чтений сделала такую же таблицу, вот только в моем списке поиск по Фамилии учеников
Подскажите пожалуйста, а можно дописать какую-то команду, чтобы искалось не совпадение в ячейке, а точное значение.
Потому что есть, к примеру Сорокин, а есть СорокинА.
И в поля, связанных с Сорокин, происходит непонятные вычисления.

Буду признательна.



0



2632 / 1637 / 745

Регистрация: 23.03.2015

Сообщений: 5,148

14.11.2020, 18:25

16

teacher6,
Прикрепите файл- пример …
Покажите в нем исходные данные ( 3-4 строки) и что хотите получить…



0



2632 / 1637 / 745

Регистрация: 23.03.2015

Сообщений: 5,148

14.11.2020, 23:52

17

teacher6,

Если используете файл Паши, то уберите звездочки (*) перед словом и после него

Миниатюры

Перенос всех строк с заданным условием на другой лист
 



0



0 / 0 / 0

Регистрация: 14.11.2020

Сообщений: 4

23.11.2020, 08:54

18

Здравствуйте еще раз!
Прошу прощения, времени не было для дальнейшего познания.
Да, этот файл использую, вместо ссылок в примере фамилии. Так вот при однокоренном совпадении, все равно получается весь список.



0



Narimanych

2632 / 1637 / 745

Регистрация: 23.03.2015

Сообщений: 5,148

23.11.2020, 10:42

19

teacher6,
Для вашего файла:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub MMM()
With Worksheets("Óïîìèíàíèÿ")
        Set R1 = Range(.Cells(4, 2), .Cells(.Cells(Rows.Count, 4).End(xlUp).Row, 9))
        ARR1 = R1.Value
End With
M = 1
With Worksheets("Ðåçóëüòàò")
ReDim ARR2(1 To UBound(ARR1), 1 To UBound(ARR1, 2))
 SS = .Cells(2, 1).Value
        For i = 1 To UBound(ARR1)
            If ARR1(i, 3) = SS Then
              For j = 1 To UBound(ARR1, 2)
                ARR2(M, j) = ARR1(i, j)
              Next
              M = M + 1
        End If
        Next
Range(.Cells(6, 1), .Cells(200, 8)).ClearContents
  .Cells(6, 1).Resize(UBound(ARR2), UBound(ARR2, 2)).Value = ARR2
        
End With
End Sub



0



0 / 0 / 0

Регистрация: 06.04.2021

Сообщений: 1

07.04.2021, 11:18

20

Подскажите пожалуйста, как сделать: есть таблица excel, состоящая из трех листов. Необходимо, чтобы при вводе «done» в столбце T вся строка из первого листа копировалась на 3 лист. Спасибо.



0



#Руководства

  • 6 апр 2022

  • 0

Как перенести данные из одной таблицы в другую, если строки идут не по порядку? Разбираемся на примере каталога авто — переносим цены.

Иллюстрация: Meery Mary для Skillbox Media

Ксеня Шестак

Рассказывает просто о сложных вещах из мира бизнеса и управления. До редактуры — пять лет в банке и три — в оценке имущества. Разбирается в Excel, финансах и корпоративной жизни.

ВПР (Vlookup, или вертикальный просмотр) — поисковая функция в Excel. Она находит значения в одной таблице и переносит их в другую. Функция ВПР нужна, чтобы работать с большими объёмами данных — не нужно самостоятельно сопоставлять и переносить сотни наименований, функция делает это автоматически.

Разберёмся, зачем нужна функция и как её использовать. В конце материала расскажем, что делать, если нужен поиск данных сразу по двум параметрам.

Представьте, что вы продаёте автомобили. У вас есть каталог с характеристиками авто и их стоимостью. Также у вас есть таблица с данными клиентов, которые забронировали эти автомобили.

Это каталог автомобилей с ценами

Это список клиентов: указаны забронированные авто, но нет цен

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

Просто скопировать и вставить эту колонку не получится. Искать каждое авто вручную и переносить цены — долго.

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

Ниже пошагово и со скриншотами разберёмся, как сделать ВПР для этих двух таблиц с данными.

Важно!

ВПР может не работать, если таблицы расположены в разных файлах. Тогда лучше собрать данные в одном файле, на разных листах.


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

Подробнее о том, как определить все эти значения, поговорим ниже. А пока разберёмся на примере с продажей авто, где найти функцию ВПР в Excel и с чего начать работу.

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

В нашем случае нужно перенести цены на авто из каталога в список клиентов. Для этого добавим пустой столбец «Цена, руб.» в таблицу с клиентами и выберем ячейку напротив первого клиента.

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

Дальше открываем окно для построения функции ВПР. Есть два способа сделать это. Первый — перейти во вкладку «Формулы» и нажать на «Вставить функцию».

Нажимаем сюда, чтобы открыть окно построения

Второй способ — нажать на «fx» в строке ссылок на любой вкладке таблицы.

Справа появляется окно «Построитель формул». В нём через поисковик находим функцию ВПР и нажимаем «Вставить функцию».

Нажимаем сюда, чтобы открылась функция ВПР

Появляется окно для ввода аргументов функции. Как их заполнять — разбираемся ниже.

Так выглядит окно для ввода аргументов

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

Искомое значение — название ячейки с одинаковыми данными для обеих таблиц, по которым функция будет искать данные для переноса. В нашем примере это модель авто. Функция найдёт модель в таблице с каталогом авто, возьмёт оттуда стоимость и перенесёт в таблицу с клиентами.

Порядок действий, чтобы указать значение, выглядит так:

  1. Ставим курсор в окно «Искомое значение» в построителе формул.
  2. Выбираем первое значение столбца «Марка, модель» в таблице с клиентами. Это ячейка A2.

Выбранное значение переносится в построитель формул и одновременно появляется в формуле строки ссылок: fx=ВПР(A2).

Указать номер ячейки можно и вручную, но проще нажать на неё

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

В нашем случае нужно перенести цены автомобилей. Поэтому в диапазон обязательно нужно включить столбцы «Марка, модель» (искомое значение) и «Цена, руб.» (переносимое значение).

Важно!

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

Порядок действий для указания диапазона:

  1. Ставим курсор в окно «Таблица» в построителе формул.
  2. Переходим в таблицу «Каталог авто».
  3. Выбираем диапазон, в который попадают столбцы «Марка, модель» и «Цена, руб.». Это A2:E19.
  4. Закрепляем выбранный диапазон. На Windows для этого выбираем значение диапазона в строке ссылок и нажимаем клавишу F4, на macOS — выбираем значение диапазона в строке ссылок и нажимаем клавиши Cmd + T. Закрепить диапазон нужно, чтобы можно было протянуть функцию вниз и она сработала корректно во всех остальных строках.

Выбранный диапазон переносится в построитель формул и одновременно появляется в формуле строки ссылок: fx=ВПР(A2;’каталог авто’!$A$2:$E$19).

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

Номер столбца — порядковый номер столбца в первой таблице, в котором находится переносимое значение. Считается по принципу: номер 1 — самый левый столбец, 2 — столбец правее и так далее.

В нашем случае значение для переноса — цена — находится в пятом столбце слева.

Если столбцы не пронумерованы, посчитайте их вручную

Чтобы задать номер, установите курсор в окно «Номер столбца» в построителе формул и введите значение. В нашем примере это 5. Это значение появится в формуле в строке ссылок: fx=ВПР(A2;’каталог авто’!$A$2:$E$19;5).

Интервальный просмотр — условное значение, которое настроит, насколько точно сработает функция:

  • Если нужно точное совпадение при поиске ВПР, вводим 0.
  • Если нужно приближённое соответствие при поиске ВПР, вводим 1.

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

Ставим курсор в окно «Интервальный просмотр» в построителе формул и вводим значение: 0. Одновременно это значение появляется в формуле строки ссылок: fx=ВПР(A2;’каталог авто’!$A$2:$E$19;5;0). Это окончательный вид функции.

Так выглядят настроенные аргументы функции

Чтобы получить результат функции, нажимаем кнопку «Готово» в построителе формул. В выбранной ячейке появляется нужное значение. В нашем случае — цена первой модели авто.

Формула сработала для одной строки. 

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

Получилась таблица с ценами — можно звонить клиентам и сообщать о стоимости авто. Данные перенесены без ошибок, а потратили мы на это несколько минут.

Так выглядит результат: настраивали ВПР несколько минут, а она перенесла цены за мгновение

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

Например, у нас несколько одинаковых моделей с разным цветом.

Таблица с ценами на модели разных цветов

И по традиции есть таблица с клиентами, которые эти модели забронировали.

Сюда нужно перенести цены автомобилей

Если идти по классическому пути ВПР, получится такая функция: fx=ВПР(A29;’каталог авто’!$A$29:$E$35;5;0). В таком виде ВПР найдёт первую совпавшую модель и подтянет её стоимость. Параметр цвета не будет учтён.

Соответственно, цены у всех Nissan Juke будут 1 850 000 рублей, у всех Subaru Forester — 3 190 000 рублей, у всех Toyota C-HR — 2 365 000 рублей.

Такой результат получится, если использовать обычную функцию ВПР

Поэтому в этом варианте нужно искать стоимость авто сразу по двум критериям — модель и цвет. Для этого нужно изменить формулу вручную. В строке ссылок ставим курсор сразу после искомого значения.

Дописываем в формулу фразу ЕСЛИ(‘каталог авто’!$B$29:$B$35=B29, где:

  • ‘каталог авто’!$B$29:$B$35 — закреплённый диапазон цвета автомобилей в таблице, откуда нужно перенести данные. Это весь столбец с ценами.
  • B29 — искомое значение цвета автомобиля в таблице, куда мы переносим данные. Это первая ячейка в столбце с цветом — дополнительным параметром для поиска.

Итоговая функция такая: fx=ВПР(A29;ЕСЛИ(‘каталог авто’!$B$29:$B$35=B29;’каталог авто’!$A$29:$E$35);5;0). Теперь значения цен переносятся верно.

Так выглядит таблица, в которую ВПР переносит данные на основе двух совпадений

Как использовать ВПР в «Google Таблицах»? В них тоже есть функция Vlookup, но нет окна построителя формул. Поэтому придётся прописывать её вручную. Перечислите через точку с запятой все аргументы и не забудьте зафиксировать диапазон. Для фиксации поставьте перед каждым символом значок доллара. В готовой формуле это будет выглядеть так: =ВПР(A2;’Лист1′!$A$2:$C$5;3;0).

Научитесь: Excel + Google Таблицы с нуля до PRO
Узнать больше

Понравилась статья? Поделить с друзьями:
  • Перенос ячеек в excel с условиями
  • Перенос ячеек в excel на другую строку
  • Перенос ячеек в excel на другую страницу
  • Перенос ячеек в excel на другой лист по условию
  • Перенос ячеек в excel на другой лист автоматически