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

0 / 0 / 0

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

Сообщений: 4

1

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

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


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

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

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

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

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

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

тест.xlsx



0



5942 / 3154 / 698

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

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

30.06.2016, 21:25

2

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



0



0 / 0 / 0

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

Сообщений: 4

30.06.2016, 21:32

 [ТС]

3

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

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

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

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



0



5942 / 3154 / 698

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

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

30.06.2016, 22:02

4

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



0



4131 / 2235 / 940

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

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

30.06.2016, 22:13

5

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

Решение

testpa, Если

перед

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



3



0 / 0 / 0

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

Сообщений: 4

30.06.2016, 22:28

 [ТС]

6

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

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

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



0



4131 / 2235 / 940

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

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

30.06.2016, 22:44

7

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

Миниатюры

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



0



0 / 0 / 0

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

Сообщений: 4

30.06.2016, 23:19

 [ТС]

8

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

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



0



4131 / 2235 / 940

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

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

30.06.2016, 23:39

9



0



0 / 0 / 0

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

Сообщений: 13

07.06.2020, 01:01

10

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



0



4131 / 2235 / 940

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

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

07.06.2020, 08:26

11

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

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



0



0 / 0 / 0

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

Сообщений: 13

07.06.2020, 11:48

12

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

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

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



0



4131 / 2235 / 940

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

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

07.06.2020, 13:43

13

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

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



1



0 / 0 / 0

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

Сообщений: 13

07.06.2020, 21:02

14

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

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

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

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



0



0 / 0 / 0

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

Сообщений: 4

14.11.2020, 18:22

15

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

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

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



0



2632 / 1637 / 745

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

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

14.11.2020, 18:25

16

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



0



2632 / 1637 / 745

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

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

14.11.2020, 23:52

17

teacher6,

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

Миниатюры

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



0



0 / 0 / 0

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

Сообщений: 4

23.11.2020, 08:54

18

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



0



Narimanych

2632 / 1637 / 745

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

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

23.11.2020, 10:42

19

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

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



0



0 / 0 / 0

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

Сообщений: 1

07.04.2021, 11:18

20

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



0



 

AnatoliyAN

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

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

Помогите, пожалуйста! Вторую неделю не могу найти вариант решения… Есть «База», нужно, чтобы при введении слова договор в ячейку «Статус» вся строка перенеслась на другой лист «Д.Газ» (или хотя бы скопировалась автоматически на другой лист). За ранее благодарю всех за помощь.

 

JayBhagavan

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

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

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#2

22.07.2015 16:11:14

В код листа «База»:

Скрытый текст

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

AnatoliyAN

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

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

А как это ввести в код листа?

 

JayBhagavan

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

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

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

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

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

AnatoliyAN

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

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

не работает :(. может я что-то не правильно сделал… Могу попросить Вас в тот файл, что я загрузил вставить этот макрос?

 

JayBhagavan

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

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

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

Пожалуйста.

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

AlexTM

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

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

Win7SP1 EXL2010 / Win8.1 EXL2016 (VM)

JayBhagavan, код не срабатывает, если вписать слово договор не последовательно, а, например, сразу ниже на десять ячеек… Просто наблюдение, ибо учусь :oops:

 

AnatoliyAN

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

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

спасибо! работает! :) , но JayBhagavan прав — если вводить не последовательно — не работает. Это можно исправить?

 

AlexTM

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

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

Win7SP1 EXL2010 / Win8.1 EXL2016 (VM)

#9

22.07.2015 17:29:43

Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Set trgt_rng = Range([D2], [D2].End(xlDown))
    If Target.Count = 1 Then
       If Target.Value = "Договор" Then
            Set out_rng = Worksheets("Д.Газ").[A1].Offset(Cells.Rows.Count - 1).End(xlUp).Offset(1)
            Target.EntireRow.Copy out_rng
            Application.CutCopyMode = False
        End If
    End If
End Sub
 

AlexTM

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

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

Win7SP1 EXL2010 / Win8.1 EXL2016 (VM)

Возможно, не лучшее решение, ибо могут возникнуть ошибки. Но вроде работает, если вводить только слово Договор.

 

AlexTM

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

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

Win7SP1 EXL2010 / Win8.1 EXL2016 (VM)

 

AlexTM

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

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

Win7SP1 EXL2010 / Win8.1 EXL2016 (VM)

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

 

AnatoliyAN

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

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

Ура!!! Спасибо. Работает!!! Вы мне ОЧЕНЬ помогли :)

 

JayBhagavan

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

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

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#14

22.07.2015 17:44:33

Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Set trgt_rng = Range([D2], [D2].End(xlDown))
    If Not Intersect(trgt_rng, Target) Is Nothing And Target.Cells(1).Value = "Договор" Then
        Set out_rng = Worksheets("Д.Газ").[A1].Offset(Cells.Rows.Count - 1).End(xlUp).Offset(1)
        Target.EntireRow.Copy out_rng
        Application.CutCopyMode = False
    End If
End Sub

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

AnatoliyAN

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

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

#15

22.07.2015 18:09:23

Цитата
AlexTM написал:… как модифицировать код, чтобы можно было удалять или изменять перенесенную строку

