Здравствуйте, нужна помощь профессионалов) Вопрос такой, нужен макрос, который может анализировать ячейки в столбце, и если там записано определенное слово, именно слово, отправлять всю строку с этим словом на определенную страницу. Анализ макрос должен проводить с большого количества листов. Вообще это осуществимо ?
Здравствуйте, нужна помощь профессионалов) Вопрос такой, нужен макрос, который может анализировать ячейки в столбце, и если там записано определенное слово, именно слово, отправлять всю строку с этим словом на определенную страницу. Анализ макрос должен проводить с большого количества листов. Вообще это осуществимо ?aalexpo
KuklP, Может вы сможете помочь ? Ознакомился с темами через поиск, я скажем прямо с excel ознакомление только начинаю, а первая задача оказалось именно этой) Трудно для понимания на чужих данных...
KuklP, Может вы сможете помочь ? Ознакомился с темами через поиск, я скажем прямо с excel ознакомление только начинаю, а первая задача оказалось именно этой) Трудно для понимания на чужих данных...aalexpo
Ну и какие это слова, сколько их будет? В примере их три. Я так думаю, их кол-во конкретно не определено, а значит не определено и кол-во листов. Ну листов с датами понятно ~ 20-22. Хотя, листы добавите руками. Тренируйтесь.
Ну и какие это слова, сколько их будет? В примере их три. Я так думаю, их кол-во конкретно не определено, а значит не определено и кол-во листов. Ну листов с датами понятно ~ 20-22. Хотя, листы добавите руками. Тренируйтесь.Wasilich
Wasilich, При добавлении актуальных данных в ваш лист, все работает, спасибо вам огромное! Но при попытке импортировать макрос в оригинал файла, выдает ошибку Если у Вас есть возможность прокоментировать действия макроса, был бы очень признателен, спасибо большое!)
Дни рабочие, примерно 20-22 как вы и сказали, а слов В столбце С названия объектов на данный момент 3 слова.
Не могу понять как макрос фильтрует их )
Wasilich, При добавлении актуальных данных в ваш лист, все работает, спасибо вам огромное! Но при попытке импортировать макрос в оригинал файла, выдает ошибку Если у Вас есть возможность прокоментировать действия макроса, был бы очень признателен, спасибо большое!)
Дни рабочие, примерно 20-22 как вы и сказали, а слов В столбце С названия объектов на данный момент 3 слова.
Sub tekst() Dim St$, ps&, i&, ns&, n&, sz&, iL$ Dim sh As Worksheet For Each sh In ThisWorkbook.Worksheets If Mid(sh.Name, 1, 1) <> "С" Then iL = sh.Name With Sheets(iL) ps = .Range("C" & Rows.Count).End(xlUp).Row For i = 4 To ps St = .Cells(i, 3) ns = InStr(St, " ") If ns > 1 Then St = "С" & Mid(St, 1, ns - 1) sz = Sheets("С").Range("C" & Rows.Count).End(xlUp).Row + 1 Range(.Cells(i, 1), .Cells(i, 7)).Copy Sheets("С").Cells(sz, 1) End If Next End With End If Next End Sub
[/vba]
Выделяет желтым эту строку и выдает ошибку, когда добавляю все листы в ваш образец( sz = Sheets("С").Range("C" & Rows.Count).End(xlUp).Row + 1
[vba]
Код
Sub tekst() Dim St$, ps&, i&, ns&, n&, sz&, iL$ Dim sh As Worksheet For Each sh In ThisWorkbook.Worksheets If Mid(sh.Name, 1, 1) <> "С" Then iL = sh.Name With Sheets(iL) ps = .Range("C" & Rows.Count).End(xlUp).Row For i = 4 To ps St = .Cells(i, 3) ns = InStr(St, " ") If ns > 1 Then St = "С" & Mid(St, 1, ns - 1) sz = Sheets("С").Range("C" & Rows.Count).End(xlUp).Row + 1 Range(.Cells(i, 1), .Cells(i, 7)).Copy Sheets("С").Cells(sz, 1) End If Next End With End If Next End Sub
[/vba]
Выделяет желтым эту строку и выдает ошибку, когда добавляю все листы в ваш образец( sz = Sheets("С").Range("C" & Rows.Count).End(xlUp).Row + 1aalexpo
Сообщение отредактировал aalexpo - Понедельник, 13.02.2017, 12:28
при попытке импортировать макрос в оригинал файла, выдает ошибку
Ну явно что то не так сделали. Откуда же мне знать. Как подогнать код под оригинал без оригинала? Заархивируйте оригинал и выложите. Или подгоняете сами. Вот код с комментами, надеюсь, понятными. Этот чуть изменил.
[vba]
Код
Sub tekst() Dim St$, ps&, i&, ns&, n&, sz&, iL$, sh As Worksheet 'Объявляем переменные For Each sh In ThisWorkbook.Worksheets 'цикл перебора всех листов книги If Mid(sh.Name, 1, 1) <> "С" Then 'не пропускаем листы с именами на букву "С" iL = sh.Name ' определяем имя листа With Sheets(iL) 'работаем с этим листом ps = .Range("C" & Rows.Count).End(xlUp).Row 'последяя заполненая строка в колонке С For i = 4 To ps ' цикл проверки колонки с 4-й по последнюю ячейку If .Cells(i, "C") <> "" Then 'Если ячейка колонки С не пустая St = .Cells(i, "C") 'Берем текст в переменную ns = InStr(St, " ") 'Ищем первый пробел в тексте If ns > 1 Then ' если № пробела в тексте > 1 St = Mid(St, 1, ns - 1) 'выделяем 1-е слово из текста = "??????" End If St = "С" & St 'букву "С" соединяем со словом из текста = "С??????" sz = Sheets(St).Range("C" & Rows.Count).End(xlUp).Row + 1 ' последняя строка на листе "С??????" Range(.Cells(i, 1), .Cells(i, 7)).Copy Sheets(St).Cells(sz, 1) 'копируем строку на лист "С??????" End If Next End With End If Next End Sub
при попытке импортировать макрос в оригинал файла, выдает ошибку
Ну явно что то не так сделали. Откуда же мне знать. Как подогнать код под оригинал без оригинала? Заархивируйте оригинал и выложите. Или подгоняете сами. Вот код с комментами, надеюсь, понятными. Этот чуть изменил.
[vba]
Код
Sub tekst() Dim St$, ps&, i&, ns&, n&, sz&, iL$, sh As Worksheet 'Объявляем переменные For Each sh In ThisWorkbook.Worksheets 'цикл перебора всех листов книги If Mid(sh.Name, 1, 1) <> "С" Then 'не пропускаем листы с именами на букву "С" iL = sh.Name ' определяем имя листа With Sheets(iL) 'работаем с этим листом ps = .Range("C" & Rows.Count).End(xlUp).Row 'последяя заполненая строка в колонке С For i = 4 To ps ' цикл проверки колонки с 4-й по последнюю ячейку If .Cells(i, "C") <> "" Then 'Если ячейка колонки С не пустая St = .Cells(i, "C") 'Берем текст в переменную ns = InStr(St, " ") 'Ищем первый пробел в тексте If ns > 1 Then ' если № пробела в тексте > 1 St = Mid(St, 1, ns - 1) 'выделяем 1-е слово из текста = "??????" End If St = "С" & St 'букву "С" соединяем со словом из текста = "С??????" sz = Sheets(St).Range("C" & Rows.Count).End(xlUp).Row + 1 ' последняя строка на листе "С??????" Range(.Cells(i, 1), .Cells(i, 7)).Copy Sheets(St).Cells(sz, 1) 'копируем строку на лист "С??????" End If Next End With End If Next End Sub