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