Страницы: 1
RSS
Указав нужный период или 2 - 3 периода нужно вывести список от начала периода до конца.
 
Подскажите пожалуйста как сделать или помогите реализовать: Имея таблицу с датой (месяц год), кол-во дней, цену за месяц. Введя нужный период в ячейки с.. по..
чтобы ниже перенеслись данные за нужный промежуток времени. Если не указать месяц не с начала чтоб указало сколько дней и соответственно сумму. Прилагаю пример  с таблицей данных и ячейками периодов. Итог: хотелось бы видеть списки периодов от 1го до 5 максимум)  и также если возможность их сумму..
 
Shadow_113,результат покажите  
Не бойтесь совершенства. Вам его не достичь.
 
так не знаю как вывести, поэтому прошу помощи...
 
Shadow_113, в смысле? вы не знаете какой должен быть результат?
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Shadow_113 написал:
так не знаю как вывести
на счетах посчитайте, и результат покажите в файле.
 
Ааа не сразу понял , о чём Вы. Расписал по этапам  как должна ( в моем понимании ) работать формула или макрос.   периоды не обязательно расписывать главное итоговая таблица
Изменено: Shadow_113 - 02.11.2020 23:11:18
 
Shadow_113, у Вас нет биллинг онлайн?))))
попробую сейчас чет-придумать, число 1 3 это на сколько раз нужно умножить сумму полученную тарифы на кол-во дней?
Изменено: Mershik - 03.11.2020 10:00:38
Не бойтесь совершенства. Вам его не достичь.
 
Да , 1 это количество людей , соответственно если их 2 то суммы умножаются на 2. Очень надеюсь поможете, голова дымиться. Что такое биллинг?
 
Shadow_113, удачи)
Код
Sub dsd()
Dim i As Long, lr As Long, n As Long, data, result
lr = Cells(Rows.Count, 6).End(xlUp).Row
data = Range("F2:I" & lr)
Range("A11:C1000").ClearContents
ReDim result(0, 2)
k = 11
For n = 2 To 5
    If IsEmpty(Cells(n, 2)) Then GoTo EndFor
    Cells(k, 2) = Cells(n, 2) & " - " & Cells(n, 3): k = k + 1
    For i = LBound(data) To UBound(data)
    x = DateSerial(Year(Cells(n, 2)), Month(Cells(n, 2)), 1)
    x2 = DateSerial(Year(Cells(n, 3)), Month(Cells(n, 3)), Day(DateSerial(Year(Cells(n, 3)), Month(Cells(n, 3)) + 1, 1) - 1))
        If x <= data(i, 1) And x2 >= data(i, 1) Then
            Cells(k, 1) = data(i, 1)
        If Cells(n, 2) > DateSerial(Year(data(i, 1)), Month(data(i, 1)), 1) And _
        Cells(n, 3) < DateSerial(Year(Cells(n, 3)), Month(data(i, 2)), Day(DateSerial(Year(data(i, 2)), Month(data(i, 2)) + 1, 1) - 1)) Then 'нужно указать что бы дата месяц год совпадал
            Cells(k, 2) = Day(Cells(n, 3)) - Day(Cells(n, 2)) + 1
        ElseIf Cells(n, 2) > DateSerial(Year(data(i, 1)), Month(data(i, 1)), 1) Then
            Cells(k, 2) = data(i, 2) - Day(Cells(n, 2)) + 1
        ElseIf Cells(n, 3) < DateSerial(Year(Cells(n, 3)), Month(data(i, 2)), Day(DateSerial(Year(data(i, 2)), Month(data(i, 2)) + 1, 1) - 1)) Then
            Cells(k, 2) = DateSerial(Year(Cells(n, 3)), Month(data(i, 2)), Day(DateSerial(Year(data(i, 2)), Month(data(i, 2)) + 1, 1) - 1)) - Cells(n, 2) + 1
        Else
            Cells(k, 2) = data(i, 2)
        End If
            Cells(k, 3) = Cells(k, 2) * data(i, 4) * Cells(n, 4)
            k = k + 1
        End If
    Next i
