Как скопировать ячейки по условию excel

Всем добра.

Задача:

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

Мысли:

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

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

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

на деле это выглядит так:
Искать будем значение из ячейки $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″;ЛОЖЬ);»дд.ММ.гггг»);»»)

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

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

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, подредактировал под свои нужды. Осталось сообразить как сделать печатную форму(открою новую тему).

 

Ответить

«ПараВопросов»
1. Если Вы собираетесь на листе «оп-е пр-во 1» новые строки ДОБАВЛЯТЬ СНИЗУ — всё может быть и нормально. Но если Вы их собираетесь ВСТАВЛЯТЬ МЕЖДУ СУЩЕСТВУЮЩИМИ В ПРЕДЕЛАХ ОДНОГО ОТДЕЛА или УДАЛЯТЬ СУЩЕСТВУЮЩИЕ ОБЪЕКТЫ — может с формулами возникнуть потом путаница. Ведь Вы с помощью формул перенесете данные на листы по отделам, а потом на этих листах отделы будут забивать свои данные в столбцах левее этих объектов. В итоге, если кто-то (например Вы) ВСТАВИТ НОВУЮ СТРОКУ, формулы это отследят, и ваши объекты на листах по отделам сдвинутся вниз. И тогда данные, внесенные наа листах отделами, будут уже стоять напротив не своих объектов.
2. У Вас на листе «оп-е пр-во 1» всегда один крестик в строке или может быть несколько (как в примере

ber$erk

-а из сообщ. №2)? Судя по тому, что Вы ставите крестик, а не количество — предположу, что крестик всегда один. Тогда предлагаю вот такой вариант с доп. столбцами на листе «оп-е пр-во 1» и нумерацией по порядку на остальных листах. Показал на листе «оп-е пр-во 2», дальше можете сделать по аналогии, если такой вариант Вас устроит.
3. Выделил желтым те блоки ячеек, которые правил/изменял.
4. У Вас нет однообразия на листах по отделам. Ох и намучаетесь Вы с «Свод 1»  :)
5. Изменил формат файла, чтобы файл стал <100…

SLAVICK Дата: Четверг, 11.02.2016, 14:22 | Сообщение № 11
Иногда все проще чем кажется с первого взгляда.

Ответить

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

Ответить

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

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

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

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

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

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

П.С. понимаю что вопросы глупые, но без вашей помощи не разберусь Автор — AR84
Дата добавления — 12.02.2016 в 09:33

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

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

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

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

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

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

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

китин Дата: Пятница, 12.02.2016, 09:43 | Сообщение № 15
Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

Ответить

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

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

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

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

Ответить

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

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

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

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

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

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

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

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

Источник

Работа со строками/столбцами по условию

Данная функция является частью надстройки MulTEx

  • Описание, установка, удаление и обновление
  • Полный список команд и функций MulTEx
  • Часто задаваемые вопросы по MulTEx
  • Скачать MulTEx

Вызов команды:
MulTEx -группа Ячейки/ДиапазоныРабота со строками/СтолбцамиРабота со строками/столбцами по условию

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

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

Строки — действия будут произведены со строками
Столбцы — действия будут произведены со столбцами
На всем листе — действия над строками/столбцами будут произведены на всем листе
В диапазоне — действия над строками/столбцами будут произведены только внутри указанного диапазона. На картинке выше указан диапазон Лист1!$A$1:$E$25. Это значит, что если выбрано Удаление Строк, то строки будут удалены только в этом диапазоне. Даже если строка 27 листа будет удовлетворять условиям, она не будет удалена, т.к. выходит за пределены указанного диапазона.

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

На новый лист — в данном случае строки/столбцы будут вставлены на новый лист, который будут создан в ходе выполнения команды. Вставка отобранных строк/столбцов начинается с ячейки А1 нового листа.
Начиная с указанной ячейки — в данном случае строки/столбцы будут вставлены на тот же лист, в котором производится Копирование/Перемещение. Вставка отобранных строк/столбцов начинается именно с указанной ячейки. Примечание: Если указать диапазон для вывода результата внутри диапазона с данными для отбора строк/столбцов, то появится сообщение:

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

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

Переместить строки — указываются критерии для отбора строк/столбцов к удалению/перемещению/копированию.

  • Все пустые — будут удалены все пустые строки/столбцы в указанном диапазоне.
  • Если значение ячейки: Ниже в примерах применения данных параметров описаны операции по удалению строк, но все это применимо для любой выбранной операции.
    • Равно — будут удалены те строки в ячейках которых есть значение, равное указанному. В критериях можно применять символы подстановки(звездочка( * ), вопр.знак( ? ) ). Например на картинке указан критерий: «*С.Петербург*». Это означает, что если в ячейке будет записано «Произведено в г. С.Петербург 12.03.2008», то данная строка будет удалена. Если же указать «С?Петербург», то будут удалены строки, значение в которых равно либо «С.Петербург», либо «С-Петербург», либо «С Петербург» и т.п. Если же указать «С.Петербург», то будут удалены только те строки, значение которых в точности совпадает с «С.Петербург».
    • Не равно — будут удалены те строки в ячейках которых нет значения, равного указанному. Все работает так же, как и при выборе Равно, но в обратном направлении. Т.е. если указать «С.Петербург», то будут удалены все строки, значение которых не равно «С.Петербург».
    • Учитывать регистр — при отборе значений будет учитываться регистр критерия или нет. Если не установлено, то при указании равно «С.Петербург» будут удалены строки равные и значению «С.Петербург» и значению «с.петербург».
    • В поле ниже указывается номер столбца, в котором просматривать эти критерии. Например, если в этом поле указать 2 и На всем листе, то критерии будут просматриваться во втором столбце листа — $B . Если указать 2 и диапазон $B$1:$E$25, то критерии будут просматриваться во втором столбце указанного диапазона, т.е. в третьем столбце листа — $C . Если данное поле оставить пустым, то значения будут просматриваться во всех столбцах диапазона.

Закрыть форму после выполнения операции — по умолчанию включен. Если снять, то после Удаления/Перемещения/Копирования строк/столбцов форма не закроется и можно будет указать следующий критерий.

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Adblock
detector

автоматическое копирование данных по условию

Автор gitzzz, 25.07.2009, 14:22

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

Добрый день.

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

Такие возможности ехсел не знаю, но знаю что они есть)

Подскажите, пожалуйста, как это можно организовать (оперативно)?
Пробовал с помощью ЕСЛИ() но там постоянно выдается ответ ЛОЖЬ. Может макрос какой-нибудь есть?
Заранее, спасибо.


Есть несколько путей:
1. Написать макрос, который будет копировать на свободное место на втором листе значение, введенное в ячейку на первом листе, если рядом ввели признак ДА. Сам я макрос написать не возьмусь, но знаю, что это не обчень сложно. Попробуйте сами использовать макрорекодер для записи собственных действий, а потом поправьте макрос.
2. Использовать сводную таблицу. Опять таки, сам никогда их не использовал, но другим людям нравится.
3. Записать во второй таблице формулы, отображающие значения всех строк (ячеек), содержащий признак ДА.

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

P.S. Важно, чтобы в столбце C первого листа не было лишних цифровых значений.
Если у Вас на листах должна быть шапка, то поэкспериментируйте с добавлений констант вида: СТРОКА()-Const


Нашел интересную статью, но опять возникли трудности с реализацией:
http://stockportal.ru/extrading/archives/225

Помогите разобраться в части кода, начиная с Call QuoteRead(intInstCount)
Кстати та книгде и не наше что это за функция…
Код можно переделать под мою задачу, или это вобще чтото другое?…

Public WithEvents App As Application
   Private Sub App_SheetChange(ByVal Sh As Object, ByVal Target As Range)
      Dim pRow As Integer, pCol As Integer, intRow As Integer, I As Integer, intInstCount As Integer
      Dim pValue As Variant
      Dim wInstSheet As Worksheet
      Dim wNVSheet As Worksheet
     Set wInstSheet = Application.Workbooks("NettoVolume.xlsm").Sheets("Instruments")
     Set wNVSheet = Application.Workbooks("NettoVolume.xlsm").Sheets("NV")
      intInstCount = wInstSheet.Cells(2, 5)
     If Sh.Name = "Котировки" And Target.Column > 1 And Target.Row > 1 And Target.Row < 10 Then
        Debug.Print "Вошел в AppEvents"
        Call QuoteRead(intInstCount)
        For I = 1 To intInstCount
            If Instruments(I).ChangeMode = 2 Then
               intRow = wInstSheet.Cells(3, 5) + 1
              Call Instruments(I).Output(wNVSheet, intRow, 2)
              wInstSheet.Cells(3, 5) = intRow
            End If
        Next I
     End If
   End Sub


