Доброго времени суток, уважаемые гении. Прошу у Вас помощи в переносе дат на другой лист, с определенными условиями.
Суть такова: из листа "даты" перекинуть даты (B) в желтые колонки (лист "общее" K:V), в соответствии с названием месяца (в колонку январь переносятся только январские даты и т.д.), но поиск должен производится по ФИО (лист "общее" B:C и лист "даты" D) (поиск полностью по ФИО, так как много клиентов с одинаковыми фамилиями и именами), даты должны перекидываться, только если оказана услуга "сопровождение" (M) и не должны учитываться даты, имеющие любой статус, то есть только пустые строчки в колонке статус (N).
Получается, что с обоих листов сравниваются фамилии, например, "Иванов Иван Иванович"(D) и если ему оказано "сопровождение" (M), и у него нет статуса (N), то его дата (B) переносится в соответствующую колонку месяца (лист "общее" K-V). Если у Мандариновой Ольги Сергеевны, есть сопровождение, но в статусе стоит "отказ", то дата не переносится.
Доброго времени суток, уважаемые гении. Прошу у Вас помощи в переносе дат на другой лист, с определенными условиями.
Суть такова: из листа "даты" перекинуть даты (B) в желтые колонки (лист "общее" K:V), в соответствии с названием месяца (в колонку январь переносятся только январские даты и т.д.), но поиск должен производится по ФИО (лист "общее" B:C и лист "даты" D) (поиск полностью по ФИО, так как много клиентов с одинаковыми фамилиями и именами), даты должны перекидываться, только если оказана услуга "сопровождение" (M) и не должны учитываться даты, имеющие любой статус, то есть только пустые строчки в колонке статус (N).
Получается, что с обоих листов сравниваются фамилии, например, "Иванов Иван Иванович"(D) и если ему оказано "сопровождение" (M), и у него нет статуса (N), то его дата (B) переносится в соответствующую колонку месяца (лист "общее" K-V). Если у Мандариновой Ольги Сергеевны, есть сопровождение, но в статусе стоит "отказ", то дата не переносится.Lich
Вы уверены, что вопрлос именно по VBA? Все что описано, если конечно все понял правильно, то делается может и не элементарными, но формулами. Единственное, желательно на листе общее колонки с месяцами именовать немного по другому. на отображении не отразится. Ну или дополнительный заголовок скрытый сделать.
Lich,
Вы уверены, что вопрлос именно по VBA? Все что описано, если конечно все понял правильно, то делается может и не элементарными, но формулами. Единственное, желательно на листе общее колонки с месяцами именовать немного по другому. на отображении не отразится. Ну или дополнительный заголовок скрытый сделать.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
По идее вам просто сводная таблица подойдет. если конечно имена детей не принципиальны. 5 мин. подождите. в это сообщение выложу. Вот только пример с Мандаринова Ольга Сергеевна показателе. в августе там аж 4 строки подходящих под условие, вы какую дату хотите получить?
Lich,
По идее вам просто сводная таблица подойдет. если конечно имена детей не принципиальны. 5 мин. подождите. в это сообщение выложу. Вот только пример с Мандаринова Ольга Сергеевна показателе. в августе там аж 4 строки подходящих под условие, вы какую дату хотите получить?bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Сообщение отредактировал bmv98rus - Суббота, 07.01.2017, 13:41
В сводной фамилии детей не делал, это для примера. Ну и колонки проименовал. Выбирайте что нравится.
на общее менять нужно только дату первого месяца.
Но это по быстрому, по гормлаьному можно оптимизировать длинную формулу, а если гарантия есть что нет повторов, то можно раза в два её сократить сразу.
Lich,
В сводной фамилии детей не делал, это для примера. Ну и колонки проименовал. Выбирайте что нравится.
на общее менять нужно только дату первого месяца.
Но это по быстрому, по гормлаьному можно оптимизировать длинную формулу, а если гарантия есть что нет повторов, то можно раза в два её сократить сразу.bmv98rus
Посмотрите макрос, в стандартный модуль, запускать при активном листе "общее" [vba]
Код
Sub iSumma() Dim i As Long Dim iLastRow As Long Dim FoundFIO As Range Dim FAdr As String Dim Stolb As Integer Dim iMonth As Integer iLastRow = Cells(Rows.Count, "B").End(xlUp).Row Range("K2:V" & iLastRow).ClearContents With Worksheets("даты") For i = 2 To iLastRow Set FoundFIO = .Columns(4).Find(Split(Cells(i, "B"), ",")(0), , xlValues, xlWhole) If Not FoundFIO Is Nothing Then FAdr = FoundFIO.Address Do If .Cells(FoundFIO.Row, "M") = "сопровождение" Then If IsEmpty(.Cells(FoundFIO.Row, "N")) Then 'Or .Cells(FoundFIO.Row, "N") = "принятие" iMonth = Month(.Cells(FoundFIO.Row, "B")) Select Case iMonth Case "1" Stolb = 11 Case "2" Stolb = 12 Case "3" Stolb = 13 Case "4" Stolb = 14 Case "5" Stolb = 15 Case "6" Stolb = 16 Case "7" Stolb = 17 Case "8" Stolb = 18 Case "9" Stolb = 19 Case "10" Stolb = 20 Case "11" Stolb = 21 Case "12" Stolb = 22 End Select Cells(i, Stolb) = .Cells(FoundFIO.Row, "B") End If End If Set FoundFIO = .Columns(4).FindNext(FoundFIO) Loop While FoundFIO.Address <> FAdr End If Next End With End Sub
[/vba]
Посмотрите макрос, в стандартный модуль, запускать при активном листе "общее" [vba]
Код
Sub iSumma() Dim i As Long Dim iLastRow As Long Dim FoundFIO As Range Dim FAdr As String Dim Stolb As Integer Dim iMonth As Integer iLastRow = Cells(Rows.Count, "B").End(xlUp).Row Range("K2:V" & iLastRow).ClearContents With Worksheets("даты") For i = 2 To iLastRow Set FoundFIO = .Columns(4).Find(Split(Cells(i, "B"), ",")(0), , xlValues, xlWhole) If Not FoundFIO Is Nothing Then FAdr = FoundFIO.Address Do If .Cells(FoundFIO.Row, "M") = "сопровождение" Then If IsEmpty(.Cells(FoundFIO.Row, "N")) Then 'Or .Cells(FoundFIO.Row, "N") = "принятие" iMonth = Month(.Cells(FoundFIO.Row, "B")) Select Case iMonth Case "1" Stolb = 11 Case "2" Stolb = 12 Case "3" Stolb = 13 Case "4" Stolb = 14 Case "5" Stolb = 15 Case "6" Stolb = 16 Case "7" Stolb = 17 Case "8" Stolb = 18 Case "9" Stolb = 19 Case "10" Stolb = 20 Case "11" Stolb = 21 Case "12" Stolb = 22 End Select Cells(i, Stolb) = .Cells(FoundFIO.Row, "B") End If End If Set FoundFIO = .Columns(4).FindNext(FoundFIO) Loop While FoundFIO.Address <> FAdr End If Next End With End Sub
bmv98rus, столбик на скрине. Если бы можно было сделать такое в сводной таблице было бы просто супер, потому что такая таблица пригодится, очень удобно.
bmv98rus, столбик на скрине. Если бы можно было сделать такое в сводной таблице было бы просто супер, потому что такая таблица пригодится, очень удобно.Lich
Lich, "Используй то, что под рукою и не ищи себе другое!" только не забывайте, что сводную надо обновлять, при изменении данных она сама не пересчитается.
Lich, "Используй то, что под рукою и не ищи себе другое!" только не забывайте, что сводную надо обновлять, при изменении данных она сама не пересчитается.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Товарищи, я до сих пор бьюсь и не могу заставить все это работать в моём Excel и не могу понять, где ошибка. Он упорно удаляет верхние строчки. Я, конечно, прошу прощения за такую наглость, но если не трудно подскажите, пожалуйста, почему не работает, хотелось бы в понедельник начать работать уже с такой системой. И еще вопрос про даты, если в такой же отчетности будут повторятся даты, они будут группироваться в одно или выводится несколько одинаковых? Если я еще не надоел и Вы не против, было бы здорово написать макрос, по такой же схеме, только с повторяющимися датами, чтоб они выводились как одно, а не шли друг за дружкой. У нас есть отделения, которым это бы очень пригодилось. bmv98rus, нет на работе 2016 стоит.
Товарищи, я до сих пор бьюсь и не могу заставить все это работать в моём Excel и не могу понять, где ошибка. Он упорно удаляет верхние строчки. Я, конечно, прошу прощения за такую наглость, но если не трудно подскажите, пожалуйста, почему не работает, хотелось бы в понедельник начать работать уже с такой системой. И еще вопрос про даты, если в такой же отчетности будут повторятся даты, они будут группироваться в одно или выводится несколько одинаковых? Если я еще не надоел и Вы не против, было бы здорово написать макрос, по такой же схеме, только с повторяющимися датами, чтоб они выводились как одно, а не шли друг за дружкой. У нас есть отделения, которым это бы очень пригодилось. bmv98rus, нет на работе 2016 стоит.Lich
У вас фамилия была в столбце В в виде Мандаринова Ольга Сергеевна, 01.01.1976 Строка из кода Split(Cells(i, "B"), ",")(0) выделяла ФИО Если у вас просто ФИО в столбце, то замените строку на [vba]
Код
Set FoundFIO = .Columns(4).Find(Cells(i, "B"), , xlValues, xlWhole)
[/vba]
Цитата
постоянно выделяет вот этот фрагмент
У вас фамилия была в столбце В в виде Мандаринова Ольга Сергеевна, 01.01.1976 Строка из кода Split(Cells(i, "B"), ",")(0) выделяла ФИО Если у вас просто ФИО в столбце, то замените строку на [vba]
Код
Set FoundFIO = .Columns(4).Find(Cells(i, "B"), , xlValues, xlWhole)
Все равно выделяет ее, я уже если честно готов всю базу скинуть, до того полезная функция, но к сожалению в общий доступ не могу выложить, если у кого есть время и желание помочь, скину в личку
Все равно выделяет ее, я уже если честно готов всю базу скинуть, до того полезная функция, но к сожалению в общий доступ не могу выложить, если у кого есть время и желание помочь, скину в личкуLich
Lich Pelena совершенно права. Только Split надо убрать, т.к. в столбце С только ФИО. И еще вы говорили, что в файле у вас будут даты одного года, а в последнем примере вы уже перешли на 2017
Lich Pelena совершенно права. Только Split надо убрать, т.к. в столбце С только ФИО. И еще вы говорили, что в файле у вас будут даты одного года, а в последнем примере вы уже перешли на 2017Kuzmich
Сообщение отредактировал Kuzmich - Воскресенье, 08.01.2017, 00:15
Что же, я разобрался, все наконец-то заработало, последний вопрос, если я ставлю перед Иванов Иван Иванович слово отец, поиск может его игнорировать? Kuzmich, это заготовка на новый год, колонки всегда одни и те же, их "шапка" меняется только.
Что же, я разобрался, все наконец-то заработало, последний вопрос, если я ставлю перед Иванов Иван Иванович слово отец, поиск может его игнорировать? Kuzmich, это заготовка на новый год, колонки всегда одни и те же, их "шапка" меняется только.Lich