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....
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.
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.
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 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
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?
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?
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?
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!
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?
Å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
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.
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?
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.
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.
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
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.