Avaleht
uus teema   vasta Tarkvara »  Tarkvara »  Palun abi exceli macroga. märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale. Teata moderaatorile
otsing:  
cocliosttr
HV kasutaja
cocliosttr

liitunud: 19.04.2006




sõnum 28.08.2015 17:42:39 Palun abi exceli macroga. vasta tsitaadiga

Tere,

Mure selline, et mul on tabel kuhu on sisestatud väärtused.
Ja on eraldi üks väli - protsendi sisestamiseks ja teine - protsendi sisestamiseks.

Vaja oleks teha nii, et kui lisan miinus % väljale näiteks -5 siis arvutab exel kõikidest ruutudest kuhu olen sisestanud hinnad maha 5 protsenti
Kui lisan + % väljale näiteks +5 siis arvutab ta hindadele juurde 5 protsenti.
Juure arvutamine ja maha arvutamine peaks toimuma vastavalt sellele mis summa ruutu on sisestatud.

Näide:
F1 on miinus % väli
F2 on pluss % väli

Sisestan ruutu A2 10 eurot ja sisestan näiteks F1 ruutu (miinus % väli) -50 muutub A2 10 eurot 5 euroks

Kui sisestan F2 ruutu (pluss % väli) +50 arvutab exel A2 väljal sisestatud 10 eurole juurde 50% ja muudab sealse numbri 15 euroks.

Oskab keegi aidata sellise macroga?

Ette tänades Scorps

[file]28685[/file]
[file]28684[/file]
Kommentaarid: 5 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 5
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
alfreedo
HV vaatleja

liitunud: 20.06.2010




sõnum 29.08.2015 23:18:57 vasta tsitaadiga

Kus Sa toppama jäid!
On Sul migit koodijuppi ka näidata?
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
cocliosttr
HV kasutaja
cocliosttr

liitunud: 19.04.2006




sõnum 30.08.2015 18:32:23 vasta tsitaadiga

Ma olen väga vähe excel macrotega kokku puutunud.
Tavaline makro ei tööta sest sellisel puhul peab olema 1 ruut summa jaoks teine ruut % jaoks ja kolmas ruut algne number.
Mul on aga vaja teha nii, et kui kasutaja sestab näiteks numbri ruutu A1 Näiteks 100 ja kui nüüd protsendi ruutu sisestatakse -50 sis muutub A1-te sisestatud number 50neks (ehk siis muutub vastavalt sellele numbrile mis on protsendi ruutu sisestatud).
Kui protsendi ruutul on null siis ei muutu ka number mida kasutaja sisestab ruutu A1
Ma ei tea kas nii on üldse exc3elis võimalik, kuna pole suur exceli guru.
Ühesõnaga on vaja tabelit kus on sisestatud hinnad (mida kasutaja aeg ajalt uuesti sisestab) ja kui nüüd soovib tõsta näiteks hindu 10% siis kasutaja sisestab protsendi ruutu -% või +% summa ja excel arvutab hindade ruutudes olevatele hindadele sisestatud protsendi juurde või maha.
Kommentaarid: 5 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 5
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
alfreedo
HV vaatleja

liitunud: 20.06.2010




sõnum 30.08.2015 20:31:33 vasta tsitaadiga

Midagi sellist siis!
Sisestades lahtrisse H1 mingi arvu (negatiivse või positiivse) ja vajutades lehel olevale nupule "Arvuta muut"
arvutatakse piirkonnas B2:O100 leiduvatele arvudele protsent juurde või maha.

http://kosser.planet.ee/Faile/Protsent.xlsm
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
cocliosttr
HV kasutaja
cocliosttr

liitunud: 19.04.2006




sõnum 30.08.2015 23:26:31 vasta tsitaadiga

Pean seda tööl proovima.
Kodus arvutis exel puudub hetkel.
Kommentaarid: 5 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 5
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Porno Parm
mugavuspagulane
Porno Parm

