|
|
Marker den celle der skal vise resultat
tast et =
og skriv hvad resultatet skal være
f.eks
=SUM(A1+A2)
mvh Benjamin
| |
| Kommentar Fra : Eyvind |
Dato : 03-04-12 20:07 |
|
Det kan godt være at jeg læser det forkert, men det lyder som "cirkulerende" regning.
Hvilke værdier er cellerne afhængige af.
| |
|
Du kan ikke på en gang i et regneark anvende en celle til både indtastning og output fra en formel.
Hvis du skiftevis skal kunne indtaste forskellige tal i A1..A3 kan du få vist resultat i andre celler som overvåger om der er talværdier i A1..A3.
| |
| Kommentar Fra : Eyvind |
Dato : 03-04-12 20:40 |
|
altså
tast ind i A1
A2 skal se sådan ud =SUM(A1/12)
A3 skal se sådan ud =SUM(A1/4)
| |
| Kommentar Fra : Eyvind |
Dato : 03-04-12 20:54 |
|
Sorry det vil Excel ikke være med til - cirkulær reference.........................
Skal du lave noget lignende skal du bruge andre resultat-celler hvor beregningerne så ligger.
A1 tast / B1 resultat
A2 tast / B2 resultat
A3 tast / B3 resultat
Eller noget i den stil
| |
| Kommentar Fra : pedroso |
Dato : 03-04-12 20:55 |
|
Den går ikke uden brug af en makro :)
Men så er det til gengæld ret så ligetil. Du kan f.eks. bruge en worksheet.change event og så kigge på hvilken af værdierne i cellerne A1 til A3, som har ændret sig. Derefter putte værdier i de to andre celler.
| |
| Kommentar Fra : pedroso |
Dato : 03-04-12 21:01 |
|
makro=VBA
Prøv at google lidt om det. Jeg kan godt strikke noget sammen til dig, men du får sikkert brug for at rode lidt med det alligevel, og så er det jo godt at have noget kendskab til hvordan det virker.
| |
| Kommentar Fra : sion |
Dato : 04-04-12 08:11 |
|
Som pedroso skriver, skal du bruge worksheet_change.
Indsæt følgende kode i arkets kode (evt. højreklik på ark-fanen og vælg "View code" ("Vis kode")):
Kode Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
Application.EnableEvents = False 'For at undgå at koden looper
Range("A2").Value = Range("A1").Value / 12
Range("A3").Value = Range("A1").Value / 4
Application.EnableEvents = True 'Events aktiveres igen
End If
If Not Intersect(Target, Range("A2")) Is Nothing Then
Application.EnableEvents = False 'For at undgå at koden looper
Range("A1").Value = Range("A2").Value * 12
Range("A3").Value = Range("A1").Value / 4
Application.EnableEvents = True 'Events aktiveres igen
End If
If Not Intersect(Target, Range("A3")) Is Nothing Then
Application.EnableEvents = False 'For at undgå at koden looper
Range("A1").Value = Range("A3").Value * 4
Range("A2").Value = Range("A1").Value / 12
Application.EnableEvents = True 'Events aktiveres igen
End If
End Sub |
Simon
| |
| Kommentar Fra : webnoob |
Dato : 04-04-12 10:48 |
|
Det virker sådan set ok, der dog nogle ting jeg godt kunne tænke mig var anderledes.
Når jeg har indtastet et tal, skal jeg trykke enter og hoppe tilbage til cellen før de andre celler bliver opdateret. Kan dette ændres?
En anden ret værenlig ting, koden virker på alle mine ark og ikke kun test arket, kan du begrænse koden til fx. ark 5 eller test ark?
| |
| Kommentar Fra : sion |
Dato : 04-04-12 11:30 |
|
Jeg kan ikke forstå, at de andre celler ikke ændrer sig med det samme, du trykker ENTER. Det burde ikke være nødvendigt at flytte markeringen tilbage til den celle, du har indtastet noget i.
Du bruger ikke Worksheet_SelectionChange, vel?
Mvh. Simon
| |
| Kommentar Fra : sion |
Dato : 04-04-12 12:58 |
|
Det virker ikke, fordi du har skrevet Range("$A1$").Value i første række i den sidste kode-sektion. Dollar-tegnet står forkert - det skal stå før 1-tallet i stedet for efter.
Når makroen er gået i stå pga. en fejl (som du oplevede), er den gået i stå mens Events er deaktiveret. For at din kode skal virke igen fremover, kan du køre denne kode (indsæt i et modul i VBA og start i menuen Makro i Excel):
Kode Sub Aktiver_events()
Application.EnableEvents = True
End Sub |
Du kan indarbejde en lille smule ekstra kode i den oprindelige kode (én linje øverst og fire linjer nederst), så den ved fejl giver en besked og derefter aktiverer Events, før den stopper:
Kode Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrorHandler:
If Not Intersect(Target, Range("$A$1")) Is Nothing Then
Application.EnableEvents = False 'For at undgå at koden looper
Range("$B$1").Value = Range("$A$1").Value / 2
Range("$C$1").Value = Range("$A$1").Value / 4
Range("$D$1").Value = Range("$A$1").Value / 12
Application.EnableEvents = True 'Events aktiveres igen
End If
If Not Intersect(Target, Range("$B$1")) Is Nothing Then
Application.EnableEvents = False 'For at undgå at koden looper
Range("$A$1").Value = Range("$B$1").Value * 2
Range("$C$1").Value = Range("$B$1").Value / 4
Range("$D$1").Value = Range("$B$1").Value / 6
Application.EnableEvents = True 'Events aktiveres igen
End If
If Not Intersect(Target, Range("$C$1")) Is Nothing Then
Application.EnableEvents = False 'For at undgå at koden looper
Range("$A$1").Value = Range("$C$1").Value * 4
Range("$B$1").Value = Range("$A$1").Value / 2
Range("$D$1").Value = Range("$C$1").Value / 3
Application.EnableEvents = True 'Events aktiveres igen
End If
If Not Intersect(Target, Range("$D$1")) Is Nothing Then
Application.EnableEvents = False 'For at undgå at koden looper
Range("$A1$").Value = Range("$D$1").Value * 12
Range("$B$1").Value = Range("$D$1").Value * 6
Range("$C$1").Value = Range("$D$1").Value * 3
Application.EnableEvents = True 'Events aktiveres igen
End If
Exit Sub
ErrorHandler:
MsgBox "Fejl!"
Application.EnableEvents = True 'Events aktiveres igen
End Sub |
Mvh. Simon
| |
| Kommentar Fra : sion |
Dato : 04-04-12 12:59 |
|
Bemærk at fejlen med dollar-tegnet stadig står i den kode, jeg senest har skrevet ovenfor.
Mvh. Simon
| |
| Kommentar Fra : sion |
Dato : 13-04-12 09:36 |
|
Ja, så må du jo se om du kan få det til at fungere.
Simon
| |
| Godkendelse af svar Fra : webnoob |
Dato : 13-04-12 09:46 |
|
Tak for svaret sion.
Ja det er jo det, men det vil jeg prøve og finde ud af.
| |
| Kommentar Fra : sion |
Dato : 13-04-12 10:05 |
|
Du kan sammensætte dine Ranges på denne måde:
Range("$A$" & MyRow)
Range("$B$" & MyRow)
Range("$C$" & MyRow)
Range("$D$" & MyRow)
I begyndelsen af koden kan du definere rækkenummeret:
Dim MyRow as Integer
MyRow = 1 'indtast rækkenummer her
Koden bliver så:
Kode Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrorHandler:
Dim MyRow As Integer
MyRow = 2 'indtast rækkenummer her
Application.EnableEvents = False 'For at undgå at koden looper
If Not Intersect(Target, Range("$A$" & MyRow)) Is Nothing Then
Range("$B$" & MyRow).Value = Range("$A$" & MyRow).Value / 2
Range("$C$" & MyRow).Value = Range("$A$" & MyRow).Value / 4
Range("$D$" & MyRow).Value = Range("$A$" & MyRow).Value / 12
End If
If Not Intersect(Target, Range("$B$" & MyRow)) Is Nothing Then
Range("$A$" & MyRow).Value = Range("$B$" & MyRow).Value * 2
Range("$C$" & MyRow).Value = Range("$B$" & MyRow).Value / 2 'Rettet fra 4 til 2 (Simon)
Range("$D$" & MyRow).Value = Range("$B$" & MyRow).Value / 6
End If
If Not Intersect(Target, Range("$C$" & MyRow)) Is Nothing Then
Range("$A$" & MyRow).Value = Range("$C$" & MyRow).Value * 4
Range("$B$" & MyRow).Value = Range("$A$" & MyRow).Value / 2
Range("$D$" & MyRow).Value = Range("$C$" & MyRow).Value / 3
End If
If Not Intersect(Target, Range("$D$" & MyRow)) Is Nothing Then
Range("$A$" & MyRow).Value = Range("$D$" & MyRow).Value * 12
Range("$B$" & MyRow).Value = Range("$D$" & MyRow).Value * 6
Range("$C$" & MyRow).Value = Range("$D$" & MyRow).Value * 3
End If
Application.EnableEvents = True 'Events aktiveres igen
Exit Sub
ErrorHandler:
MsgBox "Fejl!"
Application.EnableEvents = True 'Events aktiveres igen i tilfælde af fejl
End Sub |
Simon
| |
| Du har følgende muligheder | |
|
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.
Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
| |
|
|