Excel копирование строк их других листов по условию

Здравствуйте, уважаемые форумчане.
Не прошло и полгода, и я опять прошу Вашей помощи.
Отписываюсь в этой теме, т.к. сложности плавно вытекли из неё, суть вопроса осталась та же, так как предложенное AlexM решение проблемы теперь не помогает. Проблема была такая:

«Есть файл (во вложении), в котором существует огромный список адресов (каждая строка это отдельный адрес с кучей нужной информации по нему).
Каждая строка (т.е. каждый адрес) имеет 2 состояния (столбец «H») «Закрыт» и «В работе».
Задача у меня такая: скопировать на другой лист, который «ОТК», все строки, имеющие статус «В работе».»

Теперь же появилось третье состояние этого столбца (в примере P) — «На выплату» (дополнительно меня нагрузили теперь бухгалтерскими вопросами) и данная формула не помогает:

Код

=ИНДЕКС(Адреса!$A$1:$A$175;НАИМЕНЬШИЙ(ЕСЛИ(Адреса!$H$5:$H$175<>"Закрыт";СТРОКА($A$5:$A$175));СТРОКА(A1)))

, т.к. в листе ОТК теперь выводятся и объекты в работе и на выплату.

Попытка заменить «<> «Закрыт» на «= «В работе» приводит у тому, что пустые клетки выдают ошибку «!#ЧИСЛО».
Собственно 1 вопрос в том, как грамотно поменять формулу, чтобы сохранить функционал.

Есть 2 вопрос, уже бухгалтерский: в том же примере есть окно «Бухгалтерия», в котором я пытался автоматизировать подсчет зарплаты. Т.е. мне надо, чтобы все объекты со статусом «На выплату» автоматически забивались в ведомость, соответственно если одна фамилия встречается более 1 раза, зарплата суммировалась.

Буду благодарен, если кто поможет решить задачу или подскажет, как её победить.
Заранее спасибо.

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

AR84

Дата: Четверг, 11.02.2016, 11:05 |
Сообщение № 1

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

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

Сообщений: 12


Репутация:

0

±

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


Excel 2003

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

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

LABOR.xls
(18.0 Kb)

 

Ответить

buchlotnik

Дата: Четверг, 11.02.2016, 11:12 |
Сообщение № 2

Группа: Заблокированные

Ранг: Участник клуба

Сообщений: 3442


Репутация:

929

±

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


2010, 2013, 2016 RUS / ENG

например, так:

Код

=ЕСЛИОШИБКА(ИНДЕКС(Регистрация!$C$3:$C$10;НАИМЕНЬШИЙ(ЕСЛИОШИБКА((СТРОКА(Регистрация!$D$3:$D$10)-2)/(Регистрация!$D$3:$D$10=»да»);»»);СТРОКА(A1)));»»)

UPD на версию Excel не посмотрел — тогда так:

Код

=ЕСЛИ(ЕОШ(НАИМЕНЬШИЙ(ЕСЛИ(Регистрация!$D$3:$D$50=»да»;СТРОКА(Регистрация!$C$3:$C$50)-2;»»);СТРОКА(B1)));»»;ИНДЕКС(Регистрация!$C$3:$C$50;НАИМЕНЬШИЙ(ЕСЛИ(Регистрация!$D$3:$D$50=»да»;СТРОКА(Регистрация!$C$3:$C$50)-2;»»);СТРОКА(B1))))

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

1144995.xls
(34.0 Kb)

Сообщение отредактировал buchlotnikЧетверг, 11.02.2016, 11:17

 

Ответить

китин

Дата: Четверг, 11.02.2016, 11:14 |
Сообщение № 3

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

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

Сообщений: 6973


Репутация:

1063

±

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


Excel 2007;2010;2016

так надо? формула массива для 2003

Код

=ЕСЛИ(ЕОШ(ИНДЕКС(Регистрация!$C$3:$C$50;НАИМЕНЬШИЙ(ЕСЛИ(Регистрация!$D$3:$D$50=»Да»;СТРОКА(Регистрация!$C$3:$C$50)-2);СТРОКА(A1))));»»;ИНДЕКС(Регистрация!$C$3:$C$50;НАИМЕНЬШИЙ(ЕСЛИ(Регистрация!$D$3:$D$50=»Да»;СТРОКА(Регистрация!$C$3:$C$50)-2);СТРОКА(A1))))

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

