Page 1 of 1

Excel klausimas ar taip įmanoma ir kaip tai padaryti

Posted: 2020-02-26 10:12
by lampaq
Sveiki,

Ne programavimas, bet prireikė pagalbos gal ir labai paprasta bus, bet nelabai radau info arba netaip ieškau kažkaip visagaliam google :)

Situacija:

Yra lentelė dešinėjė iš 2 stulpelių "Produktas" ir "kaina"

Yra bendroji lentelė ir reikia padaryti taip:

Kad įrašius betkurį produkto pavadinimą iš dešniosios lentelės į bendrąją lentelę , automatiškai priskirtų to produkto kainą stulpelyje "kaina"

Pvz. Bendrojoje lentelėje įrašau "Produktas C" ir man reikia, kad stulpelyje "kaina" iškart įsirašytų kaina "3".

Įmanoma kažkaip tai įgyvendinti su exceliu? Suprantu, kad greičiausiai kažkaip reikia susieti visus produktus su jų kainomis. (Čia kaip minimali DB gaunasi? A=1eur , B=2eur ir t.t) Ir kažkaip, kad pirmoje lentelėjė įvedus bet kurį produktą iš karto priskirtų jam atitinkamą kainą "kainos" stulpelyje.

Labai nesijuokit, jei per kvailas klausimas :))

Re: Excel klausimas ar taip įmanoma ir kaip tai padaryti

Posted: 2020-02-26 12:17
by PhaNtoM
SIūlau pabandyti išpildyti su https://support.office.com/en-us/articl ... a18ad188a1
Esu panašų variantą padaręs tik tiek, kad tą funkciją jau reiktų būti pritaikius visoms eilutėms, kur norima, kad "Kaina" stulpelis būtų reaktyvus, tuomet keičiant "Produktas" reikšmę bus perskaičiuojama "Kaina" reikšmė.

Re: Excel klausimas ar taip įmanoma ir kaip tai padaryti

Posted: 2020-02-26 13:03
by Stipena
Aš naudojau IF funkciją tam, bet ten šabakštynas gaunasi jei labai didelis sąrašas yra. Na o jeigu tik tokio dydžio kaip duotam pavyzdyje tai visai įmanoma.
Edit: tavo atveju kaip minėjo tikrai geriau VLOOKUP

Re: Excel klausimas ar taip įmanoma ir kaip tai padaryti

Posted: 2020-02-26 14:01
by nemesis
Image

Re: Excel klausimas ar taip įmanoma ir kaip tai padaryti

Posted: 2020-02-26 16:19
by lampaq
Nu kol kas atrodo pavyko viskas ir veikia :)
P.S čia kaip pavizdinę tiesiog lentelę ir produktus parodžiau, realiai jų kažkiek daugiau.
P.S.S greičiausiai alaus lieku skolingas nemesis, jei Vilnietis :D

Re: Excel klausimas ar taip įmanoma ir kaip tai padaryti

Posted: 2020-02-26 17:00
by Stipena
PhaNtoM liko ant ledo :DDD

Re: Excel klausimas ar taip įmanoma ir kaip tai padaryti

Posted: 2020-02-26 19:22
by nemesis
Stipena wrote:
2020-02-26 17:00
PhaNtoM liko ant ledo :DDD
Kas tiesa - tas ne melas :D

Re: Excel klausimas ar taip įmanoma ir kaip tai padaryti

Posted: 2020-02-26 22:27
by PhaNtoM
Na, pats kaltas, @nemesis pateikė naudingiau - galutinį sprendimą, aš norėjau užvesti žmogų ant kelio, kad išmoktų/pasikankintų pats. :D

Re: Excel klausimas ar taip įmanoma ir kaip tai padaryti

Posted: 2020-02-27 01:33
by Stipena
Man taipogi reiktu pagalbos excel'iu, bet kadangi juo tik darbe tesinaudoju tai parodysiu ant google sheets ko reikia, gal užvesi ant kelio, o gal taip visai neina padaryt kaip noriu.
Nu esmė į "Lapas1" importuoju DATA File is xml failiuko (importuoja pagal datą/laiką nuo naujausios iki seniausios). Stulpelių realiai būtų ten apie 20, o eilučių apie 1000.
Image