Єто было бы вообще идеально, еслибы они автоматически удалялись при таком условии…

 

JayBhagavan

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

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

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

AnatoliyAN, опишите какое(ие) поле(я) являются идентификаторами записи и тогда можно будет и отмену реализовать.

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

AlexTM

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

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

Win7SP1 EXL2010 / Win8.1 EXL2016 (VM)

AnatoliyAN, сия заслуга JayBhagavan
JayBhagavan, наверное, индикатором записи/удаления будет одно и то же поле… Но вопрошающий знает наверняка  :)

 

AnatoliyAN

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

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

Всем, здравствуйте! Благодарю Вас за неравнодушие к моей проблеме! По поводу индикатора: колонка «статус». Наверное самое удобное, чтобы при внесении в ячейку колонки «статус» слова «договор» вся строка копируется в лист «Д.Газ», а при удалении из этой ячейки слова «договор» скопированная строка тоже автоматически удаляется с листа «Д.Газ»

 

Cors

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

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

Здравствуйте!
Тема очень актуальна. Уже внедряю этот макрос. Только мне нужен захват не всей строки, а нескольких ячеек в строке с индикатором.
Если Вам не трудно, подскажите новичку как в коде это прописать. Например, нужен отбор из листа «База» в лист «Д.Газ» только инфы со столбцов Наименование и Инфо.
Спасибо.

 

JayBhagavan

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

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

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#20

23.07.2015 16:12:20

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

Cors, замените строку:

Код
Target.EntireRow.Copy out_rng

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

Код
range("a" & Target.row & ",c" & Target.row & ",n" & Target.row).Copy out_rng

Не проверял, потому тестируйте.

Изменено: JayBhagavan23.07.2015 16:13:45
(забыл .Copy в примере написать)

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

Cors

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

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

JayBhagavan, большое спасибо! Все работает. Сейчас буду затачивать под свою таблицу.
По ходу надо углубляться в VBA, уж больно полезное.

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

 

JayBhagavan

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

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

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#22

23.07.2015 17:32:59

Cors, не за что. Лучше не злоупотреблять добротой — это приводит к нарушению правил. (один вопрос — одна тема)

Скрытый текст

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

китин

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

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

как то очень мне это

знакомо.

что там было не так?

Изменено: китин23.07.2015 17:54:13

Вполне такой нормальный кинжальчик. Процентов на 100
<#0>

 

icemen

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

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

Здравствуйте!
Огромное спасибо за Ваши подсказки, многие мне очень хорошо помогли.
Но у меня так и не получается перенести из одного листа (Заявки) в другой (Выдачи) не всю строку, а только ее часть ( из D (Заявки) — в C (Выдачи), из F (Заявки) — в H (Выдачи), из G (Заявки) — в I (Выдачи)). Все работает при смене статуса (Ячейка H (Заявки)).
Огромная просьба помочь в данной ситуации. Заранее большое спасибо!

 

JayBhagavan

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

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

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#25

13.10.2015 22:19:27

icemen, здравия.

Цитата
icemen написал:
( из D (Заявки) — в C (Выдачи), из F (Заявки) — в H (Выдачи), из G (Заявки) — в I (Выдачи)). Все работает при смене статуса (Ячейка H (Заявки)).

Сдаётся мне, что Вы что-то путаете, но сделал почти так как просили — не делал перемещение, а только копирование, чтобы Вы поняли так или нет Вы хотели. В код листа «Заявки»:

Код
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wbf As Worksheet, wbd As Worksheet, c_row&, l_row&
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("H:H")) Is Nothing Then
        If Target.Value = "ЗАКР" Then
            Application.EnableEvents = False
            c_row = Target.Row
            Set wbf = ThisWorkbook.Worksheets("Заявки")
            Set wbd = ThisWorkbook.Worksheets("Выдачи")
            wbd.Range("Таблица2[#Totals]").ListObject.ListRows.Add
            l_row = wbd.Range("A1").End(xlDown).Row + 1
            wbd.Range("A" & l_row).FillDown
            wbd.Range("C" & l_row).Value = wbf.Range("D" & c_row).Value
            wbd.Range("H" & l_row).Value = wbf.Range("F" & c_row).Value
            wbd.Range("I" & l_row).Value = wbf.Range("G" & c_row).Value
            Application.EnableEvents = True
        End If
    End If
End Sub

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

icemen

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

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

Не знаю сейчас правильно Вас понял или нет, но я ПКМ на вкладке «Заявки», Исходный текст в окно вставил код, который вы прислали, сохранил и пру проставлении статуса ЗАКР у меня выдает ошибку. Извините, если я делаю не правильно, в этом у меня мало опыта. Заранее еще раз большое спасибо.

