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

Вход

Регистрация

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

 

= Мир MS Excel/Сортировка данных в соответствующие листы и ячейки. - Мир MS Excel

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

Excel 2010
Добрый день! Помогите, пожалуйста, с макросом:) Задача состоит в следующем: на 6-ом листе документа есть таблица, в которой отдельные данные выделены соответствующим цветом, эти данные нужно разнести по 4-ем листам (первый выступает в качестве примера), в зависимости от имени и инициалов человека, которое в таблице указано под столбцом «E», а на листах в ячейке «A2». Информация, выделенная красным, говорит о месте, куда прописывать «зеленые» и «синие» данные, затем в нужной графе «зеленая» строчка располагается снизу, «синяя» -сверху, думаю, из примера будет все понятно. Файл приложен.
P.S. В оригинальном файле информация в виде таблицы, подлежащая сортировке, находится на 262 листе, а листов, куда нужно все это разместить - 260 (идут подряд с 1 по 260), напишите, пожалуйста, код с учетом этого. Огромное Вам спасибо!
К сообщению приложен файл: 3355105.xlsx (17.1 Kb)
 
Ответить
СообщениеДобрый день! Помогите, пожалуйста, с макросом:) Задача состоит в следующем: на 6-ом листе документа есть таблица, в которой отдельные данные выделены соответствующим цветом, эти данные нужно разнести по 4-ем листам (первый выступает в качестве примера), в зависимости от имени и инициалов человека, которое в таблице указано под столбцом «E», а на листах в ячейке «A2». Информация, выделенная красным, говорит о месте, куда прописывать «зеленые» и «синие» данные, затем в нужной графе «зеленая» строчка располагается снизу, «синяя» -сверху, думаю, из примера будет все понятно. Файл приложен.
P.S. В оригинальном файле информация в виде таблицы, подлежащая сортировке, находится на 262 листе, а листов, куда нужно все это разместить - 260 (идут подряд с 1 по 260), напишите, пожалуйста, код с учетом этого. Огромное Вам спасибо!

Автор - VladimirTavr
Дата добавления - 26.05.2020 в 11:35
Kuzmich Дата: Суббота, 30.05.2020, 00:00 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Цитата
находится на 262 листе

При активном 262 листе и при условии, что все 260 листов есть в книге, запустить макрос
[vba]
Код
Sub Tablica262()
Dim i As Long
Dim iLastRow As Long
Dim iData As Date
Dim Nomer As Long
Dim NomerList As Integer
Dim iMonth As String
Dim iYear As Long
Dim FoundMonth As Range
Dim FoundYear As Range
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
  For i = 1 To iLastRow
   With CreateObject("VBScript.RegExp")
     .Global = True
     .Pattern = "\d{1,2}\.\d{4}(?=г.)"
        iData = "01." & .Execute(Cells(i, "B"))(0)
        iMonth = UCase(Format(iData, "MMMM"))
        iYear = WorksheetFunction.Text(iData, "YYYY")
     .Pattern = "(\d{6}) от\s{1,4}(\d{1,2}\.\d{1,2}\.\d{4})$"
        Nomer = .Execute(Cells(i, "B"))(0).SubMatches(0)
        iData = .Execute(Cells(i, "B"))(0).SubMatches(1)
     .Pattern = "\d{1,3}"
       NomerList = .Execute(Cells(i, "E"))(0)
   End With
   With Worksheets("Лист" & NomerList)
     Set FoundMonth = .Rows(10).Find(iMonth, , xlValues, xlWhole)
     Set FoundYear = .Columns(1).Find(iYear, , xlValues, xlWhole)
     .Cells(FoundYear.Row, FoundMonth.Column) = Nomer
     .Cells(FoundYear.Row + 1, FoundMonth.Column) = iData
     .Range("A2") = Cells(i, "E")
   End With
  Next
End Sub

[/vba]


Сообщение отредактировал Kuzmich - Суббота, 30.05.2020, 00:42
 
