Cella értékének növelése-csökkentése Excelben hogyan lehetséges?
Pl. A1 értékét kell változtatni. B1 a beviteli cella (lehet hogy van más megoldás is bevitelre).
Az a feladat, hogy A1 értéke akkor is megmaradjon, ha B1 értéke nulla. Ha B1 értéke nagyobb mint nulla, akkor adódjon hozzá A1-hez. Ha kisebb B1 mint nulla akkor vonja ki A1-ből B1-et.
Tehát akkumulálódást szeretnék elérni A1-ben, úgy hogy csökkenteni is lehessen az értékét.
De eddig még nem tudtam megoldani körkörös hivatkozási hiba nélkül.
És az meg, ugye nem megoldás. :)
Szia.
A HA függvényt próbáltad már ? Vagy az nem megoldás ?
Valahogz igy : =HA (B1>0;A1+B1;A1-B1)
Sok sikert.
Üdv.
Szia!
Köszi hogy foglalkozol a kérdéssel.
De tudod, azt írtam:
"Az a feladat, hogy A1 értéke akkor is megmaradjon, ha B1 értéke nulla."
Lehet hogy ez így félreérthető, de írok példát.
Mondjuk négyszer viszek be adatot, és ez lenne az eredmény:
1.) B1-be 100, akkor A1-ben is megjelenik a 100
2.) B1-be 50, akkor A1-ben 150-re nő az érték
3.) B1-be 200, akkor A1-ben 250-re nő az érték
4.) B1-be -70, akkor A1-ben 180-ra csökken az érték
És így tovább....
VBA-val szerintem meg lehet oldani, de eddig nem sikerült
Írtam saját függvényt, de körkörös hivatkozás lett belőle és akkor a program leáll.
Ez a feladat programnyelven így néz ki:
A=A+B
Ahol "A" és "B" egy-egy változó.
Ez azt jelenti, hogy "A" mindig önmagához adja hozzá "B"-t.
Repeat-Until ciklussal megtámogatva nagyon jól működik.
Csak azt nem tudom, hogy házasítsam ezt össze az Excellel körkörös hivatkozás nélkül?
Szia.
Ez Excelben VBA-ban is körölbelül ennyi (A=A+B)
A cellaváltozás eventre kell beirni a macrót, ami megvizsgálja, hogy az a cella változott-e aminek kell (B1), ha igen akkor elvégzi az összeadást.
Nekem ez jött ki :
Private Sub Worksheet_Change(ByVal Target As Range)
_ _ If Target.Address = "$B$1" Then
_ _ _ _ ActiveWorkbook.ActiveSheet.Range("A1").Value = ActiveWorkbook.ActiveSheet.Range("A1").Value + Target.Value
_ _ End If
End Sub
Innen letöltheted : [link]
Excel 2010-ben van, a biztonsági beálitásoktól függően első inditásnál engedélyeztetni kell a szerkesztést, illetve a macró futását.
Sok sikert.
üdv.
Szia!
Köszönöm, nagyon szuper, működik!
Nem vagyok egy nagy VBA szakember, volna még kérdésem az ügyben.
Egy háztartási naplót kezdtem el szerkeszteni, ahhoz kell ez az input megoldás.
Most az a gondom, hogy ez a beviteli kód egy sheet-en 32-szer kell működjön.
Rezsire költött pénz, kajára, és a többiek...
Ezt úgy értem el, hogy 32-szer beírtam a kódot.
Persze mindig más cellapárokra hivatkozva.
Nagyon jól működik, de vajon van jobb megoldás, ami egyszerűsíti és csökkenti a kód mennyiségét?
A másik kérdés az, hogy a kód a ThisWorkbook-ban is működtethető valahogy?
Mert akkor látványosan csökkenne a fájl mérete.
Kipróbáltam, a compiler nem jelez hibát, de a kód nem csinál semmit egyik sheet-en sem.
A pénzügyi napló éves lesz, és ha mind a 12 oldalra ugyanaz a kód kerül, bazi nagy lesz a mérete.
És ugye, nem is elegáns az a sok kód ismétlés. :)
Tudsz valami megoldást?
Vagy jó így, ahogy van? :)
Szia.
Ez a megoldás csak az Activsheet-en működik mivel csak annak van cellaváltozás eseménye (eventje). A woorkbook eseményeket itt megtalálod : [link]
De szeritem, itt nem lesz olyan amire rá lehetne programozni konkrétan ezt a dolgot.
Esetlegesen lehetne a kódot optimalizálni, (és csak egy kicsit kell átalakitani a macrot) hogy ne legyen benne annyi IF (32 db) hanem egy If-be rakni az egészet, valahogy igy :
Private Sub Worksheet_Change(ByVal Target As Range)
_ _ Cim = Target.Address
_ _ If (Cim = "$B$1") Or (Cim = "$G$1") Or (Cim="$L$1") Then
_ _ _ _ Oszlop = Range(Cim).Column
_ _ _ _ Sor = Range(Cim).Row
_ _ _ _ ActiveWorkbook.ActiveSheet.Cells(Sor, Oszlop - 1).Value = ActiveWorkbook.ActiveSheet.Cells(Sor, Oszlop - 1).Value + Target.Value
_ _ End If
End Sub
A fenti rész a B1, G1 és a L1 cellákat figyeli, és ha változás van ezen cellákban, akkor az előző cellákat módositja (A1, F1 és K1 cella). De ugyebár a Sor és Oszlop ismeretében bárhová tudsz pozicionálni.
Nem tudom, hogy konkrétan mit szeretnél (azt tudom, hogy háztartási naplót), esetlegesen nem lenne-e más út az a mi járható lenne ?.
Szerintem igy kellene megoldani a dolgot : Felveszel az excelbe négy sort (Vagy annyi oszlopot ahány tételed van) : Dátum (esetleg idő), Bevétel, Kiadás, Megjegyzés.
Lerögzited a második sornál a táblát, és a második sorba raksz, a második két oszlopra (vagy minden oszlopra) egy egy szummát (pl B3-től B3000-ig és C3-től C3000-ig szummázna, a bevételt is és a kiadást is, a kettő különbsége adná, a háztartás pillanatnyi anyagi helyzetét). Szerintem ez valami hasonló lenne mint amit Te készitettél el ezzel a fenti szummázással.
A megjegyzést (ha csak négy oszlop van) pl. megoldható segéd táblával (felveszed, hogy mire költhetsz, és hogy honnan lehet bevételed, és egy legördülő lista lesz belőle, ahonnan választhatsz - aztán ez alapján már tudsz esetlegesen statisztikákat késziteni pl. Kajápénzt összesiteni ha csak 4 oszlopod van).
Sok sikert.
üdv.
Szia!
Nagy köszönet neked az eddigi munkádért és figyelmedért!
Ezt a naplót már hónapok óta szerkesztem, mindig vannak új ötleteim, hogy mivel lehet még kiegészíteni.
Szóval koncepció az van, de a VBA programozás most megfogott. :)
Eddig függvényekkel mindent meg tudtam oldani.
Most kezdem alkalmazni amit küldtél, ha kész lesz mutatok egy képernyőfelvételt róla.
Mit mondjak, mezei felhasználónak eléggé ijesztő a progi első ránézésre. :D
Te sokkal előbb vagy programozásban mint én, gondolom, nem igényled a kész naplót.
De ha igen, szólj! :)
Köszönöm és szép napot, vidám hétvégét! :)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!