Сводную таблу сделал, но ее обновлять надо, да и пустые значения фильтром убираются…Не автоматизированно всё… Хочется, чтобы все обрабатывалось динамически.
Может кто-н знает как обработать событие при изменении значений в ячейке? Подскажите, пожалуйста. Код так и не смог разобрать…..


Если в ячейке «А1» написать слово ИСТИНА, а нижеследующий код скопировать в модуль листа №1, то, при изменении любой одной ячейки второго столбца, третьи столбцы двух листов этой строки «синхронизируются».

Private Sub Worksheet_Change(ByVal Target As Range)
 With Target
   If .Count > 1 Then Exit Sub
   If .Column = 2 And [A1] Then Sheets(2).Cells(.Row, 3) = .Offset(0, 1)
 End With
End Sub

Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли



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

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

  • Microsoft Excel

  • автоматическое копирование данных по условию

Как скопировать ячейки, если столбец содержит определенное значение / текст в Excel?

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

  • Скопируйте ячейки, если столбец содержит определенное значение / текст с помощью команды «Фильтр»
  • Скопируйте ячейки, если столбец содержит определенное значение / текст с помощью команды поиска
  • Скопируйте ячейки, если столбец содержит определенное значение/текст с Kutools for Excel

 Скопируйте ячейки, если столбец содержит определенное значение / текст с помощью команды «Фильтр»

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

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

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

3. В открывшемся диалоговом окне Custom AutoFilter введите конкретный текст в поле за содержит и нажмите OK кнопку.

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

4. Выберите все отфильтрованные ячейки в определенном столбце и скопируйте их, нажав Ctrl + C одновременно.

5. Выберите пустую ячейку и вставьте эти ячейки, нажав Ctrl + V одновременно.

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

Kutools for ExcelАвтора Выберите одинаковые и разные ячейки Утилита позволяет пользователям Excel сравнивать два столбца, а затем легко выбирать / копировать / выделять целые строки на основе одинаковых или разных значений.

объявление выбрать целые строки на основе одинаковых значений

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

Этот метод поможет вам найти все ячейки, содержащие определенное значение или текст, с помощью команды «Найти», а затем легко скопировать все найденные ячейки.

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

2. Откройте диалоговое окно «Найти и заменить», нажав кнопку Ctrl + F тем временем, затем в диалоговом окне «Найти и заменить» введите конкретный текст в поле Найти то, что и нажмите Найти все кнопку.

Внимание: Вы также можете открыть диалоговое окно «Найти и заменить», нажав Главная > Найти и выбрать > Найти.

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

3. Выделите все найденные ячейки, нажав Ctrl + A ключи и закройте диалоговое окно «Найти и заменить». Теперь все ячейки, содержащие определенный текст, выделяются в определенном столбце.

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


  Скопируйте ячейки, если столбец содержит определенное значение/текст с Kutools for Excel

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

1. Выберите указанный столбец и щелкните Кутулс > Выберите > Выберите специальные ячейки.

2. В открывшемся диалоговом окне Select Special Cells,

(1) В Тип выбора раздел, проверка Ячейка вариант;
(2) В Конкретный тип раздел, щелкните первое поле и выберите Комплект из раскрывающегося списка, а затем введите указанный текст (в нашем случае введите сумма) в следующее поле;
(3) Щелкните значок Ok кнопка. Затем появляется вторая строка Select Specific Cells, показывающая, сколько ячеек выбрано. Щелкните значок OK чтобы закрыть его.

3. Теперь выбираются ячейки, содержащие определенное значение / текст. Нажмите Ctrl + C ключи для их копирования; выберите ячейку, в которую вы будете вставлять ячейки, и нажмите Ctrl + V ключи.

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


 Демо: скопируйте ячейки, если столбец содержит определенное значение / текст в Excel


Статьи по теме


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

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

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

вкладка kte 201905


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

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

офисный дно

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

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

  • Как скопировать ячейки одного цвета в excel
  • Как скопировать ячейки в несколько ячеек excel
  • Как скопировать ячейки в книгу vba excel
  • Как скопировать ячейки в excel через одну ячейку
  • Как скопировать ячейки в excel с сохранением формул

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

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