Страницы: 1
RSS
При подстановке даты историю транзакций за эту дату выгружать на другой лист
 
Здравствуйте, хотел бы попросить помощи, своим мозгом не могу дойти как это сделать правильно =(
Есть таблица, там 2 листа, первый касса, второй история транзакция.
надо что бы при подстановке даты, история транзакций за эту дату выгружалась из 2 листа на первый
Пробовал:
Код
=IF('Актуальный архив'!$A2=$N$6;'Актуальный архив'!A2;IF('
     Актуальный архив'!$F2=$N$6;'Актуальный архив'!B2;IF('
     Актуальный архив'!$K2=$N$6;'Актуальный архив'!C2;IF('
     Актуальный архив'!$P2=$N$6;'Актуальный архив'!D2;" "))))

В ячейку N6 подставляется дата, и сама формула работает на ура, но я сразу не учел что другие даты будут ниже =( и при подстановке дат которые идут в архиве ниже формула не отрабатывает.
Код
=ВПР($M$5;'Актуальный архив'!$A:$E;1)

тут столкнулся с другой проблемой он во все ячейки возвращает только 1 значение, которое к сожалению оказывается и вырванным из списка.

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

https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=101130
 
Павел Щетков, чет не понял куда результат выводить и в каком виде.... еще ссылка https://www.planetaexcel.ru/techniques/2/81/ или другой формулой см. файл.
но наверное удобнее макросом см. файл №2 (запускается автоматически когда меняете дату в M6)
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("M6")) Is Nothing Then
Dim arr, arr2, i As Long, lr As Long, sh As Worksheet, MyDate As Date
Set sh = Worksheets("Àêòóàëüíûé àðõèâ")
lr = sh.Cells(Rows.Count, 1).End(xlUp).Row
MyDate = Range("M6")
arr = sh.Range("A2:E" & lr)
x = Application.WorksheetFunction.CountIf(sh.Columns(1), MyDate)
If x > 0 Then
ReDim arr2(1 To x, 1 To 5): k = 1
For i = LBound(arr) To UBound(arr)
        If arr(i, 1) = MyDate Then
            arr2(k, 1) = arr(i, 1)
            arr2(k, 2) = arr(i, 2)
            arr2(k, 3) = arr(i, 3)
            arr2(k, 4) = arr(i, 4)
            arr2(k, 5) = arr(i, 5)
            k = k + 1
        End If
    Next i
    Range("H10:L" & Cells(Rows.Count, 8).End(xlUp).Row).ClearContents
    Range("H10").Resize(UBound(arr2), 5) = arr2
Else
    Range("H10:L" & Cells(Rows.Count, 8).End(xlUp).Row + 11).ClearContents
End If

End If
End Sub

Изменено: Mershik - 26.04.2021 20:31:20
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
skais675 написал:
Формулы очень громоздкие, можно сделать пользовательскую функцию. Однако нужно вникнуть в суть Ваших хотелок.
в диапазоне с Н10:N210 должна выгружаться история со 2 страницы, по заданным критериям(дата или ник)
 
Павел Щетков, а мое решение как там7 норм или оно невидимо?)
Не бойтесь совершенства. Вам его не достичь.
 
если честно на работе был завал и посмотреть не успел

про ссылке где если ошибка, проблема только 1. та же что и с изначальной формулой. если в архиве нужная строчка в низу, то и в этот она перенесётся вниз. а нужно наверх.
скрипт я честно не понял куда вставлять как запускать.... пока ищу дальше =) если подскажешь что почитать по работе со скриптами буду рад =)
Страницы: 1
Наверх