АДРЕС ячейки найден из функции LOOKUP - PullRequest
0 голосов
/ 02 декабря 2018

Мне нужен адрес ячейки, найденной в функции LOOKUP.

У меня есть таблица с различными клиентскими заказами и платежами.tbl_main Столбцы, относящиеся к моему вопросу: [Receive Date], [Credit], [Balance].

(столбец баланса создается автоматически).

Вот столбец [Credit]:

enter image description here

Первое число каждого месяца - это платеж каждого клиента Due Date, когда он должен платить за любую работу, выполненную в течение месяца.Поэтому мне нужен CELL , чтобы показать мне, что такое due date, основываясь на этих трех вещах:

  1. Найдите последнюю ячейку со значением в столбце [Credit].Только это я выяснил: =LOOKUP(2,1/(tbl_main[Credit]<>""),tbl_main[Credit])
  2. Найдите столбец [Balance] в той же строке.Если это отрицательное число, продолжайте.

    (клиент должен деньги первого числа следующего месяца)

  3. Найдите столбец [Receive Date] в той же строке и вычислите, когда его срок оплаты

    (когда наступает первое число следующего месяца).

В одиночку я уже понял: =EOMONTH(B328,0)+1, но, конечно, B328 - это моя тестовая ячейка,Мне нужна моя формула, чтобы можно было вычислить row index 4.Отобразите это due date в ячейке где-нибудь.

Я просто не могу понять, как написать формулу для выполнения этого без VBA.

Я пытался комбинировать различные методы LOOKUP иMATCH, но получите #N/A результатов.

Может кто-нибудь помочь с этим?

1 Ответ

0 голосов
/ 06 декабря 2018

Это мой код, который я понял.Это зависит от моих собственных потребностей, но, возможно, кто-то с таким же вопросом сможет извлечь из него некоторый код, который поможет.

Sub GetPaymentDueStatus()

'#################################
'Get \ Set "Payment Due" field
'#################################

'If not viewing one client - exit sub
If ActiveSheet.Range("SelectedClient") = "ALL CLIENTS" Then

    Range("PaymentDueStatus") = "N\A"
    Range("PaymentDueDate") = "N\A"

    Exit Sub

Else

    'Client has no debt
    If Range("Total_All") >= 0 Then

        Range("PaymentDueStatus") = "SETTLED"
        Range("PaymentDueDate") = "N\A"

            'Client has debt - check if on time or overdue
            Else

                '#################################
                'Start Calculation
                '#################################

                Dim rownumCredit As Long
                Dim colCredit As Long
                Dim rngCredit As Range

                Dim LastPaymentDate As Date
                Dim MonthAfterPayment As Date

                Set rngCredit = Range("rng_credit").Find(what:="*", LookIn:=xlValues, searchdirection:=xlPrevious)

                rownumCredit = rngCredit.Row
                colCredit = rngCredit.Column

                '#################################
                'Calculate the Last Payment date
                'if it's ovedue
                '#################################

                'Get date of last payment
                LastPaymentDate = Cells(rownumCredit, Range("rng_recDate_main").Column)

                'Get next first of the month from last payment
                MonthAfterPayment = WorksheetFunction.EoMonth(Cells(rownumCredit, Range("rng_recDate_main").Column), 0) + 1

                'Check if overdue
                If Month(MonthAfterPayment) <= Month(Date) Then

                    Range("PaymentDueStatus") = "OVERDUE"

                Else

                    Range("PaymentDueStatus") = "ON TIME"

                End If

                Range("PaymentDueDate") = MonthAfterPayment


    End If

End If

End Sub
...