Avatar billede Slettet bruger
16. juni 2013 - 10:00 Der er 17 kommentarer og
1 løsning

Er der nogen der er friske på en (i praksis helt unyttig) udfordring?

A      B      C
1    123    123    1
2    1    0    0
3    Regneark    Excel    0
4    x    x    1,5

Udfordringen er at konstruere den kortest mulige formel der returnerer værdierne i kolonne C ud fra værdierne i kolonne A og B.
Altså, hvis indholdet i A og B er identisk og er tal(som i A1 og B1), skal der returneres 1. Hvis indholdet i A og B er identisk, men er tekst (som A4 og B4), skal der returneres 1,5. I alle andre tilfælde skal der returneres 0.

Det er en forudsætning, at ikke begge celler i kolonne A og B er tomme. Endvidere er SAND/FALSK-værdier og fejlværdier ikke tilladt.

Det kan gøres på mange forskellige måder, og udfordringen er som sagt at konstruere den kortest mulige formel i C1 der kan kopieres ned til C4 og give de viste resultater (1, 0, 0 og 1,5).
Avatar billede natkatten Mester
16. juni 2013 - 10:58 #1
Løst med og uden brug af matriksformel. Men jeg skal bestemt ikke udelukke, at de begge kan gøres kortere.

Hvordan opgøres "kortest mulige formel"? Antallet af karakterer i formlen vel. Tælles lighedstegnet med? Og hvad med matrikstegnene {}?

Der vil være forskel afhængigt af sprogversionen. Så en udvidelse af udfordringen kunne være, om den kortest mulige formel laves i engelsk eller dansk Excel. Ofte vil det i mere komplekse formler være i den engelske pga. Microsofts tendens til at gøre nogle danske formler meget lange. F.eks.:

ISNA = ER.IKKE.TILGÆNGELIG
TRIM = FJERN.OVERFLØDIGE.BLANKE

Men det behøver jo ikke at være tilfældet her.
Avatar billede Slettet bruger
16. juni 2013 - 11:14 #2
Vi kan jo lade det være åbent og vurdere formlens "korthed" dels med engelsksproget version dels med dansk.

Altså minimum af =LÆNGDE(<formel på dansk>) hvis der sættes en ' foran lighedstegnet henholdsvis minimum af =LEN(<formel på engelsk>)

Hans
Avatar billede natkatten Mester
16. juni 2013 - 11:25 #3
Hint: Hvis der blot skal testes for, om værdierne i A1 og B1 er identiske, og altså ikke skal skelnes mellem, om cellerne indeholder tal eller tekst, så kan denne formel benyttes:

=HVIS(A1=B1;1;0)
=IF(A1=B1;1;0)

Dvs. her er den engelske formel to karakterer kortere.
Avatar billede Slettet bruger
16. juni 2013 - 11:42 #4
Jeg er helt med, og har muligvis ikke udtrykt mig tydeligt nok. Jeg mente at vi kunne vurdere det på korteste formel af forslag der måtte komme i:

Dansk sprogversion
Engelsk sprogversion

Hvis et "dansk" og et "engelsk" forslag bruger samme funktioner (HVIS = IF osv.) stilles de lige.

Jeg har ingen facitliste til det her. Det hele er kun ment for sjov.

Hans
Avatar billede kim1a Ekspert
16. juni 2013 - 18:14 #5
En mulighed er:
=IF(A4=B4;IF(ISNUMBER(A4);1;1,5);0)

Men ikke synderlig overskueligt for en nybegynder? Jeg tænkte også på noget med at teste med A1 x 1 - og så bruge iferror, men tror den bliver længere.
Avatar billede jens48 Ekspert
16. juni 2013 - 18:54 #6
Kims formel kan laves lidt kortere:
=IF(A3=B3;IF(N(B3);1;1,5);0)
Avatar billede Slettet bruger
16. juni 2013 - 19:10 #7
kim1a og jens48 - korrekte løsninger begge to (36 og 33 tegn), men det kan gøres bedre :-)

Hans
Avatar billede kim1a Ekspert
16. juni 2013 - 20:43 #8
Argh - hvorfor er jeg så autistisk når det kommer til sådanne hovedbrud.

