Расчет инструментами BVA суммы долга по контрагентам с условиями - VBA

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста инструментами BVA решить такую задачу. Есть клиенты в таблице 1 в разрезе Фио, ИНН, сумма долга Есть клиенты в таблице 2 в разрезе Фио, Договор, ИНН, сумма долга Есть клиенты в таблице 3 в разрезе Фио, ИНН В таблице 4 нужно получить результат задачи. Задача. Нужно автоматически высчитать на листе «Таб4» таблицу с такими колонками «Фио», «ИНН», «сумма долга», «сумма к возврату», «причина отказа», «не выплачено» исходя с таких условий: 1) Долг меньше 1000 единиц НЕ отдаем 2) Всем клиентам в таблице 3 НЕ отдаем 3) Клиентам с суммой задолженности по всем договорам свыше 10000000 НЕ отдаем 4) Всем остальным ОТДАЕМ Пример и желаемый результат во вложении

Решение задачи: «Расчет инструментами BVA суммы долга по контрагентам с условиями»

textual
Листинг программы
Sub Таблица_возвратов()
    Dim i&, A, B, Dic1, Dic2, vX
    Set Dic1 = CreateObject("Scripting.Dictionary"): Dic1.CompareMode = 1
    Set Dic2 = CreateObject("Scripting.Dictionary"): Dic2.CompareMode = 1
    A = Worksheets("Таб1").[A1].CurrentRegion.Value
    For i = 2 To UBound(A)
        A(i, 1) = Trim(A(i, 1))
        A(i, 2) = Trim(A(i, 2))
        Dic1(A(i, 1) & A(i, 2)) = i
    Next i
    B = Worksheets("Таб3").[A1].CurrentRegion.Value
    For i = 2 To UBound(B)
        B(i, 1) = Trim(B(i, 1))
        B(i, 2) = Trim(B(i, 2))
        Dic2(B(i, 1) & B(i, 2)) = 0&
    Next i
    With Worksheets("Таб4")
        .UsedRange.Offset(1, 0).ClearContents
        i = 1
        For Each vX In Dic1.Keys
            i = i + 1
            .Cells(i, 1) = A(Dic1(vX), 1)
            .Cells(i, 2) = A(Dic1(vX), 2)
            .Cells(i, 3) = A(Dic1(vX), 3)
            .Cells(i, 4) = 0
            If Dic2.Exists(vX) Then
                .Cells(i, 5) = "Таб3"
            ElseIf .Cells(i, 3) > 10000000 Then
                .Cells(i, 4) = 10000000
            ElseIf .Cells(i, 3) < 1000 Then
                .Cells(i, 5) = "меньше 1000"
            Else
                .Cells(i, 4) = .Cells(i, 3)
            End If
            .Cells(i, 6).FormulaR1C1 = "=RC[-3]-RC[-2]"
        Next
        .[A1].CurrentRegion.Borders.LineStyle = xlContinuous
    End With
    Set Dic1 = Nothing: Set Dic2 = Nothing
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы