05. september 2004 - 00:20Der er
9 kommentarer og 2 løsninger
Lopslag efter flere værdier som opfylder en betingelse
Hej eksperter
Jeg søger en funktion der kan foretage Lopslag efter flere værdier som opfylder en betingelse og derpå kæde disse sammen til en tekst.
Jeg har et efterposteringsark:
EP nr. Konto Tekst Beløb 1 1010 Omp. oms. 100 2 2000 Omp. vk. 50 3 1010 Omp. oms. 57 4 1050 Omp. rab. 5 5 1010 Omp. oms. 4
Ved anvendelse af sum.hvis overføre jeg summen vedr. et kontonummer til min balance og her er det så jeg ud for summen gerne vil have en opremsning af de EP nr. som indgår i summen. I ovenstående tilfælde skulle det se ud som følger.
Konto EP nr. Beløb 1010 1,3,5 161
Er der nogle der kan hjælpe min med en løsning og muligt uden VBA ellers med VBA.
Hvis jeg har forstået det korrekt, er det ikke så kompliceret ,så hvis du kan bruge nedenstående, så er det ganske gratis :0)
Function ListEPnr(KontoNr As Integer, KontoOmråde As Range) As String ListEPnr = "" For Each c In KontoOmråde If c = KontoNr Then ListEPnr = ListEPnr & "," & Cells(c.Row, 1).Value End If Next c ListEPnr = Right(ListEPnr, Len(ListEPnr) - 1) End Function
Her er en til summen, det er sjaps der er rettet til ;-))
Function ListEPnrSum(KontoNr As Integer, KontoOmråde As Range) As String Værdi = 0 For Each c In KontoOmråde If c = KontoNr Then Værdi = Værdi + Cells(c.Row, 4).Value End If Next c ListEPnrSum = Værdi End Function
Function ListEPnrSum(KontoNr As Integer, KontoOmråde As Range) As Variant Værdi = 0 For Each c In KontoOmråde If c = KontoNr Then Værdi = Værdi + Cells(c.Row, 4).Value End If Next c ListEPnrSum = Værdi End Function
Tak for jeres svar. Jeg er ikke helt stiv i VBA så jeg må nok bede om lidt mere hjælp til denne VBA.
Jeg har prøvet jeres begges VBA'er og nedenfor er det Sjap's jeg har indsat og rettet i der hvor jeg tror der skal rettet - er dette korrekt?
Function ListEPnr(KontoNr As Integer, KontoOmråde As Range) As String ListEPnr = "" For Each c In Range(B2, B6) If c = 1010 Then ListEPnr = ListEPnr & "," & Cells(c.Row, 1).Value End If Next c ListEPnr = Right(ListEPnr, Len(ListEPnr) - 1) End Function
Dette er hvordan mit test ark er opbygget:
A B C D 1 EP nr. Konto Tekst Beløb 2 1 1010 Omp. 100 3 2 2000 Omp. 50 4 3 1010 Omp. 57 5 4 1050 Omp. 5 6 5 1010 Omp. 4
Mit resultat, på det andet ark, skulle gerne komme til at se således ud:
A B C D E F 1 EP nr. Konto Tekst Beløb Saldo før EP Saldo efter EP 2 1, 3, 5 1010 Omsætning 161 1000 1161 3 4 1050 Andre indt. 5 20 25 4 2 2000 Vareforbrug 50 450 500
Hvordan bestemmer jeg hvor resultatet af VBA'en skal vises og skal VBA'en sættes ind under programkoder i arket eller Thisworkbook?
Når du højreklikker på fanen af et ark og vælg vis programkode Kan du i venstre side se dine arknavne.
Oppe i menulinien vælger du Insert > module
Nu kan du se ovre under arkene til venstre står Module1.
Se nu er Module1 makeret med grå baggrund, det er her koden skal være
***************** kode
Function ListEPnr(KontoNr As Integer, KontoOmråde As Range) As String ListEPnr = "" For Each c In KontoOmråde If c = KontoNr Then ListEPnr = ListEPnr & "," & KontoOmråde.Cells(c.Row, 1).Value End If Next c ListEPnr = Right(ListEPnr, Len(ListEPnr) - 1) End Function Function ListEPnrSum(KontoNr As Integer, KontoOmråde As Range) As String Værdi = 0 For Each c In KontoOmråde If c = KontoNr Then Værdi = Værdi + KontoOmråde.Cells(c.Row, 4).Value End If Next c ListEPnrSum = Værdi End Function
********* Kode slut
I Resultat arkets B kolonne skriver du dine Kontonumre neden under hinanden.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.