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

Вход

Регистрация

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

 

= Мир MS Excel/Перенос строк из одного листа в другой по признаку - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Перенос строк из одного листа в другой по признаку
DenchikZ Дата: Суббота, 02.11.2024, 06:50 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

2020
Добрый день уважаемые знатоки!

В прикрепленном файле "Подбор трубы для ЦЗЛ" есть два листа и один макрос.

Необходимо с листа "ЦЗЛ" перенести данные строки в столбцах с 1-5 (A-E) в лист "Отдел", по результату "Да" отмеченному зеленым цветом в столбце M(№13). Обе таблицу будут заполнятся и представлять собой базу данных. , В VBA не силен прописал код, но не работает!

[vba]
Код
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub

Dim iLast As Long
iLast = Me.Columns("A").Find(what:="*", _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False, SearchFormat:=False).Row
' Debug.Print iLast

If Not Intersect(Target, Range("M3:M" & iLast)) Is Nothing Then

If Target.Offset(0).DisplayFormat.Interior.Color = RGB(153, 204, 0) Then

With ThisWorkbook.Worksheets("Отдел")

Dim lr As Long
lr = .Columns("F").Find(what:="*", _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False, SearchFormat:=False).Row
' Debug.Print lr
.Cells(lr + 1, 1) = Cells(Target.Row, 1) ' A
.Cells(lr + 1, 2) = Cells(Target.Row, 2) ' B
.Cells(lr + 1, 3) = Cells(Target.Row, 3) ' C
.Cells(lr + 1, 4) = Cells(Target.Row, 4) ' D
.Cells(lr + 1, 5) = Cells(Target.Row, 5) ' E
.Cells.Columns.AutoFit
End With

End If

End If

End Sub
[/vba]

Спасибо!
К сообщению приложен файл: podbor_truby_dlja_czl.xlsm (20.4 Kb)


Сообщение отредактировал DenchikZ - Суббота, 02.11.2024, 10:26
 
Ответить
СообщениеДобрый день уважаемые знатоки!

В прикрепленном файле "Подбор трубы для ЦЗЛ" есть два листа и один макрос.

Необходимо с листа "ЦЗЛ" перенести данные строки в столбцах с 1-5 (A-E) в лист "Отдел", по результату "Да" отмеченному зеленым цветом в столбце M(№13). Обе таблицу будут заполнятся и представлять собой базу данных. , В VBA не силен прописал код, но не работает!

[vba]
Код
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub

Dim iLast As Long
iLast = Me.Columns("A").Find(what:="*", _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False, SearchFormat:=False).Row
' Debug.Print iLast

If Not Intersect(Target, Range("M3:M" & iLast)) Is Nothing Then

If Target.Offset(0).DisplayFormat.Interior.Color = RGB(153, 204, 0) Then

With ThisWorkbook.Worksheets("Отдел")

Dim lr As Long
lr = .Columns("F").Find(what:="*", _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False, SearchFormat:=False).Row
' Debug.Print lr
.Cells(lr + 1, 1) = Cells(Target.Row, 1) ' A
.Cells(lr + 1, 2) = Cells(Target.Row, 2) ' B
.Cells(lr + 1, 3) = Cells(Target.Row, 3) ' C
.Cells(lr + 1, 4) = Cells(Target.Row, 4) ' D
.Cells(lr + 1, 5) = Cells(Target.Row, 5) ' E
.Cells.Columns.AutoFit
End With

End If

End If

End Sub
[/vba]

Спасибо!

Автор - DenchikZ
Дата добавления - 02.11.2024 в 06:50
Hugo Дата: Суббота, 02.11.2024, 08:31 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
DenchikZ, Добрый день.
Не работает потому что Private Sub Worksheet_Change - это событие изменения ячейки, но ячейка при пересчёте не меняется.
Вбейте в неё вручную что-то и код сработает.
Но т.к. код не находит Interior.Color = RGB(153, 204, 0) то на этом и всё.
Т.е. две причины - нет изменений, не тот цвет.
Когда это поправится - далее косяк на
lr = .Columns("F").Find(...
нет там в F ничего...
Вот эти 3 места поправить и полетит.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD


Сообщение отредактировал Hugo - Суббота, 02.11.2024, 08:41
 
Ответить
СообщениеDenchikZ, Добрый день.
Не работает потому что Private Sub Worksheet_Change - это событие изменения ячейки, но ячейка при пересчёте не меняется.
Вбейте в неё вручную что-то и код сработает.
Но т.к. код не находит Interior.Color = RGB(153, 204, 0) то на этом и всё.
Т.е. две причины - нет изменений, не тот цвет.
Когда это поправится - далее косяк на
lr = .Columns("F").Find(...
нет там в F ничего...
Вот эти 3 места поправить и полетит.

Автор - Hugo
Дата добавления - 02.11.2024 в 08:31
vanin00 Дата: Суббота, 02.11.2024, 09:01 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

365
RGB(153, 204, 0) заменить на RGB(146, 208, 80) а также убрать объединение ячеек на листе 'Отдел"


vanin00

Сообщение отредактировал vanin00 - Суббота, 02.11.2024, 09:21
 
Ответить
СообщениеRGB(153, 204, 0) заменить на RGB(146, 208, 80) а также убрать объединение ячеек на листе 'Отдел"

Автор - vanin00
Дата добавления - 02.11.2024 в 09:01
Hugo Дата: Суббота, 02.11.2024, 09:17 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Ну или можно иначе - указать чуть другой зелёный в УФ, это уж как хозяин решит.
Но это не заставит код работать, нужно другие ячейки отслеживать, но мы не в курсе техпроцесса...
Ну и со вторым листом нам тоже неведомо в каком столбце точно будет заполнена последняя строка.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеНу или можно иначе - указать чуть другой зелёный в УФ, это уж как хозяин решит.
Но это не заставит код работать, нужно другие ячейки отслеживать, но мы не в курсе техпроцесса...
Ну и со вторым листом нам тоже неведомо в каком столбце точно будет заполнена последняя строка.

Автор - Hugo
Дата добавления - 02.11.2024 в 09:17
DenchikZ Дата: Суббота, 02.11.2024, 09:23 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

2020
Hugo, Interior.Color = RGB(153, 204, 0) я понял! Но тогда какое условие задать вместо Private Sub Worksheet_Change
 
Ответить
СообщениеHugo, Interior.Color = RGB(153, 204, 0) я понял! Но тогда какое условие задать вместо Private Sub Worksheet_Change

Автор - DenchikZ
Дата добавления - 02.11.2024 в 09:23
DenchikZ Дата: Суббота, 02.11.2024, 09:26 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

2020
Hugo, получается нужно переносить данные строк в 5 первых столбцах по значению которое выпадает по формуле в столбце M, то есть там если выпадет Да с выделенным зеленым цветом то нужно данные этой строки по 5 первым столбцам перенести в лист Отдел
 
Ответить
СообщениеHugo, получается нужно переносить данные строк в 5 первых столбцах по значению которое выпадает по формуле в столбце M, то есть там если выпадет Да с выделенным зеленым цветом то нужно данные этой строки по 5 первым столбцам перенести в лист Отдел

Автор - DenchikZ
Дата добавления - 02.11.2024 в 09:26
vanin00 Дата: Суббота, 02.11.2024, 09:32 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

365
Посмотрите этот файл...В столбце "H" меняем из выпадающего списка ...смотрим результат на листе "Отдел"
К сообщению приложен файл: 1085379.xlsm (22.0 Kb)


vanin00
 
Ответить
СообщениеПосмотрите этот файл...В столбце "H" меняем из выпадающего списка ...смотрим результат на листе "Отдел"

Автор - vanin00
Дата добавления - 02.11.2024 в 09:32
Hugo Дата: Суббота, 02.11.2024, 09:34 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Это понятно.
Но там этих "Да" много, а у события пересчёта нет Target, и зачем усложнять.
Думаю проще отслеживать те столбцы куда вносите руками чтоб получилось это Да, и проверять что Да есть в М.
P.S. Отвечал на предыдущее


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD


Сообщение отредактировал Hugo - Суббота, 02.11.2024, 09:35
 
Ответить
СообщениеЭто понятно.
Но там этих "Да" много, а у события пересчёта нет Target, и зачем усложнять.
Думаю проще отслеживать те столбцы куда вносите руками чтоб получилось это Да, и проверять что Да есть в М.
P.S. Отвечал на предыдущее

Автор - Hugo
Дата добавления - 02.11.2024 в 09:34
DenchikZ Дата: Суббота, 02.11.2024, 09:45 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

2020
vanin00, Спасибо но немного не так получает он учитывает любое изменение в столбце "Н" и там может быть нет, то столбец "М" не заполнится, а строку уже перекинуло
 
Ответить
Сообщениеvanin00, Спасибо но немного не так получает он учитывает любое изменение в столбце "Н" и там может быть нет, то столбец "М" не заполнится, а строку уже перекинуло

Автор - DenchikZ
Дата добавления - 02.11.2024 в 09:45
DenchikZ Дата: Суббота, 02.11.2024, 09:58 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

2020
vanin00, плюсам получается не переносит другие строки тем самым не создает как базу данных
 
Ответить
Сообщениеvanin00, плюсам получается не переносит другие строки тем самым не создает как базу данных

Автор - DenchikZ
Дата добавления - 02.11.2024 в 09:58
MikeVol Дата: Суббота, 02.11.2024, 20:30 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 378
Репутация: 80 ±
Замечаний: 0% ±

MSO LTSC 2021 EN
DenchikZ, Доброго времени суток.
прописал код, но не работает
Смотрю вы всё эксперементируете? Посмотрите файл. Тригером будет ячейки колонки E. Удачи.
К сообщению приложен файл: 02_11_2024_exw_perenos_strok_i.xlsm (24.5 Kb)


Ученик.
Одесса - Украина
 
Ответить
СообщениеDenchikZ, Доброго времени суток.
прописал код, но не работает
Смотрю вы всё эксперементируете? Посмотрите файл. Тригером будет ячейки колонки E. Удачи.

Автор - MikeVol
Дата добавления - 02.11.2024 в 20:30
DenchikZ Дата: Понедельник, 18.11.2024, 14:15 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

2020
MikeVol, да, верно! Пытаюсь создать листы что бы данные с одного листа частично дублировались в другой при выполнению определенных условий!
 
Ответить
СообщениеMikeVol, да, верно! Пытаюсь создать листы что бы данные с одного листа частично дублировались в другой при выполнению определенных условий!

Автор - DenchikZ
Дата добавления - 18.11.2024 в 14:15
MikeVol Дата: Понедельник, 18.11.2024, 14:24 | Сообщение № 13
Группа: Проверенные
Ранг: Обитатель
Сообщений: 378
Репутация: 80 ±
Замечаний: 0% ±

MSO LTSC 2021 EN
DenchikZ, Опреративно вы однако отвечаете. Я поражён вашей реакцией...


Ученик.
Одесса - Украина
 
Ответить
СообщениеDenchikZ, Опреративно вы однако отвечаете. Я поражён вашей реакцией...

Автор - MikeVol
Дата добавления - 18.11.2024 в 14:24
DenchikZ Дата: Вторник, 19.11.2024, 11:12 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 27
Репутация: 0 ±
Замечаний: 0% ±

2020
MikeVol, просто периодически нахожусь в командировке не всегда есть доступ в интернет
 
Ответить
СообщениеMikeVol, просто периодически нахожусь в командировке не всегда есть доступ в интернет

Автор - DenchikZ
Дата добавления - 19.11.2024 в 11:12
  • Страница 1 из 1
  • 1
Поиск:

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