Excel переносить по условию

 

mlm1

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

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

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

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

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

 

Hugo

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

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

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

 

mlm1

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

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

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

 

Hugo

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

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

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

 

mlm1

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

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

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

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

 

Hugo

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

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

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

 

mlm1

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

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

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

 

Hugo

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

Сообщений: 23249
Регистрация: 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

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

Сообщений: 23249
Регистрация: 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

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

Сообщений: 23249
Регистрация: 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

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

Сообщений: 23249
Регистрация: 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

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

Сообщений: 23249
Регистрация: 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

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

Сообщений: 23249
Регистрация: 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

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

Сообщений: 23249
Регистрация: 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 КБ)

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

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

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

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

Arndt

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

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

Автор — Arndt
Дата добавления — 04.01.2018 в 16:29

Источник

Как перенести значение из одной ячейки в другую в excel автоматически

Перенос данных из одной таблицы Excel в другую

Таблица в Excel – это сложный массив с множеством параметров. Он может состоять из значений, текстовых ячеек, формул и быть отформатирован разными способами (ячейки могут иметь определенное выравнивание, цвет, направление текста, специальные пометки и т.п.).

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

Специальная вставка

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

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

Попробуем воспользоваться командой СПЕЦИАЛЬНАЯ ВСТАВКА и скопировать все данные.

Сначала мы выделяем имеющуюся таблицу, правой кнопкой вызываем меню и жмем КОПИРОВАТЬ.

В свободной ячейке снова вызываем меню правой кнопкой и нажимаем СПЕЦИАЛЬНАЯ ВСТАВКА.

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

Попробуем поэкспериментировать. В СПЕЦИАЛЬНОЙ ВСТАВКЕ выберем другой пункт, например, ФОРМУЛЫ. Получили уже неформатированную таблицу, но с работающими формулами.

Теперь вставим не формулы, а только ЗНАЧЕНИЯ результатов их вычислений.

Чтобы новая таблица со значениями получила внешний вид аналогичный образцу выделим ее и вставим ФОРМАТЫ с помощью специальной вставки.

Теперь попробуем выбрать пункт БЕЗ РАМКИ. Получили полную таблицу, но только без выделенных границ.

Полезный совет! Чтобы перенести формат вместе с размерами столбцов нужно перед копированием выделить не диапазон исходной таблицы, а столбцы целиком (в данном случаи это диапазон A:F).

Аналогично можно поэкспериментировать с каждым пунктом СПЕЦИАЛЬНОЙ ВСТАВКИ, чтобы наглядно увидеть, как она работает.

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

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

Рассмотрим, как это работает. Для начала переименуем листы Excel в месяцы. Затем с помощью уже знакомой нам СПЕЦИАЛЬНОЙ ВСТАВКИ перенесем таблицу на февраль и удалим значения из трех столбов:

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

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

  1. На листе ФЕВРАЛЬ ставим курсор в ячейку, показывающую количество макарон марки А на начало месяца. Можно посмотреть на рисунок выше – это будет ячейка D3.
  2. Ставим в этой ячейке знак РАВНО.
  3. Переходим на лист ЯНВАРЬ и кликаем на ячейку, показывающую количество макарон марки А на конец месяца (в нашем случае это ячейка F2 на листе «январь»).

Получаем следующее: в ячейке C2 образовалась формула, которая отсылает нас на ячейку F2 листа ЯНВАРЬ. Протянем формулу вниз, чтобы знать количество макарон каждой марки на начало февраля.

Аналогично можно перенести данные на все месяцы и получить наглядный годовой отчет.

Перенос данных в другой файл

Аналогично можно переносить данные из одного файла в другой. Данная книга в нашем примере так и называется EXCEL. Создадим еще одну и назовем ее ПРИМЕР.

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

Скопируем в книгу ПРИМЕР таблицу с помощью все той же СПЕЦИАЛЬНОЙ ВСТАВКИ. И опять удалим значения из трех столбцов. Проведем те же действия, что и в предыдущем параграфе, но переходить уже будем не на другой лист, а на другую книгу.

Получили новую формулу, которая показывает, что ячейка ссылается на книгу EXCEL. Причем видим, что ячейка F2 выглядит как $F$2, т.е. она зафиксирована. И если мы хотим протянуть формулу на остальные марки макарон, сначала нужно удалить значки доллара, чтобы снять фиксацию.

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

Автоматический перенос данных из одной таблицы в другую в программе Excel.

Приведу три способа Автоматического переноса данных с одного листа программы «Эксель» в другой.

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

Рассмотрим, как соединить две таблицы по шагам.

Первый шаг.

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

Второй шаг.

Копировать информацию сочетанием клавиш ctrl+C или вызвав контекстное меню правой кнопкой мыши и кликнув по пункту меню «Копировать»

Третий шаг.

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

Четвертый шаг.

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

После вставки связи следует отформатировать вид ячеек – привести их к надлежащему виду.

Результат вставки связи

Второй способ переноса данных из одной таблицы в другую — это использование сводных таблиц в программе «Excel».

При использовании данного метода роль второй таблицы («реципиента») играет сама сводная таблица.

Как обновить сводную таблицу

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

О том, как в «Эксель» создавать сводные таблицы подробно написано в статье:

Как делать сводные таблицы в программе «Excel» и для чего они нужны.

Третий способ самый эффективный и наиболее автоматизированный — это использование меню надстройки «Power Query».

Правда нужно отметить, что этот способ подходит только пользователям Excel 2016 и пользователям Excel 2013и выше с установленной надстройкой «Power Query».

Смысл способа в следующем:

Необходимо открыть вкладку «Power Query». В разделе «Данные Excel» нажимаем кнопку (пиктограмму) «Из таблицы».

Из таблицы -Power Query

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

Источник данных для запроса Power Query

После выбора области данных появится окно настройки вида новой таблицы. В этом окне Вы можете настроить последовательность вывода столбцов и удалить ненужные столбцы.

После настройки вида таблицы нажмите кнопку «Закрыть и загрузить»

Обновление полученной таблицы происходит кликом правой кнопки мыши по названию нужного запроса в правой части листа (список «Запросы книги»). После клика правой кнопкой мыши в выпадающем контекстном меню следует нажать на пункт «Обновить»

Источник

Adblock
detector

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

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

Сообщений: 2


Репутация:

0

±

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


Excel 2010

Добрый день!
Не скажу, что совсем не знаю Excel но все таки требуется помощь!
Есть таблица. На первом листе со множеством столбцов и ещё большим количеством строк. Содержание ячеек представлено в виде текстовой информации, дат, цен, текстовой информацией, пусть будет «Ресстр». Данный Реестр каждый день пополняется новыми данными
Как сделать так, чтобы на следующем листе книги отражалась (дублировалась) информация (строка) лишь по нескольким ячейкам из листа №1, при условии что данные в одном из столбцов > 0 То есть, если в Таблице № 1 в столбце «6» какой-либо строчки появляется значение >0, тогда эта строчка с определенным (меньшим) набором ячеек переносится в Таблицу № 2 и встает по порядку. И по мере добавления строк в лист 1 данные автоматически отображались бы в листе 2 при указанном выше условии.
Лучше бы без макросов.
Буду признателен за пошаговую инструкцию, дабы иметь возможность разрабатывать самому вариации применения
файл ниже
За ранее благодарен!

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

___.xlsx
(67.0 Kb)


Чулпан

Сообщение отредактировал chulpanЧетверг, 30.03.2017, 21:35

Перенос данных таблицы через функцию ВПР

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

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

Синтаксис ВПР

ВПР расшифровывается как вертикальный просмотр. То есть команда переносит данные из одного столбца в другой. Для работы со строками существует горизонтальный просмотр – ГПР.

Аргументы функции следующие:

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



Как перемещать данные с помощью ВПР?

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

Заказы.

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

Искомым значением будет гречка из ячейки B3. Важно проставить именно номер ячейки, а не слово «гречка», чтобы потом можно было протянуть формулу вниз и автоматически получить остальные значения.

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

Номер столбца – в нашем случае это цифра 2, потому что необходимые нам данные (цена) стоят во втором столбце выделенной таблицы (прайса).

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

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

ВПР.

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

Пример.

Скачать пример переноса таблицы через ВПР

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

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

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

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

1) выделить перемещаемую строку (подвести курсор мыши к номеру строки и кликнуть на нем левой кнопкой);

2) вырезать выделенную строку любым удобным способом (через главное меню, через контекстное меню, горячими клавишами Ctrl+X)

3) на нужном листе выделить строку, либо самую левую ячейку строки, в которую будет произведена вставка;

4) вставить вырезанные ячейки. 

Здесь следует заметить, что в контекстном меню (по нажатию правой кнопки мыши) доступны два пункта, связанные со вставкой — «Вставить» и «Вставить вырезанные ячейки».

kontekstnoe-menyu-vstavit-vyrezannye-yachejki

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

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

dannaya-komanda-neprimenima-dlya-nesvyaznyh-diapazonov

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

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

Как быстро переместить строки на новый лист Excel?

Одним из таких инструментов является надстройка для Excel на основе Visual Basic for Application.

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

как переместить строки в excelCompleteSolutionмакрос (надстройка) для выборочного перемещения строк по условию

 С этой надстройкой Вы сможете:

1. Одним кликом мыши вызывать диалоговое окно макроса прямо из панели инструментов Excel;

2. Задавать значение для поиска;

3. Задавать несколько значений для поиска через символ-разделитель «;» точку с запятой;

4. Учитывать либо не учитывать регистр при поиске заданных значений;

5. Выбирать диапазон ячеек для поиска заданных значений;

6. Выбирать одно из восьми условий для выбранных ячеек:

    а) совпадает с искомым значением;

    б) не совпадает с искомым значением;

    в) содержит искомое значение;

    г) не содержит искомое значение;

    д) начинается с искомого значения;

    е) не начинается с искомого значения;

    ж) заканчивается искомым значением;

    з) не заканчивается искомым значением.

7. Устанавливать дополнительные ограничения для выбранного диапазона.

А знаете ли Вы, что все листы рабочей книги можно быстро превратить в отдельные файлы?

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

Другие материалы по теме:

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