- Garmin topik
- Poco X6 Pro - ötös alá
- Milyen okostelefont vegyek?
- Motorola Edge 30 Ultra - a 200 megapixeles kérdés
- Magisk
- Hat év támogatást csomagolt fém házba a OnePlus Nord 4
- Csak semmi szimmetria: flegma dizájnnal készül a Nothing Phone (3)
- Mobil flották
- Milyen GPS-t vegyek?
- Samsung Galaxy S24 FE - később
-
Mobilarena
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
ulrik19
tag
válasz
Delila_1 #6323 üzenetére
ha
- nincs A1-gyel kezdődő település: nincs találat
- van A1-gyel kezdődő település:
a) pontosan 1 ilyen település van (a kastélyok számától függetlenül): pontos találat
b) ha több ilyen település van:
i) egyik település neve sem pontosan A1: több találat
ii) egyik település neve pontosan A1: pontos találat (hiába van még hasonló név)Ezek alapján kell a színezést is megoldani.
a) üres A1
b) több találat
c) pontos találat
d) nincs találat -
ulrik19
tag
válasz
Delila_1 #6319 üzenetére
A feladatban ott is a minta: as esetén Aszód (zöld betűk, azaz pontos találat, hiába van ott két kastély)
Az általad idézett szöveg nem arra utal, amire írtad, ugyanis:
bü esetében jelezze: bük és bükkakármi
de bük esetében csak bük-öt jelezze, mert az egyben pontos találat, hiába része bükkakárminek. -
ulrik19
tag
válasz
Delila_1 #6315 üzenetére
megvan mi a gond: megkeresed az első olyan településnevet, ami az adott betűkkel kezdődik. Megnézed, hogy ebből a településből hány található a listában, és az alapján színezel. Viszont a formázás nem ettől kellene, hogy függjön, hanem attól, hogy az adott betűkkel kezdődő településekből hány különböző van.
-
ulrik19
tag
válasz
Delila_1 #6268 üzenetére
de csak Neked, egy elegánsabb megoldás
CSE képlet, tehát a beírása után nem simán enter, hanem Ctrl + shift + entert kell ütni!
(minden módosítás után)=MIN(HA(C2<A1:A6;A1:A6;999))
ebben a képletben: C2-ben van a vizsgálandó érték, amit nézünk, hova esik
A1:A6 tartományban az értékhatárok. (jelen esetben én csak 6 értéket néztem)a 999 egy kellően nagy szám, ami minden lehetséges értéknél nagyobb. ha a C2 nagyobb, mint a megadott számok legnagyobbika, akkor ezt az értéket fogja visszaadni (mert ugye nála nagyobbat nem találhat "magától" a képlet)
UFF
-
ulrik19
tag
válasz
Delila_1 #6266 üzenetére
jaja, most próbálgatom: mindig a nála kisebb értéket.
de no problem:
A oszlopban a lent is írt határértékek egymás alatt (0 - 1,2 - 1,4 - 1,8 stb.)
B oszlopban ugyanezek de egy sorral feljebb tolva (1,2 - 1,4 - 1,8 - 2,8 stb.)majd =fkeres(mit, A1:B10, 2, IGAZ)
(a második oszlopban így a jó érték lesz a csúsztatás miatt. Persze oda sem kell begépelni az értékeket, hanem pl. B3 cellába. =A4 stb. megoldja automatikusan) -
-
ulrik19
tag
válasz
total90 #6241 üzenetére
Szia!
A $ jel rögzíti azt az elemet, ami ELÉ teszed. Jelen esetben az oszlopot. Ennek csak és kizárólag a képlet másolásakor van jelentősége. Ha lefelé másolod, akkor nem fogsz észrevenni különbséget, hiszen eleve nem változtatnál a hivatkozás oszlopjellemzőjén. Viszont ha jobbra (vízszintesen) másolod, akkor az A1 esetén az oszlopnév is változna, míg $A1 esetén nem.
Kerekítés: egyrészt az a kérdés, hogy elegendő látni a két tizedesjegyet, vagy valóban két tizedesjegyű számokat szeretnél odahelyezni. Első esetben elegendő a cellaformázással átállítani, a második esetben pedig egy kerekítőfüggvényt kell a képletbe tenni.
Végül: én a helyedben nem A1/270 formában írnám meg a képletet, hanem B1/$D$1, ahol a D1-es cellába beírom az aktuális EUR-árfolyamot. (a $ jelekkel rögzítem a helyét, akármilyen irányba másolom, mindig erre a cellára fog hivatkozni). Mert ha változik az árfolyam, elegendő egy cella értékét átírni, és mindenhol frissülnek az adatok.
-
ulrik19
tag
válasz
mr.nagy #6238 üzenetére
Csinálsz egy "végeredmény" táblát, amiben benne vannak a plusz oszlopok is (gondolom megbújik benne szinte valamennyi oszlop a kimutatásból)
A sorok száma ezek szerint változó, de nem is lényeges.
Az átszívandó oszlopokra tudsz hivatkozni: pl. =adattabla!A5 (ha a kimutatás az adattabla nevű sheeten van, és az A oszlop adata kell, ami az 5-ös sortól indul)
Amikor a képletet lefelé másolod, a következő adatsort veszi a kimutatásból.
Minden egyes oszlopnál ezt beállítod, köztük simán lehet olyan oszlop, amit Te töltögetsz.
-
ulrik19
tag
válasz
mr.nagy #6234 üzenetére
Szia, ha nem változik a kimutatástábla szerkezete (sorok és oszlopok száma), akkor simán tudsz az adott cellára hivatkozni máshol (pl. =F8)
Persze akkor is tudsz hivatkozni bármelyik adatra ilyen formában, ha változik a tábla szerkezete, de akkor nyomok kell követni a változást.
Egyébként van olyan fajta linkelési (adatkinyerési) mód, amikor nem a konkrét cellára hivatkozol, hanem magára az adatra (melyik adatsor, vagyis hónap, melyik oszlopadata), ezáltal ha változik a megjelenítési helye, akkor is tudja kezelni.
De először tudni kell, hogy mennyire változó a tábla.
-
ulrik19
tag
vagy ha marad az INDEX()-es képlet, akkor megvizsgálni, hogy az adott sheet az aktuális év-e (valahol gondolom szerepel az adott évszám)
ha igen (tehát 2010-es as sheet), akkor az index() az aktuális hónapot kell venni (most ugye 2 a február miatt)
ha nem (azaz 2009-es vagy előbbi), akkor az index()-nél mindenképp 12-vel számoljon.
de itt jön be az én módosításom: ha nem index()-szel oldod meg, hanem simán a decemberi egyenleg linkelésével, akkor tök mindegy milyen évről van szó.
-
ulrik19
tag
ebben a modellben nincs értelme az INDEX() használatának, mert befizetések (és jó eséllyel számlák sem) lehetnek előre könyvelve, vagyis a példánál maradva (mai nap), a februáritól kezdve egészen decemberig minden hónap egyenlege azonos lesz, méghozzá az aktuális (-500)
Tehát tökéletes a megoldásod, de a táblázat alatti INDEX() részre nincs szükség (szerintem, mert elegendő a decemberi egyenleget az adott az összesítő cellába írni. talán akkor hasznos lehet, ha a jövőbeni hónapok egyenlegénél nullát szeretnénk látni mindenképp)
-
ulrik19
tag
Miért gond az, hogy a C3-ban számolódik az oszlop? A cím()-nél az 5. paraméter egyébként a munkalap neve, tehát így is írhatod (talán picit még szebb is):
=INDIREKT(CÍM(A1;A2;1;IGAZ;A3))
ahol A1-ben van a sorszám, A2-ben az oszlopszám, A3-ban a munkalapnév
természetesen részben vagy egészben konkrét értéket is beleírhatsz a függvénybe:=INDIREKT(CÍM(4;3;1;IGAZ;"sheet1"))
ami a sheet1!$C$4 értékét adja vissza. (a 3. paraméter a relatív/abszolút hivatkozást állítja, jelen esetben $oszlop$sor-ra, azaz mindkettő abszolút, a 4. paraméter pedig azt jelzi, hogy A1, vagy S1O1 típusú legyen a hivatkozás, jelen esetben A1, viszont az INDIREKT() miatt édes mindegy lesz, hogy relatív/abszolút, illetve A1/S1O1 a beállítási mód, mert mindenképp egy adott konkrét cella ÉRTÉKÉT fogod felhasználni. -
ulrik19
tag
-
ulrik19
tag
válasz
petrusz82 #6159 üzenetére
Tudok segíteni, de annak megírása akkor érdemes, ha visszatérően kell feldolgozni a file-okat. Mert max 1 perc így egy betűhöz tartozó szavak feldolgozása, vagyis a teljes ABC-t egyszer feldolgozni ezzel a módszerrel kevesebb idő, mint megírni és tesztelni a programot, majd beparaméterezni, a file-okat a megfelelő módon elmenteni stb.
-
ulrik19
tag
válasz
petrusz82 #6157 üzenetére
Ha jól látom, jegyzettömbben vannak (most) az adataid.
Cseréld le az összes szóközt erre: <br> (szerkesztés menü, csere összes)
majd mentsd el. Pl. szavak.html (fontos, hogy .html legyen a kiterjesztése)Nyisd meg ezt a file-t egy böngészőben. Egymás alá kerültek a szavak. Mindent kijelölsz, másolás, majd excelben beillesztés.
Ha gyakori lesz ez a dolog (pl. majd az összes betűre meg kell csinálni, nem csak az "a"-ra), akkor lehet rá programot is írni (makrót), de egyszeri dologra ez a legegyszerűbb.
-
ulrik19
tag
válasz
VANESSZA1 #6152 üzenetére
Én a legtisztábbnak, és legegyszerűbbnek azt a verziót éreztem, amikor pontosan számítva van, hogy melyik műszakban dolgozik.
Tehát pl. 13:00-23:00 esetén 1 óra de, 8 óra du. és 1 óra éjszaka, ezekkel a pótlékokkal számolva, illetve mindenhol csökkentve az arányos szünettel. 0:56 - 7:30 - 0:56 perces elszámolással.
Ami nekem igazából nem világos (persze utánaolvasással megtudnám a választ), hogy 8 óra munkára 30 perc szünet JÁR-e, azaz fizetett-e maga a szünet? (mondjuk úgy: kvázi fizetett szabadság) Másképp fogalmazva: miért vonódik le a szünet?
-
ulrik19
tag
válasz
Delila_1 #6146 üzenetére
No igen, a morális kérdések bennem is mozogtak. Az első "megoldások" pont ezen alapultak, minden oda számolódik, ahová kell - mondjuk úgy - igazságosan. Némi átalakítással kijött a másik variáció is.
A szünet-elszámolása most arányos, az a része nem kizsákmányoló. A többi része némileg igen. De gyanítom elég ritka eset, amikor valaki 3 műszakot érintően dolgozik egy adott napon, ráadásul valamennyiben "érezhető időtartamban".
A türelem rózsát terem
Egyébként jó megmozgatni az agysejtjeimet, régen nem foglalkoztam már excel-es dolgokkal. Hát igen... R1C1 vírus...
-
ulrik19
tag
válasz
Fire/SOUL/CD #6144 üzenetére
Hali! Valóban
Belefutottam ugyanebbe az egyik képletnél, nem sejtettem, hogy máshol is lehet ilyen
Na mindegy, tettem bele egy kis korrekciót (újra feltöltöttem a lent megadott linkre), illetve az egyik képletet egyszerűsítettem is. (egész hasznos tud lenni a MAX() függvény
)
Köszi az észrevételt... Azért igyekszem jól aludni majd
-
ulrik19
tag
válasz
VANESSZA1 #6140 üzenetére
aha, szóval akkor leginkább egy munkaidő-elszámoló rendszer kell, amiben a műszakpótlék minimalizálása (is) a cél.
mert ugye aki
5:00-14:00 dolgozik: 9 óra de. műszak
13:00-22:00 dolgozik: 1 óra de és 8 óra du. műszakjól értelmezem?
gondolom akkor a 30 perc levonást is a legmagasabb műszakpótlékú sávba célszerű tenni
-
ulrik19
tag
válasz
VANESSZA1 #6138 üzenetére
először 45 percet írtál szünetre....
ha nem tolod ki 9 órára, akkor mi legyen azzal, aki 5:30-tól 14:00-ig dolgozik? hány órát "kapjon" és melyik "zónára"?
ha csak azt nézzük, hogy mikor kezdte a munkát, akkor hogyan (vagyis miért) osztod szét a különböző műszakokra? vagy nem is akarod szétosztani?
tehát ha valaki pl. 10 órát dolgozik és 13:00 kor kezd, akkor mi legyen a végeredmény?
a) 10 óra délelőtt
a) 1 óra délelőtt, 8 óra délután, 1 óra éjszak(bocs, tudom, extrém példa, de most én nem értem, mi is a cél
)
-
ulrik19
tag
válasz
VANESSZA1 #6136 üzenetére
az arányos szünetszétosztás már most benne van a képletedben. méghozzá (1-$F$1*3) formában. az F1-ben a 8 órára vetített szünet van benne. Ha az F1 0:45-öt tartalmaz, akkor azt osztja szét (ha 8 órát dolgozik az illető), ha valaki mondjuk 12 órát dolgozik, akkor 67,5 percet (1,5*45 perc).
5:30-as "probléma"
1) a délelőttös műszak időhossza így növekszik: ha pl. 5-től 14-ig délelőttösnek veszed, akkor ez 9 óra, vagyis a 8/24-et cseréld le 9/24-re. (értelemszerűen nem 5-ös elméleti minimum esetén másra, méghozzá a 14 óráig nézett időkülönbséget) Ez azért kell, hogy a délelőttös időbe beleszámolja
2) az éjszakásnál pedig a 6/24-et csökkenteni annyira, amikortól már délelőttösnek veszed. (ez nem befolyásolja a következő napi 6 óráig tartó éjszakai számítást, mert az a műszak vége időpont alapján határozódik meg) Arra figyelj, hogy a 6/24 vagy 6 helyen is van benne. -
ulrik19
tag
válasz
VANESSZA1 #6130 üzenetére
megnéztem... nálam jól számolja:
=HA(VAGY($B3="";$C3="");"";(HA($B3<6/24;MIN(6/24-$B3;6/24);0)-HA($C3<6/24;MIN(6/24-$C3;6/24);0)+HA($B3<30/24;MIN(30/24-$B3;8/24);0)-HA($C3<30/24;MIN(30/24-$C3;8/24);0))*(1-$F$1*3))
az *(1-$F$1*3) szorzó a szünet miatt van benne.
B3 értéke: 20:00
C3 értéke: 29:30 (de a cellában 5:30 látszik, ha dátumformátumra állítod a cellákat,akkor a 20:00-nál 1900.01.00 20:00, az 5:30-nál pedig 1900.01.01 05:30, azaz a következő nap) -
ulrik19
tag
válasz
VANESSZA1 #6128 üzenetére
a legegyszerűbb módszer: írd azt munkaidő végének, hogy 30:00 (azaz 24+6, vagyis az elszámolás szerinti nap 30. órája)
a képletet pedig annyival kell korrigálni, hogy az éjszakás képletben a 24/24 helyett 30/24 kell, és a 2/24 helyett 8/24.a 45 perces elszámolásra a legegyszerűbb módszer, ha a 45 perc arányos a 8 órával (pl. 4 órás munka esetén a fele) és arányosan elszámolni a műszakok között.
ilyenkor simán hozzá kell írni a képlethez ezt a szorzót: *(1-$F$1*3)
ami 0 esetén 0 marad, egyébként levonja arányosan a szünetet. Azért van 3, mert 8 órára van megadva, vagyis 1 napra 45 * 3 perc jut. (és ugye minden szám mértékegysége 1 nap) -
ulrik19
tag
válasz
VANESSZA1 #6125 üzenetére
az a nap ugrása miatt van, mert adott napon nem lehet 22-től 6-ig dolgozni, mert az éjfél utáni rész már a következő naphoz tartozik. (legalábbis a mostani logika szerint)
hogy legyen akkor? átalakítható ehhez a modell. Csak legyen egyértelmű.
pl. 0-6 óra közé eső rész az előző naphoz tartozzon? de ha valaki mondjuk 3-kor kezd, akkor?
egyébként számviteli szempontból hova kell sorolni? (főleg, ha hónap utolsó napjáról van szó)
-
ulrik19
tag
válasz
VANESSZA1 #6123 üzenetére
gondolom a bérelszámolásnál az sem mindegy, hogy melyikből vonod le.
én arányosítanám, tehát:
megnézném az össz óraszámot (a 3 oszlop összege), majd az adott műszakok arányában felosztanám a 45 percet. Ez a kereszthivatkozások miatt csak segédoszlopokban mehet (valahol a mostani 3 oszloptól jobbra)
legyen pl. E3-ban a délelőtti, F3-ban a délutáni és G3-ban az éjszakai óraszám:
akkor (ledolgozott munkaidőtől függetlenül 45 percre nézve):
korrigált de. = E3-F1*E3/(E3+F3+G3)
korrigált du. = F3-F1*F3/(E3+F3+G3)
korrigált éj. = G3-F1*G3/(E3+F3+G3)akkor (ledolgozott munkaidő arányában, 8 órára adott 45 percre nézve):
korrigált de. = E3-F1*E3/(E3+F3+G3)*(E3+F3+G3)/(8/24)
korrigált du. = F3-F1*F3/(E3+F3+G3)*(E3+F3+G3)/(8/24)
korrigált éj. = G3-F1*G3/(E3+F3+G3)*(E3+F3+G3)/(8/24)egyszerűsítve:
korrigált de. = E3-F1*E3/8*24
korrigált du. = F3-F1*F3/8*24
korrigált éj. = G3-F1*G3/8*24de ezt még át kell gondolnom, mert így hirtelen ez jött, viszont gyanúsan egyszerű lett a képlet
-
ulrik19
tag
válasz
VANESSZA1 #6123 üzenetére
egyrészt: ha két műszakot érintően dolgozott, akkor gondolom nem kétszer vonnád le (vagy igen?)
másrészt: ha nem pont 1 műszaknyit (8 órát) dolgozott, akkor a 45 perc arányosan több vagy kevesebb? (másképp kérdezve, lehet azt mondani, hogy 1 munkaórára 45/8 perc jut?) -
ulrik19
tag
válasz
VANESSZA1 #6119 üzenetére
legyen:
B oszlopban a munkaidő kezdete
C oszlopban a munkaidő vége
aktuális sor jelen esetben: 3.
ekkor:délelőtt =HA(VAGY($B3="";$C3="");"";HA($B3<14/24;MIN(14/24-$B3;8/24);0)-HA($C3<14/24;MIN(14/24-$C3;8/24);0))
délután =HA(VAGY($B3="";$C3="");"";HA($B3<22/24;MIN(22/24-$B3;8/24);0)-HA($C3<22/24;MIN(22/24-$C3;8/24);0))
éjszaka =HA(VAGY($B3="";$C3="");"";HA($B3<6/24;MIN(6/24-$B3;6/24);0)-HA($C3<6/24;MIN(6/24-$C3;6/24);0)+HA($B3<24/24;MIN(24/24-$B3;2/24);0)-HA($C3<24/24;MIN(24/24-$C3;2/24);0))magyarázat:
a VAGY(B3="";C3="") csak azért van benne, hogy ha bármelyik üres, akkor nincs értelmes adat, maradjon üresen a cella...délelőttnél:
a 14/24 jelzi, hogy mikor van vége a délelőttös műszaknak (a teljes nap arányában), a 8/24 pedig azt jelzi, hogy a műszak maximális hossza 8 óra.
délután: mint délelőtt, de 22/24-ig tart, szintén 8/24 műszakhosszal
éjszaka: két részből áll: 6/24-ig max 6/24 hosszal és 24/24-ig max 2/24 hosszal.remélem, érthető lett
fontos, hogy a munkaidő eleje és vége IDŐ formátumú legyen, ha benne marad valahogyan dátum (ami lehet, hogy a formázás miatt éppenséggel nem látszik, de az értéke mégis az), akkor nem fog működni. (ilyenkor a cella számértéke 1-nél nagyobb lesz, ha minden jó, akkor 0 és 1 közé eső szám, ugyanis a "mértékegysége" az 1 nap)
-
ulrik19
tag
a DateLastAccessed igen, de a DateLastModified csak akkor, ha mentettél is.
de gondolom, az adott file utolsó hozzáférése az, amikor létrejött.
megnyitni csak egyszer nyitod meg, itt a kódban (gondolom kétszer nem importálsz)
viszont akkor a
Sheets("Data").Range("A47") = adatfile.DateLastModified
sort vidd fel az open elé (különben a pár pillanattal korábbi megnyitást jelzi) -
ulrik19
tag
-
ulrik19
tag
válasz
VANESSZA1 #6086 üzenetére
Nekem sajnos csak office2000 van fent, ezért az általad felrakott .xlsx-et csak openoffice-szal tudtam megnyitni, de gyanítom abban is hibásan jött le. Van ott ugyan egy táblázat, de nincs benne egy darab képlet sem. A "főösszegek" meg nem tudom, hogy jöttek ki. (ilyesmit látok az F oszlopban: 3,85 - 4,20 - 4,30 stb., illetve a táblázatban 1-esek itt-ott, a 11-13 sorokban meg 0-1 közötti számok...)
Ha felrakod 2000-es verzióban is, akkor meg tudom nézni. (feltöltve, vagy az adatlapomon látható mail címre)
-
ulrik19
tag
válasz
VANESSZA1 #6081 üzenetére
de tudsz egymásba ágyazni többet is bőle (3 kimenetelnél még belefér)
legyen B1-ben az általad beírt "aktuális" kód:
=HA(B1=C1;R1;HA(B1=C2;R2;R3))vagyis ha a B1-ben az 1-es kód van, akkor R1 értéket ad vissza,
ha 2-es kód, akkor R2-őt, egyébként R3-at.Picit bővítve:
=HA(B1=C1;R1;HA(B1=C2;R2;HA(B1=C3;R3;"Hibás kód")))vagyis, ha egyiknek sem felel meg, akkor "Hibás kód" szöveg jelenik meg.
-
ulrik19
tag
válasz
VANESSZA1 #6079 üzenetére
Nem értem a gondot...
Három kódod van: C1, C2, C3
Három szorzatod lesz (az alapján ahogy írtad): R1, R2, R3Ezek közül kell az egyikre hivatkozni, egy másik cellában? Pl. B2-be tenni, ha a kiválasztott kódot a B1-be írod? Ha igen, akkor ez sima vlookup (fkeres), vagy ha tuti 3 sor lesz, akkor néhány egymásba ágyazott ha() is megoldja.
-
ulrik19
tag
válasz
Fire/SOUL/CD #6071 üzenetére
Na igen, van ez így néha
Nálam (és Pulsarnak otthon) lehet csak azért működött, mert nem az eredeti szerverről létrejött xls-sel próbálkoztunk, hanem az adott file már meg lett nyitva excel-lel, és el is lett mentve máshová... Persze nem biztos. Sőt, szerintem én egy saját magam által elmentett file-lal dolgoztam, mert nem is érdekelt mi a tartalma, csak néztem, hogy megy-e, vagy nem (a filenév stimmelt csak, excelben hoztam létre egy ilyen fájlt)
Persze ez nem zárja ki, hogy más gubanc is lehet
vagy inkább
-
ulrik19
tag
válasz
Fire/SOUL/CD #6069 üzenetére
csak a 2000 van fent...
Szerintem (ahogy írtam lejjebb), azért nem futott az első kód, mert a kérdéses xls-t nem officeból hozták létre (ergo nem hiszem, hogy a dokumentum adatokat is belerakta a progi), hanem egy szerver, valamilyen excel csatolóval, de lehet, hogy sima html formátumban.
A második variáció magához a file-hoz, file szinten nyúl hozzá, ott bármilyen dokumentum lehet, nem csak xls.
-
ulrik19
tag
válasz
Fire/SOUL/CD #6066 üzenetére
Na igen, lehetnek ilyen dolgok. Bár konkrétan ez a kód nálam (office2000 alatt) rendesen futott...
-
ulrik19
tag
legördülőben egyszerre csak egy érték választható.
ha a klikkelés eseményhez olyan eljárást rendelsz, ami nem felülírja a cellát, hanem a tartalmához hozzáfűzi az újonnan választott értéket, akkor szépen sorban belekerülnek a kiválasztott értékek.
konkrétabb javaslathoz látni kellene a fájlodat.
ha a választási lehetőséget mindenképp egyszerre kell megoldani, akkor másik vezérlő(ke)t kell alkalmazni.
-
ulrik19
tag
válasz
animatrix11 #6041 üzenetére
Egyszerre? Mármint egy időben? Nem hiszem.
-
ulrik19
tag
ez kell bele valahol a sub elején:
Dim adatfile As Variant, FSO As Variant
Set FSO = CreateObject("Scripting.FileSystemObject")
Set adatfile = FSO.GetFile("c:\Production_Daily.xls")és a dátumos sort erre módosítani:
alapfile.Sheets("Data").Range("A47") = adatfile.DateCreated -
ulrik19
tag
válasz
Fire/SOUL/CD #6030 üzenetére
Creation date (kis d) működött, az office helpben is így szerepel.
-
ulrik19
tag
valamiért az az excel, amivel ott dolgozol, nem tartalmazza (ezek szerint) a "Creation date" tulajdonságot, ezért jelez hibát.
Próbáld ki szerintem a .BuiltinDocumentProperties.Item(1).Value módszerrel (ahol az indexet 0-tól viszed, amíg nem jelez hibát, és figyeled, melyik adja vissza a jó értéket.
Az is lehetséges, hogy mivel a kérdéses xls-t egy külső (gyanítom nem office) program hozta létre, nem tette bele a file-leírásba ezeket a tulajdonságokat... Ha így van, akkor más megoldás kell. Méghozzá valamilyen fso (FileSystemObject) módszer.
-
ulrik19
tag
rendezd sorba ABC szerint, ahol az "utángyártott" vagy "gyári" kifejezés van. így egymás után kerülnek az egyformák.
vagy ha ez nem megoldható, mert nincs ilyen, vagy össze-vissza van a szöveg, valahogy "kódold" be 1-es legyen az utángyártott, 2 a gyári. (pl. ha tényleg minden második utángyártott, akkor kezdd 1-gyel az A1 cellában, majd alá képlet az A2-be: =3-A1... ezt lemásolva minden másodikban 1 lesz, egyébként 2. Ha ezt sorbateszed, akkor megint az egyformák jönnek egymás után.
-
ulrik19
tag
válasz
Delila_1 #6014 üzenetére
igen, én is finomítottam még egy kicsit a kódon
(érdemes használni a Set-et)
Sub masolas_adat()
Dim alapfile As Workbook, adatok As Workbook
Set alapfile = ThisWorkbook
Set adatok = Workbooks.Open("C:\Production_Daily.xls")
alapfile.Sheets("Data").Range("A47") = adatok.BuiltinDocumentProperties("Creation date").Value
adatok.Sheets(1).Columns("A:G").Copy
alapfile.Sheets("IDE_MASOLD").Range("A1").PasteSpecial Paste:=xlValues
adatok.Close
End Sub -
ulrik19
tag
válasz
Delila_1 #5996 üzenetére
Az activeworkbook azért nem biztos, hogy jó, mert a makró nem abban a file-ban fut, aminek a dátuma kell, és nem biztos, hogy a dátum lekérdezésekor éppen az az aktív. Persze lehet úgy alakítani a kódot, de akkor már egyszerűbb egy direkthivatkozás: workbooks("filenév.xls")
-
ulrik19
tag
válasz
Delila_1 #5994 üzenetére
Hú, nem tudom, jól értem-e amire gondoltál. De szerintem az alap excel file-hoz nem tud "hozzányúlni", mert egy totál független programból jönnek szerintem az adatok (adat exportálás excel formátumban menüpontszerűségből), vagyis nemhogy makrót, de még csak képletet, értéket (totál semmit) nem tud beszúrni.
Az sem kizárt, hogy igazából egy html formátum jön ki xls kiterjesztéssel
(egyébként a Date() és Now() mindig az adatkiolvasás időpontját és/vagy napját mutatná, nem a file létrejöttét. vagyis azt hiszem)
-
ulrik19
tag
válasz
Delila_1 #5988 üzenetére
húha, egyre inkább nem értem
ha mindig az abszolút eredeti file-ból futtatja ezt a kódot, akkor mindig ugyanazon a file-néven fogja elmenteni (mert ugye a létrehozási dátum nem változik)
ha mindig az újonnan létrejött file-ból futtatja, akkor meg egyre hosszabb filenév lesz, mert mindig hozzáfűzi a dátumot.
-
ulrik19
tag
válasz
Delila_1 #5986 üzenetére
Persze-persze, az világos. Az logika nem világos nekem, hogy mire fog menni az így kialakított filenevekkel. (mármint azért, mert ugye egy adott file neve annak a file-nak a létrehozási dátuma lesz, amiből létrehozták. Mert ha mindig az aktuális dátum idő lenne benne, azt még érteném
)
-
ulrik19
tag
válasz
ulrik19 #5980 üzenetére
és hogy teljes legyen a kép, ezeket lehet lekérni
Title
Subject
Author
Keywords
Comments
Template
Last Author
Revision Number
Application Name
Last Print Date
Creation Date
Last Save Time
Total Editing Time
Number of Pages
Number of Words
Number of Characters
Security
Category
Format
Manager
Company
Number of Bytes
Number of Lines
Number of Paragraphs
Number of Slides
Number of Notes
Number of Hidden Slides
Number of Multimedia Clips
Hyperlink Base
Number of Characters (with spaces)(word-del együtt elvileg)
-
ulrik19
tag
válasz
VANESSZA1 #5979 üzenetére
Lehet: Beszúrás/objektum/Létrehozás fileból...
ott kiválasztod a file-t, és azt is, hogy csatolja (ha módosítod a word doksit, akkor az excelben is a módosított fog mindig látszódni), vagy ágyazza be (ilyenkor a beillesztéskori állapot megmarad, hiába írod át a .doc-ot később) -
ulrik19
tag
válasz
Delila_1 #5971 üzenetére
Még egy kis szőrözés
(bocsi érte)
1) elegendő lenne így is:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
If CheckBox1.Value Then
masolas_adat
End If
reogitesreceiving
reogitesvisual
reogitesquicktest
reogitesfct
Application.ScreenUpdating = True
End Sub2) de ha mégis szükséges az application.run, akkor nem muszáj zárójelet használni az argumentumnál, mert nincs visszatérési érték. (de ez már tényleg csak szőrszálhasogatás
)
-
ulrik19
tag
válasz
ArchElf #5940 üzenetére
hmmm, én nem ismertem ezt a mókát, de jópofa dolog.
arról van szó, amikor egyszerre akarok sok sorban lévő adattal dolgozni, és kell mondjuk egy végösszeg (ami mondjuk összegez egy sorban néhány cellát, majd ezeket kell soronként összegezni).
pl. vannak termékek egymás alatt, az oszlopokban a heti forgalmak.
kell a totál árbevétel. akkor pl. csinálok minden sor végén egy összesítést, majd ezeket az utolsó sorban összegzem.
de, megy ez a CSE (cltr-shift-enter) módon, hogy az adatokat tömbként kezelem.
mondjuk így:
A oszlop: terméknevek
B oszlop: 1. hét
C oszlop: 2. hétösszegző képlet: =SZUM(B1:B100+C1:C100)
ha ennek a végén entert ütsz, hibát jelez, de ha CSE-t,
akkor ott az eredmény.
a szum() helyett lehet bármilyen összegző függvény
(átlag, szórás stb),
az argumentum lehet összetett is,
pl. =SZUM(B1:B100+C1:C100*D1:D100)
itt a B-hez hozzáadatom a C és a D szorzatát.
tovább lehet ezt bolondítani egy HA()-val is
pl.=SZUM(HA(A1:A100="bélyeg";B1:B100+C1:C100*D1:D100))
amikor csak a bélyeg-eket összesíti.
egyébként képletnél {=...} jelenik meg, ebből látszik,
hogy tömbről van szó. -
ulrik19
tag
Kell hozzá a Microsoft ActiveX Data Objects 2.8 Library (Tools/References).
Értelemszerűen adatbázisnév, felhasználónév és jelszó a ConnectionString-ben. Illetve ugyanitt meg kell adni az adott MySQL ODBC driver-t. (Nálam 5.1, de az adott gépen persze lehet más. Ha rosszat adtok meg, nem találja meg.)
Ebben a példában 3 mezőt ad vissza a lekérdezés, aztán minden visszaadott adatot kinyom az első sheet-re. Profin persze kellene bele hibakezelés stb.
Option Explicit
Public conn As ADODB.Connection
Public rs As Recordset
Public sh1 As Worksheet
Public SQL As String
Public Sub mySQL_kapcsolat()
Dim c As Integer
Set sh1 = Excel.Worksheets(1)
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost; DATABASE=adatbazisnev;UID=anonymus;PWD=; OPTION=3"
conn.Open
SQL = "select * from tbl_tablanev"
rs.CursorLocation = adUseServer
rs.Open SQL, conn
rs.MoveFirst
c = 1
Do Until rs.BOF Or rs.EOF
sh1.Cells(c, 1).Value = rs.Fields(0)
sh1.Cells(c, 2).Value = rs.Fields(1)
sh1.Cells(c, 3).Value = rs.Fields(2)
rs.MoveNext
c = c + 1
If rs.EOF Then
rs.MoveFirst
Exit Sub
End If
Loop
End Sub -
ulrik19
tag
Ti egyről beszéltek egyébként? Mert nekem úgy tűnik, Feltételes formázás vs. Makróikon a "téma". Vagy valamit rosszul olvasok?
Új hozzászólás Aktív témák
Hirdetés
- Bontatlan - BATTLEFIELD 1 Collectors Edition - Játékszoftver nélkül
- Windows 10/11 Home/Pro , Office 2024 kulcsok
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Vírusirtó, Antivirus, VPN kulcsok
- Eladó steam/ubisoft/EA/stb. kulcsok Bank/Revolut/Wise (EUR, USD, crypto OK)
- Frederick Forsythe: Isten ökle (nem olvasott)
- HGST HUH721010AL5200 10TB 7.2k SAS HDD, DELL branded, nettó 38000Ft + ÁFA, 1 év garancia
- ÁRGARANCIA! Épített KomPhone Ryzen 5 5600X 16/32/64GB RAM RX 7600 8GB GAMER PC termékbeszámítással
- Bomba ár! Dell Latitude 7420 - i7-1185G7 I 16GB I 512SSD I HDMI I 14" 4K I Cam I W11 I Garancia!
- Epson Expression 12000 XL Nagyformátumú A3 szkenner
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest