05. marts 2005 - 23:28Der er
8 kommentarer og 1 løsning
Function ListEPnrSum(KontoNr As Integer, KontoOmråde As Range)
Jeg har tidligere fået svar på spg. nr. 536359.
Nu sidder jeg og vil gerne have en variabel mere med, således at såvel kontonr. som afdeling skal være opfyldt.
Spg. 536359: 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
KABBAK gav mig følgende svar: ***************** 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.
I A2 skriver du
=ListEPnr(B2;Ark1!A1:D6)
I D2 skriver du =ListEPnrSum(B2;Ark1!A1:D6)
Ret ark1 til dit navnet på dit testark
Er der en der kan hjælpe mig med at rette den til?
Den til EP nr skulle være denne kaldes med f.eks.=ListEPnr(A2;Ark1!$B$2:$B$7;Ark1!$A$2:$A$7)
Function ListEPnr(KontoNr As Integer, KontoNrOmråde As Range, EpOmråde As Range) As String Dim EP As Variant, KO As Variant, Ens As Boolean, T As Integer, A As Variant EP = EpOmråde KO = KontoNrOmråde
For i = 1 To UBound(EP) Ens = False If KO(i, 1) = KontoNr Then A = Split(ListEPnr, ",")
For T = 0 To UBound(A) If Val(A(T)) = EP(i, 1) Then Ens = True End If Next T
If Ens = False Then ListEPnr = ListEPnr & EP(i, 1) & "," End If End If Next i ListEPnr = Left(ListEPnr, Len(ListEPnr) - 1) End Function
den til summen
kaldes med f.eks. =ListEPnrSum(Ark2!A2;Ark1!$B$2:$B$7;Ark1!$D$2:$D$7)
Function ListEPnrSum(KontoNr As Integer, KontoNrOmråde As Range, VærdiOmråde As Range) Dim KO As Variant, VO As Variant KO = KontoNrOmråde VO = VærdiOmråde For i = 1 To UBound(KO) If KO(i, 1) = KontoNr Then ListEPnrSum = ListEPnrSum + VO(i, 1) End If Next i End Function
Function ListEPnr(KontoNr As Integer, Afdeling As String, Dataområde As Range) As String Dim EP As Variant, KO As Variant, Ens As Boolean, T As Integer, A As Variant KO = Dataområde
For i = 1 To UBound(KO) Ens = False If KO(i, 2) = KontoNr And KO(i, 3) = Afdeling Then A = Split(ListEPnr, ",")
For T = 0 To UBound(A) If Val(A(T)) = KO(i, 1) Then Ens = True End If Next T
If Ens = False Then ListEPnr = ListEPnr & KO(i, 1) & "," End If End If Next i ListEPnr = Left(ListEPnr, Len(ListEPnr) - 1) End Function
Function ListEPnrSum(KontoNr As Integer, Afdeling As String, Dataområde As Range) Dim KO As Variant KO = Dataområde For i = 1 To UBound(KO) If KO(i, 2) = KontoNr And KO(i, 3) = Afdeling Then ListEPnrSum = ListEPnrSum + KO(i, 5) End If Next i End Function
Dataområde er alle 5 kolonner og ned til enden af data
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.