Napisałeś dość słabo zrozumiale. Formuła wpisana w a1 jest zależna jak ma się odnieść a1 do zmiany w komórce b1. Najlepiej daj jakiś konkretny przykład a najlepiej 2 ;]
Odnośnie pierwszego postu potrzebne jest takie makro (to jest przykład):
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Or IsEmpty(Target) Then Exit Sub
Application.EnableEvents = False
If Target.Address = "$A$1" Then
Range("B1").Value = 99
Range("C1").Value = 99
ElseIf Target.Address = "$B$1" Then
Range("A1").Value = 99
Range("C1").Value = 99
ElseIf Target.Address = "$C$1" Then
Range("A1").Value = 99
Range("B1").Value = 99
End If
Application.EnableEvents = True
End Sub
Odnośnie drugiego postu. Wszystko się da, ale to co napisałeś wciąż jest mało precyzyjne, więc ciężko cokolwiek dokładniej powiedzieć.
Czyli w A1 zmienisz sobie ręcznie z 3000 na 3010 tak?
Później w B1 wstawisz ile zostało sprzedane, czyli to 500?
I wówczas w A1 ma automatycznie od tych 3010 zostać odjęte to 500?
Ja bym sobie zrobił inputboxem ;]
Np mamy sobie ładnie 2 przyciski pod każdym artykułem: przywieziono, sprzedano i tym przyciskom dajemy wypełnianie kolejnych komórek, i przy okazji zmieniamy naszą liczbę ;] , wg mnie obyłoby się bez kolejnych komórek. Można by dać cofnij w wypadku błędu i by był git ;]
W komórce Excela (czytaj np. A1) możesz mieć wstawioną albo jakąś wartość (np. 3000) albo formułę (np. =B1-C1). Gdyby w A1 była formuła, to wartość tej komórki mogłaby się zmieniać w wyniku zmiany wartości komórek B1 i C1. Jeśli jednak masz tam na sztywno wstawioną jakąś wartość to trzeba wówczas robić to inaczej. Inaczej oznacza tutaj przy użyciu makro (przykładowy kod wkleiłem powyżej). Po zmianach wygląda to następująco:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Or IsEmpty(Target) Then Exit Sub
Application.EnableEvents = False
If Target.Address = "$B$1" And IsNumeric(Range("B1").Value) Then
Range("A1").Value = Range("A1").Value + Range("B1").Value
ElseIf Target.Address = "$C$1" And IsNumeric(Range("C1").Value) Then
Range("A1").Value = Range("A1").Value - Range("C1").Value
End If
Application.EnableEvents = True
End Sub
Działa to w ten sposób, że w momencie gdy zmienisz wartość w komórce B1, to do komórki A1 zostanie dodana wartość z B1. W momencie, gdy zmienisz wartość C1, to z komórki A1 zostanie odjęta wartość z C1.
Może powinieneś przemyśleć ten arkusz excela, który ma pełnić rolę programu magazynowego. Wówczas można by pomyśleć nad lepszym rozwiązaniem. Bo to, które teraz podaję nawet mi się nie podoba, ale innego po prostu nie widzę, biorąc pod uwagę to co powiedziałeś
EDIT:
Zamieszczam jakby to mogło wyglądać przy użyciu formuły (przykład);
A tutaj link do pliku, który zawiera oba przykłady: