06. november 2012 - 11:07Der er
9 kommentarer og 1 løsning
Tæl unikke værdier hvis betingelser er opfyldt
Hejsa,
Jeg sidder med Excel 2010, på engelsk. Jeg vil gerne have en formael der kan hjælpe mig med følgende lille udfordring.
Jeg har understående lille udtræk, hvor jeg gerne vil tælle hvor mange unikke værdier der er i kolonne A, hvis kolonne B=01, kolonne C=DK, kolonne D=22 og kolonne E=yes. Tællene i kolonne a går igen, men jeg vil kun tælle dem med en gang, og kun hvis alle 4 betingelser er opfyldt.
Delivery no.=A Delivery status=B Country =C Orderline status=D Is planned date before today?=E
A B C D E 906951 01 NO 22 No 860401 02 SE 22 No 802057 02 SE 22 No 885656 02 SE 22 No 921432 01 DK 22 No 913123 01 FI 22 No 914955 01 NO 22 No 885415 02 SE 22 No 900358 01 NO 22 No 914739 01 SE 22 No 842658 05 NO 33 Yes 842658 05 NO 22 Yes 891892 02 NO 22 No 842658 05 NO 33 Yes 842658 05 NO 33 Yes 853979 02 SE 22 No 888688 02 SE 22 No 932638 01 NO 22 No 931741 01 SE 22 No 910786 02 SE 22 No 916469 01 NO 22 No 896629 01 NO 22 No 879490 02 DK 22 No 902582 02 SE 22 No 858404 05 DK 33 Yes 858404 05 DK 33 Yes 916235 01 NO 22 No 858404 05 DK 33 Yes 858404 05 DK 33 Yes 858404 05 DK 33 Yes 913123 01 FI 22 No 858404 05 DK 33 Yes 902362 02 SE 22 No 927493 02 NO 33 Yes 858404 05 DK 33 Yes 914955 01 NO 22 No 853979 02 SE 22 No 853979 02 SE 22 No 892275 02 SE 22 No 904063 01 DK 22 No 934213 01 NO 22 No 909565 01 NO 22 No 853979 02 SE 22 No 853979 02 SE 22 No
Jeg kunne ikke lige få en formel til at klare dette problem (Afviser ikke at det kan lade sig gøre)
Men her ihver fald VBA som kunne gøre det..
Private Sub TælUnikke() 'Delivery no.=A 'Delivery Status = B 'Country = C 'Orderline Status = D 'Is planned date before today?=E
DS = "01" C = "DK" OS = "22" IPDBT = "Yes"
Dim ResultatCelle As Range Set ResultatCelle = Range("G1")
iAlt = 0 IndsætIArray = 0 Dim TjekUnikArr(1000) Range("A1").Select Do Until Len(ActiveCell.Text) = 0 If ActiveCell.Offset(0, 1).Text = DS Then If ActiveCell.Offset(0, 2).Text = C Then If ActiveCell.Offset(0, 3).Text = OS Then If ActiveCell.Offset(0, 4).Text = IPDBT Then ErDenneUnik = True For i = 0 To UBound(TjekUnikArr) Step 1 If TjekUnikArr(i) = ActiveCell.Text Then ErDenneUnik = False Exit For End If Next
If ErDenneUnik = True Then TjekUnikArr(IndsætIArray) = ActiveCell.Text IndsætIArray = IndsætIArray + 1 iAlt = iAlt + 1 End If End If End If End If End If ActiveCell.Offset(1, 0).Select Loop ResultatCelle = iAlt Range("A1").Select End Sub
Mit problem er at jeg er meget begrænset i min viden omkring VBA, og har ikke tiden til og sætte mig ind i dette pt. Jeg har allieret mig med en der kan lidt VBA, hvis ikke jeg skulle kunne få dette løst via en formel.
Den formal du har skrevet her, får jeg kun til og tælle alle de forkomster der er(hvor mange linjer er der hvor kravene er opfyldt, men fjerne ikke gentagelser fra summen), og ikke kun de unikke værdier der er.
Tak for forslaget. Jeg kan desværre ikke rigtig bruge det, jeg har brug for en formel der tæller op på mængden ud fra kriterierne, og dette skal vises i et felt. Årsagen er at de data der tælles op på variere hele tiden. Brugeren skal ikke til og bruge filter til og finde frem til resultatet. Beklager jeg ikke var klar nok i min oprindelige forklaring.
Jeg har dog et mindre problem, hver gang jeg bruger den på mine originale data, går Excel ned med et brag. Der er lige pt 127455 rekords, og det er for mange til Excel.
Du får point, men jeg vil lige oprette en anden tråd, for og se om der er nogle der kan komme med en løsning der ikke er for hård ved Excel.
Mit problem med VBA, er at firmaet jeg arbejder for er ikke glad for VBA, og vores it afdelings forstand på VBA er god nok til at de kan sige god for dette. (Vi bruger ikke VBA til dagligt)
Jeg antager selvfølgelig ikke at der er noget galt med den kodning du har lavet, men har blot ikke tilladelse til og bruge den, beklager.
Dog som du skriver at du har over 100k rekords, så ville den nok også tage hårdt på Excel når den blev kørt ;)
Synes godt om
Ny brugerNybegynder
Din løsning...
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.