Avatar billede primary Nybegynder
27. maj 2008 - 21:53 Der er 9 kommentarer og
1 løsning

Hvordan laver man et loft på en multiplikation i en formel i Exce

Hej

Jeg står med et problem som gerne skulle kunne løses vil jeg mene, men jeg har ikke selv været i stand til at finde løsningen dog :-)

Jeg skal lave en multiplikation af et vilkårligt tal(der skal kunne indgå decimaler også), med et andet tal INDTIL den når et loft som er speciferet.
Og så ovenikøbet skal den skrive i en anden celle hvor mange gange den multiplicerede.

F.eks. kan loftet være 10, tallet den multiplicerer er 0.1 og tallet den multiplicerer med er 2.

Så skal den gøre således: 0.1*2 = 0.2 0.2*2 = 0.4 0.4 *2 = 0.8 0.8*2 = 1.6 1.6*2 = 3.2 3.2*2 = 6.4. Den stopper der fordi loftet er sat til 10; da det næste stykke ville være 6.4*2 = 12.8, som er over loftet.
6.4 ville være det ene resultat, og det andet ville være 6 fordi den skulle multiplicere 6 gange. Derefter udskriver den tallet 6.4 og tallet 6 i 2 separate celler, som skal kunne specificeres selvfølgelig. 

På forhånd tak!

Med Venlig Hilsen

Alexander Bordinggaard
Avatar billede juhlemanden Nybegynder
27. maj 2008 - 22:36 #1
Hvis jeg forstår dit spørgsmå, så skal vi løse det matematisk :)

I det eksempel du skriver op, forsøger du at løse

10 > 0,1 * 2 ^ x

Hvor du vil have x så stor som mulig, men som heltal.

Det gøres, flytte lidt rund på udtrykket.

Vi starter med at dele med 0,1 på begge sider. Det giver os:
10 / 0,1 > 2 ^ x

Så tager vi den naturlige logaritmen på begge sider. Det giver os
Ln ( 10 / 0,1 ) > Ln (2) * x

Ved at dele med Ln(2) på begge sider giver det os:
Ln ( 10 / 0,1 ) / Ln (2) > x

Hvis vi i stedet sætte det lig med x, og så runder resultatet ned, vil det give os resultatat 6

Når vi så skal finde de 6,4 er det blot at indsætte det vi lige har fundet i
0,1 * 2 ^ x, hvor x så er 6, giver det de 6,4

Dette kan omskrives til formler på følgende måde.
I a1 har du tallet, der skal multipliceres (0,1 i dit eksempel)
I b1 har du tallet, der skal multiplicere med (2 i dit eksempel)
I c1 har du tallet, der er loftet (10 i dit eksempel)

I d1 skriver du =RUND.NED(LN(C1/A1)/LN(B1);0)
I e1 skriver du =A1*B1^D1

Jeg vil mene at ovenstående løser din problemstiling :)





Det tal som den
Avatar billede juhlemanden Nybegynder
27. maj 2008 - 22:36 #2
Hov - se lige bort fra den nederste linie - fik ike det slettet :s
Avatar billede primary Nybegynder
28. maj 2008 - 13:21 #3
Ja det virkede! Tusind tak for din hjælp. Hvordan får du dine point?
Avatar billede primary Nybegynder
28. maj 2008 - 18:52 #4
Ah jo det ved jeg godt, ved at svare :-)
Avatar billede primary Nybegynder
29. maj 2008 - 12:55 #5
Har lige et sidste spørgsmål hvis det er iorden;
i Excel, jeg har en celle, a1 med et vilkårligt tal.

I celle b1 der vil jeg så gerne have at den skal lave et additions resultat, på den måde at den plusser a1 og lægger dem TIL(oveni) b1. Det vil sige, at hvis der står 5 i a1 og  10 i b1, så skal den lægge 5 oveni 10, så resultatet bliver 15. 
Og dernæst hvis jeg ændrer tallet i a1 til f.eks. 10, så skal den addere 10 OVENI de 15, som vi fik tidligere, så resultatet bliver 25.
Det er meget simpelt i hovedet, den skal simpelthen bare plusse et tal fra en celle, og bare lægge til og lægge til hver gang jeg ændrer tallet i celle a1 :-)
Det er simpelt i hovedet, men ikke simpelt for mig at få ind i en formel ;-)

Håber du kan hjælpe mig igen Christian, tak for hjælpen allerede! :-)
Avatar billede juhlemanden Nybegynder
29. maj 2008 - 22:07 #6
Jamen det var så lidt - et stk. svar
Avatar billede juhlemanden Nybegynder
29. maj 2008 - 22:17 #7
og så til dit tillægsspørgsmål.

Det vil jeg ikke men at du kan lave uden brug af makro. Der skal være et eller andet som for makroen til at "starte".
Hvis vi siger at du som du skriver har det tal du "indtaster" i a1, og du har dit "resultat", så er her to metoder du kan bruge.

Den første kode, "opdaterer" b1 med værdien fra a1, ved at du dobbeltklikker på b1.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If IsNumeric(Cells(1, 1).Value) And IsNumeric(Cells(1, 2).Value) Then
        If IsNumeric(Cells(1, 1).Value) Then
            Cells(1, 2).Value = Cells(1, 2).Value + Cells(1, 1).Value
        End If
    End If
End Sub

Den anden kode, "opdaterer" b1 med værdien fra a1, ved at du ændre værdien i a1 og trykker enter.
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Row = 1 And Target.Column = 1 Then
        If IsNumeric(Cells(1, 1).Value) And IsNumeric(Cells(1, 2).Value) Then
            Cells(1, 2).Value = Cells(1, 2).Value + Cells(1, 1).Value
        End If
    End If
End Sub
Avatar billede primary Nybegynder
29. maj 2008 - 22:45 #8
Tak.
Og så celleangivelsen i koden, er 1,1 istedet for a1 og b1 ikke?

Tak for hjælpen allerede, det var rigtig dejligt at få hjælp ! :-)
Avatar billede primary Nybegynder
30. maj 2008 - 00:12 #9
Hej igen.
Jeg fik dog en fejl da jeg prøvede at køre den; den siger således: Compile Error: Ambiguous name detected: Worksheet_Change
Ved du hvad det kan være?
Tak :-)
Avatar billede primary Nybegynder
30. maj 2008 - 21:39 #10
Nå grunden til at den ikke virker i min excel(Excel 2007) er vist pga. det er den nyeste version, og de koder du har skrevet har ikke relevans til 2007 (ifølge hvad de siger på experts exchange)
Jeg dropper den bare, det er okay :-)
Men tak for hjælpen!! Du skal have mange tak!
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