Страницы: 1
RSS
Фильтрация по дате первого платежа, Расширенная фильтрация по дате первого платежа по возрастанию
 
Добрый день! Столкнулся с определенной трудностью при решении задачи фильтрации на паре. Большая просьба помочь, если есть знающие)
Задача заключается в том, чтобы отфильтровать таблицу по дате первых платежей людей по возрастанию так, чтобы была хронология первых платежей. Сложность заключается в том, что после выставления фильтра по возрастанию по дате, теряется связь всех платежей определенного человека. К примеру, если во всей таблице после фильтрации по дате первого платежа первой строкой появился Иванов, нужно чтобы после его первого платежа стояли другие его платежи.

Заранее благодарю)))
Цитата
:)
 
Сортировка и фильтр => Настраиваемая сортировка
Или установите фильтр, вначале сортируйте по дате, потом по фамилии
ЗЫ Кросс
Изменено: Msi2102 - 13.05.2022 11:19:19
 
Цитата
Msi2102 написал:
сортируйте по дате, потом по фамилии
наоборот, фио потом дата, как на картинке показано)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
наоборот, фио потом дата, как на картинке показано
Если сортируем фильтром, то чтобы получилось как на картинке, вначале дата, а потом фио. А если сортируем через сортировку, то первое условие ФИО, а второе дата
Изменено: Msi2102 - 13.05.2022 11:24:23
 
Не совсем то что нужно) Например тут на скрине первым должен был встать "Мостовой", так как дата его первого платежа была раньше всех (я имею ввиду именно скрин). Задача заключается в том, чтобы отфильтровать по дате первых платежей людей, сохранив при этом их следующие платежи после первых.
Цитата
написал:
К примеру, если во всей таблице после фильтрации по дате первого платежа первой строкой появился Иванов, нужно чтобы после его первого платежа стояли другие его платежи.
 
В ячейку D2 формулу и протянуть вниз.
=ЕСЛИ(B2=B1;D1;C2)
Скопировать и вставить значения
После чего отсортировать по этому столбцу первое условие и ФИО второе
PS:
Только вначале проведите сортировку из #2 сообщения
Изменено: Msi2102 - 13.05.2022 13:00:27
 
скопируйте это
Код
Sub SortTbl()
  Dim a, b, i&, r&, r1&, rg As Range
  Set rg = [a1].CurrentRegion:  SortRangeBy rg, Array(2, 3): a = rg
  rg.Copy: Cells(1, 5).PasteSpecial xlPasteValues
  Intersect(Range("E:G"), ActiveSheet.UsedRange).RemoveDuplicates 2, xlYes
  Set rg = [e1].CurrentRegion: SortRangeBy rg, Array(3)
  Range([e2], Cells(Rows.Count, 6).End(xlUp).Offset(0, -1)) = "=Row()"
  rg = rg.Value: SortRangeBy rg, Array(2): b = rg: r1 = 2
  For r = 2 To UBound(b)
    i = 0
    Do While a(r1 + i, 2) = a(r1, 2)
      i = i + 1: If i + r1 = UBound(a) Then Exit Do
    Loop
    Cells(r1, 1).Resize(i, 1) = b(r, 1): r1 = r1 + i
  Next
  SortRangeBy [a1].CurrentRegion, Array(1, 3)
  Cells(2, 1).Resize(UBound(a) - 1, 1) = Empty: [e:g].ClearContents
End Sub


Sub SortRangeBy(rg As Range, c, Optional Hd& = 1)
  Dim i&
  With rg.Parent.Sort
    .SortFields.Clear
    For i = LBound(c) To UBound(c)
      .SortFields.Add Key:=rg.Cells(1).Offset(Hd, Abs(c(i)) - 1).Resize( _
      rg.Rows.Count - Hd, 1), SortOn:=xlSortOnValues, Order:=IIf(c(i) > 0, _
      1, 2), DataOption:=xlSortNormal
    Next
    .SetRange rg: .Header = Hd: .MatchCase = False
    .Orientation = xlTopToBottom: .SortMethod = xlPinYin: .Apply
  End With
End Sub

в стандартный модуль, активируйте лист с даннымиЮ выполните SortTbl
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
открывайте файл
жмите  Alt+F8
в открывшемся окне выберите SortTbl
нажмите кнопку Выполнить
удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Сделал все как написано)) Получилось решить только часть вопроса) Но в конечном итоге с меня требуют такую картину))
Тут Петров Ивано Иванович должен быть на 1 месте , так как первая дата его платежа была раньше других. Потом 2 человек - Соколова Наталья Алексеевна, так как первая дата ее платежа была раньше других но позже чем дата платежа Петрова.  И так по каждому человеку  :cry:  
 
Цитата
Иван Смирнов написал:
Сделал все как написано
Как у кого? Если как у меня, то
1. Отсортируйте вначале как написано в сообщении №2
2. После чего вставьте формулу из сообщения №6
3. Скопируйте и вставьте только получившиеся значения
4. После чего отсортируйте заново, первое условие это получившийся столбец, второе условие ФИО
5. Посмотрите результат в файле из сообщения№6

PS:
Можете для верности добавить № по прядку, после п.3 и тогда п. 4 сортировать: первое условие по получившемуся столбцу, второе услое по №
Изменено: Msi2102 - 13.05.2022 16:02:28
 
см.сообщение 8
что не получилось?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
В PQ:
Код
let
  data    = Excel.CurrentWorkbook(){[ Name = "sort" ]}[Content],
  typed   = Table.TransformColumnTypes ( data, { { "дата платежа", type date } } ),
  group   = Table.Group ( typed, { "ФИО" }, { { "tbl", ( t ) => Table.Sort ( t, { { "дата платежа", Order.Ascending } } ) } } ),
  sort    = Table.Sort ( group, ( x ) => x[tbl]{0}[дата платежа] ),
  combine = Table.Combine ( sort[tbl] )
in
  combine
 
что-то очень просто
я решал такую задачу:
1. выявляем персонаж с самой ранней датой
2. подтягием все остальные строки с его участием
3. из оставшихся выявляем персонаж с замой ранней датой
4. повторяем 2 и 3, пока не переберем всех
так из исходного списка формировался конечный
Изменено: Ігор Гончаренко - 13.05.2022 16:31:37
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
так из исходного списка формировался конечный
:D  :D  :D
 
Доброго времени суток всем! Наконец у меня появился интернет и я могу ответить хD
В общем получилось сделать по методу «Мsi2102». В PQ по методу «surkenny» так и не смог сделать, хотя скорее всего так было бы проще и быстрее, так как таблица содержит больше 10 000 столбцов)
Всем огромное спасибо за помощь)))

P.S. Может кто-то знает как теперь обьединить одинаковые ФИО в один столбец?)
Страницы: 1
Наверх