Ответить
Сообщение
Цитата
находится на 262 листе

При активном 262 листе и при условии, что все 260 листов есть в книге, запустить макрос
[vba]
Код
Sub Tablica262()
Dim i As Long
Dim iLastRow As Long
Dim iData As Date
Dim Nomer As Long
Dim NomerList As Integer
Dim iMonth As String
Dim iYear As Long
Dim FoundMonth As Range
Dim FoundYear As Range
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
  For i = 1 To iLastRow
   With CreateObject("VBScript.RegExp")
     .Global = True
     .Pattern = "\d{1,2}\.\d{4}(?=г.)"
        iData = "01." & .Execute(Cells(i, "B"))(0)
        iMonth = UCase(Format(iData, "MMMM"))
        iYear = WorksheetFunction.Text(iData, "YYYY")
     .Pattern = "(\d{6}) от\s{1,4}(\d{1,2}\.\d{1,2}\.\d{4})$"
        Nomer = .Execute(Cells(i, "B"))(0).SubMatches(0)
        iData = .Execute(Cells(i, "B"))(0).SubMatches(1)
     .Pattern = "\d{1,3}"
       NomerList = .Execute(Cells(i, "E"))(0)
   End With
   With Worksheets("Лист" & NomerList)
     Set FoundMonth = .Rows(10).Find(iMonth, , xlValues, xlWhole)
     Set FoundYear = .Columns(1).Find(iYear, , xlValues, xlWhole)
     .Cells(FoundYear.Row, FoundMonth.Column) = Nomer
     .Cells(FoundYear.Row + 1, FoundMonth.Column) = iData
     .Range("A2") = Cells(i, "E")
   End With
  Next
End Sub

[/vba]

Автор - Kuzmich
Дата добавления - 30.05.2020 в 00:00
VladimirTavr Дата: Суббота, 30.05.2020, 13:03 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Kuzmich, спасибо огромное за Ваш труд! К сожалению, выдает ошибку run-time error '9' Subscript out of range. ПОдскажите, пожалуйста, как сделать 262 лист активным и влияет ли название листов на работу макроса?


Сообщение отредактировал VladimirTavr - Суббота, 30.05.2020, 13:09
 
Ответить
СообщениеKuzmich, спасибо огромное за Ваш труд! К сожалению, выдает ошибку run-time error '9' Subscript out of range. ПОдскажите, пожалуйста, как сделать 262 лист активным и влияет ли название листов на работу макроса?

Автор - VladimirTavr
Дата добавления - 30.05.2020 в 13:03
Kuzmich Дата: Суббота, 30.05.2020, 13:19 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Цитата
как сделать 262 лист активным

Выбираете 262 лист мышкой, он и будет активным.
Цитата
влияет ли название листов на работу макроса?

Листы должны называться Лист1, Лист2 и до Лист260
А на примере макрос сработал?
 
Ответить
Сообщение
Цитата
как сделать 262 лист активным

Выбираете 262 лист мышкой, он и будет активным.
Цитата
влияет ли название листов на работу макроса?

Листы должны называться Лист1, Лист2 и до Лист260
А на примере макрос сработал?

Автор - Kuzmich
Дата добавления - 30.05.2020 в 13:19
VladimirTavr Дата: Суббота, 30.05.2020, 14:34 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Kuzmich, да, на примере сработал. Листы переименовал, теперь их 262 (были дублеры), теперь активный 263. пишет ошибку Run-time error "5" invalid procedure call or argument. И, я, похоже, понял, в чем суть проблемы: в таблице, откуда нужно перенести информацию, фамилия и инициалы написаны так: "ВАЛЕРЬЯНОВ П Н 80", а на листе так: "Валерьянов Петр Николаевич 80". Есть ли возможность игнорирования регистра, а также осуществления работы макроса по фамилии и номеру? Я прошу прощения за невнимательность.


Сообщение отредактировал VladimirTavr - Суббота, 30.05.2020, 16:00
 