LABOR_2.xls
(37.5 Kb)


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

 

Ответить

SLAVICK

Дата: Четверг, 11.02.2016, 11:16 |
Сообщение № 4

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

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

Сообщений: 2290


Репутация:

766

±

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


2019

Какие все шустрые :D
НУ и мой вариант. Формула массива:

Код

=ЕСЛИОШИБКА(ИНДЕКС(Регистрация!$C$1:$C$41;НАИМЕНЬШИЙ(ЕСЛИ(Регистрация!$D$3:$D$41=»Да»;СТРОКА(Регистрация!$D$3:$D$41);9^9);СТРОКА(E1));1);»»)

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

4686306.xls
(34.0 Kb)


Иногда все проще чем кажется с первого взгляда.

 

Ответить

AR84

Дата: Четверг, 11.02.2016, 11:20 |
Сообщение № 5

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

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

Сообщений: 12


Репутация:

0

±

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


Excel 2003

Как оперативно ребята!!! Спасибо) сейчас буду смотреть,изучать, втыкать в формулы

 

Ответить

китин

Дата: Четверг, 11.02.2016, 11:27 |
Сообщение № 6

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

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

Сообщений: 6973


Репутация:

1063

±

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


Excel 2007;2010;2016


гы да исчо и глазастые, на версию Excel смотрим. :p


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

 

Ответить

buchlotnik

Дата: Четверг, 11.02.2016, 11:28 |
Сообщение № 7

Группа: Заблокированные

Ранг: Участник клуба

Сообщений: 3442


Репутация:

929

±

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


2010, 2013, 2016 RUS / ENG

[offtop]

Цитата

на версию Excel смотрим

смотрим-смотрим B)

 

Ответить

SLAVICK

Дата: Четверг, 11.02.2016, 11:37 |
Сообщение № 8

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

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

Сообщений: 2290


Репутация:

766

±

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


2019

Ну да thumb — это я еще не проснулся shock .
Ну тогда так:

Код

=ЕСЛИ(ЕОШ(
ИНДЕКС(Регистрация!$C$1:$C$41;НАИМЕНЬШИЙ(ЕСЛИ(Регистрация!$D$3:$D$41=»Да»;СТРОКА(Регистрация!$D$3:$D$41);9^9);СТРОКА(E1))));»»;
ИНДЕКС(Регистрация!$C$1:$C$41;НАИМЕНЬШИЙ(ЕСЛИ(Регистрация!$D$3:$D$41=»Да»;СТРОКА(Регистрация!$D$3:$D$41);9^9);СТРОКА(E1))))


Иногда все проще чем кажется с первого взгляда.

 

Ответить

AR84

Дата: Четверг, 11.02.2016, 12:27 |
Сообщение № 9

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

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

Сообщений: 12


Репутация:

0

±

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


Excel 2003

Ребят, а если мне не 40 значение надо будет, а 540? где что поправить надо будет? сделал так(на 60 значений)

Код

=ЕСЛИ(ЕОШ(ИНДЕКС(Регистрация!$C$3:$C$60;НАИМЕНЬШИЙ(ЕСЛИ(Регистрация!$D$3:$D$60=»Да»;СТРОКА(Регистрация!$C$3:$C$60)-2);СТРОКА(A1))));»»;ИНДЕКС(Регистрация!$C$3:$C$60;НАИМЕНЬШИЙ(ЕСЛИ(Регистрация!$D$3:$D$60=»Да»;СТРОКА(Регистрация!$C$3:$C$60)-2);СТРОКА(A1))))

и протянул ее. в итоге только первая строка заполнилась, а остальные пустые. Что я сделал не так7
[moder]Используйте для формул кнопочку fx. Поправила.[/moder]

Сообщение отредактировал ManyashaЧетверг, 11.02.2016, 12:40

 

Ответить

Wasilich

Дата: Четверг, 11.02.2016, 12:55 |
Сообщение № 10

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

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

