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

Вход

Регистрация

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

 

= Мир MS Excel/Скопировать на лист Отчет строки со статусом "выполнено" - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Скопировать на лист Отчет строки со статусом "выполнено"
parovoznik Дата: Вторник, 25.09.2018, 22:37 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 443
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
Доброго времени суток.
Имеется таблица по плановым отгрузкам со склада. Нужно по нажатию на кнопку скопировать (без столбца F) строки у которых статус "выполнено".
Файл с результатом прилагается.
Заранее благодарен.
К сообщению приложен файл: 3153316.xlsm (19.9 Kb)
 
Ответить
СообщениеДоброго времени суток.
Имеется таблица по плановым отгрузкам со склада. Нужно по нажатию на кнопку скопировать (без столбца F) строки у которых статус "выполнено".
Файл с результатом прилагается.
Заранее благодарен.

Автор - parovoznik
Дата добавления - 25.09.2018 в 22:37
_Boroda_ Дата: Вторник, 25.09.2018, 23:07 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация: 6505 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Так нужно?
[vba]
Код
Sub tt()
    z_ = "выполнено" 'метка для проверки
    r0_ = 4 'первая строка данных листа План
    c_ = 9 'сколько столбцов брать. Можно Cells(r0_, Columns.Count).End(1).Column
    n_ = Cells(Rows.Count, c_).End(3).Row - r0_ + 1 'кол-во заполненных строк в столбце с_
    If n_ < 1 Then Exit Sub 'если от не заполнен, то выход
    ar = Cells(r0_, 1).Resize(n_, c_) 'все данные берем в массив
    For i = 1 To n_ 'цикл по строкам
        If ar(i, c_) = z_ Then 'если последний столбец равен метке
            k_ = k_ + 1 'счётчик +1
            If k_ <> i Then 'номер счетчика не равен номеру в цикле
                For j1 = 1 To 5 'цикл по первым 5-и столбцам
                    ar(k_, j1) = ar(i, j1) 'заменяем в массиве первые 5 столбцов строки k на 5 столбцов строки i ***
                Next j1
            End If
            For j2 = 7 To c_ ''цикл по 7 и правее столбцам
                ar(k_, j2 - 1) = ar(i, j2) '*** со смещением на один столбец влево
            Next j2
        End If
    Next i
    If k_ > 0 Then 'если счетчик есть
        With Sheets("Отчет ") 'для листа Отчет (зачем Вы сделали в названии листа пробел?)
            r00_ = 4 'первая строка
            c00_ = 1 'первый столбец
            n00_ = .Cells(Rows.Count, c00_).End(3).Row - r00_ + 1 'кол-во заполненных строк в столбце с00_
            If n00_ > 0 Then 'если есть уже какие-то строки
                .Cells(r00_, c00_).Resize(n00_, c_ - 1).Clear 'убиваем их
            End If
            With .Cells(r00_, c00_).Resize(k_, c_ - 1) 'с ячейки r00_, c00_ вниз на k_ и вправо на с_-1
                .Value = ar 'вставляем КУСОК из массива ar (на самом деле он у нас вероятно будет больше)
                .Borders.Weight = xlThin 'рисуем границы
            End With
            .Select 'переходим на лист
        End With
    End If
End Sub
[/vba]

* Переписал, дописал комментарии и проверки.
Файл перевложил
К сообщению приложен файл: 3153316_2.xlsm (22.1 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?
[vba]
Код
Sub tt()
    z_ = "выполнено" 'метка для проверки
    r0_ = 4 'первая строка данных листа План
    c_ = 9 'сколько столбцов брать. Можно Cells(r0_, Columns.Count).End(1).Column
    n_ = Cells(Rows.Count, c_).End(3).Row - r0_ + 1 'кол-во заполненных строк в столбце с_
    If n_ < 1 Then Exit Sub 'если от не заполнен, то выход
    ar = Cells(r0_, 1).Resize(n_, c_) 'все данные берем в массив
    For i = 1 To n_ 'цикл по строкам
        If ar(i, c_) = z_ Then 'если последний столбец равен метке
            k_ = k_ + 1 'счётчик +1
            If k_ <> i Then 'номер счетчика не равен номеру в цикле
                For j1 = 1 To 5 'цикл по первым 5-и столбцам
                    ar(k_, j1) = ar(i, j1) 'заменяем в массиве первые 5 столбцов строки k на 5 столбцов строки i ***
                Next j1
            End If
            For j2 = 7 To c_ ''цикл по 7 и правее столбцам
                ar(k_, j2 - 1) = ar(i, j2) '*** со смещением на один столбец влево
            Next j2
        End If
    Next i
    If k_ > 0 Then 'если счетчик есть
        With Sheets("Отчет ") 'для листа Отчет (зачем Вы сделали в названии листа пробел?)
            r00_ = 4 'первая строка
            c00_ = 1 'первый столбец
            n00_ = .Cells(Rows.Count, c00_).End(3).Row - r00_ + 1 'кол-во заполненных строк в столбце с00_
            If n00_ > 0 Then 'если есть уже какие-то строки
                .Cells(r00_, c00_).Resize(n00_, c_ - 1).Clear 'убиваем их
            End If
            With .Cells(r00_, c00_).Resize(k_, c_ - 1) 'с ячейки r00_, c00_ вниз на k_ и вправо на с_-1
                .Value = ar 'вставляем КУСОК из массива ar (на самом деле он у нас вероятно будет больше)
                .Borders.Weight = xlThin 'рисуем границы
            End With
            .Select 'переходим на лист
        End With
    End If
End Sub
[/vba]

* Переписал, дописал комментарии и проверки.
Файл перевложил

Автор - _Boroda_
Дата добавления - 25.09.2018 в 23:07
parovoznik Дата: Вторник, 25.09.2018, 23:11 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 443
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, все верно. Спасибо.
А если строки со статусом будут выделены цветом (применено УФ).то можно переносить строки с цветом
К сообщению приложен файл: 3153316_1-2.xlsm (21.3 Kb)


Сообщение отредактировал parovoznik - Вторник, 25.09.2018, 23:20
 
Ответить
Сообщение_Boroda_, все верно. Спасибо.
А если строки со статусом будут выделены цветом (применено УФ).то можно переносить строки с цветом

Автор - parovoznik
Дата добавления - 25.09.2018 в 23:11
parovoznik Дата: Вторник, 25.09.2018, 23:37 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 443
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, что то макрос не запускается! :o
Я дописал в сообщении №3 если строки будут выделены цветом ,то можно их с заливкой перносить!
 
Ответить
Сообщение_Boroda_, что то макрос не запускается! :o
Я дописал в сообщении №3 если строки будут выделены цветом ,то можно их с заливкой перносить!

Автор - parovoznik
Дата добавления - 25.09.2018 в 23:37
_Boroda_ Дата: Вторник, 25.09.2018, 23:59 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация: 6505 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Блин, это совсем другая логика уже. В следующий раз сразу говорите
[vba]
Код
Sub tt()
    Application.ScreenUpdating = 0
    Application.Calculation = 3
    z_ = "выполнено" 'метка для проверки
    r0_ = 4 'первая строка данных листа План
    c_ = 9 'сколько столбцов брать. Можно Cells(r0_, Columns.Count).End(1).Column
    n_ = Cells(Rows.Count, c_).End(3).Row - r0_ + 1 'кол-во заполненных строк в столбце с_
    If n_ < 1 Then Exit Sub 'если от не заполнен, то выход
    ar = Cells(r0_, 1).Resize(n_, c_) 'все данные берем в массив
    With Sheets("Отчет ") 'для листа Отчет (зачем Вы сделали в названии листа пробел?)
        r00_ = 4 'первая строка
        c00_ = 1 'первый столбец
        n00_ = .Cells(Rows.Count, c00_).End(3).Row - r00_ + 1 'кол-во заполненных строк в столбце с00_
        If n00_ > 0 Then 'если есть уже какие-то строки
            .Cells(r00_, c00_).Resize(n00_, c_ - 1).Clear 'убиваем их
        End If
        For i = 1 To n_ 'цикл по строкам
            If ar(i, c_) = z_ Then 'если последний столбец равен метке
                k_ = k_ + 1 'счётчик +1
                Cells(r0_ + i - 1, 1).Resize(1, c_).Copy .Cells(r00_ + k_ - 1, 1).Resize(1, c_)
            End If
        Next i
        .Cells(r00_, 6).Resize(k_).Delete Shift:=xlToLeft
        .Select
    End With
    Application.Calculation = 1
    Application.ScreenUpdating = 1
End Sub
[/vba]
что то макрос не запускается

А Вы заполнили 9-й столбец?
К сообщению приложен файл: 3153316_22.xlsm (22.2 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеБлин, это совсем другая логика уже. В следующий раз сразу говорите
[vba]
Код
Sub tt()
    Application.ScreenUpdating = 0
    Application.Calculation = 3
    z_ = "выполнено" 'метка для проверки
    r0_ = 4 'первая строка данных листа План
    c_ = 9 'сколько столбцов брать. Можно Cells(r0_, Columns.Count).End(1).Column
    n_ = Cells(Rows.Count, c_).End(3).Row - r0_ + 1 'кол-во заполненных строк в столбце с_
    If n_ < 1 Then Exit Sub 'если от не заполнен, то выход
    ar = Cells(r0_, 1).Resize(n_, c_) 'все данные берем в массив
    With Sheets("Отчет ") 'для листа Отчет (зачем Вы сделали в названии листа пробел?)
        r00_ = 4 'первая строка
        c00_ = 1 'первый столбец
        n00_ = .Cells(Rows.Count, c00_).End(3).Row - r00_ + 1 'кол-во заполненных строк в столбце с00_
        If n00_ > 0 Then 'если есть уже какие-то строки
            .Cells(r00_, c00_).Resize(n00_, c_ - 1).Clear 'убиваем их
        End If
        For i = 1 To n_ 'цикл по строкам
            If ar(i, c_) = z_ Then 'если последний столбец равен метке
                k_ = k_ + 1 'счётчик +1
                Cells(r0_ + i - 1, 1).Resize(1, c_).Copy .Cells(r00_ + k_ - 1, 1).Resize(1, c_)
            End If
        Next i
        .Cells(r00_, 6).Resize(k_).Delete Shift:=xlToLeft
        .Select
    End With
    Application.Calculation = 1
    Application.ScreenUpdating = 1
End Sub
[/vba]
что то макрос не запускается

А Вы заполнили 9-й столбец?

Автор - _Boroda_
Дата добавления - 25.09.2018 в 23:59
parovoznik Дата: Среда, 26.09.2018, 06:54 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 443
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, спасибо.
Столбец заполнил все работает. В наименовании листа "Отчет" убрал пробел . hands
 
Ответить
Сообщение_Boroda_, спасибо.
Столбец заполнил все работает. В наименовании листа "Отчет" убрал пробел . hands

Автор - parovoznik
Дата добавления - 26.09.2018 в 06:54
  • Страница 1 из 1
  • 1
Поиск:

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