Ответить
СообщениеKuzmich, да, на примере сработал. Листы переименовал, теперь их 262 (были дублеры), теперь активный 263. пишет ошибку Run-time error "5" invalid procedure call or argument. И, я, похоже, понял, в чем суть проблемы: в таблице, откуда нужно перенести информацию, фамилия и инициалы написаны так: "ВАЛЕРЬЯНОВ П Н 80", а на листе так: "Валерьянов Петр Николаевич 80". Есть ли возможность игнорирования регистра, а также осуществления работы макроса по фамилии и номеру? Я прошу прощения за невнимательность.

Автор - VladimirTavr
Дата добавления - 30.05.2020 в 14:34
Kuzmich Дата: Суббота, 30.05.2020, 15:47 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Макрос берет имя листа из ячеек столбца Е общего листа (в примере Лист6)
Прокофьев П П 5 - значит Лист5.
В макросе нет проверки существует ли лист5 в книге.
Посмотрите в редакторе на какой строке макрос выдает ошибку.
Пройдите код в пошаговом режиме.
 
Ответить
СообщениеМакрос берет имя листа из ячеек столбца Е общего листа (в примере Лист6)
Прокофьев П П 5 - значит Лист5.
В макросе нет проверки существует ли лист5 в книге.
Посмотрите в редакторе на какой строке макрос выдает ошибку.
Пройдите код в пошаговом режиме.

Автор - Kuzmich
Дата добавления - 30.05.2020 в 15:47
VladimirTavr Дата: Суббота, 30.05.2020, 15:56 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Kuzmich, я отредактировал запись, нашел ошибку, похоже. Посмотрите, пожалуйста.
 
Ответить
СообщениеKuzmich, я отредактировал запись, нашел ошибку, похоже. Посмотрите, пожалуйста.

Автор - VladimirTavr
Дата добавления - 30.05.2020 в 15:56
Kuzmich Дата: Суббота, 30.05.2020, 16:18 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Цитата
в таблице, откуда нужно перенести информацию, фамилия и инициалы написаны так: "ВАЛЕРЬЯНОВ П Н 80"

Макрос берет из этой записи 80 и переносит информацию в Лист80. Но он должен быть в книге.
 
Ответить
Сообщение
Цитата
в таблице, откуда нужно перенести информацию, фамилия и инициалы написаны так: "ВАЛЕРЬЯНОВ П Н 80"

Макрос берет из этой записи 80 и переносит информацию в Лист80. Но он должен быть в книге.

Автор - Kuzmich
Дата добавления - 30.05.2020 в 16:18
VladimirTavr Дата: Суббота, 30.05.2020, 19:38 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Kuzmich, пишет ошибку в этой строчке "Nomer = .Execute(Cells(i, "B"))(0).SubMatches(0)" Ошибка №5. Написал в лс)


Сообщение отредактировал VladimirTavr - Суббота, 30.05.2020, 20:30
 
Ответить
СообщениеKuzmich, пишет ошибку в этой строчке "Nomer = .Execute(Cells(i, "B"))(0).SubMatches(0)" Ошибка №5. Написал в лс)

Автор - VladimirTavr
Дата добавления - 30.05.2020 в 19:38
Kuzmich Дата: Суббота, 30.05.2020, 19:52 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Не видя ваших реальных данных, трудно судить об ошибках.
Может надо привести пример листов на 5-6.
Какой разрядности м.б. Nomer? В вашем примере это было 6
 
Ответить
СообщениеНе видя ваших реальных данных, трудно судить об ошибках.
Может надо привести пример листов на 5-6.
Какой разрядности м.б. Nomer? В вашем примере это было 6

Автор - Kuzmich
Дата добавления - 30.05.2020 в 19:52
VladimirTavr Дата: Суббота, 30.05.2020, 20:31 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Kuzmich, написал в лс)
 
Ответить
СообщениеKuzmich, написал в лс)

Автор - VladimirTavr
Дата добавления - 30.05.2020 в 20:31
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сортировка данных в соответствующие листы и ячейки. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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