Сообщений: 1232


Репутация:

326

±

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


2003

Если нет, то через макросы.

В модуль листа.
[vba]

Код

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Application.Intersect(Range(«D1:D2000»), Target) Is Nothing Then
    Dim s&
    If Target = «Да» Then
       s = Sheets(«1»).Range(«C» & Rows.Count).End(xlUp).Row + 1
       Target.Offset(0, -1).Copy Sheets(«1»).Cells(s, 3)
       Target.Offset(0, -2).Copy Sheets(«1»).Cells(s, 2)
    End If
  End If
End Sub

[/vba]

 

Ответить

SLAVICK

Дата: Четверг, 11.02.2016, 14:22 |
Сообщение № 11

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

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

Сообщений: 2290


Репутация:

766

±

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


2019

итоге только первая строка заполнилась, а остальные пустые. Что я сделал не так7

Формула массива вводится сочетанием клавиш:
CTRL SHIFT Enter


Иногда все проще чем кажется с первого взгляда.

 

Ответить

_Boroda_

Дата: Четверг, 11.02.2016, 20:24 |
Сообщение № 12

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

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

а если мне не 40 значение надо будет, а 540?

Вот тогда уж точно не стОит 2 раза считать тяжелый НАИМЕНЬШИЙ.
Предлагаю так

Код

=ЕСЛИ(A3>СЧЁТЕСЛИ(Регистрация!D$3:D$50;»Да»);»»;ИНДЕКС(Регистрация!C$3:C$50;НАИМЕНЬШИЙ(ЕСЛИ(Регистрация!D$3:D$50=»Да»;Регистрация!A$3:A$50);СТРОКА(A1))))

Тоже формула массива, вводится одновременным нажатием Контрл Шифт Ентер

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

LABOR_3.xls
(37.5 Kb)


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

AR84

Дата: Пятница, 12.02.2016, 09:33 |
Сообщение № 13

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

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

Сообщений: 12


Репутация:

0

±

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


Excel 2003

Ребят, а если мне надо скопировать с первого листа не только фио, но и дату на второй лист в соответствующую ячейку, формула как измениться? Что то я в нее пытаюсь вникнуть и никак. Как поправить диапазон — я разобрался. Спасибо вам большое.

П.С. понимаю что вопросы глупые, но без вашей помощи не разберусь

Сообщение отредактировал AR84Пятница, 12.02.2016, 09:37

 

Ответить

Wasilich

Дата: Пятница, 12.02.2016, 09:39 |
Сообщение № 14

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

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

Сообщений: 1232


Репутация:

326

±

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


2003

А макрос чё, не подходит, или не смотрел?

PS: Понял, Выбор Да-Нет не разовый. Значит надо каждый раз переписывать данные.
Ну в общим исправил. Мож пригодится. :)
[vba]

Код

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range(«D1:D2000»), Target) Is Nothing Then
   Sheets(«1»).Range(«B3:D45»).ClearContents
   Dim s&, i&
   s = 3
   For i = 3 To Range(«D» & Rows.Count).End(xlUp).Row
     If Cells(i, 4) = «Да» Then
       Sheets(«1»).Cells(s, 2) = Cells(i, 2)
       Sheets(«1»).Cells(s, 3) = Cells(i, 3)
       s = s + 1
     End If
   Next
End If
End Sub

[/vba]

Сообщение отредактировал WasilicПятница, 12.02.2016, 10:21

 

Ответить

китин

Дата: Пятница, 12.02.2016, 09:43 |
Сообщение № 15

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

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

Сообщений: 6973


Репутация:

1063

±

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


Excel 2007;2010;2016

ну это уже проще обычная

Код

=ЕСЛИ(ЕНД(ИНДЕКС(Регистрация!$B$3:$B$50;ПОИСКПОЗ(‘1’!$C3;Регистрация!$C$3:$C$50;0)));»»;ИНДЕКС(Регистрация!$B$3:$B$50;ПОИСКПОЗ(‘1’!$C3;Регистрация!$C$3:$C$50;0)))

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

_LABOR_3.xls
(42.5 Kb)


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

 

Ответить

_Boroda_

Дата: Пятница, 12.02.2016, 10:29 |
Сообщение № 16

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

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

В куске ИНДЕКС(Регистрация!C$3:C$50 измените буквы столбца («С») на нужные.

Что то я в нее пытаюсь вникнуть и никак

Поясню немного.
1. ЕСЛИ(Регистрация!D$3:D$50=»Да»;Регистрация!A$3:A$50) — когда в Д написано «Да», то берем значения из А, иначе — значение ЛОЖЬ. Получаем массив из номеров из столбца А и текста ЛОЖЬ (слово ЛОЖЬ — в данном случае рассматривается именно как текст — с ним не производилось никаких арифметических операций).
2. СТРОКА(A1) — дает номер строки ячейки А1 — то есть единицу. При протягивании формулы вниз ссылка изменится и в следующей ячейке будет уже А2 и, следовательно, СТРОКА(А2) даст нам 2. И так далее вниз 3, 4, 5, …
3. НАИМЕНЬШИЙ(ЕСЛИ(Регистрация!D$3:D$50=»Да»;Регистрация!A$3:A$50);СТРОКА(A1)) переписываем как НАИМЕНЬШИЙ(п.1;п.2), получаем для первой записи первый наименьший из массива, полученного в п.1, для второй записи — второй наименьший, … Функция НАИМЕНЬШИЙ игнорирует текст, поэтому мы получаем только цифры. Например, если массив из п.1 у нас получился 1:ЛОЖЬ:ЛОЖЬ:4:5, то первый наименьший = 1, второй = 4, третий = 5. То есть для каждой строки в итоговой таблице мы получаем номер по порядку той соответствующей строки в исходной таблице, где стоит «Да».
4. ИНДЕКС(Регистрация!C$3:C$50;п.3) — из массива столбца С выковыриваем то, что получили в п.3.
6. A3>СЧЁТЕСЛИ(Регистрация!D$3:D$50;»Да»);»»;… — если «Да» в исходнике закончились, то выводим пусто


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

AR84

Дата: Пятница, 12.02.2016, 11:14 |
Сообщение № 17

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

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

Сообщений: 12


Репутация:

0

±

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


Excel 2003

Эх…..вижу что макросом проще написано, но я в них совсем ноль….пытаюсь изучить что делает формула и как ее потом можно усовершенствовать и применить (файлик будет расти, дополняться поля и другие формулы)…Спасибо Boroda за подробное объяснение формулы, хотелось бы такую же информацию от Wasilic по поводу его макроса =)

ПС. осилю формулы, перейду к макросам….

Сообщение отредактировал AR84Пятница, 12.02.2016, 11:18

 

Ответить

Wasilich

Дата: Пятница, 12.02.2016, 11:47 |
Сообщение № 18

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

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

Сообщений: 1232


Репутация:

326

±

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


2003

хотелось бы такую же информацию от Wasilic

Даже не знаю как пояснять.
Если в колонке D1-D2000 (диапазон можно поменять на любой) произошли какие то изменения, выполняется процедура.
Очищается таблица на листе «1» в диапазоне В3: D45 (ну как в примере, можно заменить на нужный). Задаются числовые переменные s, i. s=3 – начальная строка записи на листе «1». Цикл перебора “For i” начиная с 3-й строки до последней заполненной, проверяет колонку 4 то есть «D». И если в ней встречается «Да», переписывает данные в лист «1».
Как то так.

Сообщение отредактировал WasilicПятница, 12.02.2016, 11:50

 

Ответить

AR84

Дата: Понедельник, 15.02.2016, 11:51 |
Сообщение № 19

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

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

Сообщений: 12


Репутация:

0

±

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


Excel 2003

Спасибо всем кто откликнулся за помощь. Решил свою задачу с помощью макроса Wasilic, подредактировал под свои нужды. Осталось сообразить как сделать печатную форму(открою новую тему).

 

Ответить

 

Миха73

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

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

Доброе время суток, уважаемые форумчане! Столкнулся с проблемой, которая, откровенно говоря, привела меня в некий ступор.    
Есть таблица на Листе1, которая ежедневно заполняется, необходимо из нее скопировать строки по условию значения в ячейке столбца C (он же 3)и вставить (добавлял) удовлетворяющую условию строку на Лист3. условием является шестизначное число (от 000000 до 999999).  
Заранее Спасибо всем за интерес и ответы!  
Поиск ничего не дал

 

