Страницы: 1
RSS
распределение платежей по начислениям
 
Доброго времени суток!

Нашел хороший пример с макросом, но немножко не подходит. Прошу помочь модернизировать.
Задача распределить платежи на "ГТД" и распределять до тех пор, пока есть оплаты.
 
Здравствуйте. Ничего не понятно, что - от куда - и куда.
 
Написал в файлике, что нужно + думал, что макрос можно посмотреть.

В общем есть две таблицы (в файле они на одном листе, в реальности будут на разных листах одной книги), 1 таблица - список ГТД и сооттветствующих таможенных платежей, вторая таблица - список платежек по оплатам на таможню. Я хочу, чтобы платежки начиная с самой первой распределялись на ГТД, также начиная с самой первой и до тех пор, пока хватает платежей. В тот момент, когда платежи распределены до 0, распределение заканчивается и в таблице считается итог задолженности перед таможней по ГТД. Надеюсь теперь попонятнее объяснил.
Формулами пытался - получаются либо цикличные, либо их очень много изменяющихся. С макросами первый раз, но раз нашел хороший пример, решил доделать.
Может код макроса сюда вставить?

Спасибо!
Изменено: puplin - 12.02.2017 12:47:33
 
Цитата
puplin написал:
Надеюсь теперь попонятнее объяснил.
Неа.
Цитата
puplin написал:
Я хочу, чтобы платежки начиная с самой первой распределялись на ГТД,
Я не бухгалтер, не понимаю что значит "платежка распределилась". Понятнее для меня "Сумма ГТД" за дату, или данные из столбца С распределились в столбец  D. Судя по количеству помощников в этой теме, не один я не понимаю.
 
Спасибо за терпение! Первый раз просто прошу помощи, из-за этого так.

Подправил файлик.

Задача - узнать сумму неоплаченных ГТД. В первой таблице - номера и сумма ГТД,  во второй платежки на таможню. Нужно, чтобы макрос относил сумму платежки из второй таблицы (столбец С) на сумму первой ГТД (стобец С) первой таблицы, пока либо сумма ГТД , либо сумма платежки не будет равна 0, далее соответственно брал вторую платежку и соотносил со следующей ГТД. Когда сумма оплат становится равно 0, подбивал бы итого суммы непогашенных ГТД.

В моем примере например 1 ГТД на сумму 99 000 была оплачена первыми 2 платежками на 40 000 и 59 000, вторая третьей платежкой на 120 000 и т.д.
В итоге задолженность по ГТД (в столбце В) осталась равной 866 200.
В столбце В хотел бы, чтобы была сумма оплаты, а в столбце Е номер платежей отнесенных на конкретную ГТД.
Изменено: puplin - 12.02.2017 20:45:16
 
Не знаю так ли нужно, но не макросом, формулой
Код
=ЕСЛИ(СУММ($C$8:C8)<МАКС($C$23:$C$28);C8;МАКС($C$23:$C$28)-СУММ($G7:G$8))
Изменено: gling - 12.02.2017 21:03:10
 
Большое спасибо! Вроде работает, как надо.
Изменено: puplin - 12.02.2017 21:35:24
 
Задача оказалась чуть более сложнее, так как в расчетах участвует валюта.

Макрос распределяет ГТД на оплаты, мне же нужно оплаты распределить на ГТД, с учетом того, что пошлина фиксированная по курсу на дату оплаты. И хотелось бы, чтобы в крайней правой колонке G и D в примере текстом было написано какой платеж и в какой сумме пошел на части ГТД.
Код
Next
    
    For nRow = 1 To RngPay_.Rows.Count
        RngPay_.Cells(nRow, 4).Value = _
            RngPay_.Cells(nRow, 3).Value
        RngPay_.Cells(nRow, 5).Value = ""
    Next
End Sub

Private Sub ClearDeclStores_()
    Dim nRow As Long
    
    For nRow = 1 To RngCosts_.Rows.Count
        RngCosts_.Cells(nRow, 3).Offset(0, 1).ClearContents
    Next
End Sub

Private Sub Process_()
    Dim nRowCost As Long
    Dim nRowPay As Long
    Dim fValue As Double
    Dim sText As String
    
    nRowCost = 1
    nRowPay = 1
    Do While (nRowCost <= RngCosts_.Rows.Count) And (nRowPay <= RngPay_.Rows.Count)
        If RngCosts_.Cells(nRowCost, 4) > RngPay_.Cells(nRowPay, 4) Then
            fValue = RngPay_.Cells(nRowPay, 4)
            RngPay_.Cells(nRowPay, 4) = 0
            RngCosts_.Cells(nRowCost, 4) = RngCosts_.Cells(nRowCost, 4) - fValue
        Else
            fValue = RngCosts_.Cells(nRowCost, 4)
            RngCosts_.Cells(nRowCost, 4) = 0
            RngPay_.Cells(nRowPay, 4) = RngPay_.Cells(nRowPay, 4) - fValue
        End If
        
        sText = RngCosts_.Cells(nRowCost, 2)
        If (fValue <> RngCosts_.Cells(nRowCost, 3)) Then
            sText = sText & "=" & Format(fValue, "0")
        End If
        
        If RngPay_.Cells(nRowPay, 5) <> "" Then
            RngPay_.Cells(nRowPay, 5).Value = RngPay_.Cells(nRowPay, 5).Value & ","
        End If
        RngPay_.Cells(nRowPay, 5) = RngPay_.Cells(nRowPay, 5) & sText
        
        If (RngPay_.Cells(nRowPay, 4) = 0) Then nRowPay = nRowPay + 1
        If (RngCosts_.Cells(nRowCost, 4) = 0) Then nRowCost = nRowCost + 1
    Loop
End Sub

Private Function RngCosts_() As Excel.Range
    Set RngCosts_ = ThisWorkbook.Names("rngCosts").RefersToRange
End Function

Private Function RngPay_() As Excel.Range
    Set RngPay_ = ThisWorkbook.Names("rngPayments").RefersToRange
End Function
Изменено: puplin - 19.02.2017 00:25:15 (Забыл файлик прицепить)
 
Ну что, совсем нет предложений? Буду очень благодарен, в том числе и финансово.
 
Может тогда перенести в платный раздел?
 
Да, если можно. Спасибо!
 
puplin, написал Вам на почту.
 
заказ свободен, для меня оказался сложным
 
какие сроки и бюджет?
 
сроков особых нет, это просто нужно, я сейчас это руками делаю.
По бюджету планировал до 2 000, но учитывая, что уже 2 отказались из-за сложности, выслушаю ваши предложения в разумных пределах.
Изменено: puplin - 22.02.2017 13:58:39 (добавил файлик с уточненным заданием)
 
Написал в ЛС
в Работе
выполнил
Изменено: Ivan.kh - 06.03.2017 11:56:56
Страницы: 1
Наверх