Avatar billede dusoren Nybegynder
05. oktober 2000 - 13:47 Der er 35 kommentarer og
4 løsninger

HJÆÆÆLP

Jeg vil gerne have en if-sætning til at gøre følgende. Men jeg aner ikke hvordan:

Hvis B1=a1 -----> c1
Hvis B1>a1 ----> (b1-a1)*c2+c1
Hvis B1>=a2 ----> (b1-a2)*c3+c2
etc etc

Jeg får flere true og false værdier; - hvordan løser jeg problemet?

-H@nsen

Hjælp hurtigst muligt tak
Avatar billede claus_larsen Nybegynder
05. oktober 2000 - 13:50 #1
Du kan løse det ved at indsætte en if funktion, i din if funktion!

du starter med at spørge om b1=a1
Hvis det er sandt så er der ingen problem, hvis ikke
skal du bruge if igen, og spørge om  b1 er større end a1, og hvis det ikke er løsningen så ny if, osv....

Er det det du leder efter?
Avatar billede dusoren Nybegynder
05. oktober 2000 - 13:52 #2
Nej den vil ikke give mig den rigtige løsning, fordi, jeg for flere true-statements.

Formlen skal kunne bruges generelt, da mit datamateriale er kanon stort
Avatar billede claus_larsen Nybegynder
05. oktober 2000 - 13:55 #3
Hmm... Kigger på det!
Avatar billede lkp Nybegynder
05. oktober 2000 - 13:57 #4
Hej Dusoren

Det du skal bruge er IF sætningen (som du selv skriver)

Den generelle form er: IF(<Udtryk der skal evalueres>;<Hvis sandt>;<Hvis falsk>).

Du kan indlejre flere IF sætninger i hinanden. Derfor bliver de 3 linjer du skriver ovenfor til flg. sætning:

=IF(A1=B1;C1;IF(B1>A1;(B1-A1)*C2+C1;IF(B1>=A2;(B1-A2)*C3+C2)))

Note: Du kan indlejre op til 7 sætninger.
Note: I den danske version af Excel er IF sætningen så vidt jeg husker oversat til dansk, og hedder derfor HVIS.

Med venlig hilsen

LKP


Avatar billede frankgrevil Praktikant
05. oktober 2000 - 14:03 #5
Det kan gøres langt elegantere med funktionen VÆLG (CHOOSE).
Avatar billede lkp Nybegynder
05. oktober 2000 - 14:05 #6
Hmm... Lidt langsom til at få svaret skrevet. Det er vist det samme som Claus Larsen skriver.

Dusoren >>

Du svarer til Claus, at du ikke kan bruge hans metode, da du får flere True sætninger.

Umiddelbart vil jeg mene, at hvis du skal bruge formler til at give dig et resultat må du i det mindste rangordne disse. Dvs. først kontrollerer du om Udsagn A er sandt, hvis Udsagn A er sandt, kan det være du skal udføre endnu en test. Hivs Udsagn A er falsk er det igen muligt, at du skal udføre endnu en test. Men under alle omstændigheder skal resultatet kunne nåes af en entydig vej.

Hvis du ikke kan nå dit resultat af en entydig vej, siger du også, at hvis du bruger din evalueringsfunktion på 2 datapar der er ens, er du ikke sikker på, om det er det samme resultat der returneres!!!

Den eneste grund til, at du ikke kan bruge Claus eller min løsning er hvis du er begrænset af de 7 indlejringer.

Jeg håber at du kan forstå min lidt rodede argumentation.

Hvis jeg tager helt fejl, må du lige skrive igen, da problemet ellers kan løses ved at lave lidt vba kode.

Med venlig hilsen

LKP
Avatar billede dusoren Nybegynder
05. oktober 2000 - 14:05 #7
Du skal tænke på, at jeg måske har fem IF sætninger, hvor den giver mig true i måske 2 af dem. Her ved den ikke, hvad den skal stille op. Skal den f.eks. sige (B1-A1)*C2+C1  eller (B1-A2)*C3+C2 i det ovenstående eksempel, hvis begge statesment er TRUE?

Jeg bruger engelsk udgave
Avatar billede dusoren Nybegynder
05. oktober 2000 - 14:07 #8
frankgrevil,
kan du ikke beskrive et løsningsforslag for mig?
Avatar billede dusoren Nybegynder
05. oktober 2000 - 14:18 #9
LKP og Claus.

Jeg henviser til nogle celler, som er variable, som kræver imputs.
Hvis jeg skulle kontrollere, om udsagne er true eller false, hver gang, jeg lavede en indtastning, så ville det være svært at lave en generel formel til at kunne klare det.

