Excel klausimas ar taip įmanoma ir kaip tai padaryti

Diskusijos susijusios su įvairiu programavimu
Post Reply
User avatar
lampaq
Posts: 157
Joined: 2008-01-09

Excel klausimas ar taip įmanoma ir kaip tai padaryti

Post by lampaq » 2020-02-26 10:12

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 :))
Attachments
Excel.jpg
Excel.jpg (63.51 KiB) Viewed 3882 times

User avatar
PhaNtoM
Site Admin
Posts: 354
Joined: 2007-09-07
Location: Vilnius
Contact:

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

Post by PhaNtoM » 2020-02-26 12:17

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ė.
Kovotojas su vėjo malūnais

User avatar
Stipena
Posts: 1320
Joined: 2011-01-12
Location: Klaipėda
Contact:

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

Post by Stipena » 2020-02-26 13:03

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
Ryzen 1600X Be quiet Dark Rock Pro 4, Gigabyte B350 Gaming 3, RX Vega 56 Morpheus II Be quiet Silent Wings 3, 16GB DDR4, SM951 256GB NVMe, 850EVO 500GB, MX500 1TB, Be quiet Straight Power 11 750W, FD Define S, BenQ XL2730Z 27" 1440p 144Hz Freesync, Steelseries (M800, Sensei Wireless, Siberia 840), Logitech Z-5500


User avatar
lampaq
Posts: 157
Joined: 2008-01-09

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

Post by lampaq » 2020-02-26 16:19

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

User avatar
Stipena
Posts: 1320
Joined: 2011-01-12
Location: Klaipėda
Contact:

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

Post by Stipena » 2020-02-26 17:00

PhaNtoM liko ant ledo :DDD
Ryzen 1600X Be quiet Dark Rock Pro 4, Gigabyte B350 Gaming 3, RX Vega 56 Morpheus II Be quiet Silent Wings 3, 16GB DDR4, SM951 256GB NVMe, 850EVO 500GB, MX500 1TB, Be quiet Straight Power 11 750W, FD Define S, BenQ XL2730Z 27" 1440p 144Hz Freesync, Steelseries (M800, Sensei Wireless, Siberia 840), Logitech Z-5500

nemesis
Posts: 1292
Joined: 2008-03-28

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

Post by nemesis » 2020-02-26 19:22

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

User avatar
PhaNtoM
Site Admin
Posts: 354
Joined: 2007-09-07
Location: Vilnius
Contact:

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

Post by PhaNtoM » 2020-02-26 22:27

Na, pats kaltas, @nemesis pateikė naudingiau - galutinį sprendimą, aš norėjau užvesti žmogų ant kelio, kad išmoktų/pasikankintų pats. :D
Kovotojas su vėjo malūnais

User avatar
Stipena
Posts: 1320
Joined: 2011-01-12
Location: Klaipėda
Contact:

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

Post by Stipena » 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.
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
Ryzen 1600X Be quiet Dark Rock Pro 4, Gigabyte B350 Gaming 3, RX Vega 56 Morpheus II Be quiet Silent Wings 3, 16GB DDR4, SM951 256GB NVMe, 850EVO 500GB, MX500 1TB, Be quiet Straight Power 11 750W, FD Define S, BenQ XL2730Z 27" 1440p 144Hz Freesync, Steelseries (M800, Sensei Wireless, Siberia 840), Logitech Z-5500

nemesis
Posts: 1292
Joined: 2008-03-28

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

Post by nemesis » 2020-02-27 03:34

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...

User avatar
Stipena
Posts: 1320
Joined: 2011-01-12
Location: Klaipėda
Contact:

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

Post by Stipena » 2020-02-27 09:51

Jei reik bent kažką instaliuot ar aktyvuot win funkcijas tai nepaeis, nes neleidžia paprastiem mirtingiesiems :D
Ryzen 1600X Be quiet Dark Rock Pro 4, Gigabyte B350 Gaming 3, RX Vega 56 Morpheus II Be quiet Silent Wings 3, 16GB DDR4, SM951 256GB NVMe, 850EVO 500GB, MX500 1TB, Be quiet Straight Power 11 750W, FD Define S, BenQ XL2730Z 27" 1440p 144Hz Freesync, Steelseries (M800, Sensei Wireless, Siberia 840), Logitech Z-5500

nemesis
Posts: 1292
Joined: 2008-03-28

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

Post by nemesis » 2020-02-27 10:38

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...

User avatar
Stipena
Posts: 1320
Joined: 2011-01-12
Location: Klaipėda
Contact:

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

Post by Stipena » 2020-02-27 12:01

Jo, pamenu kadaise su macro girlianda dariau excelyje, tai užlinko excelis :DDD
Ryzen 1600X Be quiet Dark Rock Pro 4, Gigabyte B350 Gaming 3, RX Vega 56 Morpheus II Be quiet Silent Wings 3, 16GB DDR4, SM951 256GB NVMe, 850EVO 500GB, MX500 1TB, Be quiet Straight Power 11 750W, FD Define S, BenQ XL2730Z 27" 1440p 144Hz Freesync, Steelseries (M800, Sensei Wireless, Siberia 840), Logitech Z-5500

nemesis
Posts: 1292
Joined: 2008-03-28

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

Post by nemesis » 2020-02-27 15:58

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)).

User avatar
Stipena
Posts: 1320
Joined: 2011-01-12
Location: Klaipėda
Contact:

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

Post by Stipena » 2020-02-27 17:52

Atsiųst negaliu nes nedarbingumas man. Lapas2 yra išfiltruoti duomenys iš Lapas1. Lapas2 lieka mažiau nes Lapas1 yra daug nereikalingų eilučių.
Ryzen 1600X Be quiet Dark Rock Pro 4, Gigabyte B350 Gaming 3, RX Vega 56 Morpheus II Be quiet Silent Wings 3, 16GB DDR4, SM951 256GB NVMe, 850EVO 500GB, MX500 1TB, Be quiet Straight Power 11 750W, FD Define S, BenQ XL2730Z 27" 1440p 144Hz Freesync, Steelseries (M800, Sensei Wireless, Siberia 840), Logitech Z-5500

User avatar
Stipena
Posts: 1320
Joined: 2011-01-12
Location: Klaipėda
Contact:

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

Post by Stipena » 2020-02-27 19:51

Radau kažką panašaus ko man reikėjo :)
Ryzen 1600X Be quiet Dark Rock Pro 4, Gigabyte B350 Gaming 3, RX Vega 56 Morpheus II Be quiet Silent Wings 3, 16GB DDR4, SM951 256GB NVMe, 850EVO 500GB, MX500 1TB, Be quiet Straight Power 11 750W, FD Define S, BenQ XL2730Z 27" 1440p 144Hz Freesync, Steelseries (M800, Sensei Wireless, Siberia 840), Logitech Z-5500

Post Reply