Toliau į "Lapas2" man reikia iš "Lapas1" perkelti tik kelių stulpelių eilutes pvz: jeigu eilutėje yra kodas 100 ir linija 1, tada į "Lapas2" pagal datą/laiką nuo seniausio iki naujausio perkelti tos eilutės datą, linija ir kiekį. Kairėje pusėje duomenys su linija 1, dešinėje su linija 2. Šiaip norėtųsi abiejų linijų duomenis matyti viename lape, bet iš bėdos galėtų būti ir atskiruose lapuose. Kolkas esu išsisaugojęs excel failiuką taip kad jį atidarius duomenys iš xml failiuko jau būna importuoti ir reikia paspausti "refresh all" kad atsinaujintų jeigu atsinaujino pats xml failiukas. Turiu kiekvienai linijai pasidaręs po atskirą lapą, o linijų daug ir kiekvienai reikia rankiniu būdu keisti datos/laiko sorting'ą, kas atima laiko + atvaizduoja visus stulpelius ir sunku sužiūrėt tarp jų reikiamus tik 2-3. Tai tokia dilema pas mane :D
Image

Re: Excel klausimas ar taip įmanoma ir kaip tai padaryti

Posted: 2020-02-27 03:34
by nemesis
Stipena wrote:
2020-02-27 01:33
Man taipogi reiktu pagalbos excel'iu, bet kadangi juo tik darbe tesinaudoju tai parodysiu ant google sheets ko reikia, gal užvesi ant kelio, o gal taip visai neina padaryt kaip noriu.
Nu esmė į "Lapas1" importuoju DATA File is xml failiuko (importuoja pagal datą/laiką nuo naujausios iki seniausios). Stulpelių realiai būtų ten apie 20, o eilučių apie 1000.