liitunud: 30.11.2003




sõnum 30.08.2015 23:39:01 vasta tsitaadiga

tõmba openoffice siis - freeware, offici asendus
https://www.openoffice.org/download/
Kommentaarid: 66 loe/lisa Kasutajad arvavad:  :: 1 :: 6 :: 47
tagasi üles
vaata kasutaja infot saada privaatsõnum
cocliosttr
HV kasutaja
cocliosttr

liitunud: 19.04.2006




sõnum 31.08.2015 11:15:12 vasta tsitaadiga

Mida pean muutma koodis et hoomaks suuremat ala.
Mul nimelt nii et B real on hindade kohad alates B9-sast kuni B92
ja iga järgneva tähega läheb algnumber suuremaks.(Alates millest siis on vaja seda muutust teha).

B9 kuni B92
C10 kuni C92
D11 kuni D92
E12 kuni E92
F13 kuni F92
ja nii edasi.
Kommentaarid: 5 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 5
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
sanz671
HV vaatleja

liitunud: 04.11.2007




sõnum 31.08.2015 11:56:54 vasta tsitaadiga

Tere,
Kas kasutusel peab ilmtingimata macro olema? Valemit kasutades jääks ka algne info alles.
Kommentaarid: 6 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 6
tagasi üles
vaata kasutaja infot saada privaatsõnum
alfreedo
HV vaatleja

liitunud: 20.06.2010




sõnum 31.08.2015 12:10:29 vasta tsitaadiga

tsitaat:
...arvutatakse piirkonnas B2:O100 leiduvatele arvudele protsent juurde või maha.....


Peaks nagu Sinu vajadusi rahuldama
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
cocliosttr
HV kasutaja
cocliosttr

liitunud: 19.04.2006




sõnum 31.08.2015 13:17:54 vasta tsitaadiga

Lisasin manusesse exel faili.

Ideaalis peaks asi töötama nii, et Väljad kus on hetkel 0,00 sinna sisestab kasutaja oma numbri (hinna)
Ja üleval Lisa allahindluse % ruutu või siis Lisa juurdehindluse % ruutu sisestab kasutaja numbri kui mitu protsenti ta tahab hinda tõsta võüi sis langetada.
Need numbri sisestusväljad peaks olema sis J1 allahindluse protsendi ruut ja J2 juurdehindluse protsent
Ja vastavalt sellele mis protsendi ruutu sisestatakse vastavalt sellele protsendile muutuvad ymber alla sisestatud hinnad selle protsendi võrra.
A1 rivi jääb toote nimetuse jaoks ja yleval muud väljad on muu info jaoks.
Roheline väli on samuti juba paigas ja kuvad vasaku rea sisendit.
Ideaalis peaks saama Tabi (see mille nimi on hetkel all Täishind tabel) koopiat teha nii et samad funktsioonid tuleks järmisele tabile kui koopia teha.
Kuna tabel on suur ei sobinud sinna ka see et oin eraldi väli alghinna jaoks, protsendi jaoks ja summa jaoks.
See nupu asi sobiks tegelikult kaa.
Ei pea olema eraldi allahindluse sisestamise protsendi koht ja juurdehindluse protsendi ruut
Võib olla ka nii, et sisestatakse kas -50 ja vajutatakse nuppu ja kalkuleerib hindadest maha -50 protsenti ja samma ruutu lisadel +50 ja vajutades nuppu kalkuleerib hindadele 50 protsenti juurde.

Yritan sellest VBA koodist aru saada. Aga keeruline.

Link failile:
http://www.filedropper.com/exeltabel31082015blank

Lisainfot: Sain vahemikku muuta kuid kuidas peaks kood välja nägema siis kui soovin igal real valida alad kust maalt ta muudab.
Hetkel on see koodiosa mul selline:
Set rng = ActiveSheet.Range("B10:CN100")
See töötab, kuid samas ei saa ma muuta texti A-rivil kirjutab kuid ei salvesta.
PS! Võtsin aluseks selle faili mille algselt saatsid ja peistisin sinna oma tabeli
Kommentaarid: 5 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 5
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
alfreedo
HV vaatleja

