Hvis du har J i A1, 10 i B1 og 100 i C1, skal der stå 90 i C1. Er det korrekt forstået?
Hvis ja, kan du ikke umiddelbart løse det med en formel, men skal nok ud i VBA - eller noget med at styre antallet af gentagelser i en manuel beregning.
Du skriver tidligere, at du ikke har kendskab til VBA... trods det har jeg lavet lidt til dig i netop VBA :o)
VBA er Visual Basic for Applications, hvilket er en kodesprog/miljø som kan bruges til at udvide funktionaliteterne i MS Officepakkens applikationer ... herunder også Excel.
Jeg ved ikke hvilken version af Excel du benytter, men koden er lavet i Excel 2003 ... og lur mig om ikke den fungerer bredt?!
Lidt brugervejlledning: Når du har åbnet din Excelfil taster du samtidig: ALT + F11 Hermed åbnes VBA editoren for din Excelfil.
I venstre side af editoren finder du dit VBAproject med samme navn som din Excelfil ... og under VBAproject findes de ark/faneblade, som din Excelfil indeholder.
Der findes også en "fil" kaldet "ThisWorkbook". I "ThisWorkbook" kan man oprette generelle procedurer som gælder hele Excelfilen (Workbook´en).
Derfor: Dobbeltklik på "ThisWorkbook" ... og kopier følgende kode ind i det tomme område til højre for dine VBAproject "filer":
------------------------------------
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) On Error GoTo Err
'variabler til værdier i cellerne a, b, c og d Dim a As Variant Dim b As Variant Dim c As Variant Dim d As Variant
'koordinat variabel Dim koordinat As String
'tildel y og x, det aktuelle række og kolonne nummer y = Target.Row x = Target.Column
'lav kolonne nummeret om til et bogstav sbogstav = Replace(ActiveSheet.Cells(y, x).Address(False, False), y, "")
'samlede cellekoordinat på target cellen koordinat = sbogstav & y
'værdierne fra kolonne b og c i den aktuelle række b = Range("b" & y).Value c = Range("c" & y).Value
'vælg case´en ud fra target kolonnen Select Case sbogstav
Case "A"
'hvis der står j i kolonne a If Range("a" & y).Value = "j" Then
Range("d" & y).Value = c - b
'eller hvis der står n i kolonne a ElseIf Range("a" & y).Value = "n" Then
b = Range("d" & y).Value
Range("b" & y).Value = b
'hvis andet i kolonne a Else
'forlad proceduren Exit Sub
End If
Case "B"
'hvis der står j i kolonne a If Range("b" & y).Value = "j" Then
Range("d" & y).Value = c - b
'eller hvis der står n i kolonne a ElseIf Range("b" & y).Value = "n" Then
b = Range("d" & y).Value
Range("b" & y).Value = b
'hvis andet i kolonne a Else
'forlad proceduren Exit Sub
End If
Case "C"
'hvis der står j i kolonne a If Range("c" & y).Value = "j" Then
Range("d" & y).Value = c - b
'eller hvis der står n i kolonne a ElseIf Range("c" & y).Value = "n" Then
b = Range("d" & y).Value
Range("b" & y).Value = b
'hvis andet i kolonne a Else
'forlad proceduren Exit Sub
End If
End Select
exit_cmd_Click: Exit Sub
'ved fejl Err:
Resume exit_cmd_Click
End Sub
--------------------------------------------
Luk VBA editoren og sig ja til at gemme, hvis den spø´r ?
Nu burde du kunne taste værdier ind i b og c celler og efterfølgende sætte et j eller et n i den tilhørende a celle. Reslutatet skulle så gerne vise sig i d cellen ?
VBA hændelsen, som du kopierede ind bliver kaldt/aktiveret hver gang der ændres en værdi i a, b og c cellerne. Jeg har dog ikke taget højde for rækkefølgen af dine indtastninger !!! ... samt tomme felter !!! Slut eventuelt altid med j´et eller n´et i a cellen.
Prøv om det fungerer efter din hensigt ... så kan vi altid "idiotsikre" / finjusterer koden :o)
Det virker med den formel du har lavet til mig, meget imponerende. Når jeg først har givet A1 værdien "J" bliver udregningen udført i D1. Hvis jeg senere ændre A1 til "N", så bliver værdien fra D1 overført til B1. Super godt. Som sagt, har jeg ikke kendskab til VBA, men har kikket lidt på den lange kode og tror godt jeg kan forstå at lave eventuelle ændringer, mht. til at angive andre celler i formlen.
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.