Jeg arbejder nu med '=IF(N(B2);EXACT(B2;A2);1,5)
= 27 karakterer, men den returnerer desværre true/false fremfor 1 og 0.
Avatar billede Slettet bruger
16. juni 2013 - 20:56 #9
kim1a - når jeg indsætter din formel i C2 og kopierer den til de øvrige så returnerer den:

C1=TRUE
C2=1,5
C3=1,5
C4=1,5

Den skal (som din første formel gjorde) returnere
C1 = 1
C2 = 0
C3 = 0
C4 = 1,5
Avatar billede kim1a Ekspert
16. juni 2013 - 23:39 #10
Ja, det er jo netop hvad jeg skriver.... Jeg havde dog ikke spottet den anden fejl også. Jeg tænkte dog at nogle ville gribe bolden og tænke videre. Nu gider jeg i hvert fald ikke beskæftige mig mere med udfordringen.
Avatar billede sdh Mester
17. juni 2013 - 11:32 #11
Jeg vil lave en namerange hvor a1:a4=A og b1:b4=B.

Herefter kommer formlen til at se ud som:

=IF(N(A)=B;1;IF(A=B;1,5;0))
I alt 27 karakterer
Avatar billede sdh Mester
17. juni 2013 - 12:31 #12
Lige en karakter mindre:

=IF(A=B;IF(N(A1);1;1,5);0)
I alt 26 karakterer
Avatar billede Slettet bruger
17. juni 2013 - 16:38 #13
Helt bestemt en god formel!

Jeg burde dog have nævnt, at navngivning ikke er tilladt, ellers kan man let gøre en meget lang formel med mange funktionskald til en kort formel, og det var ikke lige tanken.

Det er dog muligt (for dem der stadig måtte gide), at lave en gyldig formel der er lidt kortere endnu (uden navngivning).

Hans
Avatar billede jens48 Ekspert
18. juni 2013 - 00:09 #14
Du får et sidste forsøg fra mig:
=(A2=B2)*1,5-0,5*(A2=N(A2))
Avatar billede Slettet bruger
18. juni 2013 - 05:07 #15
Jens48 - men din formel (indsat i C1 og kopieret ned) returnerer ved mig -0,5 i C2.

Min tanke har på intet tidspunkt været, at nogen skulle lave det her for min skyld, derimod kun hvis du selv syntes det var sjovt eller udfordrende.

Men da jeg nu har startet tråden (og da interessen synes at være uddøet) vil jeg vise en mulig løsning (indsat i C1 og kopieret ned til og med C4), uden at jeg tør garantere, at det er den ultimativt korteste:

=(A1=B1)*(1+(A1>"")/2)

hvor =LÆNGDE(A1)-1 viser 21 tegn (-1 pga. ' foran lighedstegnet).

Bemærk, at "" i Excel-forstand er tekst og, at det gælder, at:

tal < tekst < SAND/FALSK-værdier, jf. for eksempel:

=9,99999999999999E+307 < "A" der returnerer SAND.

Tak til jer der deltog. Jeg lover aldrig at gøre noget lignende igen :-)

Hans


NB
En sidste måde, men det er lidt snyd, er følgende:

=(A1=B1)+(A1>"")/2

hvor =LÆNGDE(A1)-1 viser 17 tegn.

"Snydet" består i, at det er nødvendigt at anvende det brugerdefinerede talformat [>0,5]Standard;"0" da formlen returnerer 0,5 i C2 (i stedet for 0).
Avatar billede Slettet bruger
18. juni 2013 - 06:40 #16
Hvis nogen ønsker point, så send et svar. Ellers lukker jeg tråden.

Hans
Avatar billede jens48 Ekspert
18. juni 2013 - 08:38 #17
Ja, jeg så umiddelbart efter at jeg havde sendt svaret at hvis man byttede om på indholdet af kolonnerne så passede min formel ikke.
Jeg ved godt at du ikke samler på points, men jeg synes at du selv skal tage dem, så andre kan se hvem der har den rigtige løsning - og de i øvrigt interessante betragtninger - uden at skulle læse hele tråden igennem
Avatar billede Slettet bruger
19. juni 2013 - 09:02 #18
Lukker.
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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