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

Вход

Регистрация

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

 

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

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Перенос дат на другой лист, при определенных условиях (Макросы/Sub)
Перенос дат на другой лист, при определенных условиях
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
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4111
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Lich,

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


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

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

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

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

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

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

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

Excel 2013/2016
Lich,

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


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

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

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

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

Excel 2003
Можно попробовать, просто когда заполнена только колонка С, значит у ребенка нет родителей, которые являлись бы его ЗП и значит в листе "даты" прописываю его фамилию и ссылка идет на него. Если это не будет проблемой, тогда всё супер.
 
Ответить
СообщениеМожно попробовать, просто когда заполнена только колонка С, значит у ребенка нет родителей, которые являлись бы его ЗП и значит в листе "даты" прописываю его фамилию и ссылка идет на него. Если это не будет проблемой, тогда всё супер.

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

Excel 2003
bmv98rus, прошу прощения, думал все удалил повторы, в оригинале повторов нет, один день - один клиент
 
Ответить
Сообщениеbmv98rus, прошу прощения, думал все удалил повторы, в оригинале повторов нет, один день - один клиент

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

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

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

Excel 2003
Kuzmich, нет, считается чисто "сопровождение" без статуса, в оригинале статус - это когда клиентов дома не было и другие проволочки, потому услуг мы не оказали и они считаться не должны.
То есть только сопровождение, а в статусе пустая ячейка.
 
Ответить
СообщениеKuzmich, нет, считается чисто "сопровождение" без статуса, в оригинале статус - это когда клиентов дома не было и другие проволочки, потому услуг мы не оказали и они считаться не должны.
То есть только сопровождение, а в статусе пустая ячейка.

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

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

Автор - Lich
Дата добавления - 07.01.2017 в 13:43
bmv98rus Дата: Суббота, 07.01.2017, 13:44 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4111
Репутация: 768 ±
Замечаний: 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 | Сообщение № 12
Группа: Проверенные
Ранг: Ветеран
Сообщений: 712
Репутация: 156 ±
Замечаний: 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
Lich Дата: Суббота, 07.01.2017, 13:57 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

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

Автор - Lich
Дата добавления - 07.01.2017 в 13:57
Kuzmich Дата: Суббота, 07.01.2017, 14:01 | Сообщение № 14
Группа: Проверенные
Ранг: Ветеран
Сообщений: 712
Репутация: 156 ±
Замечаний: 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
Lich Дата: Суббота, 07.01.2017, 14:06 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

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

Автор - Lich
Дата добавления - 07.01.2017 в 14:06
bmv98rus Дата: Суббота, 07.01.2017, 14:07 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4111
Репутация: 768 ±
Замечаний: 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 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

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

Автор - Lich
Дата добавления - 07.01.2017 в 14:20
bmv98rus Дата: Суббота, 07.01.2017, 14:36 | Сообщение № 18
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4111
Репутация: 768 ±
Замечаний: 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
Lich Дата: Суббота, 07.01.2017, 14:46 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 33
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
bmv98rus, благодарствую, выглядит нереально и мощно, а с моими 148 клиентами будет вообще масштабно. Пойду разбираться, а не то заинтересовала тема сводной таблицы. Надо изучить ее. Здоровья всем.
 
Ответить
Сообщениеbmv98rus, благодарствую, выглядит нереально и мощно, а с моими 148 клиентами будет вообще масштабно. Пойду разбираться, а не то заинтересовала тема сводной таблицы. Надо изучить ее. Здоровья всем.

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

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


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

Автор - bmv98rus
Дата добавления - 07.01.2017 в 14:59
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Перенос дат на другой лист, при определенных условиях (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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