Εμφάνιση ενός μόνο μηνύματος
  #3  
Παλιά 20-01-17, 16:24
Το avatar του χρήστη ChrisGT7
ChrisGT7 Ο χρήστης ChrisGT7 είναι συνδεδεμένος
Διαχειριστής
Όνομα: Χρήστος Ζώρζος
Έκδοση λογισμικού Office: Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 20-09-2013
Περιοχή: Κοντά σε ηφαίστειο...
Μηνύματα: 1.046
Προεπιλογή

Εγώ θα πρότεινα λύση με κώδικα VBA:

Κώδικας:
Option Explicit

Function UNPAIDFROM(B As Long, Rng1 As Range, Rng2 As Range) As Long
    If Rng1.Columns.Count <> 1 Or Rng2.Columns.Count <> 1 _
        Or Rng1.Count <> Rng2.Count Then Exit Function
    
    Dim R As Long, Sum As Long
    R = Rng2.Count
    Sum = Rng2.Cells(R, 1).Value
    UNPAIDFROM = Rng1.Cells(R, 1).Value
    
    While B >= Sum
        If R = 1 Then
            UNPAIDFROM = Rng1.Cells(1, 1).Value
            Exit Function
        End If
        
        If B < Sum + Rng2.Cells(R - 1, 1).Value Then
            UNPAIDFROM = Rng1.Cells(R, 1).Value
            Exit Function
        End If
        R = R - 1
        Sum = Sum + Rng2.Cells(R, 1).Value
    Wend
End Function
Η συνάρτηση UNPAIDFROM() έχει 3 ορίσματα:
1ο: Το ποσό υπολοίπου (είτε κελί είτε αριθμό με το χέρι),
2ο: Το εύρος κελιών στη στήλη που περιέχει την ημερομηνία παραστατικών,
3ο: Το εύρος κελιών στη στήλη που περιέχει τις αξίες των τιμολογίων.

Το δύο τελευταία ορίσματα πρέπει να αποτελούνται από μία στήλη και το πλήθος των κελιών τους να είναι ίσο, π.χ. Α1:Α10 και G11:G20.

Νίκο, αν σου είναι εύκολο ανέβασε και τη δική σου λύση, για εγκυκλοπαιδικές γνώσεις και μόνο.
__________________
Your Curiosity Will Be The Death Of You!

Τελευταία επεξεργασία από το χρήστη ChrisGT7 : 20-01-17 στις 21:14.
Απάντηση με παράθεση