Avatar billede povlsen Nybegynder
07. august 2002 - 14:56 Der er 23 kommentarer og
2 løsninger

Formel og resultat i samme celle

Kan det overhovedet lade sig gøre at indtaste en formel i en celle og derefter indtaste et tal i samme celle hvorefter formlen regner resultatet ud og skifter dette ud med det indtastede tal?

Selv synes jeg det lød umuligt, men nogle påstår at det kan lade sig gøre.
Avatar billede Chewie Novice
07. august 2002 - 14:58 #1
Mit svar vil også være NEJ
07. august 2002 - 15:01 #2
Mit svar er - det kan du godt - kræver dog lige en makro. Kigger lige på det.
Avatar billede Chewie Novice
07. august 2002 - 15:07 #3
flemming>> du har altid været min overmand :o)
07. august 2002 - 15:14 #4
Rolig chewie - svaret kan godt være NEJ - det afhænger meget af, hvilken formel der snakkes om, og hvad det indtastede tal skal.

Private msFormula As String

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rCalcCell As Range
    Set rCalcCell = Range("D2")
   
    If Not Intersect(Target, rCalcCell) Is Nothing Then
        If Left(Target.FormulaR1C1, 1) = "=" Then
            msFormula = Target.FormulaR1C1
        Else
            Target.FormulaR1C1 = msFormula & "+" & Target.Value
        End If
    End If
    Set rCalcCell = Nothing
End Sub

Denne makro kræver dog, at du altid trykker F2 + Enter efter at regnearket er åbnet, for at variablen msFormula får det rigtige indhold. Kan du ikke fortælle hvad du præcis skal ?
Avatar billede bak Forsker
07. august 2002 - 15:35 #5
Flemming -> det giver da formel og indtastning i samme felt, ikke formel og resultat... eller er jeg fejl på den :-)
07. august 2002 - 15:38 #6
Nej, bak - du har ret, men jeg kom til at tænke selv....!!! Hvis værdierne for denne formel f.eks. ændre sig, så vil ovenstående medtage denne ændring pga. linien Target.FormulaR1C1 = msFormula & "+" & Target.Value, men det kan jo sagtens ændres, det er jo heller ikke sikkert, at værdien skal adderes. Derfor spørger jeg også til den præcise opgave.
Avatar billede jkrons Professor
07. august 2002 - 16:01 #7
Det kan være at jeg totalt har misforstået spørgsmålet, men som jeg læser det ønsker povlsen at kunne oprette en formel i fx A1. Derefter vil han kunne taste et tal i A1, som bliver brugt i formlen. Det resultat som formlen beregner skal så skrives i A1 i stedet for formlen. Altså en form for cirkulær cellerefence.

A1: =A1 * 12 med den forskel, at A1 indtastes oven i formlen.
Avatar billede bak Forsker
07. august 2002 - 16:21 #8
En lille udbygning af flemmings formel vil kunne klare det som JKrons siger.
Private msFormula As String

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rCalcCell As Range
    Dim x
    Dim formel As String
    Set rCalcCell = Range("D2")
        If Not Intersect(Target, rCalcCell) Is Nothing Then
        If Left(Target.Formula, 1) = "=" Then
            msFormula = Target.Formula
        Else
          x = Split(msFormula, "(")
          formel = x(0) & "(" & Target.Value & ")"
          f = Evaluate(formel)
          Target.Formula = f
        End If
    End If
    Set rCalcCell = Nothing
End Sub
Avatar billede bak Forsker
07. august 2002 - 16:26 #9
Hovsa, glemte lige at skrive at det skal være en formel med kun een parameter
Avatar billede jkrons Professor
07. august 2002 - 16:26 #10
bak-> Hvis jeg prøver din kode får jeg

subscript out of range

på linien

formel = x(0) & "(" & Target.Value & ")"
Avatar billede jkrons Professor
07. august 2002 - 16:29 #11
Så er det måske derfor.
Avatar billede bak Forsker
07. august 2002 - 16:29 #12
hvad er din formel?
Avatar billede bak Forsker
07. august 2002 - 16:34 #13
jeg testede bare med =DAY("02-02-2002")
efter at have ændret en anden celle for at initialise msFormula
tastede jeg oveni "05-10-2002"
Avatar billede jkrons Professor
07. august 2002 - 16:36 #14
=a1+d2
Avatar billede jkrons Professor
07. august 2002 - 16:39 #15
OK, når jeg gør som du har gjort virker det også. Men er det så ikke bare en almidelig overskriv i stedet for en beregning.

Men som sagt måske har jeg misforstået det oprindelige spørgsmål.
Avatar billede bak Forsker
07. august 2002 - 16:48 #16
Nej, det skulle det ikke gerne være for f=evalute(formel) beregner formlen og lægger den nye beregnede værdi i f (target)

Hvis vi sletter evaluate får hele formlen i D2 istedet:
Private msFormula As String



Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rCalcCell As Range
    Dim x
    Dim formel As String
    Set rCalcCell = Range("D2")
        If Not Intersect(Target, rCalcCell) Is Nothing Then
        If Left(Target.Formula, 1) = "=" Then
            msFormula = Target.Formula
        Else
          x = Split(msFormula, "(")
          formel = x(0) & "(" & Target.Value & ")"
          formel = Replace(formel, ";", ",")
          Target.Formula = formel
        End If
    End If
    Set rCalcCell = Nothing
End Sub

denne kan tage flere parametre. prøv fx med =DATO(2002;1;1)
overskrives med 1958;10;5

linien med replace er sat ind så man ikke skal skrive "," mellem parametrene
Avatar billede jkrons Professor
07. august 2002 - 16:59 #17
OK, så virker den på din formel! Så mon ikke jeg skal stoppe her, indtil du får feddback fra povlsen :-)
Avatar billede jkrons Professor
07. august 2002 - 16:59 #18
feedback, selvfølgelig.
Avatar billede bak Forsker
07. august 2002 - 17:15 #19
Jo, Jo jkrons, det greb bare om sig lige pludselig. :-)
Avatar billede jkrons Professor
07. august 2002 - 21:04 #20
Enig. og Sorry! ;-)
07. august 2002 - 22:50 #21
hehe - i har rigtigt hygget jer *GG*
Avatar billede jkrons Professor
07. august 2002 - 22:53 #22
Ja pludselig gik der forsøg i den, men mon den oprindeligt interesserede part mistede interessen? For det var jo ikke meningen *S*
Avatar billede povlsen Nybegynder
09. august 2002 - 21:12 #23
Hejsan! beklager jeg ikke "svarer" før nu, men wauw en interresant samtale i har haft her, det er sku imponerende, så jeg gir jer begge 15 point for det er også en smule sjovt at læse.
Jeg har ikke prøvet det endnu men skal nok lige nå det i næste uge og vende tilbage igen hvis det ikke virker, hvad jeg dog umiddelbart tror at det gør.
Avatar billede pejsen Nybegynder
18. januar 2008 - 00:17 #24
Hej Bak

virker din kode på et område eks.: (G14:P28)???
Og kan man løse det, hvis dette område er dynamisk, altid med start i G14??


Hilsen Pejsen
Avatar billede vejmand Juniormester
18. januar 2008 - 00:25 #25
pejsen >> Tror måske du skal oprette dit eget spørgsmål, dette spørgsmål er næsten 5½ år gammelt.  :-)
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