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

Вход

Регистрация

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

 

= Мир MS Excel/Перенос дат на другой лист, при определенных условиях - Мир MS Excel

  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_, DrMini  
Перенос дат на другой лист, при определенных условиях
Lich Дата: Суббота, 07.01.2017, 11:53 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Доброго времени суток, уважаемые гении. Прошу у Вас помощи в переносе дат на другой лист, с определенными условиями.

Суть такова: из листа "даты" перекинуть даты (B) в желтые колонки (лист "общее" K:V), в соответствии с названием месяца (в колонку январь переносятся только январские даты и т.д.), но поиск должен производится по ФИО (лист "общее" B:C и лист "даты" D) (поиск полностью по ФИО, так как много клиентов с одинаковыми фамилиями и именами), даты должны перекидываться, только если оказана услуга "сопровождение" (M) и не должны учитываться даты, имеющие любой статус, то есть только пустые строчки в колонке статус (N).

Получается, что с обоих листов сравниваются фамилии, например, "Иванов Иван Иванович"(D) и если ему оказано "сопровождение" (M), и у него нет статуса (N), то его дата (B) переносится в соответствующую колонку месяца (лист "общее" K-V).
Если у Мандариновой Ольги Сергеевны, есть сопровождение, но в статусе стоит "отказ", то дата не переносится.
К сообщению приложен файл: 6291283.xls (53.5 Kb)
 
Ответить
СообщениеДоброго времени суток, уважаемые гении. Прошу у Вас помощи в переносе дат на другой лист, с определенными условиями.

Суть такова: из листа "даты" перекинуть даты (B) в желтые колонки (лист "общее" K:V), в соответствии с названием месяца (в колонку январь переносятся только январские даты и т.д.), но поиск должен производится по ФИО (лист "общее" B:C и лист "даты" D) (поиск полностью по ФИО, так как много клиентов с одинаковыми фамилиями и именами), даты должны перекидываться, только если оказана услуга "сопровождение" (M) и не должны учитываться даты, имеющие любой статус, то есть только пустые строчки в колонке статус (N).

Получается, что с обоих листов сравниваются фамилии, например, "Иванов Иван Иванович"(D) и если ему оказано "сопровождение" (M), и у него нет статуса (N), то его дата (B) переносится в соответствующую колонку месяца (лист "общее" K-V).
Если у Мандариновой Ольги Сергеевны, есть сопровождение, но в статусе стоит "отказ", то дата не переносится.

Автор - Lich
Дата добавления - 07.01.2017 в 11:53
bmv98rus Дата: Суббота, 07.01.2017, 13:03 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4149
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
Lich,

Вы уверены, что вопрлос именно по VBA? Все что описано, если конечно все понял правильно, то делается может и не элементарными, но формулами. Единственное, желательно на листе общее колонки с месяцами именовать немного по другому. на отображении не отразится. Ну или дополнительный заголовок скрытый сделать.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеLich,

Вы уверены, что вопрлос именно по VBA? Все что описано, если конечно все понял правильно, то делается может и не элементарными, но формулами. Единственное, желательно на листе общее колонки с месяцами именовать немного по другому. на отображении не отразится. Ну или дополнительный заголовок скрытый сделать.

Автор - bmv98rus
Дата добавления - 07.01.2017 в 13:03
Kuzmich Дата: Суббота, 07.01.2017, 13:08 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 717
Репутация: 159 ±
Замечаний: 0% ±

Excel 2003
А даты у вас всегда одного года?
 
Ответить
СообщениеА даты у вас всегда одного года?

Автор - Kuzmich
Дата добавления - 07.01.2017 в 13:08
bmv98rus Дата: Суббота, 07.01.2017, 13:27 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4149
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
Lich,

По идее вам просто сводная таблица подойдет. если конечно имена детей не принципиальны. 5 мин. подождите. в это сообщение выложу. Вот только пример с Мандаринова Ольга Сергеевна показателе. в августе там аж 4 строки подходящих под условие, вы какую дату хотите получить?


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Суббота, 07.01.2017, 13:41
 
Ответить
СообщениеLich,

По идее вам просто сводная таблица подойдет. если конечно имена детей не принципиальны. 5 мин. подождите. в это сообщение выложу. Вот только пример с Мандаринова Ольга Сергеевна показателе. в августе там аж 4 строки подходящих под условие, вы какую дату хотите получить?

Автор - bmv98rus
Дата добавления - 07.01.2017 в 13:27
Kuzmich Дата: Суббота, 07.01.2017, 13:39 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 717
Репутация: 159 ±
Замечаний: 0% ±

Excel 2003
Я правильно понял, если у Мандариновой Ольги Сергеевны, есть сопровождение, но в статусе стоит "принятие", то дата переносится.
 
Ответить
СообщениеЯ правильно понял, если у Мандариновой Ольги Сергеевны, есть сопровождение, но в статусе стоит "принятие", то дата переносится.

Автор - Kuzmich
Дата добавления - 07.01.2017 в 13:39
bmv98rus Дата: Суббота, 07.01.2017, 13:44 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4149
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
Lich,

В сводной фамилии детей не делал, это для примера. Ну и колонки проименовал. Выбирайте что нравится.

на общее менять нужно только дату первого месяца.

Но это по быстрому, по гормлаьному можно оптимизировать длинную формулу, а если гарантия есть что нет повторов, то можно раза в два её сократить сразу.
К сообщению приложен файл: _6291283.xls (98.5 Kb)


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Суббота, 07.01.2017, 13:47
 
Ответить
СообщениеLich,

В сводной фамилии детей не делал, это для примера. Ну и колонки проименовал. Выбирайте что нравится.

на общее менять нужно только дату первого месяца.

Но это по быстрому, по гормлаьному можно оптимизировать длинную формулу, а если гарантия есть что нет повторов, то можно раза в два её сократить сразу.

Автор - bmv98rus
Дата добавления - 07.01.2017 в 13:44
Kuzmich Дата: Суббота, 07.01.2017, 13:49 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 717
Репутация: 159 ±
Замечаний: 0% ±

Excel 2003
Посмотрите макрос, в стандартный модуль, запускать при активном листе "общее"
[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
[/vba]

Автор - Kuzmich
Дата добавления - 07.01.2017 в 13:49
Kuzmich Дата: Суббота, 07.01.2017, 14:01 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 717
Репутация: 159 ±
Замечаний: 0% ±

Excel 2003
Измените строку на
[vba]
Код

Cells(i, Stolb) = Cells(i, Stolb) & .Cells(FoundFIO.Row, "B") & vbLf
[/vba]
 
Ответить
СообщениеИзмените строку на
[vba]
Код

Cells(i, Stolb) = Cells(i, Stolb) & .Cells(FoundFIO.Row, "B") & vbLf
[/vba]

Автор - Kuzmich
Дата добавления - 07.01.2017 в 14:01
bmv98rus Дата: Суббота, 07.01.2017, 14:07 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4149
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
Lich,

Не совсем понял что имеете в виду про столбик

P.S в приложении файл, в первой строке формула с тестом на количество, во второй без этого но с условным форматированием чтоб 0 не показывать.
К сообщению приложен файл: 3230233.xls (97.0 Kb)


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеLich,

Не совсем понял что имеете в виду про столбик

P.S в приложении файл, в первой строке формула с тестом на количество, во второй без этого но с условным форматированием чтоб 0 не показывать.

Автор - bmv98rus
Дата добавления - 07.01.2017 в 14:07
Lich Дата: Суббота, 07.01.2017, 14:20 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
bmv98rus, столбик на скрине. Если бы можно было сделать такое в сводной таблице было бы просто супер, потому что такая таблица пригодится, очень удобно.
К сообщению приложен файл: 7621215.jpg (48.6 Kb)
 
Ответить
Сообщениеbmv98rus, столбик на скрине. Если бы можно было сделать такое в сводной таблице было бы просто супер, потому что такая таблица пригодится, очень удобно.

Автор - Lich
Дата добавления - 07.01.2017 в 14:20
bmv98rus Дата: Суббота, 07.01.2017, 14:36 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4149
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
Lich,

Нет ничего невозможного, разве что надо подготовить данные.

А у вас именно Excel 2003? просто для удобства яб данные таблицей сделал, тогда формулы сами будут добавляться в дополнительных строках.
К сообщению приложен файл: _6291283.zip (22.2 Kb)


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Суббота, 07.01.2017, 14:44
 
Ответить
СообщениеLich,

Нет ничего невозможного, разве что надо подготовить данные.

А у вас именно Excel 2003? просто для удобства яб данные таблицей сделал, тогда формулы сами будут добавляться в дополнительных строках.

Автор - bmv98rus
Дата добавления - 07.01.2017 в 14:36
bmv98rus Дата: Суббота, 07.01.2017, 14:59 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4149
Репутация: 772 ±
Замечаний: 0% ±

Excel 2013/2016
Lich,
"Используй то, что под рукою и не ищи себе другое!"
только не забывайте, что сводную надо обновлять, при изменении данных она сама не пересчитается.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеLich,
"Используй то, что под рукою и не ищи себе другое!"
только не забывайте, что сводную надо обновлять, при изменении данных она сама не пересчитается.

Автор - bmv98rus
Дата добавления - 07.01.2017 в 14:59
Lich Дата: Суббота, 07.01.2017, 21:54 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Товарищи, я до сих пор бьюсь и не могу заставить все это работать в моём Excel и не могу понять, где ошибка. Он упорно удаляет верхние строчки. Я, конечно, прошу прощения за такую наглость, но если не трудно подскажите, пожалуйста, почему не работает, хотелось бы в понедельник начать работать уже с такой системой.
И еще вопрос про даты, если в такой же отчетности будут повторятся даты, они будут группироваться в одно или выводится несколько одинаковых? Если я еще не надоел и Вы не против, было бы здорово написать макрос, по такой же схеме, только с повторяющимися датами, чтоб они выводились как одно, а не шли друг за дружкой. У нас есть отделения, которым это бы очень пригодилось.
bmv98rus, нет на работе 2016 стоит.
К сообщению приложен файл: 1931910.xls (63.0 Kb)


Сообщение отредактировал Lich - Суббота, 07.01.2017, 21:55
 
Ответить
СообщениеТоварищи, я до сих пор бьюсь и не могу заставить все это работать в моём Excel и не могу понять, где ошибка. Он упорно удаляет верхние строчки. Я, конечно, прошу прощения за такую наглость, но если не трудно подскажите, пожалуйста, почему не работает, хотелось бы в понедельник начать работать уже с такой системой.
И еще вопрос про даты, если в такой же отчетности будут повторятся даты, они будут группироваться в одно или выводится несколько одинаковых? Если я еще не надоел и Вы не против, было бы здорово написать макрос, по такой же схеме, только с повторяющимися датами, чтоб они выводились как одно, а не шли друг за дружкой. У нас есть отделения, которым это бы очень пригодилось.
bmv98rus, нет на работе 2016 стоит.

Автор - Lich
Дата добавления - 07.01.2017 в 21:54
Lich Дата: Суббота, 07.01.2017, 22:33 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
[vba]
Код
Set FoundFIO = .Columns(4).Find(Split(Cells(i, "B"), ",")(0), , xlValues, xlWhole)
[/vba] и постоянно выделяет вот этот фрагмент


Сообщение отредактировал Lich - Суббота, 07.01.2017, 22:33
 
Ответить
Сообщение[vba]
Код
Set FoundFIO = .Columns(4).Find(Split(Cells(i, "B"), ",")(0), , xlValues, xlWhole)
[/vba] и постоянно выделяет вот этот фрагмент

Автор - Lich
Дата добавления - 07.01.2017 в 22:33
Kuzmich Дата: Суббота, 07.01.2017, 22:52 | Сообщение № 15
Группа: Проверенные
Ранг: Ветеран
Сообщений: 717
Репутация: 159 ±
Замечаний: 0% ±

Excel 2003
Цитата
постоянно выделяет вот этот фрагмент

У вас фамилия была в столбце В в виде Мандаринова Ольга Сергеевна, 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)
[/vba]

Автор - Kuzmich
Дата добавления - 07.01.2017 в 22:52
Lich Дата: Суббота, 07.01.2017, 23:25 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Все равно выделяет ее, я уже если честно готов всю базу скинуть, до того полезная функция, но к сожалению в общий доступ не могу выложить, если у кого есть время и желание помочь, скину в личку
 
Ответить
СообщениеВсе равно выделяет ее, я уже если честно готов всю базу скинуть, до того полезная функция, но к сожалению в общий доступ не могу выложить, если у кого есть время и желание помочь, скину в личку

Автор - Lich
Дата добавления - 07.01.2017 в 23:25
Pelena Дата: Суббота, 07.01.2017, 23:32 | Сообщение № 17
Группа: Админы
Ранг: Местный житель
Сообщений: 19603
Репутация: 4660 ±
Замечаний: ±

Excel 365 & Mac Excel
скину в личку

и нарушите п.5о Правил форума


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
скину в личку

и нарушите п.5о Правил форума

Автор - Pelena
Дата добавления - 07.01.2017 в 23:32
Pelena Дата: Суббота, 07.01.2017, 23:41 | Сообщение № 18
Группа: Админы
Ранг: Местный житель
Сообщений: 19603
Репутация: 4660 ±
Замечаний: ±

Excel 365 & Mac Excel
Lich, у Вас, видимо, изменились столбцы по сравнению с примером.
Замените В на С здесь
[vba]
Код
iLastRow = Cells(Rows.Count, "B").End(xlUp).Row
[/vba]
и здесь
[vba]
Код
Set FoundFIO = .Columns(4).Find(Split(Cells(i, "B"), ",")(0), , xlValues, xlWhole)
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеLich, у Вас, видимо, изменились столбцы по сравнению с примером.
Замените В на С здесь
[vba]
Код
iLastRow = Cells(Rows.Count, "B").End(xlUp).Row
[/vba]
и здесь
[vba]
Код
Set FoundFIO = .Columns(4).Find(Split(Cells(i, "B"), ",")(0), , xlValues, xlWhole)
[/vba]

Автор - Pelena
Дата добавления - 07.01.2017 в 23:41
Kuzmich Дата: Воскресенье, 08.01.2017, 00:13 | Сообщение № 19
Группа: Проверенные
Ранг: Ветеран
Сообщений: 717
Репутация: 159 ±
Замечаний: 0% ±

Excel 2003
Lich Pelena совершенно права. Только Split надо убрать, т.к. в столбце С только ФИО.
И еще вы говорили, что в файле у вас будут даты одного года, а в последнем примере
вы уже перешли на 2017


Сообщение отредактировал Kuzmich - Воскресенье, 08.01.2017, 00:15
 
Ответить
СообщениеLich Pelena совершенно права. Только Split надо убрать, т.к. в столбце С только ФИО.
И еще вы говорили, что в файле у вас будут даты одного года, а в последнем примере
вы уже перешли на 2017

Автор - Kuzmich
Дата добавления - 08.01.2017 в 00:13
Lich Дата: Воскресенье, 08.01.2017, 09:07 | Сообщение № 20
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Что же, я разобрался, все наконец-то заработало, последний вопрос, если я ставлю перед Иванов Иван Иванович слово отец, поиск может его игнорировать?
Kuzmich, это заготовка на новый год, колонки всегда одни и те же, их "шапка" меняется только.
К сообщению приложен файл: 4435961.jpg (8.5 Kb)


Сообщение отредактировал Lich - Воскресенье, 08.01.2017, 09:33
 
Ответить
СообщениеЧто же, я разобрался, все наконец-то заработало, последний вопрос, если я ставлю перед Иванов Иван Иванович слово отец, поиск может его игнорировать?
Kuzmich, это заготовка на новый год, колонки всегда одни и те же, их "шапка" меняется только.

Автор - Lich
Дата добавления - 08.01.2017 в 09:07
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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