liitunud: 20.06.2010




sõnum 31.08.2015 20:53:35 vasta tsitaadiga

sanz671
tsitaat:

Kas kasutusel peab ilmtingimata macro olema? Valemit kasutades jääks ka algne info alles.

Valemi puhul tuleks kasutusele võtta lisalahtreid. Pole vist otstarbekas mahu kasvu tõttu.


cocliosttr
tsitaat:

Need numbri sisestusväljad peaks olema sis J1 allahindluse protsendi ruut ja J2 juurdehindluse protsent

See eeldab 2 erinevat käivituseventit!
Kergem on ühe nupuga käivitus ja tehe vastavalt lahtris olevale (+ või -).


tsitaat:

Roheline väli on samuti juba paigas ja kuvad vasaku rea sisendit.

Asenda koodis lause: "If IsNumeric(C.Value) And Len(ActiveCell.Text) Then"
lausega: "If IsNumeric(C.Value) And Len(ActiveCell.Text) And C.HasFormula = False Then" - see ei lase valemit sisaldavat lahtrit (rea lõpus rohelised) muuta.


tsitaat:

Lisainfot: Sain vahemikku muuta kuid kuidas peaks kood välja nägema siis kui soovin igal real valida alad kust maalt ta muudab.


See ka võimalik, kuid Sul on üle 90 rea infot!
Kas on võimalik olukord, kus %muutus arvutatakse ainult ühe rea andmetele, mitte aga kogu lehel olevatele andmete hulgale?
Kui ei siis kuidas see välja näeks, kui sa iga rea puhul valid oma piirkonna ja siis käivitad koodi.
Pakun, et 15-nda rea puhul juba tekib tüdimus või viga, kus sama rida muudad teist korda vms!


tsitaat:

See töötab, kuid samas ei saa ma muuta texti A-rivil kirjutab kuid ei salvesta.

Kood veergu A:A ei haara. Seega peaks rea lahtrite sisu muutmine olema võimalik.
Kui sa soovid, et kood ka kohe Workbooki salvestaks lisa koodi lõppu lause "End Sub" ette sõnad: ActiveWorkbook.Save.


tsitaat:

Ideaalis peaks saama Tabi (see mille nimi on hetkel all Täishind tabel) koopiat teha...

Kopeerid nupu teisele lehele ja arvutamise käivitad analoogselt
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
cocliosttr
HV kasutaja
cocliosttr

liitunud: 19.04.2006




sõnum 01.09.2015 17:23:32 vasta tsitaadiga

Tänud muud asjad sain korda.
Oskad öelda kas on võimalik teha ka nii, et saan protection sheet peale panna?
Pean silmas sis seda, et too kellele selle tabeli edastan ei hakkaks seal ise midagi muutma. Tema jaoks on täidetavad kindlad väljad ja seal saab ta ka kasutada seda arvuta muut nuppu.
Hetkel on aga nii, et kui panen peale lehele Protect sheet sis arvuta muut nuppu kasutada ei saa.
Kommentaarid: 5 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 5
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
alfreedo
HV vaatleja

liitunud: 20.06.2010




sõnum 01.09.2015 21:54:41 vasta tsitaadiga

Võimalik aga Sa pead määrama lahtrid-piirkonnad mis muutmiseks suletud.
Lehe Tab-il hiire pp.nupu menüüst klikid "ViewCode" ja avatud lehemoodulisse sisesta järgnev kood:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim Keelatud As Range
  Set Keelatud = Union(Range("A1:F1"), Range("L1:XFD1"), Range("B5,j5"), Rows("2:4")) ' Columns("C:C")
  If Intersect(Target, Keelatud) Is Nothing Then Exit Sub
  MsgBox "Antud lahtri muutmine keelatud", vbCritical
End Sub


Antud koodi real:Set Keelatud = Union(Range("A1:F1"), Range("L1:XFD1"), Range("B5,j5"), Rows("2:4")) ' Columns("C:C")
on mõningad näited kuidas lahtrid-piirkondi ellimineerida.
Täienda vastavalt vajadusele.
Pead arvestama, et kood kasutab lahtreid "G1" ja "J1" arvutamiseks - seega neid ei tohi keelatud lahtriteks sisestada.
Edu.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
cocliosttr
HV kasutaja
cocliosttr

liitunud: 19.04.2006




sõnum 02.09.2015 17:18:24 vasta tsitaadiga

, et siis kui avan excel dokumendi lähen developer tabile ja avan visual basic
Mul hetkel seal niimodi.
Lisasin manuse.
Ruudud mis lähevad lukku peaks olema:
A2 - A10
B2 - B11
C2 - C12
D6
D9-D13
E2
E6
E9 - E14
F2
F6
F9-F15
G2
G6
G9-G16
H2
H6
H9-H17
i2
i6
i9-i19
J2
J6
J9-J19

Kasutan 1 kuni 9 rivi mis jookseb kaasa alla scrollides.

Kommentaarid: 5 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 5
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
alfreedo
HV vaatleja

liitunud: 20.06.2010




sõnum 02.09.2015 19:43:53 vasta tsitaadiga

Jep.
Aknasse, kus on "CommandButton1_Click"-kood paned ka eelpool viidatud koodi täiendades seda lukustatavate lahtritega.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
cocliosttr
HV kasutaja
cocliosttr

liitunud: 19.04.2006




sõnum 03.09.2015 11:23:53 vasta tsitaadiga

Vabandan juba ette, kuna küsimusi koguaeg ja palju.
Ei ole VBA-ga kokku puutunud.Kas nii on õige, et past-in selle koodi osa sinna Private sub ette?(Lisasin manuse).

Manus

Kommentaarid: 5 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 5
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
alfreedo
HV vaatleja

liitunud: 20.06.2010




sõnum 03.09.2015 17:55:33 vasta tsitaadiga

Jep.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
cocliosttr
HV kasutaja
cocliosttr

liitunud: 19.04.2006




sõnum 04.09.2015 12:18:04 vasta tsitaadiga

Olen seda postitust juba miskiu 3 korda muutnud, kuna tekkinud küsimus ja sis ise mingisuguse lahenduse leidnud.
Hetkel kysimus aga selline.
Mul kõik ruudud ja asjad paigas, aga kuidas oleks võimalik tõsta see G1 arvutusruut näiteks CP1 ruutu?
Kommentaarid: 5 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 5
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
iFlop
Kreisi kasutaja
iFlop

liitunud: 03.05.2003



Autoriseeritud ID-kaardiga

sõnum 04.09.2015 16:02:48 vasta tsitaadiga

alfreedo kirjutas:
tsitaat:

Kas kasutusel peab ilmtingimata macro olema? Valemit kasutades jääks ka algne info alles.

Valemi puhul tuleks kasutusele võtta lisalahtreid. Pole vist otstarbekas mahu kasvu tõttu.

Nii lihtsa asja puhul leian, et tavaline Exceli valem oleks vist sobilikum...

cocliosttr,
kui juba VBA'd kasutad, siis ürita see võimalikult lihtsaks jätta. Praegu toimub "arvuta" sees päris palju asju ning see ei tee selle lugemist lihtsaks.

cocliosttr kirjutas:
kuidas oleks võimalik tõsta see G1 arvutusruut näiteks CP1 ruutu?

Kui kasutaksid Define Name funktsiooni, siis ei pea VBA's üldse mingeid ruute defineerima:

vb:
  1. Sub korruta()
  2.  
  3. For Each cell In Range("prices")
  4.     cell.Value = cell.Value * Range("multiplier")
  5. Next cell
  6.  
  7. End Sub


Antud kood töötab, kui multiplier range nimelises cell'is on vastav kordaja ning prices nimelises range's on need hinnad, mis vajavad läbi korrutamist.
Ning kui allahindused/juurdehindlused on F1/F2 cell'is siis vastav kordaja valem arvuta excelis =1*(1-F1)*(1+F2)
Kommentaarid: 66 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 65
tagasi üles
vaata kasutaja infot saada privaatsõnum
alfreedo
HV vaatleja

liitunud: 20.06.2010




sõnum 04.09.2015 18:16:57 vasta tsitaadiga

cocliosttr

Koodis asendad G1- CP1-ga.


iFlop

Define Name kasutamine on hea, kui piirkond on ruudu - ristküliku vms kujuline ehk piirkond on haaratav-valitav hiirega.
Antud juhul on arvutatav piirkond ebakorrapärane ja vist ka muutuv- iga rida eelmisest lahtri võrra pikem kusjuures iga rea lõpus on lahter valemiga mille sisu arvutusse ei haarataks ehk siis nimelise piirkonna moodustamine pole enam lihtne.
Koodiga: Add Name:="MinuNimelinePiirkond", RefersTo:=Selection" on see küll võimalik aga selleks pead enne kõik piirkonna lahtrid
(umbes 85x92lahtrit) ükshaaval selectima või koodi sisestama!
Ja kui piirkond muutub?

Aga sul on alati võimalus selline fail teha ja me saame teda tõõs võrrelda.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
iFlop
Kreisi kasutaja
iFlop

liitunud: 03.05.2003



Autoriseeritud ID-kaardiga

sõnum 05.09.2015 11:20:08 vasta tsitaadiga

alfreedo, Named range ei pea ilmtingimata olema ristkülik. Lisaks saab range kirja panna ka teiste range järgi. (Nt prices koosneb slice1;slice2;slice3 jne range'st, kus üksikud slice'd on ristkülikud.)

tsitaat:
Ja kui piirkond muutub?
Just see annabki named range'le eelise, sest kui excelis lisada/kustutada ridasi/veerge, siis named range liigub algsete cell'idega kaasa. VBA koodis on hardcode'tud cell'id on aga staatilised.

Aga tulles tagasi ebakorrapärase arvutatava piirkonna juurde, siis tõenäoliselt tuleks välja selgitada, kas see on üldse vajalik...
Kommentaarid: 66 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 65
tagasi üles
vaata kasutaja infot saada privaatsõnum
cocliosttr
HV kasutaja
cocliosttr

liitunud: 19.04.2006




sõnum 23.09.2015 16:24:43 vasta tsitaadiga

Tere,

Sain tabeli tööle. Suured tänud kõigile kes aitasid ja viitsisid aidata.
Lisas siia juurde sama tabeliga seoses järgneva kysimuse.
Nimelt mul on tabel astmes ja ma valisin ala ja yritan copeerida ainult numbreid kuid saan veateate.
Ma valisin Find & Select >> Go To Special ja seal selektisin Constants ja tikkisin Numbers ruudu vajutasin Ok mille peale exel valis astmes õiged ruudud, kuid copy (ctrl+C) ei tööta sest annab veateate mida näete pildil.
Oskate öelda miks või ehk kuidas saaksin valitud ala kopeerida-.*
Kopeerida vaja on vaid valitud väljadelt numbrid.
Testisin. Probleem seisneb ilmselt selles et igal rivil on mul vähem numbreid
Seega kui näitks: A rivilt tahan kopeerida A1 ja a 2 ruudus olevad numbrid ja samal ajal B2 oleva numbri ja olles valinud A1, A2 ja B2 ruudud ja kui valin copy saan sama veateate.

Kommentaarid: 5 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 5
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Tarkvara »  Palun abi exceli macroga.
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.