wbd.Range(«Таблица2[#Totals]»).ListObject.ListRows.Add — в коде выделяется

ЖЕЛТЫМ.

Изменено: icemen14.10.2015 19:17:59

 

JayBhagavan

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

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

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

icemen, приложите файл, в котором возникает ошибка, т.к. на примере у меня ошибок не было.

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

icemen

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

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

 

JayBhagavan

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

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

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

#29

15.10.2015 09:37:33

icemen, пробуйте:

Скрытый текст

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

icemen

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

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

#30

15.10.2015 12:44:54

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

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

  • Безымянный.jpg (89.19 КБ)

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

ZHS6071

Дата: Пятница, 18.08.2017, 13:39 |
Сообщение № 1

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

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

Сообщений: 18


Репутация:

0

±

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


Excel 2013

Здравствуйте, подскажите, пожалуйста, какая формула будет для переноса всей строки полностью, при выборе определенного условия:столбец D, статус «выполнено»?Нужно чтобы перенос осуществлялся без пропусков строк. И второй вариант формулы: при статусе «выполнено» строка переноситься на 2й лист, а с 1го удаляется (если такое вообще возможно) Спасибо!

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

2233006.xlsx
(10.4 Kb)

 

Ответить

_Boroda_

Дата: Пятница, 18.08.2017, 13:44 |
Сообщение № 2

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

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

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

Код

=ЕСЛИОШИБКА(ИНДЕКС(Основной!A:A;НАИМЕНЬШИЙ(ЕСЛИ(Основной!$D$2:$D$999=»Выполнено»;СТРОКА(Основной!$D$2:$D$999));СТРОКА(A1)));»»)

Удалять строки можно только макросом
==================
Можно перекрашивать Условным форматированием (вкладка Главная)
См. файл _2


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

 

Ответить

ZHS6071

Дата: Пятница, 18.08.2017, 13:48 |
Сообщение № 3

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

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

Сообщений: 18


Репутация:

0

±

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


Excel 2013

Спасибо большое! пойду применять к своему файлу!

 

Ответить

Ответить

ZHS6071

Дата: Вторник, 22.08.2017, 15:18 |
Сообщение № 5

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

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

Сообщений: 18


Репутация:

0

±

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


Excel 2013

Ввела формулу, написанную выше в своем файле, на 2х листах-все переносится, на 3м переносится только первая строка, без привязки к условию
Это моя формула:
=ЕСЛИОШИБКА(ИНДЕКС(Выполнено!A:A;НАИМЕНЬШИЙ(ЕСЛИ(Выполнено!$A$3:$A$135=»ИЮЛЬ»;СТРОКА(Выполнено!$A$3:$A$135));СТРОКА(A1)));»»)
В чем может быть моя ошибка. В столбце А на листе «Выполнено» — названия месяцев. В зависимости от выбора, например «июль» строка должна полностью переноситься.

 

Ответить

_Boroda_

Дата: Вторник, 22.08.2017, 16:03 |
Сообщение № 6

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

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

Исправляйте нарушение Правил форума в своем посте


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

 

Ответить

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

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


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

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

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

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

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

Sub Cheezy()
'Updated by Kutools for Excel 2017/8/28
    Dim xRg As Range
    Dim xCell As Range
    Dim I As Long
    Dim J As Long
    Dim K As Long
    I = Worksheets("Sheet1").UsedRange.Rows.Count
    J = Worksheets("Sheet2").UsedRange.Rows.Count
    If J = 1 Then
       If Application.WorksheetFunction.CountA(Worksheets("Sheet2").UsedRange) = 0 Then J = 0
    End If
    Set xRg = Worksheets("Sheet1").Range("C1:C" & I)
    On Error Resume Next
    Application.ScreenUpdating = False
    For K = 1 To xRg.Count
        If CStr(xRg(K).Value) = "Done" Then
            xRg(K).EntireRow.Copy Destination:=Worksheets("Sheet2").Range("A" & J + 1)
            xRg(K).EntireRow.Delete
            If CStr(xRg(K).Value) = "Done" Then
                K = K - 1
            End If
            J = J + 1
        End If
    Next
    Application.ScreenUpdating = True
End Sub

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

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

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

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

Sub MoveRowBasedOnCellValue()
'Updated by Extendoffice 2017/11/10
    Dim xRg As Range
    Dim xCell As Range
    Dim I As Long
    Dim J As Long
    Dim K As Long
    I = Worksheets("Sheet1").UsedRange.Rows.Count
    J = Worksheets("Sheet2").UsedRange.Rows.Count
    If J = 1 Then
    If Application.WorksheetFunction.CountA(Worksheets("Sheet2").UsedRange) = 0 Then J = 0
    End If
    Set xRg = Worksheets("Sheet1").Range("C1:C" & I)
    On Error Resume Next
    Application.ScreenUpdating = False
    For K = 1 To xRg.Count
        If CStr(xRg(K).Value) = "Done" Then
            xRg(K).EntireRow.Copy Destination:=Worksheets("Sheet2").Range("A" & J + 1)
            J = J + 1
        End If
    Next
    Application.ScreenUpdating = True
End Sub

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

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

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

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

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

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

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

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


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

  • Как переместить всю строку в нижнюю часть активного листа на основе значения ячейки в 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% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Понравилась статья? Поделить с друзьями:
  • Перенос строк в ячейке word
  • Перенос строки в одной ячейке формулой excel
  • Перенос строк в ячейке vba excel
  • Перенос строк в ячейке excel символ
  • Перенос строк в одну строку excel