Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/переноса строки в верх листа по условию - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » переноса строки в верх листа по условию (Макросы/Sub)
переноса строки в верх листа по условию
joey Дата: Пятница, 22.01.2021, 15:19 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Помогите решить проблему, есть рабочий модуль который переносит строки с одного листа книги на другой исходя из заданного условия. [vba]
Код
Sub Строки_титул()
Application.ScreenUpdating = False

    lr = Sheets("вып").Cells(Rows.Count, 2).End(xlUp).Row
    If Sheets("вып").Cells(2, 2) = "" Then
        lr = 2
    Else: lr = Sheets("вып").Cells(Rows.Count, 2).End(xlUp).Row + 1
    End If
    For i = Cells(Rows.Count, 48).End(xlUp).Row To 2 Step -1
        If Cells(i, 48) = "готов" Then
           Range(Cells(i, "A"), Cells(i, "AX")).Copy Sheets("вып").Range("A" & lr)
           Rows(i).Delete
           lr = lr + 1
           End If
           Next
         
            For i = Cells(Rows.Count, 47).End(xlUp).Row To 2 Step -1
        If Cells(i, 47) = "готов" Then
           Range(Cells(i, "A"), Cells(i, "AX")).Copy Sheets("вып").Range("A" & lr)
           Rows(i).Delete
           lr = lr + 1
        End If
    Next
Application.ScreenUpdating = True
MsgBox "Строки с готовой продукцией успешно перенесены на лист (вып)"
End Sub

[/vba]
подскажите с помощью какого модуля можно перемещать строки в верх в пределах одного листа по условию:
если в столбце I статус заказа - готов, то строка с диапазоном столбцов от А до I должна переместиться на 2 строку листа при условии что она пуста. Если строка занята то добавить на следующую пустую после второй.
К сообщению приложен файл: 6460282.xlsm (45.7 Kb)
 
Ответить
СообщениеПомогите решить проблему, есть рабочий модуль который переносит строки с одного листа книги на другой исходя из заданного условия. [vba]
Код
Sub Строки_титул()
Application.ScreenUpdating = False

    lr = Sheets("вып").Cells(Rows.Count, 2).End(xlUp).Row
    If Sheets("вып").Cells(2, 2) = "" Then
        lr = 2
    Else: lr = Sheets("вып").Cells(Rows.Count, 2).End(xlUp).Row + 1
    End If
    For i = Cells(Rows.Count, 48).End(xlUp).Row To 2 Step -1
        If Cells(i, 48) = "готов" Then
           Range(Cells(i, "A"), Cells(i, "AX")).Copy Sheets("вып").Range("A" & lr)
           Rows(i).Delete
           lr = lr + 1
           End If
           Next
         
            For i = Cells(Rows.Count, 47).End(xlUp).Row To 2 Step -1
        If Cells(i, 47) = "готов" Then
           Range(Cells(i, "A"), Cells(i, "AX")).Copy Sheets("вып").Range("A" & lr)
           Rows(i).Delete
           lr = lr + 1
        End If
    Next
Application.ScreenUpdating = True
MsgBox "Строки с готовой продукцией успешно перенесены на лист (вып)"
End Sub

[/vba]
подскажите с помощью какого модуля можно перемещать строки в верх в пределах одного листа по условию:
если в столбце I статус заказа - готов, то строка с диапазоном столбцов от А до I должна переместиться на 2 строку листа при условии что она пуста. Если строка занята то добавить на следующую пустую после второй.

Автор - joey
Дата добавления - 22.01.2021 в 15:19
_Igor_61 Дата: Пятница, 22.01.2021, 16:51 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 504
Репутация: 90 ±
Замечаний: 0% ±

Excel 2007
joey, а Вы точно уверены что строки нужно переносить? Фильтром не пытались воспользоваться?
Если строка занята то добавить на следующую пустую после второй
А если и вторая уже занята? :)
 
Ответить
Сообщениеjoey, а Вы точно уверены что строки нужно переносить? Фильтром не пытались воспользоваться?
Если строка занята то добавить на следующую пустую после второй
А если и вторая уже занята? :)

Автор - _Igor_61
Дата добавления - 22.01.2021 в 16:51
RAN Дата: Пятница, 22.01.2021, 17:05 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Один палка, два струна? Да? :D


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Пятница, 22.01.2021, 17:06
 
Ответить
СообщениеОдин палка, два струна? Да? :D

Автор - RAN
Дата добавления - 22.01.2021 в 17:05
_Igor_61 Дата: Пятница, 22.01.2021, 17:34 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 504
Репутация: 90 ±
Замечаний: 0% ±

Excel 2007
RAN, не нужно торопить события, мы еще и с третьей и четвертой не определились :D
 
Ответить
СообщениеRAN, не нужно торопить события, мы еще и с третьей и четвертой не определились :D

Автор - _Igor_61
Дата добавления - 22.01.2021 в 17:34
joey Дата: Пятница, 22.01.2021, 17:36 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

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

Автор - joey
Дата добавления - 22.01.2021 в 17:36
joey Дата: Пятница, 22.01.2021, 17:37 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

вам смешно, а мне помощь нужна))
 
Ответить
Сообщениевам смешно, а мне помощь нужна))

Автор - joey
Дата добавления - 22.01.2021 в 17:37
RAN Дата: Пятница, 22.01.2021, 18:12 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Тады ой!
[vba]
Код
Sub qq()
    Selection.EntireRow.Cut
    [A1].CurrentRegion.Offset(1).Insert
 End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Пятница, 22.01.2021, 18:14
 
Ответить
СообщениеТады ой!
[vba]
Код
Sub qq()
    Selection.EntireRow.Cut
    [A1].CurrentRegion.Offset(1).Insert
 End Sub
[/vba]

Автор - RAN
Дата добавления - 22.01.2021 в 18:12
_Igor_61 Дата: Пятница, 22.01.2021, 21:51 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 504
Репутация: 90 ±
Замечаний: 0% ±

Excel 2007
Тады ой-ё-ёй! :) В модуль листа:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
        Dim r&
        r = Target.Row
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("I:I")) Is Nothing Then
  If Cells(r, 9).Value = "готов" Then
     Rows(r).Cut
     [A1].CurrentRegion.Offset(1).Insert
  End If
End If
End Sub
[/vba]
Выделять каждую строчку для переноса joey навряд ли будет, если я правильно понял нужно строки переносить при изменении статуса на "готов"? Кажется, определились и с третьей и с четвертой :)
К сообщению приложен файл: 2350182.xlsm (44.5 Kb)


Сообщение отредактировал _Igor_61 - Пятница, 22.01.2021, 21:54
 
Ответить
СообщениеТады ой-ё-ёй! :) В модуль листа:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
        Dim r&
        r = Target.Row
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("I:I")) Is Nothing Then
  If Cells(r, 9).Value = "готов" Then
     Rows(r).Cut
     [A1].CurrentRegion.Offset(1).Insert
  End If
End If
End Sub
[/vba]
Выделять каждую строчку для переноса joey навряд ли будет, если я правильно понял нужно строки переносить при изменении статуса на "готов"? Кажется, определились и с третьей и с четвертой :)

Автор - _Igor_61
Дата добавления - 22.01.2021 в 21:51
joey Дата: Понедельник, 25.01.2021, 10:39 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Кажется, определились и с третьей и с четвертой

Спасибо, вроди то что нужно только выдает ошибку(( подскажите как исправить??
К сообщению приложен файл: 7581648.jpg (8.6 Kb)


Сообщение отредактировал joey - Понедельник, 25.01.2021, 10:40
 
Ответить
Сообщение
Кажется, определились и с третьей и с четвертой

Спасибо, вроди то что нужно только выдает ошибку(( подскажите как исправить??

Автор - joey
Дата добавления - 25.01.2021 в 10:39
joey Дата: Понедельник, 25.01.2021, 10:41 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

и после этой ошибки эксель перестает реагировать вообще, приходится выключать через диспетчер задач
 
Ответить
Сообщениеи после этой ошибки эксель перестает реагировать вообще, приходится выключать через диспетчер задач

Автор - joey
Дата добавления - 25.01.2021 в 10:41
_Igor_61 Дата: Понедельник, 25.01.2021, 11:44 | Сообщение № 11
Группа: Проверенные
Ранг: Ветеран
Сообщений: 504
Репутация: 90 ±
Замечаний: 0% ±

Excel 2007
У меня все работает. Покажите не скрин, а проблемный файл. Возможно, он чем-то отличает ся от примера или еще какой-то макрос у Вас там есть...
А возможно Вы меняете статус во второй строке... Тогда в код можно добавить проверку:[vba]
Код
.......
If Not Intersect(Target, Range("I:I")) Is Nothing Then
  If r = 2 Then
     Exit Sub
  End If
  If Cells(r, 9).Value = "готов" Then и т.д.
[/vba]


Сообщение отредактировал _Igor_61 - Понедельник, 25.01.2021, 12:36
 
Ответить
СообщениеУ меня все работает. Покажите не скрин, а проблемный файл. Возможно, он чем-то отличает ся от примера или еще какой-то макрос у Вас там есть...
А возможно Вы меняете статус во второй строке... Тогда в код можно добавить проверку:[vba]
Код
.......
If Not Intersect(Target, Range("I:I")) Is Nothing Then
  If r = 2 Then
     Exit Sub
  End If
  If Cells(r, 9).Value = "готов" Then и т.д.
[/vba]

Автор - _Igor_61
Дата добавления - 25.01.2021 в 11:44
Мир MS Excel » Вопросы и решения » Вопросы по VBA » переноса строки в верх листа по условию (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!