Avatar billede bifri Praktikant
07. oktober 2024 - 14:16 Der er 11 kommentarer

XOPSLAG med visning af flere resultater

Hej,

jeg har et ark med variable (og i visse tilfælde gentagne) værdier i kolonnerne A og B. Jeg ønsker at lave et opslag, der resulterer i at kolonne C (og evt. D hvis ikke det kan stå i et felt) viser 5 og 7 ud for Æble i begge rækker, hvor Æble fremgår og tallet 19 ud for Pære og Banan.

A              B            C
Æble        5            5 og 7
Pære        19          9
Banan      19          19
Æble        7            5 og 7

Med et Xopslag får jeg som bekendt kun 1 hit, men jeg har brug for at begge hits fra kolonne B fremgår hvergang, der er gentagelse i kolonne A.

Er der nogen med forslag til hvordan dette løses?`

Mvh novicen
Avatar billede thomas_bk Ekspert
07. oktober 2024 - 14:51 #1
Det kan godt laves.

Men må man spørge til formålet med denne opstilling som umiddelbart virker noget atypisk.
Hvad forsøger du at opnå?
Avatar billede jens48 Ekspert
07. oktober 2024 - 15:04 #2
Hvis der er max. 2 "Æbler" kan du bruge denne formel:

=IF(XLOOKUP(A1;$A$1:$A$4;$B$1:$B$4;"";0;1)=XLOOKUP(A1;$A$1:$A$4;$B$1:$B$4;"";0;-1);XLOOKUP(A1;$A$1:$A$4;$B$1:$B$4;"";0;1);XLOOKUP(A1;$A$1:$A$4;$B$1:$B$4;"";0;1)&" og "&XLOOKUP(A1;$A$1:$A$4;$B$1:$B$4;"";0;-1))

På dansk bliver det til:

=HVIS(XOPSLAG(A1;$A$1:$A$4;$B$1:$B$4;"";0;1)=XOPSLAG(A1;$A$1:$A$4;$B$1:$B$4;"";0;-1);XOPSLAG(A1;$A$1:$A$4;$B$1:$B$4;"";0;1);XOPSLAG(A1;$A$1:$A$4;$B$1:$B$4;"";0;1)&" og "&XOPSLAG(A1;$A$1:$A$4;$B$1:$B$4;"";0;-1))
Avatar billede MaxZpaD Guru
07. oktober 2024 - 15:21 #3
Du kan også prøve med funktionen FILTRER, hvis det understøtter dit formål:

=FILTRER(A2:C5;A2:A5="Æble") [Data står i området A2:C5, Kriteriet står i A2:A5].

Hvis du kun vil have kolonne B og C med, kan du bruge denne:

=VÆLGKOL(FILTRER(A2:C5;A2:A5="Æble");2;3)
Avatar billede jens48 Ekspert
07. oktober 2024 - 15:35 #4
Min første formel virker ikke korrekt, hvis værdierne i kolonne B er ens. Prøv med denne i stedet:

=IF(COUNTIF($A$1:$A$4;A1)<2;XLOOKUP(A1;$A$1:$A$4;$B$1:$B$4;"";0;1);XLOOKUP(A1;$A$1:$A$4;$B$1:$B$4;"";0;1)&" og "&XLOOKUP(A1;$A$1:$A$4;$B$1:$B$4;"";0;-1))

Dansk:

=HVIS(XOPSLAG(A1;$A$1:$A$4;$B$1:$B$4;"";0;1)=XOPSLAG(A1;$A$1:$A$4;$B$1:$B$4;"";0;-1);XOPSLAG(A1;$A$1:$A$4;$B$1:$B$4;"";0;1);XOPSLAG(A1;$A$1:$A$4;$B$1:$B$4;"";0;1)&" og "&XOPSLAG(A1;$A$1:$A$4;$B$1:$B$4;"";0;-1))
Avatar billede bifri Praktikant
07. oktober 2024 - 16:56 #5
@ thomas_bk og @ thomas_bk: Det er registreringer af ændringer (kolonne B) foretaget på varenumre (kolonne A) som bliver registreret i en projektmappen. I en ande projektmappe vil jeg gerne have listet ændringsnumrene (Kolonne B) pr. varenummer.
Der kan være mange ændringsnumre (kolonne B) pr. varenummer og det er her problemet opstår, da xopslaget som Jens48 så fint foreslår desværre kun kan kigge oppefra og nedefra og dermed 'overser' evt. mellemliggende hits.

Funktionen med filtrering foreslået af MaxZpaD kunne være en mulighed, hvis jeg efterfølgende kan samle oplysningerne, så listen sammenkædes i 1 celle.
Avatar billede thomas_bk Ekspert
07. oktober 2024 - 17:48 #6
#0 kan du ikke evt uploade et reelt eksempel på virkelige data. Evt anonymiseret om nødvendigt.
Må det evt laves som en vba makro eller skal det være en formel?
I dit eksempel med rigtige data, vis også gerne den opstilling du er ude efter som løsning.
Avatar billede jens48 Ekspert
07. oktober 2024 - 20:28 #7
Jeg tror det kan lade sig gøre med nedenstående formler. Data i kolonnerne A og B startende i række 2.
I C2 skrives:
=B2
I celle C3 skrives:
=IF(COUNTIF($A$2:A3;A3)>1;XLOOKUP(A3;$A$2:A2;$D$2:D2;;0;-1)&", "&B3;B3)
På dansk:
=HVIS(TÆL.HVIS($A$2:A3;A3)>1;XOPSLAG(A3;$A$2:A2;$D$2:D2;;0;-1)&", "&B3;B3)
C3 kopieres nedefter.
Avatar billede jens48 Ekspert
07. oktober 2024 - 20:35 #8
Og så glemte jeg lige at de første forekomster også skal angive hvor mange der er af de senere forekomster, men det kan klarres med en ekstra kolonne. I D2 skrives
=XLOOKUP(A2;$A$2:$A$40;$C$2:$C$40;;;-1)
på dansk:
=XOPSLAG(A2;$A$2:$A$40;$C$2:$C$40;;;-1)
(Her antaget at der er data ned til linje 40)
Avatar billede MaxZpaD Guru
08. oktober 2024 - 08:43 #9
Du kan samle resultatet til én celle med TEKST.KOMBINER:

=TEKST.KOMBINER(" ";FALSK;VÆLGKOL(FILTRER(A2:C5;A2:A5="Æble");2))

I ovenstående eksempel er det kun kolonne 2 (B), der medtages, og resultatet adskilles af et mellemrum (" ").
Avatar billede bifri Praktikant
08. oktober 2024 - 16:08 #10
#9: Den kan jeg umiddelbart godt bruge. Kan du hjælpe mig til hvad jeg skal tilføje til formlen for at den ikke melder fejl, hvis der rent faktisk ikke er noget hit? Jeg får en #BEREGN! hvilket selvfølgelig er fordi, der ikke er noget at 'beregne' fordi der ikke er fundet et hit i filtreringen.
Avatar billede MaxZpaD Guru
08. oktober 2024 - 16:21 #11
=HVIS.FEJL(TEKST.KOMBINER(" ";FALSK;VÆLGKOL(FILTRER(A2:C5;A2:A5="Æble");2));"")
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester