Προς το περιεχόμενο

Ερώτηση για function excel


singular

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα παιδιά,

 

Θα ήθελα να ρωτήσω κάτι για τους ειδικούς του excel.

 

Έχω ένα λογιστικό φύλλο το οποίο έχει δύο rows την Α και τη Β.

Στην Α έχω τους λογαριασμούς σε αυτή τη μορφή

 

6000000000

6100000000

6100001000

6100001100

 

και πάει λέγοντας...

 

στην στήλη Β έχω αριθμούς

 

10,00

20,00

45,00

50,00

 

και πάει λέγοντας...

 

δηλαδή η μορφή του sheet είναι η εξής..

 

Α | Β

6000000000 | 10,00

6100000000 | 20,00

6100001000 | 45,00

6100001100 | 50,00

 

και πάει λέγοντας..

 

Στο ίδιο αρχείο excel έχω δημιουργήσει ένα άλλο sheet και θέλω σε ένα πεδίο ας πούμε στο Α1 του νέου sheet να αναζητήσω από τη στήλη Α, του sheet που περιέχει τα παραπάνω δεδομένα που σας περιγράφω, λογαριασμούς με κριτήριο το εξής:

 

61****1***

 

δηλαδή όσους ξεκινάνε από 61 και στο έβδομο χαρακτήρα έχουν 1.

Μετά αφού τους βρεί θα πάει και θα προσθέσει τον αριθμό που έχουν δίπλα τους από τη στήλη Β.

 

Παράδειγμα:

 

Αν αναζητήσει με το κριτήριο 61****1*** θα μας φέρει τον λογαριασμό

 

6100001000

 

και όσους άλλους λογαριασμούς ταιριάζουν με το κριτήριο.

 

Μετά θα πάει και θα διαβάσει από τη στήλη Β τον αριθμό δίπλα του και θα τον προσθέσει.

 

Μία εντολή που κάνει κάτι παρόμοιο είναι

 

SUMIF(A:A;6100001000;B:B)

 

Αυτή η εντολή ψάχνει από την στήλη Α τον λογαριασμό 6100001000 και όταν τον βρεί πάει και προσθέτει το περιεχόμενο της στήλης Β του λογαριασμού.

 

Αυτή η εντολή όμως δεν υποστηρίζει χαρακτήρες μπαλαντέρ. Δηλαδή δεν μπορώ να του πω να ψαξει για 61****1*** ή για 61????1???, δεν λειτουργεί.

 

Υπάρχει καμία εντολή η συνδιασμός εντολών η οποία θα κάνει ότι και η sumif αλλά

θα δέχεται και κριτήρια με χαρακτήρες μπαλαντέρ?

 

Ευχαριστώ εκ των προτέρων για την βοήθεια σας και για τον χρόνο σας.

Δημοσ.

Μια λύση είναι να χρησιμοποιήσουμε τις regular expressions της VBScript. Θα φτιάξουμε λοιπόν μια δικιά μας συνάρτηση sumif που σαν criteria θα μπορεί να πάρει regular expressions

Σε ένα module της VBA γράφουμε την συνάρτηση SUMIFREGEX :

 

>
Public Function SUMIFREGEX(match_range As Range, ByRef pattern As String, sum_range As Range) As Variant

   Dim src As Variant, val As Variant
   Dim i As Long, res As Variant, mr_max As Long
   Dim regex As Object
   
   Set regex = CreateObject("VBScript.RegExp")
   
   regex.pattern = pattern
   
   src = match_range.Cells
   val = sum_range.Cells
   
   mr_max = UBound(src, 1)
   
   For i = 1 To mr_max
       If (regex.Test(src(i, 1))) Then
           res = res + val(i, 1)
       End If
   Next i
   
   Set regex = Nothing
   
   SUMIFREGEX = res
   
End Function

 

Τα ορίσματα είναι όπως στην SUMIF (εδώ καλό είναι να μην βάζουμε ολόκληρες τις στήλες αλλά μόνο την περιοχή που χρειαζόμαστε, αφού είναι πολύ πιο αργή από τη SUMIF)

Για την συγκεκριμένη περίπτωση, το pattern για να βρούμε τους δεκαψήφιους αριθμούς που αρχίζουν με 61 και το έβδομο ψηφίο έιναι 1 είναι ^61.{4}1.{3}$

Παράδειγμα : =SUMIFREGEX(A1:A6;"^61.{4}1.{3}$";B1:B6)

  • 5 μήνες μετά...
Δημοσ.

Να κανω και εγω μια ερωτηση για το sumif (ας μην ανοίγω νέο thread)

 

έχω ενα excel της μορφής

Α Β

3000 | 50000

3100 | 150000

3000 | 210000

 

Θέλω αν υπάρχει ένα νούμερο στην στήλη Α περισσότερες από μία φορά αυτό να αθροίζει σε ένα άλλο κελι.

 

θέλω η sumif να μου βρει αυτόματα που στην στήλη Α έχει πάνω από μια φορά το ίδιο νούμερο και να το αθροίζει σε ένα κελι που θα είναι της μορφής

 

Α Β

3000 | 260000

3100 | 210000

 

περιμένω τις προτάσεις σας...

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...