Mine variable svarer til i mit ovenstående eksempel i, at kollonne A er variabel, hvor jeg sætter grænserne for intervallet
Avatar billede claus_larsen Nybegynder
05. oktober 2000 - 14:22 #10
Jeg tror ikke helt jeg forstår hvad det er du vil med det! Hvis du bruger if, kontrollerer du om noget er sandt eller falsk ud fra et kriterie, og kommer herefter med et givent output.

Dvs. du kan kontrollere om noget er større end 0, mindre end 0, og =0, og så få den til at svare herefter....

Et tal vil altid være defineret i en af de tre katagorier, og jeg forstår ikke hvordan du kan få to værdier som sande...

Kan du uddybe, eller komme med et eksempel på hvad du vil have regnet?

Avatar billede lkp Nybegynder
05. oktober 2000 - 14:23 #11
Hej Dusoren

Det er ikke rigtigt, nedenfor er udsagnene stillet op.

Det er ikke alle mulige kombinationer af udsagn, men hvis du f.eks. evaluer (A1=B1) til sand, er vi ligeglade med om B1>=A2!! (det er åbenlyst, at udsagnet B1>A1 også er ligegyldigt), da du i spørgsmålet siger, at hvis A1 = B1 så skal der returneres C1.

A1 = B1 -> C1
(A1 <> B1) OG (B1 > A1) -> (B1-A1)*C2+C1
(A1 <> B1) OG (B1 <= A1) OG (B1 >= A2) -> (B1-A2)*C3+C2
(A1 <> B1) OG (B1 <= A1) OG (B1 < A2) -> (Ikke defineret)

Som ovenstående viser, er der kun én vej til målet.

Frankgrevil >> Hvordan vil du lige bruge Choose her?

Med venlig hilsen

LKP
Avatar billede claus_larsen Nybegynder
05. oktober 2000 - 14:24 #12
Jeg forstår det stadig ikke, kald mig dum, men....
Jeg tror du er nødt til at lave to forespørgsler!
Ellers må jeg give fortabt!
Avatar billede dusoren Nybegynder
05. oktober 2000 - 14:30 #13
Lad os sige følgende:
A1=1 ; B1=0 ; B2=1 ; B3=2 B4=3

Hvis jeg skriver følgende:
=IF(A1<=B1;C1;IF(A1<=B2;C2) så får jeg C2

Men hvis jeg skriver

=IF(A1<=B1;C1;IF(A1<=B2;C2;IF(A1<=B3);C3) så kan jeg både få C2 OG C3

Jeg vil gerne have, at den skal give mig C3, men det giver den mig ikke.

Claus>> du er ikke dum, det er da mig, som stillre spørgsmålet, ergo må jeg være den dumme :-)

Avatar billede dusoren Nybegynder
05. oktober 2000 - 14:33 #14
Hvis A1 var lig med 1,5 - så ville den give mig C3,
men da formlen skal være universiel, skal den kunne klare problemet uanset værdien på A1
Avatar billede lkp Nybegynder
05. oktober 2000 - 14:40 #15
Hej Dusoren

Har du selv prøvet at indtaste formlen fra ovenstående?

Den vil kun give C2, da det er det du skriver i dit udsagn.

Hvis A1<=B2 bliver evalueret til Sand, kigger Excel da selvfølgelig ikke på hvad den skal gøre såfremt der er falsk, og begynder slet ikke at evaluere dette udsagn.

Jeg tror problemet ligger i dine logiske evalueringer, og ikke i selve IF sætningen.

Kan du ikke prøve, at give en beskrivelse af hvad det er du vil gøre?

Med venlig hilsen

LKP
Avatar billede claus_larsen Nybegynder
05. oktober 2000 - 14:43 #16
Enig med LKP!
Du kan ikke få to sande værdier ud af en logisk forespørgsel! Enten skal den være <,>, eller = Det er de tre muligheder der er!
Slutter mig til LKP, og lytter!
Avatar billede lkp Nybegynder
05. oktober 2000 - 14:54 #17
Hej Dusoren

Nu dæmrer det måske lidt for mig.

Det jeg tror du vil undersøge er et udsag som dette (simplificeret eksempel):

A1 = 1 OG A1 > C1 -> \"RES1\"
A1 = 1 OG A1 <= C1 -> \"RES2\"
A1 <> 1 OG A1 > C1 -> \"RES3\"
A1 <> 1 OG A1 <= C1 -> \"RES4\"

Her kan man med et meget blødt formuleret sprog godt sige at hvis A1 = 1 er der 2 muligheder.

Ovenstående formuleres i Excel som:

=IF(A1=1;IF(A1>C1;\"RES1\";\"RES2\");IF(A1>C1;\"RES3\";\"RES4\"))

Er jeg inde på noget af det rigtige?

Med venlig hilsen

LKP
Avatar billede Lasse Novice
05. oktober 2000 - 15:09 #18
ok, jeg spørger lige lidt dumt her, men det du spørger om er det ikke - her kommer lidt C kode:

if(udtryk) {do c1};
if(udtryk) {do c2};
if(udtryk) {do c3};
if(udtryk) {do c4};

Det du IKKE spørger om er dette:

if(udtryk) {
  if(udtryk) {
    if(udtryk) {
      if(udtryk) {
        do c1
      }
      do c2
    }
    do c3
  }
  do c4
}

Den nederste del laver man som regel med switch...

Avatar billede dusoren Nybegynder
05. oktober 2000 - 15:29 #19
gooky, du har helt ret, det er den første del, som jeg gerne vil have løst

Avatar billede Lasse Novice
05. oktober 2000 - 15:35 #20
ok, du skriver

----> (b1-a1)*c2+c1

hvad er det som skal sættes lige dette?
Avatar billede lkp Nybegynder
05. oktober 2000 - 15:36 #21
Hej Dusoren

Det er præcis det mit forrige svar gør!

Med venlig hilsen

LKP
Avatar billede Lasse Novice
05. oktober 2000 - 15:44 #22
det mener jeg ikke det er... i hvert fald ikke som du skriver det.

Det du skriver er en forgrenede if sætning, ikke 4 if sætninger som er FULDSTÆNDIG uafhængig af hinanden...

Øhh, det er i hvert fald som jeg læser det, men jeg tror at det dusoren vil have er 4 fuldstændig uafhængige if sætninger, men disse if sætninger skal bare genereres automatisk, og ikke udfra at han skal sidde og taste dem alle sammen ind. Er det rigtig forstået?
Avatar billede dusoren Nybegynder
05. oktober 2000 - 15:53 #23
Jeg prøver lige at præcisere mit spørgsmål lidt

Åben et regneark og lav følgende:
A1=0;A2=1;A3=2;A4=3 (disse er variable og SKAL kunne ændres i værdi)
og B1=10;B2=15;B3=25;B4=30

I A14=1,2
I B15 vil jeg have formlen.

---------
Hvis A14 f.eks. er mindre end eller lig med A1, så skal den give mig værdien i B1 = 10
Hvis A14 feks. er større end A1 skal den give mig B1 + differencen mellem A14 og A1 (A14-A1) ganget med B2.
Hvis A14 feks. er større end A2 skal den give mig B2 + differencen mellem A14 og A2 (A14-A2) ganget med B3

Hvis jeg laver fomlen som følger:
=if(A14=A1;B1;if(A14>=a2;B1+(A14-A2)*B2;if(A14>=a3;B2+(A14-A3)*B3)))

giver den mig en fejl

----
Nu har jeg prøvet at præcicere det med fare for, at jeg har mistet overblikket

PS. Jeg giver 70 ekstra point til den, som kan løse det

Avatar billede dusoren Nybegynder
05. oktober 2000 - 15:54 #24
Jo du kan godt sige, at if sætningerne skal fungere uafhængigt af hinanden
Avatar billede lkp Nybegynder
05. oktober 2000 - 15:58 #25
Hej Gooky

Jo, det er præcis det mit eksempel GØR. Jeg har ikke skrevet at det er det samme. Men resultatet er det samme.

Hvis du i en celle i Excel vil skrive en formel der laver det som dusoren efterspørger er man nød til, at gøre det på den måde (er jeg næsten sikker på)

Det er klart, at hvis man kan bruge VBA til at lave testen, er løsningen en anden.

Men selv om man, bruger VBA, er strukturen den samme.

I dit eksempel testes først udtryk 1, hvis dette er sandt udføres c1. Hvis det er falsk, går vi til næste linje og tester udtryk2. Hvis det er sandt, udføres c2, hvis det er falsk går vi til næste linje osv.

Prøv at se på hvad min sidste IF sætning gør:
Hvis udtryk1 (A1 = 1 OG A1 > C1) er sandt, udføres RES1, ellers går vi til udtryk2 (A1 = 1 OG A1 <= C1) Hvis det er sandt, udførers RES2 osv.

Så uanset hvordan man vender og drejer det er det samme mekanisme, blot begænset af den lidt omstændig måde det skal indtastes på i en celle.

Hvis IF sætningerne skal genereres automatisk, er det stadig måden det skal gøres på. Hvis man blot sætter $ foran de rigtig celler(kolonner/rækker), vil dusoren blot kunne trække den ene celle hvor formlen er indtastet ned til resten af de celler hvor formlen skal gælde.

Excel vil så selv erstatte A1 med A2 osv.

Forstår du hvad jeg mener :-) ?

Med venlig hilsen

LKP


Hvis
Avatar billede lkp Nybegynder
05. oktober 2000 - 16:17 #26
Hej Dusoren

Det dæmrer mere og mere :-) Undskyld hvis jeg er lidt langsom i optrækket.

I dit eksempel er det rigtigt, at du aldriv vil komme længere end til linje 2 med min metode, da enten linje 1 eller linje 2 under alle omstændigheder vil blive evalueret til sand.

Er det du ønsker, at alle udsagnene løbes igennem, og resultatet er den værdien af det udsagn der SIDST evalueres til sandt?

Hvis det er ovenstående, vil jeg gerne vide om der er en sammenhæng mellem værdierne i A1 - A?, eks A1 < A2 < ... < A?

Med venlig hilsen

LKP
Avatar billede Lasse Novice
05. oktober 2000 - 16:21 #27
Hvis jeg laver det eksempel som du har lavet dusoren, så virker det hos mig... resultat = 13

Avatar billede Lasse Novice
05. oktober 2000 - 16:25 #28
du vil evaluere nedefra?
Avatar billede dusoren Nybegynder
05. oktober 2000 - 16:30 #29
lkp og gooky

lkp ja der er sammenhæng, A\'erne er stigende.

gooky > det er lige meget, om det er oppe fra eller nede fra. Jeg skal bare have en løsning
Avatar billede dusoren Nybegynder
05. oktober 2000 - 16:34 #30
Jeg vil helst have løsningen nedefra, kan jeg lige se. Det er mest brugbart

Avatar billede Lasse Novice
05. oktober 2000 - 16:36 #31
ja, for så er det bare når du når et udtryk der er sandt, så skal den skippe resten...
Avatar billede lkp Nybegynder
05. oktober 2000 - 16:43 #32
Så vend mit eksempel om, og start med at eveluere det sidste udsagn!

=IF(A14>A2;B2+(A41-A2)*B3;IF(A14>A1;B1+A14-A1;IF(A14<=A1;B1;\"Fejl\")))

Med venlig hilsen

LKP
Avatar billede dusoren Nybegynder
05. oktober 2000 - 16:44 #33
Hvad er der galt med følgende ligning?

(IF($B$10<=$B$3;C3;IF($B$10<=$B$4;C3+($B$10-$B$4)*C4;IF($B$10<=$B$5;C4+($B$10-$B$5)*C5;IF($B$10<=$B$6;C5+($B$10-$B$6)*C6;IF($B$10<=$B$7;C7;C7))))))
Avatar billede dusoren Nybegynder
05. oktober 2000 - 16:46 #34
Jeg har de variable i cellerne B3 til B7
Værdierne i cellerne C3 til C7

Værdien, som formlen skal bruges mod i B10

Avatar billede lkp Nybegynder
05. oktober 2000 - 17:06 #35
Hej Dusoren

Hvis du har skrevet præcis som ovenstående, mangler du et lighedstegn, og så har du en parantes for meget (den yderste)

Med venlig hilsen

LKP
Avatar billede c_wellendorf Nybegynder
05. oktober 2000 - 21:20 #36
det er korrekt at bruge en if funktion, men det er lettere at overskue situationen hvis du i en række ellers ubenyttede celler laver dine beregninger og tester på dem. 1 celle pr test med værdierne
celle XXn \"=if(b1=a1,true,false)\" næste celle xxn+1 \"=if(b1>a1,true,false)\" næste celle xxn+2 \"=if(b1>=a2,true,false) og så videre.

så derefter lave en kombineret test på true false på de enkelte celler, som beskrevet af de andre.

Metoden gør også at du lettere kan se, hvornår der vælges ud fra de enkelte kriterier.

En formel af den beskrevne type er svær at overskue, og testene skal for at lykkes komme i bestemt rækkefølge, ellers er det dømt til at mislykkes.
Avatar billede lkp Nybegynder
05. oktober 2000 - 22:07 #37
Hmmm...

Man kunne også lave de enkelte tests først, og derefter bruge cut\'n\'paste for at få den enkleste løsning, der kan håndteres af en enkelt celle.

Det ville gøre det lang lettere. Specielt når der i dusorens næstsidste svar er lagt op til at der både skal bruges absolutte og ikke-absolutte referencer.

Med venlig hilsen

LKP
Avatar billede dusoren Nybegynder
06. oktober 2000 - 14:29 #38
Hvad skal jeg gøre, hvis jeg har over 7 if-sætninger?

PS. Jeg tildeler point her i weekenden

Avatar billede nerøs Nybegynder
07. oktober 2000 - 14:56 #39
Hvis du har mere end 7 if-sætninger kan du give en del af dem et navn og refrerere til det i din formel:

hvis du har følgende udtryk:
=HVIS(HVIS(HVIS($A$7;1;0);1;0);1;0) kan du f.eks
tildele et navn følgende værdi
Navn=:
=HVIS(HVIS(Ark1!$A$7;1;0);1;0)

og indsætte dette i dit udtryk:
=HVIS(navn;1;0)

Du kunne selvfølgelig også dele dit udtryk op på flere celler

VH Søren
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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