Skrevet tor. d. 18. oktober 2012 kl. 11:14:20| #1
Hvis jeg forstår spørgsmålet rigtigt, kan du markere hele din liste med frugter. kopier den over i en ny kolonne.
Vælg "Data" i menuen.
Vælg Fjern dubletter.
Vh
Anedi
Skrevet tor. d. 18. oktober 2012 kl. 11:30:36| #2
Jeg vil helst undgå at bruge den funktion da der ud fra hver "frugt" er endnu en kolonne hvor der er data tilknyttet. Altså et antal "frugter". Dette antal vil blive fjernet eller blive tilknytte til en forkert række..
Skrevet tor. d. 18. oktober 2012 kl. 11:33:46| #3
Så måske rækken bare skal skjules, ja jeg i data-kolonnen har en sum.hvis(....) der lægger tallene for de ens "frugter" sammen..
Skrevet tor. d. 18. oktober 2012 kl. 12:54:54| #4
Er det korrekt forstået at du i et ark har en liste med frugtens navn og ved siden af har en liste med et antal? I denne liste kan frugtens navn forekomme flere gange.
Og at du i et nyt ark gerne vil have en liste, hvor frugtens navn kun optræder én gang, og ved siden af en liste der summerer antallet af frugter fra det første ark?
I så fald vil jeg stadig mene, at du kan kopiere hele listen i ark 1 og sætte den ind i ark 2, kolonne A. Vælg derefter fjern dubletter, som ovenfor.
I kolonne B indsættes din sum.hvis-funktion:
=sum.hvis('Ark1'!$A$1:$A$1000;A1;'Ark1'!$B$1:$B$1000)
Skrevet tor. d. 18. oktober 2012 kl. 13:35:37| #5
Det er ikke helt korrekt. Jeg vil ikke bruge funktionen "fjern dubletter" da den ikke er dynamisk. Det hele skal for mig køre automatisk. Jeg vil prøve at forklare det mere præcist. Det bliver nok mere indviklet end først antaget:
Jeg har to ark. I det ene ark har jeg én kolonne hvor jeg har nogle frugter listet som ovenfor.
Æbler
Æbler
Pærer
Pærer
Æbler
Appelsiner
Appelsiner
Kiwi
Bananer
Bananer
Æbler
Disse skal hentes over i ark to. Dette har jeg gjort vha. =LOPSLAG(A1;ark1;4;1)osv. Dette er netop lavet for at holde ark2 dynamisk. Så hver gang jeg tilføjer en ny frugt i mit ark1 kommer det automatisk i ark2.
I mit ark2 får jeg henter jeg nogle data fra en database som jeg indsætter i en kolonne ud for hver frugt.
Så nu ser mit ark2 sådan ud:
Æbler 2
Æbler 4
Pærer 6
Pærer 7
Æbler 2
Appelsiner 1
Appelsiner 10
Bananer 8
Kiwi 5
Bananer 14
Bananer 3
Æbler 21
Her ønsker jeg kun at hver frugt skal optræde én gang, men at den totale sum af de ens frugter skal stå ud fra den ene række der bliver tilbage.
Sådan:
Æbler 29
Pærer 13
Appelsiner 11
Bananer 25
Kiwi 5
(håber det er rigtigt lagt sammen ;-))
Her har jeg så brugt:
=SUM.HVIS($A$1:$A$12;e13;$B$1:$B$12)
Jeg er ved at skrive noget vba-kode, (og har fundet lidt andetsteds) hvor jeg prøver at skjule de rækker der er hvor jeg finder de samme navne men går igen lidt død..
Private Sub Workbook_Open()
Dim lRow As Long
With Worksheets("Ark2")
.Rows("1:65536").Hidden = False
For lRow = .UsedRange.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
If .Cells(lRow, 2).String = KAN I HJÆLPE HER? Then
.Cells(lRow, 2).EntireRow.Hidden = True
End If
Next
End With
End Sub
Håber det giver mere mening...
Måske det bare at finde den rigtige sammenligning i det stykke VBA-kode?
Skrevet fre. d. 19. oktober 2012 kl. 10:45:34| #6
Jeg har selv været yderligere igang, og har skrevet lidt mere på en VBA-kode, der ser sådan ud:
Public Sub HideMinusOne()
Dim tekstilType As String
Dim tekstilTestResultat() As String
Dim tekstilCount As Long
'Dim dyn_datatabel() As String
tekstilType = Range("a2")
ReDim Preserve tekstilTestResultat(tekstilType)
With ActiveSheet
.Rows("1:65536").Hidden = False
For tekstilCount = .UsedRange.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
tekstilTestResultat(tekstilCount) = tekstilType
Next
If .Cells(tekstilTestResultat, 1).Value = 100 Then
.Cells(tekstilTestResultat, 1).EntireRow.Hidden = True
End If
End With
End Sub
Det skal siges at linjen der tjekker om værdier er lig 100 kun er lavet for at se om jeg overhovedet kan få rutinen til at skjule noget. Når jeg kan det vil jeg begynde at rode med at sammenligne strenge.
Men jeg er slet ikke kommmet helt derned endnu. Jeg bliver bremset helt i toppen:
ReDim Preserve tekstilTestResultat(tekstilType)
Her får jeg en "type mismatch"
Kan nogen fortælle hvorfor? Jeg synes ellers at både tekstilTestResultat og tekstilType er erklæret som strenge..
Håber virkeligt at nogen kan hjælpe. Sidder godt nok fast!
Skrevet lør. d. 20. oktober 2012 kl. 09:11:30| #7
Er løsningen ikke bare at lave en pivottabel af dataene i ark2?
Skrevet søn. d. 21. oktober 2012 kl. 08:50:35| #8
Jeg vil ikke gå ind på en VBA-tankegang, men hvis du kan leve med en formel, så måske følgende, hvor jeg forudsætter, at du har dine data i A1:B13:
Frugt Antal
Æbler 2
Æbler 4
Pærer 6
Pærer 7
Æbler 2
Appelsiner 1
Appelsiner 10
Bananer 8
Kiwi 5
Bananer 14
Bananer 3
Æbler 21
I for eksempel D2 indtaster du følgende matrixformel:
=INDEKS($A$2:$A$13;SAMMENLIGN(0;TÆL.HVIS($D1:D$1;$A$2:$A$13);0))
Formlen kopieres nedad og vil returnere #I/T når unikke frugter er udtømt. Dennne #I/T værdi lader sig selvfølgelig undertrykke, hvis det er et "must".
Skrevet søn. d. 21. oktober 2012 kl. 10:08:42| #9
Korrektion.
Formlen i D2 skulle have været:
=INDEKS($A$2:$A$13;SAMMENLIGN(0;TÆL.HVIS($D$1:D1;$A$2:$A$13);0))
Skrevet man. d. 22. oktober 2012 kl. 09:38:28| #10
Hej,
@tbak: Kan du uddybe løsningen med Pivottabel? Dette er jeg ikke så meget inde i?
@dkhandnu: Det virker jo fint. Men jeg vil så gerne have at de rækker hvor der bliver returneret #I/T bliver skjult automatisk. Her skal jeg vel ud i noget VBA-kode?
Skrevet man. d. 22. oktober 2012 kl. 09:55:15| #11
Ingen grund til at bruge VBA her.
Du kan for eksempel bruge:
=HVIS.FEJL(INDEKS($A$2:$A$13;SAMMENLIGN(0;TÆL.HVIS($D1:D$1;$A$2:$A$13);0));"")
Eventuelt kan du erstatte "" med 0 og så lave en brugerdefineret formatering der skjuler nulværdier.
Hans
Skrevet man. d. 22. oktober 2012 kl. 10:20:59| #12
Det er SUPER! Det eneste der er at jeg i nederst række får et "0" hvorefter rester af rækkerne bliver "" (tommer) som jeg gerne vil ha'. Har du også et quick fix på det?:-)
Skrevet man. d. 22. oktober 2012 kl. 10:22:40| #13
Jeg er ikke med på, hvad du mener.
Skrevet man. d. 22. oktober 2012 kl. 10:29:03| #14
Jeg får:
Æbler
Pærer
Appelsiner
Bananer
Kiwi
0
""
""
""
Eller bare:
Æbler
Pærer
Appelsiner
Bananer
Kiwi
0
Skrevet man. d. 22. oktober 2012 kl. 10:33:28| #15
Med:
=HVIS.FEJL(INDEKS($A$2:$A$13;SAMMENLIGN(0;TÆL.HVIS($D$1:$D1;$A$2:$A$13);0));"")
indtastet som matriksformel i D2 og herefter kopieret nedad får jeg:
Æbler
Pærer
Appelsiner
Bananer
Kiwi
og ikke andet.
Skrevet man. d. 22. oktober 2012 kl. 10:53:39| #16
Mærkeligt! Det gør jeg også nu. Det kan være der havde sneget sig en fejl 40 ind. Eller en fejl-mandag. Nu funker det i hvert fald! Mange tak! Vil du give en kort forklaring om hvad formlen gør?
Skrevet man. d. 22. oktober 2012 kl. 12:06:20| #17
INDEKS-funktionen har følgende syntaks (se Excels hjælp)
INDEKS(matrix; rækkenr; kolonnenr)
Som det fremgår af Hjælp returnerer funktionen værdien af et element i matrix som vælges efter række- og kolonnenummerindeks.
Matricen i det her tilfælde er altså: $A$2:$A$13.
Rækkenummeret bestemmes af det andet argument i INDEKS-funktionen, som er:
SAMMENLIGN(0;TÆL.HVIS($D$1:$D1;$A$2:$A$13);0)
SAMMENLIGN-funktionen søger efter en opslagsværdi (her 0) i en opslagsmatrix (her TÆL.HVIS($D$1:$D1;$A$2:$A$13).
Hvis du aktiverer celle D2 og i formelfeltet markerer (med musen) præcist følgende del af formlen:
TÆL.HVIS($D$1:$D1;$A$2:$A$13)
og trykker på F9 vil du se følgende: {0\0\0\0\0\0\0\0\0\0\0\0}
som udtryk for, at $D$1:$D1 er forskellig fra alle elementer i $A$2:$A$13. Sammenlign vil herefter søge efter opslagsværdien (eksakt) 0 i matricen {0\0\0\0\0\0\0\0\0\0\0\0} og finder denne som matricens første element, hvorfor funktionen returnerer 1.
INDEKS-funktionen er hermed reduceret til:
=INDEKS($A$2:$A$13;1) som returnerer det første element i $A$2:$A$13, altså indholdet i $A$2 (=Æbler).
Prøv nu at aktivere D3. Bemærk at SAMMMENLIGN-formlen nu ser sådan her ud: SAMMENLIGN(0;TÆL.HVIS($D$1:$D2;$A$2:$A$13);0).
Marker nu præcist følgende del af formlen:
TÆL.HVIS($D$1:$D2;$A$2:$A$13
og tryk på F9 vil du se: {1\1\0\0\1\0\0\0\0\0\0\1} som udtryk for, at $D$1:$D2 indeholder "Æbler" (i D2) og "Æbler findes ikke i matricens tredje, fjerde og sjette til ellevte element. SAMMELIGN-funktionen er hermed reduceret til:
SAMMENLIGN(0;{1\1\0\0\1\0\0\0\0\0\0\1};0).
Funktionen søger efter opslagsværdien (eksakt) 0 i matricen
{1\1\0\0\1\0\0\0\0\0\0\1} og finder denne som element nummer tre, hvorfor returværdien er 3.
INDEKS-funktionen er nu reduceret til:
= INDEKS($A$2:$A$13;3), hvorfor returværdien er det treje element i $A$2:$A$13, altså "Pærer". Og så videre efter samme skema.
Hvis du vil lære at begribe komplekse formler må du først og fremmest vænne dig til grundigt (i Excels hjælp) at studere de funktioner der indgår ligesom du må være fuldt fortrolig med anvendelse af F9-teknikken/Evaluer formel værktøjet.
Skrevet man. d. 22. oktober 2012 kl. 13:53:44| #18
Det giver mening! Men derfra og så selv komme i tanke om det er der stadig et stykke vej endnu :-)
Det kræver, som du siger, at man er fortrolig med de forskellige formler.
Men jeg siger mange tak! Jeg har nu et ark der fungerer helt efter hensigten!
Skrevet man. d. 22. oktober 2012 kl. 17:31:39| #19
Stil dig på ark2 et eller andet sted i dataene,
Tryk Indsæt/Tabel
Tryk Indsæt/Pivottabel
Træk Frugt til Rækkenavne
Træk Antal til Værdier
det giver dig sammentællingen pr. frugt.
Skrevet tir. d. 23. oktober 2012 kl. 08:33:44| #20
Har lige prøvet det kort, men kan ikke helt få det til at virke. Men må indrømme at jeg ikke har brugt ret meget tid på det da "dkhanknus" løsning fungerede fint for mig. Han må derfor gerne bede om at få mine 30 point
Skrevet tir. d. 23. oktober 2012 kl. 08:40:50| #21