KuklP

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

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

E-mail и реквизиты в профиле.

Чем автофильтр не устраивает?

Я сам — дурнее всякого примера! …

 

Юрий М

Модератор

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

Контакты см. в профиле

Если сломан автофильтр…

 

Миха73

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

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

огромное спасибо!  
то, что надо!

 

а нельзя сделать, чтобы при заполнении Листа3 данные добавлялись, а не заполнялись по новой?

 

Миха73

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

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

а нельзя сделать, чтобы при заполнении Листа3 данные добавлялись, а не заполнялись по новой?

 

Hugo

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

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

Как такой вариант — ставите вызов кода Юрия на событие активации листа (отключив обновление экрана на время работы).  
Только нужно Cells первого листа указать, чьи они, а третьего тогда не надо.  
И можно код на одну строку сократить:  

  If .Cells(i, 3) Like «######» Then

 

Миха73

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

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

попробую с этим разобраться

 

Юрий М

Модератор

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

Контакты см. в профиле

{quote}{login=}{date=11.11.2011 10:38}{thema=}{post}а нельзя сделать, чтобы при заполнении Листа3 данные добавлялись, а не заполнялись по новой?{/post}{/quote}А смысл? Результат будет тот же самый. Берите что дают, а то скачаю обратно.

 

Миха73

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

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

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

 

Юрий М

Модератор

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

Контакты см. в профиле

Изменяют строки обычно в исходных данных, а по ним уже строится отчёт. Если Вы планируете изменять сам отчёт — делайте это на копии листа 3.

 

Миха73

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

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

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

 

Просматривая ответ на интересующий меня вопрос, нашел данную тему. Очень помогла. Скажите, а как можно было бы ограничить число копируемых ячеек в строке, например если исходная таблица имеет 10 ячеек в строке, а на том листе, куда переноситься (лист2 например) необходимы только 4 первых ячейки в строке (4 столбца)?

 

Hugo

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

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

Range(Cells(i, 1), Cells(i, 4)).Copy

 

Юрий М

Модератор

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

Контакты см. в профиле

Если правильно понял вопрос:  
Range(Cells(i, 1), Cells(i, 4)).Copy .Cells(LastRow + 1, 1)

 

Юрий М

Модератор

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

Контакты см. в профиле

#16

21.08.2012 16:02:45

{quote}{login=}{date=21.08.2012 03:52}{thema=}{post}Просматривая ответ на интересующий меня вопрос{/post}{/quote}Просматривая Ваш вопрос, обнаружил, что Вы не подписываетесь. Анонимно легче? Наоборот: многие их тут не любят

Эх. вижу что макросом проще написано, но я в них совсем ноль. пытаюсь изучить что делает формула и как ее потом можно усовершенствовать и применить (файлик будет расти, дополняться поля и другие формулы). Спасибо Boroda за подробное объяснение формулы, хотелось бы такую же информацию от Wasilic по поводу его макроса =)

ПС. осилю формулы, перейду к макросам.

Эх. вижу что макросом проще написано, но я в них совсем ноль. пытаюсь изучить что делает формула и как ее потом можно усовершенствовать и применить (файлик будет расти, дополняться поля и другие формулы). Спасибо Boroda за подробное объяснение формулы, хотелось бы такую же информацию от Wasilic по поводу его макроса =)

ПС. осилю формулы, перейду к макросам. AR84

Сообщение Эх. вижу что макросом проще написано, но я в них совсем ноль. пытаюсь изучить что делает формула и как ее потом можно усовершенствовать и применить (файлик будет расти, дополняться поля и другие формулы). Спасибо Boroda за подробное объяснение формулы, хотелось бы такую же информацию от Wasilic по поводу его макроса =)

ПС. осилю формулы, перейду к макросам. Автор — AR84
Дата добавления — 12.02.2016 в 11:14

Источник

Как скопировать строки в Excel? Выборочное копирование строк по условию

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

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

Как скопировать/вставить строки в Excel по условию?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Excel копирование строки на другой лист по условию

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

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

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

1. Выберите столбец, на основе которого вы будете копировать строки, в нашем примере выберите столбец Fruit. А затем щелкните Данные > Фильтр.

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

В нашем примере щелкните стрелку рядом с заголовком столбца Fruit, а затем отметьте Apple только в раскрывающемся списке. См. Снимок экрана ниже:

3. Теперь отфильтровываются только записи указанных фруктов. Скопируйте эти записи.

4. Создайте новый лист, щелкнув значок or на панели вкладок листа.

5. Затем вставьте скопированные записи в новый лист.

И тогда вы увидите, что все записи об Apple скопированы и сохранены на новом листе. См. Снимок экрана ниже:

6. Повторите шаги 2–5, чтобы скопировать другие записи фруктов на новые листы.

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

Второй метод поможет вам пакетно копировать строки на новый лист на основе критериев столбца Kutools for Excel Разделить данные утилита.

Kutools for Excel — Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30 -день, кредитная карта не требуется! Бесплатная пробная версия сейчас!

Kutools for Excel — Combines more than 300 Advanced Functions and Tools for Microsoft Excel

1. Выберите диапазон, в который вы будете копировать строки на основе критериев столбца, и нажмите кнопку Кутулс Плюс > Разделить данные.

2. В открывшемся диалоговом окне «Разделить данные на несколько листов» вам необходимо:

(1) Проверьте Конкретный столбец вариант, щелкните раскрывающийся список ниже и укажите столбец, из которого вы будете копировать строки;

(2) Щелкните значок Правила поле и укажите Значения столбца из выпадающего списка;

3. Нажмите Ok кнопку.

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

Kutools for Excel — Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30 -день, кредитная карта не требуется! Get It Now

Простое копирование и вставка нескольких ячеек / диапазонов одновременно в Excel

Возможно, вы заметили, что Microsoft Excel не поддерживает одновременное копирование нескольких непоследовательных ячеек (находящихся в разных столбцах). Но копирование этих ячеек / выделений одно за другим — пустая трата времени и утомительно! Kutools для Excel Копировать диапазоны Утилита может помочь сделать это легко, как показано на скриншоте ниже.

Источник

Adblock
detector

Всем добра.

Задача:

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

Мысли:

Когда у меня первый раз спросили про такое, я ответил- фигушки, без макроса никак, по крайней мере для неопределенного количества найденных строк.

 Спустя время мне задали этот вопрос повторно и тут меня осенило — это не невозможно.

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

на деле это выглядит так:
Искать будем значение из ячейки $B$5 (в этой ячейке динамический выпадающий список) в другом листе:

=ПОИСКПОЗ($B$5;ЛИСТ2!B:B;0)

ПоискПоз — ищет вхождения в диапазоне
Результат формулы = 8, т.е. восьмая строчка

Проверяем, и вправду так.

Последующие ячейки при расчете будут учитывать предыдущую:

=ПОИСКПОЗ($B$5;ДВССЫЛ(«Карт.сч.!R»&$C16+1&»C2:R[1000]C2»;ЛОЖЬ);0)+C16)

Во втором аргументе формулы ПоискПоз ( ДВССЫЛ(«Карт.сч.!R»&$C16+1&»C2:R[1000]C2»;ЛОЖЬ); ) формируется диапазон $B$0+предыдущее положение+1 т.е. R9C2:R1000C2
Т.о. мы исключаем уже найденную строку из массива для поиска.

В итоге вот такой формулой

ДВССЫЛ(«Карт.сч.!R»&C16&»C5»;ЛОЖЬ)

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

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