Toliau į "Lapas2" man reikia iš "Lapas1" perkelti tik kelių stulpelių eilutes pvz: jeigu eilutėje yra kodas 100 ir linija 1, tada į "Lapas2" pagal datą/laiką nuo seniausio iki naujausio perkelti tos eilutės datą, linija ir kiekį. Kairėje pusėje duomenys su linija 1, dešinėje su linija 2. Šiaip norėtųsi abiejų linijų duomenis matyti viename lape, bet iš bėdos galėtų būti ir atskiruose lapuose. Kolkas esu išsisaugojęs excel failiuką taip kad jį atidarius duomenys iš xml failiuko jau būna importuoti ir reikia paspausti "refresh all" kad atsinaujintų jeigu atsinaujino pats xml failiukas. Turiu kiekvienai linijai pasidaręs po atskirą lapą, o linijų daug ir kiekvienai reikia rankiniu būdu keisti datos/laiko sorting'ą, kas atima laiko + atvaizduoja visus stulpelius ir sunku sužiūrėt tarp jų reikiamus tik 2-3. Tai tokia dilema pas mane :D
Nesu excel specas, todėl kai nemoku padaryti su excel, darau su macros. Kada iki ju prieiti ant excel reikia enablinti Developer rėžimą (viršuje tab atsiranda - https://www.techonthenet.com/excel/ques ... ab2013.php ). Esu naudojes kažkada iš neto, berods vadinosi vlookupmany custom formulę (kažkas link to bet ne visai kaip pamenu, ten vlookupmany buvo realizuota macrosu, nes su juo gali realizuoti nauja custom formule ir ja naudoti jau excel kaip bet kokia custom). Bet čia ji gelbės tik iš dalies nes vistiek reiks sukti ciklą per visas linijas dešinėn. Labai palengvina macros rašymą record macros ir macros su žinomom formulių kombinavimas. Konkrečiai jei rastumėte vlookupkmany custom formulę, su macros suki for per linijas vis dešinėn, tada vis kopini i dešinesne nuo anksčiau cele vlookupmany su kita linijos reikšme (dar ir sort pagal datetime šalia kaip supratau).

Pseudo kodas butu toks:
Stulpelis = 0
While dar yra linija be lenteles (distinct iš lapas1 c stulpelio, order by didejanti/mazejanti, ir tai realizuociau su excel formulem, o ne macrosu, o su macros tik sukčiau for/while per excelio distinct ir order rezultata)
{
CellValue[Stulpelis] = linija (1,2,3,6,8 ar kiek ju buna po viena)
CellFormula[Stulpelis+4,1] = vlookupmany(paieskos kriterijus pagal reiksme linija(CellValue[Stulpelis+4,0]) jei nesinori kad matytus virs lenteles skaiciukas darau baltu rašalu raides ir nesimato ant balto fono, labai padeda debuginimui nors galima ir be jo apsieiti)
Stulpelis+=4 (stumsim kitos linijos lentele dešinėn per 4)
}

Vandens nuotėkio daviklį apsisiojo vamzdis, dieną plačiau pasistengsiu aprašyti. Aišku padėtų demo excelis ir pasirašius macros reikia suprast kad struktūros pakeitimai inpute gadins veikimą (eilučių pridėjimas ar atėmimas ne, bet stulpelių pridejimas ar atemimas reikalaus formuliu/macros pamodifikavimo).

Pagal nurodyta kieki eiluciu optimizuot ant greicio nereiks turbut...

Re: Excel klausimas ar taip įmanoma ir kaip tai padaryti

Posted: 2020-02-27 09:51
by Stipena
Jei reik bent kažką instaliuot ar aktyvuot win funkcijas tai nepaeis, nes neleidžia paprastiem mirtingiesiems :D

Re: Excel klausimas ar taip įmanoma ir kaip tai padaryti

Posted: 2020-02-27 10:38
by nemesis
Stipena wrote:
2020-02-27 09:51
Jei reik bent kažką instaliuot ar aktyvuot win funkcijas tai nepaeis, nes neleidžia paprastiem mirtingiesiems :D
Developer tab enablinimas admin nereikalauja, macros rašymas - ne, dėl paleidimo reik patikrint bet irgi ne (itariu tik kad excel atidarant xlsm išspjaus warning kad gali būti nesaugu ir atidarys skaitymo rėžime).
Enablinkit developer tab'a -> paspauskit record macro -> padarykit su excel replace "a"->"b" -> sustabdykit Stop recording, atkeiskit b i a ir spauskit Macros, pasirinkit vieninteli irecordinta ir paleiskit. Jei pakeicia a i b - viskam teises turit. Xlsx taps xlsm kai seivinsit, arba išmes pranešimą kad išsaugokit xlsxm, jei norit kad macrosas su sugeneruotu VB (VisualBasic kodu) išsisaugotų...

Visa tai yra igimtas excel funkcionalumas - nieko instaliuot nereikia, tik paslėpia po defaultu developer tab'ą nuo nesuprantančių - kad neprisižaistų turbūt...

Re: Excel klausimas ar taip įmanoma ir kaip tai padaryti

Posted: 2020-02-27 12:01
by Stipena
Jo, pamenu kadaise su macro girlianda dariau excelyje, tai užlinko excelis :DDD

Re: Excel klausimas ar taip įmanoma ir kaip tai padaryti

Posted: 2020-02-27 15:58
by nemesis
Stipena wrote:
2020-02-27 12:01
Jo, pamenu kadaise su macro girlianda dariau excelyje, tai užlinko excelis :DDD
Pasitaiko.

Atsiųskit išeksportavęs xls ar xlsx, kur Lapas1 būtų duomenys galutinėje struktūroje kokius paduodate, o Lapas2 dvi tos lentelės kaip jos pilnai turi atrodyti pagal Lapas1 duomenis (dabar lapas1 -15 eilučių, lapas 2 jau tik 6 (3+3)).

Re: Excel klausimas ar taip įmanoma ir kaip tai padaryti

Posted: 2020-02-27 17:52
by Stipena
Atsiųst negaliu nes nedarbingumas man. Lapas2 yra išfiltruoti duomenys iš Lapas1. Lapas2 lieka mažiau nes Lapas1 yra daug nereikalingų eilučių.

Re: Excel klausimas ar taip įmanoma ir kaip tai padaryti

Posted: 2020-02-27 19:51
by Stipena
Radau kažką panašaus ko man reikėjo :)