EndFor:
Next n
End Sub
Не бойтесь совершенства. Вам его не достичь.
 
Реально супер!!! Огромное Вам спасибо. Вопрос , а возможно эти периоды суммировать в один?  Что бы в таблицу не делило на 3-4 периода , а уже выводило сумму  в 1 период общий ?  если в 2х периодах совпадают январь 19 года и январь то  остается один январь 2019 года  и сумма этих 2х январей ? и т.д.  Один календарь с 2010 по 2020 по порядку суммирую в себе все *?
 
Shadow_113, можно
Не бойтесь совершенства. Вам его не достичь.
 
Mershik,помогите пожалуйста превратить это в конфетку. Честно формулы 3 этажные еще могу разобрать, а вот в макросах вообще ничего не понимаю...
 
Shadow_113, типа такого - если что переделаете самостоятельно
Код
Sub dsd()
Dim i As Long, lr As Long, n As Long, data, col As New Collection
lr = Cells(Rows.Count, 6).End(xlUp).Row
data = Range("F2:I" & lr)
Range("A11:C1000").ClearContents
ReDim result(0, 2)
k = 11
For n = 2 To 5
    If IsEmpty(Cells(n, 2)) Then GoTo EndFor
    Cells(k, 2) = Cells(n, 2) & " - " & Cells(n, 3): k = k + 1
    For i = LBound(data) To UBound(data)
    x = DateSerial(Year(Cells(n, 2)), Month(Cells(n, 2)), 1)
    x2 = DateSerial(Year(Cells(n, 3)), Month(Cells(n, 3)), Day(DateSerial(Year(Cells(n, 3)), Month(Cells(n, 3)) + 1, 1) - 1))
        If x <= data(i, 1) And x2 >= data(i, 1) Then
            Cells(k, 1) = data(i, 1)
        If Cells(n, 2) > DateSerial(Year(data(i, 1)), Month(data(i, 1)), 1) And _
        Cells(n, 3) < DateSerial(Year(Cells(n, 3)), Month(data(i, 2)), Day(DateSerial(Year(data(i, 2)), Month(data(i, 2)) + 1, 1) - 1)) Then 'нужно указать что бы дата месяц год совпадал
            Cells(k, 2) = Day(Cells(n, 3)) - Day(Cells(n, 2)) + 1
        ElseIf Cells(n, 2) > DateSerial(Year(data(i, 1)), Month(data(i, 1)), 1) Then
            Cells(k, 2) = data(i, 2) - Day(Cells(n, 2)) + 1
        ElseIf Cells(n, 3) < DateSerial(Year(Cells(n, 3)), Month(data(i, 2)), Day(DateSerial(Year(data(i, 2)), Month(data(i, 2)) + 1, 1) - 1)) Then
            Cells(k, 2) = DateSerial(Year(Cells(n, 3)), Month(data(i, 2)), Day(DateSerial(Year(data(i, 2)), Month(data(i, 2)) + 1, 1) - 1)) - Cells(n, 2) + 1
        Else
            Cells(k, 2) = data(i, 2)
        End If
            Cells(k, 3) = Cells(k, 2) * data(i, 4) * Cells(n, 4)
            k = k + 1
        End If
    Next i
EndFor:
Next n
lr = Cells(Rows.Count, 2).End(xlUp).Row
For i = 11 To lr
    On Error Resume Next
    If Cells(i, 1) <> "" Then col.Add Cells(i, 1), CStr(Cells(i, 1))
Next i
k = k + 1
For i = 1 To col.Count
    Cells(k + i, 1) = col(i)
    Cells(k + i, 2) = Cells(Range("A11:A" & lr).Find(col(i)).Row, 2)
    Cells(k + i, 3) = Application.WorksheetFunction.SumIf(Range("A11:A" & lr), col(i), Range("C11:C" & lr))
Next i
End Sub
Изменено: Mershik - 03.11.2020 23:18:00
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, огромное Вам спасибо!!!!
Страницы: 1
Наверх