=ЕСЛИОШИБКА(ЕСЛИ(ЕПУСТО(ДВССЫЛ(«Карт.сч.!R»&ЕСЛИОШИБКА(ПОИСКПОЗ(ДВССЫЛ(«$B»&СТРОКА()-B17-10;ИСТИНА);ДВССЫЛ(«Карт.сч.!R»&$C16+1&»C2:R[1000]C2″;ЛОЖЬ);0)+C16;»-«)&»C5″;ЛОЖЬ));»АВАНС «;»»)&ТЕКСТ(ДВССЫЛ(«Карт.сч.!R»&ЕСЛИОШИБКА(ПОИСКПОЗ(ДВССЫЛ(«$B»&СТРОКА()-B17-10;ИСТИНА);ДВССЫЛ(«Карт.сч.!R»&$C16+1&»C2:R[1000]C2″;ЛОЖЬ);0)+C16;»-«)&»C3″;ЛОЖЬ);»дд.ММ.гггг»);»»)

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

Отбор данных по условию и копирование на новый лист

Автор Эдик, 03.03.2010, 20:58

« назад — далее »

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


приложите пример чтобы было понятней!!!


фильтр по условию «если есть #»


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



есть два варианта, если я правильно понял задачу то можно использовать функцию надстройки Plex если она установлена-суммирование ячеек с определенным цветом заливки или суммирование ячеек с определенным цветом шрифта(пример на листе 2), а можно использовать функцию СУММЕСЛИМН только символ для фильтрации ставить перед словом. Функция примет форму =СУММЕСЛИМН(Лист1!B2:B5;Лист1!A2:A5;»#*») пример на листе 3


Не,там надо ессли в строке в первом столбце содержиться #,то эту строку(состоящую из 3 столбцов) просто копировать на другой лист и все.А суммировать надо 2 столбец,если 1-ый у строк совпадают



Вот оно!!!! :DВот,да вот так.А как это делается??Если можно,чтоб нажать на кнорочку.и …


Просто мне надо автоматизировать этот процесс.те чтоб открыл(с любым кол-вом строк и столбцов),провел пару действий и уже есть результат  :'(


просто укажите диапозон с расчетом на будущее =СУММЕСЛИМН(Лист1!$B$2:$B$100;Лист1!$A$2:$A$100;A1) например так, и после внесения изменений или добавлении строк Excel будет проводить пересчет автоматически


Предлагаю вариант с помощью сводной таблицы.


Чего то у меня етот html документ не открывается.А _сводные_ таблицы-это как?


Так а куда вносить =СУММЕСЛИМН(Лист1!$B$2:$B$100;Лист1!$A$2:$A$100;A1),вообще и он сам копирует строку,и куда эту формулу вставлять??


В общем,надо так-файл содержит 200 строк(3 столбца),если в первом столбце строки стоит #, то вся строка должна автоматически копироваться на другой лист.И если совпадают первый столбец строки,то тогда просто суммировать 2 столбуц.Только чтоб все это делалось автоматом


на листе два в столбце А вносите товар в ручную, эта жэ ячейка будет служить критерием для поичка и суммирования, в соседнюю ячейку столбца В вводим формулу =СУММЕСЛИМН(Лист1!$B$2:$B$200;Лист1!$A$2:$A$200;A3) она будет искать в таблице значения соответствующие названию товара и суммировать, в соседнюю ячейку столбца С вводим формулу =ВПР(A1;Лист1!A2:$C$200;3) эта формула возвращает значение столбца С соответствующее заданному критерию т.е. цена товара


А давайте попробуем так — см. вложение.
На листе 2 товар заносится сам, в лист 1 можно добавлять значения, диапазон формул динамический.
Усложнять проверкой на ошибку не стал, если значеия с «#» кончаются, то появляющееся значение ошибки (строки 8-12 листа 2) условным форматированием красятся в серый цвет. Если это критично, то можно добавить ЕСЛИ(ЕШИБКА(…….);»»;…….), где ……. — формула в столбце А листа 2. Для 2007 и выше — ЕСЛИОШИБКА(……..;»»).

Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


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


А, ну да, точно.
Тогда в столбце С листа 2 формула

=ВПР(A2;СМЕЩ(Лист1!$A$1;;;СЧЁТЗ(Лист1!A:A);3);3;0)

Скажи мне, кудесник, любимец ба’гов…

Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995


_Boroda_,
Красиво выкрутили с уникальными строками:
ПОИСКПОЗ(Предм;Предм;0)=СТРОКА(Предм)-1


Цитата: Эдик от 03.03.2010, 23:09
В общем,надо так-файл содержит 200 строк(3 столбца),если в первом столбце строки стоит #, то вся строка должна автоматически копироваться на другой лист.И если совпадают первый столбец строки,то тогда просто суммировать 2 столбуц.Только чтоб все это делалось автоматом

Ещё вариант со сводной.




  • Профессиональные приемы работы в Microsoft Excel

  • Обмен опытом

  • Microsoft Excel

  • Отбор данных по условию и копирование на новый лист

Как скопировать строки из нескольких листов на основе критериев на новый лист?

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

Скопируйте строки из нескольких листов на основе критериев в новый лист с кодом VBA


Скопируйте строки из нескольких листов на основе критериев в новый лист с кодом VBA

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

1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в окно модуля.

Код VBA: копирование строк с нескольких листов на основе критериев на новый лист

Public Sub CopyRows_ValuesAndNumberFormats()
Dim xWs As Worksheet
Dim xCWs As Worksheet
Dim xRg As Range
Dim xStrName As String
Dim xRStr As String
Dim xRRg As Range
Dim xC As Integer
On Error Resume Next
Application.DisplayAlerts = False
xStr = "Kutools for Excel"
xRStr = "Completed"
Set xCWs = ActiveWorkbook.Worksheets.Item(xStr)
If Not xCWs Is Nothing Then
    xCWs.Delete
End If
Set xCWs = ActiveWorkbook.Worksheets.Add
xCWs.Name = xStr
xC = 1
For Each xWs In ActiveWorkbook.Worksheets
    If xWs.Name <> xStr Then
        Set xRg = xWs.Range("C:C")
        Set xRg = Intersect(xRg, xWs.UsedRange)
        For Each xRRg In xRg
            If xRRg.Value = xRStr Then
               xRRg.EntireRow.Copy
               xCWs.Cells(xC, 1).PasteSpecial xlPasteValuesAndNumberFormats
               xC = xC + 1
            End If
        Next xRRg
    End If
Next xWs
Application.DisplayAlerts = True
End Sub

Внимание: В приведенном выше коде:

  • Текст «Заполненная» в этом xRStr = «Завершено» сценарий указывает конкретное условие, на основе которого вы хотите скопировать строки;
  • C: C В этом Установите xRg = xWs.Range («C: C») скрипт указывает конкретный столбец, в котором находится условие.

3, Затем нажмите F5 ключ для запуска этого кода, и все строки с определенным условием были скопированы и вставлены в новый рабочий лист с именем Kutools for Excel в текущей рабочей книге. Смотрите скриншот:


Более относительные статьи с данными для извлечения или копирования:

  • Копирование данных на другой лист с помощью расширенного фильтра в Excel
  • Обычно мы можем быстро применить функцию расширенного фильтра для извлечения данных из необработанных данных на том же листе. Но иногда, когда вы пытаетесь скопировать отфильтрованный результат на другой рабочий лист, вы получаете следующее предупреждающее сообщение. В таком случае, как бы вы могли справиться с этой задачей в Excel?
  • Копировать строки на новый лист на основе критериев столбца в Excel
  • Например, есть таблица покупки фруктов, и теперь вам нужно скопировать записи на новый лист на основе указанных фруктов, как это легко сделать в Excel? Здесь я расскажу о нескольких методах копирования строк на новый лист на основе критериев столбца в Excel.
  • Копировать строки, если столбец содержит определенный текст / значение в Excel
  • Предположим, вы хотите найти ячейки, содержащие определенный текст или значение в столбце, а затем скопировать всю строку, в которой находится найденная ячейка, как вы можете с этим справиться? Здесь я представлю несколько методов, чтобы определить, содержит ли столбец определенный текст или значение, а затем скопировать всю строку в Excel.

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

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

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

вкладка kte 201905


Вкладка Office — предоставляет интерфейс с вкладками в Office и значительно упрощает вашу работу

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

офисный дно

Комментарии (2)


Оценок пока нет. Оцените первым!

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

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

  • Excel копирование ссылок на листы
  • Excel копирование ссылка на одну ячейку
  • Excel копирование скрытых ячеек в excel
  • Excel копирование скрытые ячейки
  • Excel копирование сводных таблиц

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

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