Az „Excel” fórum célja, hogy keretet adjon az Excel felhasználók széles táborának tapasztalataik megosztására, és lehetőséget a segítséget kérőknek. Az alábbi összefoglaló azért készült, hogy segítse a helyes kérdésfeltevést.
– Írd le szabatosan a problémát. Úgy fogalmazz, hogy ne csak te magad, de a szakértő is megértse, mire szeretnél választ kapni.
– Írd le, hogy milyen verziójú Excellel dolgozol. (Vagy ha nem – ill. nem csak – Excel, akkor micsoda?)
– Írd le, hogy milyen úton indultál el, és hol akadtál el rajta.
– A kérdés megértése szempontjából sokat segíthet, ha feltölteszt egy képet, amin látszik, hogy mit szeretnél, vagy illusztrálja azt.
– Még jobb, ha feltöltesz egy minta munkafüzetet valahová (pl. data.hu). Feltöltés előtt távolítsd el belőle a nem publikus adatokat.
– Ha a feladat jellege olyan, célszerű az "előtte" és "utána" állapotokat bemutatni. (Miből kellene csinálni mit?)
– Ha VBA kódon kell javítani, másold be a releváns kódrészt. Rövid kód mehet hozzászólásba, hosszú kód inkább ide: http://pastebin.com/
– Ha valami nem úgy működik, ahogy kellene, add meg a rendellenes viselkedés jellemzőit, a hibaüzenetet, és a hibát okozó programsort.
Ezt VBA-val úgy készítettem el, hogy egy táblázaton végigmegy egy ciklus és a táblázatban szerepel a csatolmány elérési útja is. (és minden egyéb ami kell a levélküldéshez a VBA számára - mint levéltörzs, tárgy, cc, stb...)
Csak még egy kérdés a körlevélhez... Lehet hogy inkább Outlook funkcióra vonatkozik, de egy olyan kérdés merült fel, hogy ha van excelben egy email címlista és mellette még egyedi doksi mellékletek, lehetne-e csoportosan emailt küldeni ez alapján úgy, hogy adott címzettnek szólóan a rá vonatkozó egyéni doksi melléklettel automatikusan küldözgesse ki a rendszer az excel lista alapján amit kell? Magyarul, ne kelljen a titkárnőnek 150 emailt külön megszerkeszteni és egyenként elküldözgetni.
Köszönöm a segítséget! Bár kicsit szégyellem magam, hogy 25 év alatt erre nem jöttem rá. Volt már máskor is problémám ebből, akkor is a csillag karakter kavarta fel az életem. Nem gondoltam volna, hogy a keresésnél mint helyettesítő karakter éli az életét, nem pedig mint csillag. Nagyon hasznos volt a tájékoztatód!
A 4. paraméter szabályozza, hogy pontos egyezőséget keresünk vagy "közelítőt".
A 0 vagy HAMIS pontos egyezőséget keres, az 1 vagy IGAZ közelítőt. Mit jelent a közelítő érték:
Ahhoz, hogy a közelítő keresés (avagy tartományban keresés) működjön, a keresőtábla keresési oszlopának emelkedő sorrendben kell lennie, pontos egyezés keresése esetén ez nem szükséges. Közelítő egyezés keresése esetén azt az értéket kapjuk vissza, amely még nem nagyobb a keresési táblában szereplő értéknél. Ezt ellenőrizhetjük úgy, hogy a harmadik paramétert 1-re -azaz magára a keresési oszlopra állítjuk.
Pl. van egy ilyen táblánk:
Az FKERES(56;B2:C7;2;1) képlet eredménye 3, mivel 56 nem nagyobb 75-nél, vagyis az 55 és 75 közötti tartományba esik, ezért az 55-höz tartozó értéket kapjuk vissza a C oszlopból. A B oszlopban az adott érdemjegyhez tartozó alsó pontérték határát kell megadni.
Ez így kiválóan működik, ha számokat kell keresnünk.
Esetedben viszont a keresést szövegben kell végrehajtani. Itt már előjönnek a szöveges keresés speciális szabályai:
1. A legfontosabb a csillag (*) ugynevezett helyettesítő/joker karakter. Mit jelent ez? A csillag helyettesíthet akárhány és akármilyen karaktert!!!
Pl. a.) *ház keresés a ház-ra végződő szavakat találja meg, legyen az áruház vagy nyilvánosház vagy beruház!
b.) ház* keresés a ház-zal kezdődő szavakat találja meg, pl. házfal, háztető, házaló!
c.) *ház* minden szót megtalál, ami tartalmazza a ház betűcsoportot, pl. beruházás, áruházi, átruházás!
Az FKERES pedig mindig a legelső találatot adja vissza.
Esetedben tehát a legelső olyan találatot, amely a szövegedben az első * előtti szöveggel kezdődik. Ez a "furcsa" viselkedés magyarázatának egyik része. TEHÁT A * helyett használj más karaktert (pl. x ) a méretek jelzésénél.
2. A probléma másik része a szövegek sorbarendezésének szabályából adódik. Amint a 4. paraméternél láttuk, a közelítő egyezéshez sorba kell rendezni a keresési táblát.
Mivel a méret tábla is szöveg, a benne levő számok szövegesnek minősülnek, ráadásul a rövidebb szöveg van előrébb:
Eredeti Sorba rendezett (már X-t használva)
Pontos egyezésnél egyértelmű amit keresünk -> vagy van, vagy nincs.
Közelítő egyezésnél viszont amint látod, pl a Durvalemez|1250X2500X11 méretnél a Durvalemez|1250X2500X10-et fogja megtalálni és az ahhoz kapcsolódó értéket adja vissza.
Ha a fentieket figyelembe veszed, akkor nem lesz "furcsa" a függvény viselkedése. Így alkották meg, alkalmazkodni kell hozzá a használat során. (fene essen a redmondi logikába....)
FKERES függvény szintaktikába bonyolódtam bele egy kicsit. Ugyanis, ha pontos egyezést szeretnék, akkor HAMIS értéket kell adjak „Tartományi keresés” értékének. De van olyan eset a példában, mikor ez nem működik:
1 példasor: HAMIS érték esetén jó eredményt kapunk (így kellene működni)
2 példasor: IGAZ érték esetén hibás eredményt kapunk (így kellene működni)
3 példasor: HAMIS érték esetén hibás eredményt kapunk (nem így kellene működni)
4,5,6 példasor: IGAZ és HAMIS érték esetén is jó eredményt kapunk (nem így kellene működni?)
Van valakinek ötlete, hogy ez miét van így?
Azt szeretném, hogy HAMIS esetén mindig a helyes eredményt adja, tehát ha van adat, akkor azt, ha nincs akkor a #HIÁNYZIK hibaüzenetet.
A feltételes formázás képlete, ha a C1 cellában van a beszínezendő cellák száma:
=OSZLOP()<=(OSZLOP($C1)+$C1)
Ezután kijelölöd a tartományt - addig az oszlopig ameddig szeretnéd a színezést.
A tartomány sorait húzhatod lefelé! Minden sorban annyi cellát fog beszínezni a 4. oszloptól kezdve, amennyi értéket a C oszlop adott sori cellájába írtál. - ha a C5 érteke 2 akkor D:E, ha 5 akkor D:E:F:G:H oszlopok 5. sora színeződik.
A képlet mindig a megadott cella sorában érvényesül.
Van olyan feltételes formázási trükk, amivel adott számú cellát tudok kijelölni (kiszínezni) egy sorban egy másik cella értéke alapján? Értsd, ha a C4 cellában 8 szerepel, akkor a D-E-F-G-H-H-I-J-K oszlopok 4. sorában található cellákat színezze, mondjuk, szürkére, ha C5 cellában pedig 4 szerepel, akkor a D-E-F-G oszlopok 4. sorában található cellákat színezze.
Off: Nem érthetően írtam sajnos. A C12-C15 cellákba a minden hétfőn leolvasott értéket kell beírni. Az I12-I15 cellákban kiszámítja az aktuális leolvasás és az előző hétfői állapot különbségét. (heti fogyás)
Az N oszlopban a havi minimum, maximum; és átlag számítás van.
Miért nem úgy számolod ki N15-öt,hogy =HA(SZUM(I12:I15)=0;0;ÁTLAGHA(I12:I15; "<>0")) (Persze a Szum függvénybe írhatod a C12:C15-öt is.)
Off: Az első sorban írtakat egyébként nem értem. "C12:C15 cellákba heti (minden hétfőn leolvasott) fogyasztási adatokat írok. I12:I15 cellákban a heti fogyasztási összesítést számol ki." Hogy csinálsz 4 cellából másik 4 cellába fogyasztási összesítést? Persze a dolog érdeme szempontjából ezt nem szükséges tudnom.
Olyan excelt tábláról hallottatok már, amiben a ki törlünk egy cella tartalmat utána automatikusan vissza íródik? Milyen trükk lehet ez? Egyszerűen így javítani sem lehet benne.
Ha már módosítani akarsz, elsőként a felépítést érdemes megfordítani.
Napból sok lesz, míg az egyes értékekből naponta egyforma mennyiség (fogyasztott és betáplált óra állás, a kettő különbségei, és az elszámolás).
Az első oszlopban legyen a dátum, mellette az 5 adat, amikből hármat képlet számít ki.
Sokkal könnyebb lefelé gördíteni, mint oldalra.
Ebben az esetben az utolsó rögzített adatnál mented a füzetedet, másnap nem kell keresgélni az új sort. A címsort rögzítheted, hogy az mindig látható legyen.
Én úgy látom, hogy a Dátumos oszlopokhoz is két adatot kellene a 3-4. sorba beírnod. Ha megfordítjuk a dolgot - mert a tárgynapot szeretnéd külön látni - akkor a B15 cellába bekerülhet a mai dátum a ma() függvénnyel.
A B17-18 cellákba pedig a Hkeres függvénnyel megkeresed a 3-4. sorba beírd adatokat.
Így minden nap frissül a B17-18 amikor beírod a napi adatokat.
Igazából csak lustaság miatt gondoltam. így ahogy megcsináltam működik tökéletesen de a lustaság nagy úr. Így csak egy helyre kellene írni az adatokat.
Van egy sor adatom ahol az értékek mellé manuálisan mellé van írva hogy "M"
nagyjából így néz ki:
A1=12M
A2=7,5M
A3=4,3M
és így tovább.
nekem ezeket a számokat összekéne adnom,viszont az "M" betű miatt ezt nem tudom SUM függvénnyel összeadni,és túl nagy a mennyiség ahhoz hogy az "M" betűket egyenként elkezdjem kitörölni.
=LEFT(A1;FIND("M";A1)-1)
ezzel a képlettel viszont eltudom tüntetni egy új sorban az M betűket az összesből,viszont a sum ezeket sem tudja összeadni,végeredménynek 0át ír.
Megpróbáltam így is: =Value(LEFT(A1;FIND("M";A1)-1)) , erre viszont azt írja hogy "A 12 nem értelmezhető számként"
így teljesen tanácstalan vagyok. Valaki tud megoldást a problémámra?
Mi oka van annak, hogy nem direktben a dátum alá írod be az adatokat?
Amit szeretnél az makróval oldható meg vagy Vkeres (esetleg Index - Hol.Van) függvényekkel és utána érték másolással, hogy ne változzon a napok változásával az érték.
A napelem termelésemet szeretném rögzíteni naponta de úgy, hogy csak egy cellába kelljen beírni az értéket és töltse ki egymás mellé dátum szerint az oszlopokba. megoldható ez? Csináltam egy screen shotot, hogy jobban érthető legyen.
Amennyiben csak a számformátum van pénznemre állítva, akkor sajnos nem műxik a képletes számolás. Ebben az esetben kell hozzá egy segédoszlop, amiben a pénznemek kiírva szerepelnek! Ehhez az oszlophoz kell beállítani a feltételt.
Üdv.
Ps. Nem is értem, hogy egy oszlopban miért állítgatjátok a pénznemek formátumát. Sokkal egyszerűbb és használhatóbb ha külön oszlopban van a pénznem.
A képletben figyelj rá, hogy az alap tartományt rögzítsd dollár jelekkel, a keresendő értéket nem, így a képletet húzhatod lefelé és oldalra is.
Az =1 azt jelenti, hogy akkor színezi a cellát, ha pontosan 1 alkalommal fordul elő a másik tartományban. Ha mindegy hányszor fordul elő, akkor >0 legyen a feltételben.
Feltételes formázást megtudok valósítani valósidőben? Konkrétan azt szeretném,hogy van 2 adathalmazom,a 2 halmazban vannak 100%osan megegyező adatok.
egy egyszerű példával szemléltetném mire gondolok
Munkalap1 adatai: A1: Alma A2: Körte A3: Citrom
Munkalap2 adatai: A1: Narancs A2: Alma
A3: Barack
Munkalap2ben,szeretném ha azok a cellák amiben az adat megegyezik a munkalap1 adataival azok kapnának egy színt amit előre beállítok. A példa alapján az A2es cella kapna egy színezést.
Igazad van, de én most egy programtáblázatot csinálok időpontokkal, eseményekkel és belépő árakkal. Sajnos úgy nem tudom összerakni, hogy az pénzösszegek egyszerűen csoportosíthatók legyenek.
Egy normálisan megtervezett táblázatban egy-egy oszlopon belül azonos típusú adatok vannak – az oszlopon belül nem keverednek az idők és a szövegek. Ebben az esetben sima SZUM függvénnyel összegezhetők az értékek.
A letöltéshez egy technikai javaslat. A Microsoft kicsit túlbiztosítja a letöltött fájlok kezelését. Ezért ahhoz, hogy használni tudd a letöltött fájlt, először az egérrel fölé kell állnod, és a jobb gombot megnyomva kapsz egy listát, ahol a lista alján a Tiltás feloldásához pipát kell tenned a jelzett helyre. Aztán ha majd megnyitod a fájlt, akkor még a makrók használatát is engedélyezni kell. Enélkül nem működne a program.
A mintában az a 10 sor és 16 oszlop szerepel, amit küldtél. De a program ezt rugalmasan kezeli. Tehát egyszerűen másod felül a saját adataiddal a mintát.
A használat a következő: Az utolső használt oszlop utáni üres oszlopban írj x-eket azon sorok mőgé, amiknek az adatait összegezni szeretnéd.
Ha megvan, akkor Alt + F8-ra elindul a program, és az utolsó használt sorod után 2 sorral kiírja a kiválasztott soraid összegeit. A kihagyott üres sorba ne írj semmit. Az üres sor azért kell, hogy a program tudja, meddig tartanak az adataid.
Ha kész vagy, és új összegzést akarsz indítani, akkor az x-eket tartalmazó oszlopban jelöld be az új válogatást. Legegyszerűbb, ha előbb törlöd a teljes oszlopot, aztán ikszelsz, hogy ne legyen tévedés.
Az alsó összegsort nem muszáj törölnöd, a proram mindíg ezek törlésével indít.
"de #NÉV? ezt irta ki nem tudom hol rontottam el."
Feltételezhetően ott, hogy nem magyar nyelvű az Exceled. Ha angol nyelvű akkor az angol függvény neveket kell használni. HA = IF, OSZLOP = Column,továbbá lehet, hogy a paraméter elválasztód sem pontosvessző hanem sima vessző.
3.) Ez a képlet húzható oldalra és lefelé a Munka2 munkalap A1:P10 tartományában. Ezzel elértük, hogy az egyesek helyett az oszlopoknak megfelelő - különböző értékek legyen a Munka1 munkalapon 1-et tartalmazó cellák "tükörképén". Ezeket így már könnyedén meg tudjuk számolni!
4.) Mivel 16 oszlopunk van, ezért a Munka2 munkalap R1 cellájától lefelé kitöltjük 1-16-ig a cellákat.
5.) Válasszuk ki az első három sort "gondolatban". Ebben az esetben a S1 cella képlete:
=DARABHA($A$1:$P$3;$R1)
Ezt a képletet húzzuk le az R oszlopban, amíg vannak adatok. Az oszlop megmutatja, hogy az egyes oszlopokból hány egymás alatti előfordulás van a sorokban. Most a példában 0-3 közötti számokat fogunk kapni.
6.) Már "csak" rendezni kell az értékeket a jobb áttekintés érdekében. Ezért az U1 cellától 0-3 értékeket írjuk be az U oszlopba.
7.) A V1 cella képlete =DARABHA($S$1:$S$16;$U1), amit lehúzva a V oszlopban megkapjuk, hány egymás alatti 1-es van a Munka1 munkalapon.
Megjegyzések:
8.) Természetesen nem csak összefüggő 3 (és nem csak 3 ) sort választhatunk ki, akkor az S oszlop képlete a következőképpen változik: =DARABHA($A$1:$P$1;$R1)+DARABHA($A$3:$P$3;$R1)+DARABHA($A$5:$P$5;$R1)
Ahány sort kiválasztasz, annyiszor kell a DARABHA függvény eredményét összeadni. Ez a képlet is húzható lefelé.
9.) Ha több oszlopunk van, akkor természetesen a Munka1 R oszlopát a tényleges oszlopoknak megfelelően kell kitölteni.
10.) Ha több sort választunk és nem hármat, akkor az S oszlopban levő legnagyobb értékig kell kibővíteni az U oszlop számait.
11.) Mivel képletekkel dolgozunk, a Munka1 munkalap bármely változása - 1-esek áthelyezése - látszani fog a Munka2 munkalap V oszlopában.
Hát egy bonyolult makróval talán megoldható. Te rákattintgatsz a kijelölni kívánt sorok első cellájára. Ekkor a makró feljegyzi valahova (egy segédoszlopba) a kattintásaidhoz tartozó sorok sorszámát, majd mondjuk az Enter megnyomása jelzi a programnak, hogy vége a kiválogatásnak. És ekkor végigmegy a feljegyzett sorszámkon, és összeszámolja oszloponként az 1-esek számát. És ezt valahova felrja neked. Ezekhez persze tudni kell, hogy vannak szabad sorok és szabad oszlopok.
A sorszám volt a kérdés. A dátumot (amit ilyen alakban vesz át nn/hh/éééé), át tudtam leírás alapján a lent mutatott mergefield (alt+F9) módszerrel formázni, azt csak példának hoztam fel, hogy nincs-e olyan módszer a sorszámokra is. De valószínű azzal működik amit írtál, hogy mezőnevek után bármi beírható. Vmit elgépelhettünk a kolleganővel, csak nem vettük észre…
Sziasztok még egy kis segitség kellene.Van egy táblázatom sok oszlop és sok sorbol áll most csak A-P oszlop és 1-10 sort
irtam be.A táblázatban csak 1-es és nulla szám szerepel.Arra kellene nekem egy megoldás,hogy a kijelölt sorokban hányszor fordul elő egymás alatt lévő számok.
Példa: az 1-2-3.sorban hányszor forul elő hogy minden oszlopban 3db 1-es vagy 2db 1-es vagy 1 db 1-es vagy 0 db 1-es van.
Nem csak az 1-2-3 sorban akarom az eredményeket hanem többen is példa 2-4-6 vagy 3-9-10 és igy tovább.
Vajon ez kivitelezhető-e excelben? Reméllem érthetően irtam le.
Még annyit,hogy akár 5-6 sort is tudjak egyszerre megvizsgálni.
Tehát jól sejtettem, hogy nem a számok után írt pontokkal volt a gondod, hanem a dátum formázással. Ez egy nagyon kellemetlen jelenség a Word körlevelet kezelő én.
Gondolom, a mergefield nélkül az amerikai dátumformát erőltette, bármi mást akartál.
A hibákról nem tudok sajnos mit mutatni, mert a titkárnővel az ő gépén szórakoztunk. Talán majd lesz rá alkalom még megnézni, de a napokban most biztos nem.
Sziasztok. Azt meg tudom valósítani excelben,hogy 2 cella tartalmát 1 cellában összevonjam?
Arra gondolok,pl az A1es cellában ez áll: Tóth , a B1es cellában pedig az hogy: László összetudom vonni valamilyen módon ,hogy a c1es cellában pedig Tóth Lászlót írjon,szóközzel a 2 cella tartalma között?
Amihez ezt használnám,az nem nevekből áll,és nem is feltétlen egymás mellett lesznek azok a cellák amik tartalmát összeszeretném vonni.
Ott valami más lehetett a hiba. A körlevélkezelőben a Word minden szöveget békénhagy, ami nem mezőkód. Meg tudnád mutatni a hibaüzenetet? Esetleg a körlevél hibát okozó részletét? Persze fiktív adatokkal.
Semmi mergefield, símán beírod a pontot a mezőkód után a szövegbe. Nálam ez így szokott kinézni mezőkódokkal: «Vezetéknév»«Utónév»«Évfolyam».«Osztály» osztályos tanuló, ami a kész levélben íg jelenik meg: Gipsz Jakab11.D osztályos tanuló
Körlevélhez az adatforrás excel táblájában található egy sorszám oszlop. A mezőit úgy formáztam egyedileg, hogy legyen a számjegyek után pont a magyar nyelv szabályának megfelelően.
Namost a Wordnek körlevél készítésénél, a neten olvasom, hogy csak natív formátumú adatokat ad át az Excel, ami elhagy minden cellaformázást.
Hogyan lehetne a körlevél dokumentumokba belevarázsolni mégis a pontot a számjegyek után? Nézegettem ezeket a mergefield mezőkódokat, de nem sok sikerrel. (Egyedül a dátum formátumra működött, mert oda konkrét példát is találtam…)
AZ Application.Calculation hívást korábban nem használtam, ezért nem tudtam, mi az optimális parancs. Az xlCalculationAutomatic valahogy mégiscsak működött, mert megoldotta a problémát, de azért át fogom írni az általad javasolt Application.Calculate parancsra. Az eddigiekből következik, hogy az xlCalculationManual paranccsal sem találkoztam még a korábbiakban. Nem volt szükségem képletek aktualizálására. A program, amin most dolgozom az első, ahol előbb hozom létre a képleteket, mielőtt a forrás munkalap megfelelő cellái feltöltődnek a képletek által használandó adatokkal. (És a sorrend nem is változtatható. Én elkészítem a "vázat", aztán két módon kerülnek adatok a forrás munkalapra. Először én olvastatom be programmal egy később megkapott külső fájlból az addigra rendelkezésre álló adatokat, majd mások, más helyen utólag írják be a további adatokat)
A beolvasás módja: Az általam használt beolvasó program megnyitja a beolvasandó adatokat tartalmazó külső munkafüzetet, és az ezen lévő egyetlen munkalap sorain végigmenve először beolvas egy azonosítókódot, amit megkeres az én rendszeremben forrásnak nevezett munkalapon (ezt szükségszerűen megtalálja, mert azonosak a szereplők, és a kód köti össze őket), majd a megfelelő oszlopok adatait egyenként bemásolja a helyükre. Ha jól sejtem, ezt nevezed direkt elérésnek.
Miután a program végez az adatok átmásolásával, akkor indítom el a sorrendbe rakást a képletekkel előkészített saját munkafüzetem munkalapjain. Kivéve természetesen a forrásnak nevezett munkalapomat. És itt jelentkezett a probléma, amiért először segítséget kértem. Ekkor derült ki, hogy bár az adatok a forrás munkalapon a helyükön voltak, a képletek még nem aktualizálódtak, ezért az elsőként rendezendő munkalapon nem történt meg a rendezés. Nem volt mit rendezni, mert az összes képlet adata még 0 volt.
Ekkor alkalmaztam a sorrendező ciklus elé beírva az Application.Calculation = xlCalculationAutomatic parancsot, ami azonnal érvényesítette a képleteket. Ennek ellenére át fogok térni javaslatodra az Application.Calculate parancs alkalmazására - Amit még egyszer köszönök -, lévén semmilyen tapasztalatom nincs ezzel a témakörrel kapcsolatban.
Jó hogy megtaláltad a hiba okát. Azonban egy apróságot megjegyeznék:
az Application.Calculation = xlCalculationAutomatic azt határozza meg, hogy a számítások milyen módon hajtódjanak végre. A parancs kiadása önmagában nem jelenti feltétlenül a számítások azonnali végrehajtását, az a legközelebbi képletváltozáskor lép életbe.
Azonnali újraszámolást az Application.Calculate utasítás eredményez.
Egyébként kérdés még az, hogy bárhol a programban használtad-e a Application.Calculation = xlCalculationManual utasítást, mert akkor csak kérésre számolódnak újra a képletek. (a futási idő csökkentésére szokásos a használata)
"Először beolvasok adatokat egy külső munkafüzetből"
A kérdés az, hogy milyen módon olvasod be? Lekérdezéssel vagy direkt eléréssel? Gondolom lekérdezéssel, akkor pedig figyelni kell arra, hogy a lekérdezés (querytable) BackgroundQuery tulajdonsága False legyen. Ebben az esetben a makró nem megy tovább mindaddig, amíg a lekérdezés folyamatban van. Ha ez a tulajdonság True, akkor anélkül fut tovább a makró, hogy a lekérdezés friss adatai "megérkeznének". Makrórögzítő nem feltétlenül foglalkozik a beállításával.
Azt így utólag nem tudom, mi frissítette a képleteket az első munkalap rendezése után. talán a 37897-es hozzászólásomban leírt sort parancs végrehajtása. Mindenesetre onnan kezdve már rendben volt a további munkalapok rendezése.
Köszönöm, de időközben megtaláltam a hiba okát. Nem írtam meg, és magam sem gondoltam, hogy egy másik modulban lévő programmal függ össze a hiba. Uganis az érintett munkafüzetben két egymásra épülő feladatot végzek el. Először beolvasok adatokat egy külső munkafüzetből, és azokat bemásolom egy "forrás" munkalapra. Ez nem vesz részt a rendezésben csak a használt 7 munkalapban lévő képletek innen veszik át az adataik egy részét.
Gynús lett, hogy időnként jó volt a működés, most már tudom, hogy akkor, amikor az adatbeolvasás után mentettem a munkafüzetet, majd később futtattam a rendező programot.
Általában nem így tettem, hanem közvetlenül egymás után indítottam őket. És emiatt a sorban első munkalap feldolgozásakor a képletek még nem érvényesültek.
Most a rendező program elejére beszúrtam egy a képlet frissítő parancsot, ami megoldotta a problémát: Application.Calculation = xlCalculationAutomatic.
Msgbox kiíratásnak az értelme az, hogy amíg leokézod, addig áll a program, telik az idő.
Értem én, hogy másodszorra már megcsinálja azt is, amelyiket előszörre nem... persze, hogy zavar (engem is így látatlanban), mert nem ez a normális működés.
Még egy (utolsó) gondolat(ötlet?): ha nem ciklusban csinálod, hanem csak egy munkalapot, azt megcsinálja vagy nem?
És lépésenkénti futtatásnál?
Végülis még felteheted kérdésként a MS tudástárba is a jelenséget. Valami oka biztosan van....
- msgbox-szal kiíratni, hogy épp melyik lapot akarná rendezni: Ez felesleges. Pontosan tudom. Ld. eltelt időkben az előtte lévő szám a munkalap nevének a része.
- Stop: Próbáltam, maradt a hiba
- Aktiválás: Próbáltam, maradt a hiba
- megnézni,hogy nincs-e valami szemét még a usedrange-ben: Ezt nem tudtam értelmezni. Mi lenne a szemét? Különösen annak fényében, hogy például a Fordított sorrendnél ugyanez a hiba nem az első, hanem a 7. munkalapon jelentkezik.
Azért köszönöm.
Egyelőre marad az első munkalapnál a rendezés ismételt elindítása.
Szia, köszönöm az ötletet. A munkalapok sorrendjének felcserélése után nem ugyanazon a munkalapon jelentkezett a gond, hanem amelyik elsőként került sorra. A korábbi első itt már rendben lett.
A rendező program így indul:
Sub Tagozat_sorrendezo()
Dim lapszam As Long ' stb.
lapszam = ThisWorkbook.Sheets.Count
For aktlap = 2 To lapszam ' Az első a teljes lista, de azzal most nem foglalkozunk, ezért a másodiktól kezdjük a sorrendezést. Tehát a mindenkori második kerül elsőként sorra
MsgBox "A tagozati adatok sorrendezése befejeződött!"
End Sub
Tehát ezek alapján semmi okát nem látom az első munkalap többitőleltérő viselkedésének.
Kérdezted még, hogy "Milyen tartományra hivatkozik az aktlapws változód?"
Az aktlapws az aktuálisan éppen sorra került munkalap. A sorrendezésnél az A2-től kezdve a teljes tartományt jelöli ki. Azért A2, mert két soros fejléc van, de ebből az első sor érdektelen, csak a 2. sor az érdekes
Esetleg próbáld meg a munkalapok sorrendjét felcserélni. Ha akkor is ugyanazon a munkalapon jelentkezik a gond, akkor azt érdemes alaposabban megvizsgálni.
Milyen tartományra hivatkozik az aktlapws változód?
Nem biztos, hogy segít neked, de én akkor jártam hasonlóan, amikor egy "újrahasznosított" (és .Clear-rel törölt!) munkalapon bennragadt egy szűrő. Nálam akkor egy sortörlő VBA-utasítás hagyott ki a törlésből szemre véletlenszerű sorokat, és szintén nem mindig ...
És ezután jött az újabb rejtély. Miután lefutott a program úgy, hogy a sorban elsőként érintett munkalapon a rendezés nem történt meg (és mindig ez, nem véletlenszerűen egyik, vagy másik), akkor ha újra elindítom a rendező makrót, akkor ezt is megcsinálja.
Lehetséges, hogy valami időzítési problma miatt nem működik rendesen az .Apply parancs? Meglátom, holnap megpróbálkozom egy DoEvent, vagy hasonló beírásával. De azért kellemetlen, ha van olyan programrészlet, amelyik hol így, hol úgy működik.
Most viszont van egy teljesen megmagyarázhatatlan jelenség a rendezéssel kapcsolatban. 7 munkalapot kell rendeznem lényegében azonos adatszerkezettel. A rendezéshez 5 mezőt használok, ebből 4 csökkenő sorrendben, az utolsó növekvőben rendez. Mind a 7 munkalapon ilyen adatok vannak a rendezendő oszlopokban. Vagy szám, vagy Nincs adat szöveg az egyikban, és #ÉRTÉK! a másikban. A rendezés célja többek közt éppen az, hogy ezek a hibás sorok a rendezéskor az elejére kerüljenek.
A 7 munkalap közül 6-ban teljesen rendben rendezi a sorokat a program, az egyikben következetesen nem.
A rendező részlet, amit egyiknél nem végez el, a következő. A fejlécsor a második, így az első rendezendő sor a 3. (bocs a hosszú változónevekért. Szeretem a beszélő elnevezéseket):
Kösz, most én is rákerestem ugyanott, és az AI nekem a szintais leírását követően ezt adja (előzőleg Wordbe másolvas, majd onnan ide):
The SortFields.Add2 method in Excel allows you to create a new sort field and return a SortFields object. This method can optionally sort data types with the specified SubField. Let’s break down the parameters:
...
Here’s an example of how you might use it to sort a table named Table1 on Sheet1 by Column1 in ascending order based on the SubField Population from Geography data types:
Az Excel VBASortFields.Add2 metódusa lehetővé teszi új rendezési mező létrehozását és egy SortFields objektum visszaadását. Ez a módszer különösen akkor hasznos, ha az adattípusokat egy almező-definíció alapján szeretné rendezni. Bontsuk le a részleteket:
expression: SortFields objektumot képviselő változó.
Key: Megadja a rendezés kulcsértékét.
SortOn (Nem kötelező): A rendezés alapjául szolgáló mező.
Order (Nem kötelező): Megadja a rendezési sorrendet.
CustomOrder (Nem kötelező): Megadja, hogy kell-e egyéni rendezési sorrendet használni.
DataOption (Nem kötelező): Megadja az adatbeállítást.
SubField (Nem kötelező): Megadja azt a mezőt, amely alapján rendezni kell egy adattípushoz (pl. Népesség földrajzi helyhez vagy Mennyiség készletekhez).
Megjegyzések:
Ez az API támogatja az almezők olyan adattípusok szerinti rendezését, mint a földrajz vagy a részvények.
A képletekkel ellentétben az almezők nem igényelnek szögletes zárójeleket a szóközök használatához.
Példa: Tegyük fel, hogy van egy Tábla1 nevű táblája a Munka1 lapon, és növekvő sorrendbe szeretné rendezni az Oszlop1 szerint a Földrajzi adatok almezőből származó populációja alapján. Ezt a következőképpen érheti el:
ActiveWorkbook.Worksheets("Sheet1").ListObjects("Table1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").ListObjects("Table1").Sort.SortFields.Add2 _ Key:=Range("Table1[[#All],[Column1]]"), _ SortOn:=xlSortOnValues, _ Order:=xlAscending, _ DataOption:=xlSortNormal, _ SubField:="Population" With ActiveWorkbook.Worksheets("Sheet1").ListObjects("Table1").Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
Ne feledje, hogy ez a módszer rugalmasságot biztosít az adattípusokat és almezőket érintő összetett rendezési forgatókönyvek kezelésekor. 📊🔍
Egy excel tábla rendezését vizsgáltam makrórögzítéssel, és a SortFields.Add2 formát adta ki. Próbáltam utánanézni, hogy mi ez, és azt találtam, hogy az Add2 használ egy új paramétert, aminek a neve "SubField" , amiről ezt írja a Microsoft: "Specifies the field to sort on for a data type (such as Population for Geography or Volume for Stocks)".
Namármost én ebből egy mukkot sem értek, ezért elkezdtem utánanézni, de nem találtam érthető leírást. Annyit viszont láttam, hogy néhányan nehezményezték, hogy egyes korábbi verziókkal ez az Add2 nem kompatibilis. Ezért a saját programomban helyette a 2 nélküli Add-ot használtam, és rendben műküdik.
De érdekelne a Subfield részletesebb magyarázata. Tudtok valami forrást, ahol utána lehet nézni? Nekem nem jött össze.
Egyszerű: Feltéve, hogy a B oszlop rendezett, ahogy a példád mutatja.
Ekkor az A oszlop 2. sorába beírsz egy 1-est.
Utána az A oszlop 3. sorába ezt írod: =HA(B3=B2;A2;A2+1). Majd ezt a képletet végighúzod lefelé a teljes listában, és ott lesznek az azonosítóid mindegyik mellett. Úgy, ahogy a mintádban látod.
Szeretnék segítséget kérni egy feladathoz: Van egy több ezer soros táblázatom, tartalmaz egy oszlopot amiben vannak ismétlések(ezek lehetnek számok és betűk is) [Azonos_elemek], azt szeretném elérni, hogy egy másik oszlopban az azonos elemek kapjanak egy egyedi számot. [Egyedi_azonosító].
A VKERES-nél elmondja, amit a FKERES-nél nem; összeollóztam :(
Ha a tartományban_keres argumentum értéke IGAZ, akkor a tábla első sorában szereplő értékeknek növekvő sorrendben kell állniuk: ...-2, -1, 0, 1, 2,... , A-Z, HAMIS, IGAZ; különben előfordulhat, hogy a VKERES függvény nem a helyes értéket adja vissza. Ha a tartományban_keres argumentum értéke HAMIS, akkor a táblának nem kell rendezettnek lennie.
Opcionálisan megadhatja az IGAZ értéket, ha a visszatérési érték kereséséhez közelítő egyezést szeretne előírni, vagy a HAMIS értéket, ha pontos egyezést. Ha nem ad meg semmit, az alapértelmezett érték az IGAZ, vagyis a közelítő egyezés.
Elnézést a sok egymás utáni posztért,de közben megtaláltam a megfelelő képletet amit keresek,ami majdnem tökéletesen műkődik,de van benne egy hiba valamiért. A Körténél azt az adatot írja ami a "Citrom"-hoz van megadva. ezt miért csinálhatja?
igen,mindenképp előrébb vagyok vele,viszont én a képlet után az eladott mennyiséget szeretném kapni. így ezzel a képlettel a TRUE előtt megadott értékű sorban lévő adatot kapom meg,mivel itt az 5 van megadva a képletben,ezért a kijelölt terület első oszlopában az 5.sorban lévő adatot kapom meg. Én nekem pedig arra lenne szükségem,hogy amelyik sorban megtalálta az "alma" kifejezést,abban a sorban az ötödik oszlopban lévő adatot kapjam meg. Ezt megtudom valahogy oldani?
Sziasztok. Olyan kérdésem lenne,hogy az megoldható e excelben,hogy a tábla a megfelelő adatokat beírja magának egy bemásolt adathalmazból.
Csatolok 2 fájlt egy egyszerű példával hogy egész pontosan mire gondolok.
Egy nagyon egyszerű dologról lenne szó,de az F-J sor celláihoz az adatokat készen kapom meg,és a teljesen véletlenszerű sorrendben vannak az adatok. pl a képen Alma,Körte,Barack stb.. sorrend van,a következőben már egy teljesen másik sorrend lép fel.
Tehát amiben a segítséget kérem,hogy képes legyen a tábla magától kikeresni hogy melyik sorban van az az adat amit keresek pl a C5ös cellához,ami most a J5ös cellában van,de következő alkalommal lehet a J8asban lesz,utána a J5ösben.
Elég bután sikerült elmagyaráznom,de lényegében valami kereső függvényre lenne szükségem,ami kikeresi melyik sorban van pl az Alma,és az adatokat onnan kitudja ezután keresni.
Kicsit megkésve mégis találtam megoldást arra a problémámra, hogy "létezik-e, hogy nincs visszaállítási lehetőség a VBA ablakok alapértelmezett elrendezésére?". Közzéteszem, hátha másnak is szüksége lehet rá.
Tudom, hogy nem mai a kérdés, de esetleg még egy tipp a korábbi megoldás mellé:
Én fel szoktam venni egy segédoszlopot, ami valahogy így néz ki:
=HA(VAGY(A1="";B1="";C1="");IGAZ;"")
Ezt mondjuk az F oszlopba beírva "IGAZ" értéket kapsz, ha valamelyik cella a háromból (A1, B1, C1) üres, egyébként üres marad a cella. Erre autoszűrővel szűrve könnyen megtalálom, hol vannak üres adatok.
Persze ez csak akkor működhet, ha van lehetőség plusz oszlop felvételére.
Megtaláltam a megoldásokat, leírom hátha szükséges lesz még rá valakinek.
Szóval a táblázat oszlopokba ha megváltoztatom a képletet, akkor amikor beírom a cella mellett megjelenik egy kis ikon, ahol kiválasztható, hogy az oszlopképlet legyen az új.
A formázási problémát pedig az egész oszlop (nem csak a táblázatoszlop) formázásának megváltoztatásával tudtam megváltoztatni.
Nyomtatóbeállításra kérdezem. Tudom hogy megjegyzi az előző állapotot, de egy tucat munkalapfülnél ezt egyenként kellett végigkattintani. Ráadásul a kolleginák kinyomtak így száz oldalakat pocsékba, mert ők se, én se gondoltam, hogy a nyomtatóbeállítások még ráadásul munkalaponként is eltérőek lehetnek! :(
Ha arra, hogy minden munkalapot 1 oldal széles 1 oldal magasan nyomtasson, akkor
1. Kijelölöd az összes munkalap fület (shift egér ha egymás utáni, ctrl egér ha van közte más is)
2. A Lapelrendezés menű Méret beállítás csoportjában beállíthatod a szélességet - magasságot, méretet
Ez így minden egyes munkalapra érvényes lesz.
Ha viszont a nyomtatón szeretnél egyoldalas nyomtatást, azt a nyomtató beállításoknál kell előzetesen kiválasztani és addig a beállítás marad, amíg meg nem változtatod újra.
Sziasztok, Legyetek szívesek segítsetek. Terem órarendet kellene készítenem, amit aztán kinyomtatunk és a terembe kiragasztunk. A munkalapon megvan a teremszám, kezdési dátum és időpont, tantárgynév, oktató. A dátumból számítottam hét napját. Beleteszem egy kereszttáblába (nem túl elegáns, de majd szétszedem termenként) sorok a kezdés időpontja, az oszlopok a hét napjai. A tárgynév+oktató összefűzését belehúzom az értékhez, ahol mindenképpen számított cellák vannak, így darabszámot jelenít meg. Hogyan tudnám az értéknél a cellák szöveges értékét megjeleníteni? Szóval nekem oda a tárgynév és oktató kellene. Köszönöm szépen!
Nézd meg légy szíves az Adatok - Speciális (leánykori nevén irányított) szűrőhoz tartozó súgót. Ebben lehet vagy kapcsolatot is megadni szűrőfeltételként.
Vannak egy listában nevek s hozzá taj-szám, személyigazolvány-szám és adószám.
Bizonyos embereknek valami hiányzik, van akinek több minden is.
Próbáltam szűrőket rakni az oszlopokra, de ugye ezzel az a baj, hogy akinek nincs taj-száma, de van adószáma és én a hiányzó adószámokra szűrők, akkor nem lesz benne mindenki olyan, akinek bármi más adata is hiányzik.
Ezeket hogy lehetne legegyszerűbben egységben kezelni?
Tehát a változó neveit felsorolom egymás alatt egy-egy cellában, és az éppen aktuális változó értékét szeretném igazra állítani (azaz a cella tartalma és a változó nevei megegyeznek). A tömb sajnos nem jó, mert később ezt logikai egyenletekben szeretném felhasználni és a változó neve sokkal-sokkal beszédesebb, mint a tömb egy-egy elemére hivatkozás.
Egy egészen alapvetőnek látszó feladatot nem tudk megoldani. Munkalapokat másolok át egy kész munkafüzetből. Az egyik munkalapon háromszázvalahanyadik sor látszik. Ugyanakkor a lekérdezésekkel kiderül, hogy valójában az A1 az aktív. Viszont ez nem látszik
A későbbi panel rögzítéshez szükségem lenne, hogy az első sort lássam, mert az N3 cellán állva szeretném a rögzítést.
Kiválasztani, írni bele, olvasni, minden további nélkül tudnék, de képtelen vagyok elérni, hogy ráálljon a vezérlés.
A ws.Range("A1").Select parancs ellen nem tiltakozik, csak éppen nem áll rá.
Kézzel persze meg tudom oldani, de programból kellene. Már órák óta keresgélek, de nem találok megoldást.
Mi lehet az oka annak, hogy a VBA program alábbi utasítása néha nem törli a teljes tartományt?
MthSheet.Rows("1:13").Delete
Fizikailag ugyanarra a munkalapra ráeresztve kb 5-ből egyszer nem 13, csak 12 sort töröl, és hogy cifrázzam a dolgot, a "bennfelejtett" sor mindig a hajdani tizedik.
Az alábbi verzió pontosan ugyanígy önállóskodik:
MthSheet.Rows("1:13").Select
Selection.Delete
A 10-es sorban természetesen nem találok semmi extrát (az a sor amúgy üres is eredetileg, csak a teszteléshez felöltöttem mind a 13 sor első celláját, hogy lássam, melyik ragad bent) - arról nem beszélve, hogy "többnyire" azzal a sorral is megbirkózik.
Egész megdöbbentő és érthetetlen jelenséget tapasztaltam programírás közben:
Oszlopszámokból képzek oszlopneveket a következő függvény segítésével (az elvet Jimmytől kaptam évekkel ezelőtt):
Function oszlopnev(oszlszam As Long) As String Dim cellastring As String cellastring = Cells(1, oszlszam).Address(rowabsolute:=True, columnabsolute:=False) oszlopnev = Left(cellastring, InStr(cellastring, "$") - 1) End Function
Évek óta használom, tökéletesen működik. Igazából most is, csak meglepetésemre az eredményt a VBA képernyőn nem jól jeleníti meg.
A cél a 41 és 41, valamint a 36 és 37 oszlopszámok összegét per jellel elválasztva betenni az immediate ablakban látható képletbe egy későbbi számítás alapjául.
Meglepetésemre a "szoveg" változó fölé állva csak a képlet első fele jelenik meg, az immediate ablakban látszik a teljes képlet. Mielőtt az utóbbit lekérdeztem, hosszasan keresgéltem az okát, hogy hol hibáztam el az összefűzést, mire kiderült, hogy a képlet a szándékom szerint sikerült, csak nem látszik.
Érdekes módon az értékadás után a munkalap megfelelő cellájában szintén hibásan jelenik meg a képlet. Később a munkalapon már a jó adat látszik.
Ehhez hasonló összefűzögetést elég sokat csinálok ugyanebben a programban, és mind rendben van, ennek az egynek a kivételével.
Még annyit, hogy karakterenként megnéztem, nincs-e benne valami rejtett karakter, de semmi.
Segítségeteket szeretném kérni, az alábbi excel problémával kapcsolatban. Van egy néhány soros adatbázis, és abból készítenék egy rendszerezett táblázatot, mely hasonlóan néz ki mint egy kimutatás. Nagyon jó is lenne, addig amíg nincsenek azonos rekordok, mert azokat összevonja. Persze a kimutatásnak az a feladata, gondoltam ki lehet valahogy kapcsolni ezt az értékmezők számolásait, de nem sikerült. Tud valaki segíteni ez ügyben, vagy más megoldás is jó lenne, ami hasonlóan néz ki…
Ha létrehozok egy új számformátumot, pl. "db" azt hogyan tudom elmenteni akár hozzárendelni egy kis parancsikont, hogy ne kelljen a későbbiekben újra előállítani?
Nekem az összes táblázatom úgy működik, hogy be van képletezve, és ha sort szúrok be, bizonyos cellákba automatikusan bekerül a képlet, bármiféle makró nélkül. Azt gondolom, hogy azért, mert táblázatként van definiálva.
Egyébként most is azt csinálom, hogy amikor beszúrom a sorokat felhúzom a képleteket, hogy átírja a régi rosszat az új jóra, és épp ennek szükségességét akarom elkerülni.
Ha átalakítod az adataidat tartalmazó területet táblázattá (a területen állva Beszúrás, Táblázat), megszűnik ez a gondod.
A táblázattá alakított tartományban 1 cellába beírt képletet az egész oszlop örökli, még a formátumát is, akár az aljára, akár a közepére szúrsz be új sort.
Miért kellene beszúráskor bármit is beírnia az új sorba? Ha az kell. akkor a felette lévő képletet lehúzhatod, vagy az alatta lévőt bemásolhatod. Honnan kellene tudnia az Excelnek, hogy milyen képletek vannak az oszlop többi cellájában, és hogy te azok közül melyiket szeretnéd látni az új sorban? (Az más, hogy te tudod, hogy mindegyik azonos, ő nem tudja)
Egyébként nekem az furcsa, hogy nálad bármit betesz az új sorba. Nem fut véletlenül valami makró a munkafüzetben?
Valamit javult a helyzet, bár így sem az igazi. Az ablakok látszólag egymáson vannak, de nem úgy rögzülnek, mint ahogy az alapállapot volt:
Azért köszönöm.
És bosszantó,hogy erre nem gondoltak Redmondban, vagy ha igen, akkor nem tették elérhetővé. És, hogy az alapállapot visszaállítása csak újrateleptéssel oldható meg.
Tudnátok segíteni abban, hogy miért van az, hogy táblázatokban sor beszúrásakor automatikusan nem azt a képletet írja be, ami az oszlop többi cellájában van, hanem egy korábban használt képletet, mintha beégett volna neki? És ugyanez a helyzet a formázással is, sorok beszúrásakor az új sorokba tesz be automatikusan egy korábbi feltételes formázást.
Illetve ha tudja valaki, hogy ez mitől van, megoldást is tudna rá adni?
Sajnos nincs "alapértelmezés" beállítási lehetőség.
Némi kis macerával ismét beállíthatod a neked kellemes helyzetet.
Javaslat:
1. Jobb egérgomb - hide minden ablakon (benne állva, nem a címén).
2. Egyenként: ablak - view - jobb egérgomb az ablakon mint fent - dockable elől pipa kivéve. Ezután mozgathatod, méretezheted az ablakot. Ha a "helyén van" jöhet a következő ablakra ugyanez.
Excel bezáráskor - ha üres munkalapod volt akkor is megkérdezi - nem kell menteni, megőrzi a beállítást.
A VBA-ban egy rossz mozdulattal elmozdítottam a helyéről a Locals ablakot, aztán, ahogy próbálgattam helyreigazítani (régebben sem sikerült hasonló esetekben) egyre rosszabb lett. Most éppen egymás alatt van a 3 ablak.
Az alapértelmezés, ahogy általában használni szeretem, ez (a laptopomról mentve):
A mostani állapot az asztali gépemen:
Baromi kellemetlen. Létezik, hogy nincs visszaállítási lehtőség az alapértelmezett elrendezésre?
Ha egy cellán belül akarod megcsinálni, akkor természetesen sehogy. Illetve csak makróval. Ugyanis nincs olyan függvény, ami a cella tartalmát módosítja, és visszamásolja saját magára.
Segédoszloppal megoldható:
Ha A1-ben van az adat, akkor a B1-ben a következő legyen
Adott egy excel táblázatom amelyben L2:L100 között felsorolt nevek vannak.
Egy makró segítségével létrehozok adatelemzést és fenti tartományban lévő neveket használva a helyes cellába be is illeszti azokat ezzel nincs is gondom.
A makró utolsó fázisaként a munkalapfüleket szeretném átnevezni az L2:L100 tartomány nevei szerint úgy hogy az adatok ha változnak akkor a munkalapfül átnevezése is kövesse le a tartalmat azaz ne a scriptben tárolt vágólap tartalma alapján legyen átnevezés hanem az oszlop adatai szerint amelyek változnak és ezt kövesse le.
A C12 jelentése, hogy az aktuális (képletet tartalmazó) oszloptól 12-vel balra lévőre hivatkozik. Lehet negatív is a szám, amivel előző oszlopra hivatkozhatunk.
Ugyanígy az R után is lehet érték, ami plusz érték esetén lentebbi sort jelent, negatívnál fentebbit.
Érték megadása nélkül az adott sorra (R), vagy oszlopra (C) hivatkozunk.
Ez megoldott azt, amin már több mint egy napja nyűglődöm eredmény nélkül.
A formulaképlettel ugyan találkoztam már, de nem mélyedtem el az értelmezésében. Most majd utánaolvasok. Talán itt: https://excelchamps.com/formulas/r1c1/, de ha tudsz jobbat, akkor azt is köszönöm.
Mert egyelőre nem teljesen világos, hogyan lesz az RC12-ből $L3, és a C12-ből $L:$L, illetve, ahogy most írok világosodik, hiszen ha az R ott van érték nélkül az aktuális sort jelenti, a C12 meg az oszlopszámot, de ha az R nincs előtte, akkor a teljes oszlopot. Ugye?
Köszönöm, ez így talán működne, de jól látom-e, hogy a képlet helye és a célterület ugyanazon a munkalapon kell, hogy legyen? Amikor megpróbáltam másik munkalapra tenni a képlet helyét, akkor a célterület kijelölésénél hibát kaptam. Ez meglehetősen korlátozhatja a módszer alkalmazását.
Fferién kívül még két módszert ismerek arra, hogyan lehet bevinni egy képletet helyesen makróba.
Beviszem a képletet, majd lapfülön jobb klikk, Beszúrás, Nemzetközi Makrólap. Kapok egy új lapot Makró1 névvel. Ide bemásolom a képletet és a hivatkozási tartományát. Angolul jelennek meg a képletek, ezzel már tudok valamit kezdeni.
2. A legkényelmesebb módszer: beírom a képletet egy cellába. Enterezés után újra erre a cellára állok, makrórögzítés, Enter a cellán. Leállítás után az igényeimnek megfelelően módosítom pl. a tartományt. Ez az R1C1 módszert alkalmazza, nem ronthatom el az idézőjelekkel.
A következő gondom van. Egy több munkalapot tartalmazó Excel fájlban van egy úgynevezett teljes lista, és vannak hozzátartozó munkalapok. A teljes listában a többi munkalap valamennyi rekordja szerepel, ami pedig összeköti őket, az az L oszlopban szereplő azonosító. Tehát amikor egy munkalapra szeretnék bemásolni egy adatot, akkor a munkalap L oszlopában lévő azonosítót keresem meg a teljes listában, és a negtalált sor megfelelő adatát olvasom ki, és helyezem el a munkalapon.
Az erre használt függvény, amit a korábbi években kézzel (Copy-Paste) másoltam be a munkalapok 3. sorába (majd húztam végig lefelé, kitöltve a teljes oszlopot a teljesből átvett értékekkel) így nézett ki:
= INDIREKT("'Teljes lista'!$AL" & HOL.VAN($L3;'Teljes lista'!$L:$L;0);1) ' Itt lehet, hogy hibát követtem el, hogy az aktuális munkalap L3 cellája előtt nem adtam meg a munkalap hivatkozást saját magára, de a rendszer elfogadta, és jól működött a dolog.
A komplett feladatot egy sokszáz soros makró kezeli, és mivel idén szeretném kiadni a kezemből a feladatot, ezt a másolást is a makróban szeretném automatizálni. Viszont órák óta képtelen vagyok megtalálni a helyes szintaxist. és a szerkesztő vagy a képleten belül talál hibát, vagy azt állítja, hogy sub or function not defined. AKár C-vel, akár K-val írom az INDIREKT-et:
Elkeseredésemben arra is gondoltam, hogy az eredeti - kézi - megoldást imitálva alkalmazom, de a Copy részt nem tudom megoldani tehát, hogy a vágólapra kerüljön a formula.
Nagyon szépen köszönöm,egy utolsó kérdésem még lenne. A Jelölő négyzetet miért nem jelölőnégyzetként jeleniti meg a tábla? Már az elején is problémám volt vele,de megoldottam,most viszont kilépés utáni újra megnyitásnál már megint nem jelölőnégyzetként jeleniti meg. A kikapcsolt négyzetek helyén "FALSE" ,a bekapcsolt négyzetek helyén pedig a "TRUE" jelenik meg,tehát a helyzetüket írja le ahelyet hogy megjeleníteni őket
Köszönöm. Még olyan kérdésem lenne,hogy HA képlettel hogy tudok több lehetőséget megadni?
pl =IF(C4="A",;3) ez így tökéletesen műkődik,de hogyan tudok mellé csatolni más lehetőséget is,pl nem csak akkor lesz 3 ha c4=A ha nem c4="A" és "B" és "C" akkor ;3.ha c4="D","E";akkor;4,c4="F","G",akkor =;5. Ezt meglehet oldani egy képletbe és egy cellába beépíteni?
Sziasztok. Az lenne a kérdésem hogy lehetséges e egy cellán belül több jelölőnégyzetet berakni,és hogy ezeket a jelölönégyzeteket színezni valamilyen módon? Arra gondolo,hogy pl a négyzetet kipipálás helyett beszínezni különböző színekre
Viszont a Fájlkezelőben ráállsz - jobb egérgomb - Tulajdonságok - Biztonság - A tiltás feloldása négyzetet bepipálod -- OK. Ezt természetesen a felhasználónál kell megtenni, ami lehet, hogy bonyolultabb lesz neki, mint engedélyezni a makrókat a kérdés után.
Ha vannak/voltak adatkapcsolatok az eredeti fájlban és nem szeretnéd a másolatban, akkor mentés előtt a kapcsolatokat törölni kell, pl.
Do While Activeworkbook.Connections.Count > 0:Activeworkbook.Connections(1).Delete:Loop
Makróval megnyitok egy makrókat tartalmazó fájlt, és a átmásoltatom más néven más helyre, majd egy-két módosítás után mentem. Megoldható-e programból, hogy az új fájl első megnyitásakor ne figyelmeztessen a makrók letiltására, és ne kérje a felhasználótól az engedélyezést, hanem tekintse úgy, hogy az már megtörtént?
Kijelölöd az A2:F14 tartományt (címsortól decemberig), a Ctrl gombot nyomva tartva kijelölöd a C2:C14, E2:E14, és G2:G14 tartományokat. Ezzel a % oszlopokat kivetted a kijelölésből.
Beszúrás, diagram, oszlopdiagram.
Rákattintasz a legmagasabb oszlopra. Az első kattintásra az összes hónap max oszlopai lesznek kijelölve. Még egy klikk az oszlopon, akkor már csak a maximumot tartalmazó oszlop van kijelölve, majd jobb klikk, adatfelirat hozzáadása.
Szóval lentebb van a táblázat, annak a legnagyobb értéke b3-asban a 971.000 és ezt kellene kjjratni a diagram januári bal első (barna mintás) oszlopa fölé, hogy megjelenjen a 971.000 ugye.
Ezek már a megoldások, ezt megkaptam, de hogy hogyan jutok el oda, az nem vili.
A legnagyobb havi bevétel értékét 10 pontos félkövér betűkkel írja az azt ábrázoló oszlop fölé!
Odáig jutottam, hogy mindegyik oszlop fölé kiteszi az értéket ( van ugye egy táblázat hozzá) De nekem csak a legnagyobb értéket reprezentáló oszlop fölé kellene.
Szia! Köszönöm szépen, kipróbáltam, működik tökéletese. Esetleg azt meglehetne oldani, hogy ha egy sorral lejjebb lépek, a már beolvasott vonalkód ne legyen látható?Mert ha ott marad, beolvashatja még egyszer az olvasó. Amúgy bevételezéshez kell ez a dolog. Hálásan köszönöm a segítséget.
Nincs vonalkód beolvasóm, így nem tudom kipróbálni.
A kódot tartalmazó oszlopban a karakter színét fehérre kell változtatni, mint (gondolom) a háttéré.
A makrót a laphoz kell rendelni. Lapfülön jobb klikk, Kód megjelenítése. Ezzel bejutunk a VB szerkesztőbe. A jobb oldalon kapott üres felületre kell bemásolni a makrót.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Selection.Font.Color = 1
End Sub
A kattintással kiválasztott cellában a karakter fekete lesz.
Köszönöm szépen a gyors segítséget, kipróbálta, a makró működik tökéletesen, de sajnos, ha felnagyítom a cellákat, a vonalkód olvasó nem olvassa be, így nem használható sajnos.
Esetleg arra van megoldás, hogy a vonalkód csak akkor lenne látható, ha ráállok a cellára?
Nem tudom, mit akarsz kezdeni a beolvasott értékekkel.
A lenti makró a tartomány T oszlopának szűrt értékeit átmásolja a Munka2 lap A oszlopába. Ott megemeled a sorok magasságát, és nem ugrik beolvasáskor a sor.
Szeretnék megoldást találni egy problémámra, ami megkönnyítené a munkámat. Van egy nagy adatbázisom úgy kb 16 ezer sornyi tétel és 20 oszlop adattal. az utolsó oszlop egy generált vonalkódot tartalmaz. Mivel egymás után sorban vannak, a vonalkód olvasóval nagyon nehéz leolvasni, mert sokszor az alatta lévő kódot olvassa le, így sok a hibalehetőség. Van arra lehetőség, hogy a leszűrt adatok egyesével legyenek láthatóak, majd a beolvasás után a lefelé nyíl lenyomása után a következő tételre ugorjon?
A makrót egy modulba kell bemásolnod a VBA nézetben:
Alt +F11 - Insert - Module
Field:=5 helyére annak az oszlopnak a számát írd, amelyben szűrni szeretnél.
A Criteria1:= Array(....) jelenti azt, hogy tömb lesz a paraméterben. Ha hosszabb a feltétel sorozat akkor az aláhúzás karakterrel lehet jelezni, hogy egy sorba tartozik amit beírtál - a hosszabb feltételes sorban láthatod.
Excel szűrőlistában a kereső mezőbe egyszerre több adatot szeretnék szűrni. Lehetséges ez? Amennyiben igen hogyan? Köszönöm!nem csak egy hanem több feltételt is meg szeretnék adni. Nem egyesével hanem egyszerre beírnám. Pl a 8751;8766 adatot keresem. Mi az elválasztójel a két kritérium esetén ebben a kereső mezőben?
közben szembesültem vele, hogy vannak olyan szavak is a listában, amikben változó a kis- és nagybetű...pl. ArrivaBus Kft.
De közben meg azt látom, hogy jellemzően az első betű szokott kicsi maradni, mivel a bevitelnél csak lenyomja a felhasználó a kezdőbetűt és így kicsivel kezdve jelenik meg az adott szó.
Akkor az lenne a célszerű, ha megadnám a listában szereplő szavak kisbetűvel kezdődő verzióját és azt javíttatnám a makróval.
A bevitel helye nálam G2. A laphoz rendelt eseményvezérelt makró:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$G$2" Then _ Target = UCase(Left(Target, 1)) & Right(Target, Len(Target) - 1) End Sub
Az Érvényesítés --> Lista beállításnál meg tudok adni egy listát, amiből választhat a felhasználó.
Azonban a kiválasztásnál a kis és nagybetűk között nem tesz különbséget. Tehát, ha a listában "Budapest" van írva, akkor manuálisan be lehet írni a "budapest" szót és azt - hibajelzés nélkül - tovább is engedi.
Meg lehet oldani, hogy csak a teljesen karakterhelyes szót fogadja el?
A következő "probléma" megoldásában szeretném a segítségeteket kérni.
Le szeretném védeni a cellákat, hogy ne lehessen felülírni a bennük lévő képleteket, szövegeket viszont az egyéni sorrend beállítást szeretném meghagyni a felhasználónak. De ha bekapcsolom a lapvédelmet, akkor a sorrendbe állítást sem engedi.
Próbáltam már, hogy kipipálom a "Rendezés" és az "AutoSzűrő" használatát, de akkor sem engedi az egyéni sorrend beállítást.
Van esetleg erre valakinek valami ötlete, megoldása?
Van egy változó rekordszámú "A" oszlopom, ami egy Kimutatás varázslóval előállított tábla érintett oszlopára hivatkozva tartalmaz adatokat. (1-100-ig).
A kérdés, hogy melyik szám, hányszor szerepel. (Fontos, hogy kizárólag azoknak a számoknak a darabszáma jelenjen meg a leválogatásban, amelyeket az "A" oszlop aktuálisan tartalmaz!)
Próbáltam a feladatot továbbra is Kimutatás varázsló segítségével megoldani, de nagyon alap szinten kezelem a kimutatásokat, ezért inkább függvénnyel szeretném az adatokat kinyerni.
Még annyit tennék hozzá, hogy bármelyik modulban lehet publikus változót definiálni és láthatja minden eljárás, ha a teljes "névvel" hivatkozol rá, ami így néz ki: modulnév.változónév.
Vagyis ha a Module1-ben van egy Public valt1 nevű változó, akkor azt a többi modulban Module1.valt1 formában lehet elérni.
Ja és azt nem mondtam, de nyilván egyértelmű, hogy a képen látható szubrutin automatikusan lefut a munkafüzet megnyitásakor, tehát megnyitja a munkafájlt, és értéket ad a Public változóknak.
Egyébként az induló kérdésedre nem választoltam. "Hol és hogyan kellene úgy deklarálnom valamiket, hogy az egész munkafüzetben az értékek elérhetőek legyenek? Egyáltalán lehet egész munkafüzetre vonatkozóan vagy csak modulszinten lehet meghatározni?"
A kérdés első felére a küldött mintám már megadja a választ. A Programon kívül deklarálod, tehát a Sub hívás előtt. A deklaráció célja az, hogy ne kelljen minden függvényhíváskor paraméterként átadni a változót a függvénynek.
Ezen túlmenően a public deklaráció a az egyes munkalapokon létrehozott subrutinokbna is érvényes.
Azt, hogy ne kelljen mindig megadni set-el megadni, azt úgy oldhatod meg, hogy a Project képernyőn a Thisworkbook-ra lépsz, és oda teszed a programot Private Sub workbook_Open() használatával, ami megnyitáskor automatikusan elindítja a programot , és ezzel értéket ad a változóidnak. A többi függvény mehet a modulokba, vagy a munkalapokra.
Sub-on belül működik a "set", de az lett volna a cél, hogy az adott modul elején csak egyszer kelljen "set"-elni és több sub esetén azt mindegyik sub-ra "értse".
Option Explicit Public wv As WorksheetView Public Wb As Workbook Public Wa As Worksheet
Sub teszt() Workbooks.Open Filename:="D:\Dokumentumok\Letöltések\Új form.xlsm" Set Wb = Workbooks("Új form.xlsm") Set Wa = Wb.Worksheets("Adatok") End Sub
Persze a public Wh-t javítsd Wa-ra, de nem ez volt a hiba oka.
Igen, adtam, de a "set" nem tetszik neki ezen a részen.
Option Explicit Public wv As WorksheetView Public Wb As Workbook Public Wh As Worksheet Set Wb = Workbooks("Új form.xlsm") Set Wa = Wb.Sheets("Adatok")
Nem teljesen értem a globális/publikus deklarálást, ebben kérnék némi segítséget.
Hol és hogyan kellene úgy deklarálnom valamiket, hogy az egész munkafüzetben az értékek elérhetőek legyenek? Egyáltalán lehet egész munkafüzetre vonatkozóan vagy csak modulszinten lehet meghatározni?
Public wv As WorksheetView Public Wb As Workbook Public Wa As Worksheet
Eddig elvileg jó, de hogyan tudnám beállítani ezeket?
Ha ez a rész alá beírom, hogy "Set Wa = Wb.Sheets("Adatok")" az nem jó.
Az egyesítéssel egyébként ajánlott óvatosan bánni, kellemetlen következményei is lehetnek a későbbiekben.
De ha már, akkor miért nem jó az, ha kijelölöd az egyesített területet egérrel, majd az Igazítás csoportban az Egyesítés gombra kattintasz. Újabb verziókban mér csak az ikon látszik, az "Egyesítés" szó nem:
Kérlek, segítsetek egy excel függvénnyel kapcsolattal (ha van ilyen). Teljesen laikusként kérdezek, és remélem érthetően magyarázom, hogy mi a feladatom... Üres cellák vízszintesen.. az egyikbe beírok egy szöveget, és a tőle jobbra levő x számú cellával egyesíti az én cellámat. Nem az adatokat kellene összevonni, üres cellákat kellne egyesíteni. Pl beírom, hogy cellla3, akkor az adott cellát a tőle jobbra található 2 cellával egyesíti, és az egyesített (korábban 3) cellában annyi legyen, hogy cella3.. Hogyan lehet ezt a legegyszerűbben megvalósítani az excelben?
Vagy bármilyen a szövegben nem szereplő karakter lehet elválasztó karakter, ebben az esetben egy cellába kerül ugyan a beolvasás, de utána az Adatok - Szövegből oszlopok - tagolt típust választva, egyéb elválasztójelnek beírva a sajátodat, szétbontja cellákra a szöveget.
az lenne a kérdésem, hogy data mátrix kód tartalomba milyen karaktert kell írni ahhoz, hogy ha kézi kódolvasóval beolvasom, akkor az excelbe külön cellába kerüljön a kód tartalom részei?
Zebra designer programmal lenne a kód generálva adatbázisból és nyomtatva, ezt a tartalmat kellene excelbe be illeszteni kézi olvasóval. Egy kód tartalom egy sor de külön oszlopba szeretném az egyes részeket az excelben.
Használd a Solver bővítményt. Ha nem látod, akkor Fejlesztőeszközök - Excel bővítmények - ott megtalálhatod.
Ezután felviszed a számlákat egy oszlopba, pl. az A oszlopba.
Az összeget helyezzük el a D1 cellába.
A D1 cella képlete =SZORZATÖSSZEG(A1:A100;B1:B100) - magyarázat alább lesz.
Ezután meghívod a Solvert:
Adatok - Solver (a menüszalag végén lesz).
A megjelenő párbeszédpanel kitöltése:
Célérték beállítása: A cella, ahol az eredményt szeretnéd kapni - a példában D1
Cél értéke: Értéket kiválasztod, a kockába beírod a kívánt értéket.
Változó cellák módosításával: B1:B100
Vonatkozó korlátozások - Hozzáadás - Cellahivatkozás B1:B100 középre bin - megjelenik a korlátozó feltétel bináris
Hozzáadás. Majd mégse.
Ezután rákattintasz a Megoldás gombra.
Ha van olyan kombináció, amely kiadja a pontos összeget, akkor a Solver megadja. Ha nincs, akkor variálnod kell a számla összegekkel.... :(
Magyarázat:
A B oszlop a szorzatösszeg súlyait adja, ami vagy 0 vagy 1, attól függően, hogy az A oszlopban levő tétel részt vesz-e az összeg képzésben.
Tehát azok a számlák kellenek, amelyek mellett 1 van a B oszlopban.
Az A - B oszlopot addig kell a képletben figyelembe venni, ameddig az A oszlopban értékek vannak, tehát a 100 helyére az A oszlopban levő utolsó adat sorát kell írnod.
Bocsi, a képen B-C oszlop van és az A1 a cél cella.
Lenne egy érdekes kérdésem. Létezik olyan excel függvény, amely egy adag (pár darabtól max 30 db-ig) értékből összeállít egy olyan számot, amely egyenlő vagy a lehető legközelebb van egy adott számhoz?
Kicsit világosabban: Pályázat bevalláshoz van összegyűjtöttem egy csomó számlát (többet mint kellene). Aztán ma kiderült, hogy az adott támogatási összeget pontosan el kell költeni, nem lehet sem több, sem kevesebb (ez esetben a fennmaradt összeget vissza kell fizetni).
Hogyan tudnám összeválogatni a számlákat, hogy az adott érték jöjjön össze (még azért holnap rákérdezek, hogy mekkora a tűréshatár, mert szerintem lehetetlen eltalálni ezt az értéket)
Ha szerintetek hülyeség vagy lehetetlen, akkor is írjatok. Köszönöm.
Van egy másik e-mail címem is: a felhasználónevem utána kukaccal a https://garaland.hu/ domain név. Azért írom ilyen f*szul, hogy a keresőrobotok ne spameljék tele.
OK, csak nagyon hirtelen tűntél el, igaz, engem meg a világvégével meg a közelgő karácsonyi lezárásokkal tartottak sakkban.
Most meg a kuglid keményített be, nem engedi megnézni a fájlokat, hogy regisztráljak, meg vegyek új PC-t újabb böngészőhöz, ráadásul a levelezőrendszert spam listára tette, mail egy idő után visszajött "biztonsági okokból" nem írhatok kuglira, más megoldást kell találni.
Nem igazán szokásom minuszolgatni, az nem tőlem jött. Általában egy-egy plusz szoktam nyomni egy beszélgetést lezáró utolsó kommentre, ami hozzám szól.
Ilyen esetben, amúgy bátran lehet keresni emailben is engem. Publikus az email címem.
Szia, ha van felhő tárhelyed pl. Google Drive, vagy Microsoft Onedrive, akkor fel tudod másolni, és a linket elküldeni. Ha ez nem megy, akkor kattints a nevemre, ott megtalálod az email címemet - Ami nálam nyilvános- , és oda is tudsz küldeni levelet, és tudod csatolni a fájlt.
Még valamit: Ha válaszolsz egy hozzászólásra, akkor az adott hozzászólás jobb oldalán találsz egy visszahajló nyilat, és erre kattintva kiderül, hogy melyik hozzászólásra válaszolsz.
Itt most még könnyű áttekinteni, de hosszabb beszélgetésnél sokat segít, ha látjuk, hogy kinek válaszolsz. Előre is kösz, ha erre figyelsz.
Átgondoltam, és végső soron nem is szükséges új munkalapra írni a súlyhatárokat. Írhatod őket a táblázatod utáni részbe, mondjuk az AA és AB oszlopokba. Ezzel egyszerűbb is lesz a képlet:
A feladatot meg lehetne oldani nagyon bonyolult, egymásba ágyazott HA függvényekkel. Nem javaslom, mert áttekinthetetlen lenne.
Viszont megoldható egy segédtáblázattal, amelynek segítségével az XKERES függvény intézi a besorolást. A teendőd a következő:
1. Hozz létre a munkafüzetben egy másik munkalapot. Én ezt Súlycsoportoknak neveztem. Ebbe sorold fel a súlycsoportokhoz tartozó súlyhatárokat (szerintem az első - a 20-as akár el is maradhat, hiszen ez alattit nem vesztek figyelembe.:
Az utolsó adat a 200 helyett olyan érték legyen, amit biztos nem ér el senki.
2. Az alaptáblázatban pedig az SCs oszlopba ez a képlet kerüljön: =XKERES(H2;Súlycsoportok!$A$2:$A$12;Súlycsoportok!$B$2:$B$12;;1;1), amit aztán húzz lefelé az összes versenyző SCs oszlopában.
Vannak pl nőiversenyzők, és súlycsoportok szerint vannak csoportosítva.
Amennyiben egy sportolót bemértünk és a testsúlya mondjuk 39,5 kg akkor a súlycsoportja 40kg! Amennyiben a testsúlya 40,01 kg, akkor a következő súlycsoportba kell sorolnia.
Milyen függvénnyel tudom automatizálni a táblázatomat?
A két fájlnak egy mappában kell lennie. Illetve a database nevű fájl nem is nevezhető át más névre.
A makró a kék "körre" kattintva indítható. Nyilván a makrók futtatását engedélyezni kell.
Tartalmaz néhány minta adatot. Az adatok elején lévő számmal nem kell foglalkozni, az az úgynevezett ID, az minden esetben egyedi és nem is ismétlődhet. Csak azért jelenítettem meg, mert így egyszerűbb elvégezni az adatbázis műveleteket. Ellenben ha zavaró, akkor meg tudom oldani másképpen is.
Az "Új" gombra kattintva tudsz létrehozni új címkét. Minimum 3 karakternek kell lennie a címke nevének. A címkék nem ismétlődhetnek.
Az "Átnevezés" gombra kattintva tudod átnevezni a címkét. Ha véletlenül kattintasz rá, akkor be kell írni a címke mostani nevét és akkor nem nevezi át. Itt is érvényes, hogy nem egyezhet meg másik címkével, illetve minimum 3 karakternek kell lennie.
A "Törlés" gombra kattintva tudod törölni a címkéket. Feldob egy figyelmeztetést, hogy a művelet nem vonható vissza és mindenhonnan törli a címkét. Vagyis nem csak a címkét törli, hanem az összes hivatkozást is, ami rá mutat. Ilyen hivatkozás például az adott bejegyzéshez hozzárendelt címke is.
Ha te is ilyesmire gondoltál, akkor majd folytatom.
A bejegyzésekhez egyelőre 4 mezőt hoztam létre.
-ID: egy belső azonosító szám
-szoveg: maga a bejegyzés szövege
-datum: a bejegyzés dátuma (itt megbeszélés tárgya, hogy kézzel legyen beállítható, vagy a létrehozás dátuma kerüljön ide)
-letrehozo: a bejegyzést létrehozó felhasználó neve (ha nincs ilyenre szükség, akkor törölhető is)
A Onedrive-s megosztás nem az igazi, mert a megosztott linkre kattintáskor a webes Excel indul el. Ami egyrészt eléggé korlátolt, másrészt azonnal ment mindent, és a felhasználók ezt nem igazán szeretik, én sem.
Azt meg lehet oldani, hogy onedriveos megosztott excel file Excel 365 vastag klienssel legyen szerkeszthető?
Hogyan lehet egy, a munkahelyem lokális hálózati meghajtóján lévő Excel táblázatot közös használatra megosztani? Az Excel korábbi verzióiban ez működött, de most egységesen az Excel 365 verzió lett telepítve. Ebben már nem jön fel csak a megosztás megosztásának a megszüntetése. Csak Onedrive meghajtón engedélyezné, de az nem lenne a legjobb. Van valami megoldás?
Egy egyszerű if képletről lenne szó amivel problémába ütköztem. Először is azt szeretném kérdezni,ez így miért nem műkődik? =IF(g1>h1,"A",IF(h1>g1,"B"))
illetve ha ezt így nem tudom megoldani,akkor hogyan tudnám? g1 és h1 semmilyen esetben nem lehet egyenlő,így annak a beépítésére nincs szükségem a képletben
Hát, vannak fenntartásaim, programozók állandóan azt bizonygatják, hogy mit nem lehet megoldani adatbázissal, de ha meggyőzöl, nézzük meg, mire jutunk. :-))
Irj egy rövid példát, hogy te hogyan gondolod a gyakorlatban, vagy Te írtál egy nagyon "lebutított" vázlatot, vagy én bonyolítom túl a végtelenségig.
Igen, csak szöveges adatról van szó, csak az embereknél kellenek kapcsolódó adatok, mint elérhetőség (jellemzően mél cím, vagy mobiltelefon), illetve a munkaköre. Valamint az egyéb adatok, hogy adott feladattal megbízott személy, vagy adott főnök rokona, vagy más cégnél lévő üzleti kapcsolata, de azok talán első körben nagyon bonyolultak lennének.
Az jutott még eszembe, hogy a "jegyzőkönyv" két részből áll, az egyik, amit írtam, kezdettől zárásig leírás, hogy mi történt és kik szóltak, hozzá, valamint az is benne van, hogy a gyűlés közben mely fontos személy jött, vagy ment el. Mellette van egy jelenléti ív, amit mindenki aláír, aki ott volt, de a leírásban látható, ha az illető csak pl. tíz percre ugrott be, mert egy kérdésben szükség volt rá, a többi nem érdekelte.
az átméretezés rendben működik, köszönöm szépen! :)
A szűrök viszont nem frissülnek vmiért, nem követik le a táblázat adatait. :-(
Ellenben ha minden táblázat átméretezés után, makróval feldobálom a szűrőket, akkor az úgy igazából rendben működik, kivéve azt a kis optikai problémát, hogy így lehetnek nagy szűrőkben egy-egy gombok csak, de az alapjuk viszont megmarad nagynak. De ezt a részét el tudom igazából most már engedni :-) Mégsem annyira néz ki rosszul, mint azt elsőre gondoltam.
Szóval köszönöm szépen! Így már elboldogulok szerintem:-)
A szűrés újrafuttatása előtt nem kell szerintem törölni a Rendszerezett Adat munkalapon levő táblázatot
Ezt a makrót futtasd a szűrés után:
Sub modos() With Munka2.ListObjects("Táblázat1") If Munka2.Cells(Rows.Count, 1).End(xlUp).Value <> "" Then .Resize Range(.Range.Cells(1, 1), Munka2.Cells(Munka2.Cells(Rows.Count, 1).End(xlUp).Row, _ .Range.Columns.Count)) Else .Resize Range(.Range.Cells(1, 1), .Range.Cells(1, 1).End(xlToRight).End(xlDown)) End If End With ActiveWorkbook.SlicerCaches("Szeletelő_Eladó_Megye").RequireManualUpdate = False End Sub
Az első rész hozzáigazítja a táblázatot az újra szűrt adatokhoz. Az utolsó sor pedig frissíti a Slicereket.
Megjegyzések:
1. Munka2 = a Rendszerezett Adat munkalap programozási neve (Codename), használható a Sheets("név") helyett.
2. A "With --- End With között részben a With sorban levő objektumra hivatkozhatunk a . (pont)-tal. Rövidebb és gyorsabb is a programirás és futás.
Itt egy példa, gyorsan netről szedtem le egy adatokkal lévő excelt. (Fórum példa)
Szóval az "Alap Adat" fülre töltjük be a rendszerből kiimportáld adatokat, excelbe tölti le, értékként. (AlapAdat 5000 sor + 57 oszlop) Ez a példában 57 oszlopból áll.
A "Rendszerezett Adat" fülön már történt egy irányított szűrés, hogy csak azokat hozza át amiben "Tehermentes" és "Légzsák" "IGAZ", de csak az 57 oszlopból nekem elég 8 oszlop adatsora, a többi felesleges. (Így a Rendszerezett Adat 1229 sor + 8 oszlop)
Az így kapott "letisztított adatsorban" kell különböző szeletelőket használnom, példában 3-at. (Eladó Megye + Beadás Nap Neve + Beadás Hónapja)
És ezeket használva szűrünk ki adatokat. Ezek a szeletelős megoldás azért kell, hogy aki nem ért az excelhez, az is tudja a szeletelőkkel szűrni az adatokat. (Az alapadatot VBA - makróval töltetem be - szóval az egy gombnyomás nekik + az irányított szűrést is makrógombbal oldom meg, az a második gombnyomás nekik)
Ahhoz, hogy szeletelőim legyenek, az irányított szűréssel megkapott adatsort táblázattá kell alakítanom előtte.
Na ez így rendben is van eddig.
De ha holnap új adatsort töltök be az Alap adat fülre, akkor borul minden. (Fórum példa2) AlapAdat 50 sor + 57 oszlop Rendszerezett Adat az irányított szűrést követően 11 sor + 8 oszlop
És így ekkor a szeletelelőkben megjelent az "üres" adatra szűrés opció, mivel a táblázat megtartotta az eredetei méreteit, amit a szeletelők továbbra is kezelnek. És ezekre nem lenne szükségem. Ez történik, ha korábban nagyobb adat volt benne és az új adatbetöltésnél kevesebb adatsor szerepel.
És küldök egy harmadik verziót is (Fórum példa3), amikor korábban kevesebb adat szerepelt benne, de aztán több adatsor került betöltésre. Itt sem működnek jól a szeletelők, mert csak az eredeti táblázat méretében lévő adatokat szűrik, holott most több adatot hozott az irányított szűrés.
"Alapvetően nekem az kellene, hogy a 2-es munkalapon lévő adat (ami táblázat formátumban van) lekövesse a forrásadat változásait (1-es munkalap), mind tartalomban, mind méretben" - azzal kiegészítve, hogy ugye nem kell minden oszlop a 1-es munkalap adataiból, csak egy része (erre használom az irányított szűrőt)
Alapvetően nekem az kellene, hogy a 2-es munkalapon lévő adat (ami táblázat formátumban van) lekövesse a forrásadat változásait (1-es munkalap), mind tartalomban, mind méretben
Szóval valahogyan összekapcsolni őket.
Egyébként úgy megcsináltam, hogy a 2-es munkalapon sima Fkeresel bekerestem az 1-es tábla adatait, de így ugye kénytelen voltam a 2-es tábla függvényeit oszloponként nagyon sok celláig lemásolni, mivel nem ismerem előre, hogy az 1-es munkalapban mekkora adat lesz
így viszont a 2-es munkalap rengeteg üres cellát hoz eredményül, amit optikailag el tudok tüntetni, hogy ne látszódjon, de a slicer viszont érzékeli őket, mint üres cella = üres adat és beteszi opciónak, mint szűrőfeltétel és az is hülyén néz ki
erre én is gondoltam már és ez lesz akkor, ha mást nem tudok/tudunk kitalálni Csak ezzel azért nem tökéletes mert a slicer-ben lévő szűrési "gombok" száma, függ attól, hogy a szűrendő adatban mennyi féle különböző adat van (például 1-12-ig is lehet, ha csak a hónapokat vesszük).
És ugye makróval nem tudom a slicer méretét a benne lévő gombok darabszámohoz igazaítani, csak egy fix méretre tudom elkészíteni őket a makróval, így viszont minden slicert mindig a lehető legtöbb opcióhoz kell méreteznem, mert nem tudhatom előre mennyi "gomb" lesz majd benne.
Így alakulhat olyan szitu, h nem fog jól kinézni, mert egy baromi nagy slicerben lesz 2 gomb.
De alapvetően ez lesz egyébként, ha máshogy nem megy. (csak szeretném, ha igényesen is nézne ki, a funkció mellett :-) )
"Az egyik munkalapon rendszerből lekért adatsor van (nem táblázatos formában), különböző adatokkal."
Ez milyen módon kerül a munkalapra, milyen lekérdezéssel?
A lekérdezett adatok mindegyikére szükség van a későbbiekben?
Irányított szűrés helyett nem lenne jobb egy kimutatás létrehozása, amit a forrás változása esetén csak frissíteni kell? A kimutatáshoz ugyanúgy lehet slicereket létrehozni.
Esetleg egy mintafájlt adhatnál - természetesen nem éles adatokkal - , amivel esetleg jobban tudnánk gondolkodni.
Van egy excel munkafüzet, két munkalappal Az egyik munkalapon rendszerből lekért adatsor van (nem táblázatos formában), különböző adatokkal. Ez az adatmennyiség minden egyes lekérésnél módosul. (Ezen a munkalapon van még hozzáadott oszlop, ami a bekért adatokból nyer ki további infókat.)
A másik munkalapon már csak azokat az adatokat jelenítem meg, ami nekünk kell, ezt irányított szűrővel teszem meg (makrósítva). Aztán a leszűrt adatmennyiséget táblázattá alakítva 4-5 hozzáadott slicer-rel használjuk.
Szóval a második munkalapon, már az eredeti adat egy leszűkített változata szerepel, amiben slicer-rekkel "kedvünkre" tudunk további szűréseket végezni.
És itt jön a probléma: Amennyiben változik az alap adatmennyiség az első munkalapon (ez lehet több is vagy kevesebb is, szóval nem folyamatosan nő), a második munkalapon lévő makrósított irányított szűrő nem tudja lekövetni, hiszen a slicerek miatt azt az adatsor táblázattá kellett alakítani.
Amennyiben nem alakítom táblázattá, akkor ugye le tudom követni az irányított szűrést a makróval, de akkor meg nincsenek meg a slicer-ek, hiszen azok táblázathoz kapcsolódnak.
Illetve fontos kritérium a második munkalapon ne maradjanak üres sorok, hogy a slicerek ne hozzanak üres mezőre történő szűrési opciót. azaz, ha az irányított szűrés után a leszűrt adatom 10 soros, akkor a slicerek azt lekövessék, ha 100 soros, akkor a slicerek, azt kövessék le.
És mindezt automatizálva kellene megoldani, hogy az excel az első munkalapra befrissített adat után, a második munkalapon a már irányított szűréssel leszűrt adatokat mutassa, és az ehhez tartozó slicerek is módosuljanak (például, ha hónapban csak két hónap van akkor csak azt a két hónapot hozza fel a sliceren belül, ha 12 hónap van, akkor meg mind a 12 hónapot)
Szóval az kellene, hogy az első munkalapra betöltött változó adatmennyiséget a második munkalap mindig lekövesse, de táblázat formában, hogy a slicerek is dinamikusak maradjanak.
Ha gondolod és pontosítunk, hogy mit is szeretnétek pontosan, akkor Excelben megpróbálom megoldani a problémátokat.
Van gyakorlatilag kész makróm, amivel Access adatbázist tudok manipulálnia. Kiolvasni, hozzáírni. Ha megbeszéljük, hogy pontosan mihez, milyen adatokat szeretnétek elmenteni kereshetően, akkor nem olyan nagyon bonyolult a dolog. A lényeg, hogy jól legyen felépítve az adatbázis szerkezete.
Ha jól értem, akkor egy gyűlésnél több bejegyzés is születik. Mindegyik kap egy az adott gyűlésre jellemző címkét.
Úgymond a fő bejegyzés kb. a mikor, hol és kik voltak jelen valamint a napirendi pontok felsorolásából áll.
Utána napirendi pontonként külön bejegyzések jönnek. Ez már két címkét kap. Az egyik a gyűlés címkéje, a másik az adott napirendi pontra jellemző címke.
Ezzel le is zártuk úgymond az első körös adatrögzítést.
Majd pl. amikor jön egy e-mail Józsi bácsitól az elektromos kapu javításával kapcsolatban, akkor az rögzítésre kerül a saját címkéjével. Ami már létezik, mert a gyűlésen szó volt róla, hogy meg kell javítani.
A címkékre tudunk szűrni adatbázisban, mert akkor azok egyediek lennének. A szűrés eredményeit pedig ki tudjuk írni egy sima TXT fájlba. Így ha a közgyűlés "jegyzőkönyve" kell, akkor a gyűlés címkéjére keresünk rá és akkor gyakorlatilag a bevezetőt és a napi rendi pontokat is kiírná a fájlba. De ha az elektromos kapu javításának a folyamata érdekes számunkra, akkor annak a címkéjére keresünk rá. Ekkor csak a közgyűlés adott napirendi pontja kerülne a fájlba írásra, ahol erről volt szó, valamint Józsi bácsi árajánlata. Ha pedig már kivitelezésre is került és ez rögzítésre is került az adatbázisban, akkor természetesen az is bele lenne írva. Utána azt a fájlt ki tudnátok nyomtatni.
Az egyszerűség jegyében csak szövegszerű tartalmakat tudna kezelni. Amennyiben fontos lenne, hogy pl. képeket is tudjon kezelni, akkor lehet, hogy az is megoldható, de az már bonyolítja a helyzetet, mert akkor már nem elég sima txt fájlba kiírni a keresés eredményeit.
Van egy adatbázisszerűen felépülő táblám, az oszlopfejlécekben autószűrővel. Az első oszlop sorszám. Ha leszűröm az adatokat a sorszám persze elállítódik. Létezik megoldás arra, hogy a sorszámozás mindig frissüljön a szűrésnek megfelelően?
Megnyugodtam, hogy nem bennem van a hiba, mert látom a későbbi hozzászólásokból is, hogy egészen másmiről írnak.
Biztos, hogy nem adatbázis volt, Access-t többször, mysql-t egyszer láttam, azt csak programozó tudja kezelni, aki nagyon utálja az egyedi feladatokat.
Leírtam, hogy mit láttam, de álljon itt újra, hátha segít:
Először nekiült és begépelte az aznapi gyűlést, hogy mikor és hol volt és kik voltak jelen, mik voltak a tervezett napirendi pontok, majd napirendi pontonként az egyes résztvevők beszámolóit, majd a kérdéseket és válaszokat.
Ezt szövegfájlként kinyomtatva eltette.
Majd, amikor valamit kérdeztek tőle, hogy pl. fél éve volt valami feladat, és az hogyan áll, akkor matatott valamit, majd kinyomtatott egy olyan szövegfájlt, amiben már az szerepelt, hogy pl. fél éve egy gyűlésen döntés volt valamiről, majd egy héttel később hasonló gyűlésen másik döntés volt a résztvevőkről és költségvetésről, stb. és még olyanok is voltak, hogy pl. Piftuka egy ismerőse telefonált valamikor, hogy megszerezte a kért dolgot és küldi postán Piftuka részére a céghez utánvétellel, stb.
Tehát az egész úgy nézett ki, mintha egy szövegfájl lenne, de minden bekezdés a különböző gyűlések bekezdéseiből és más, csak általa ismert dolgokból - pl. telefonüzenet, vagy postai küldemény - állt.
Biztos, hogy nem programozott semmit, csak a különböző szövegeket látta, ezért volt a tipp, hogy valami iktatórendszer lehetett - csakhát iktatórendszerbe csak postát és üzeneteket irnak, gyűlések jegyzőkönyveit nem.
Tudnátok segíteni, hogy hogy tudnám megtekinteni, hogy egy összeg milyen elemekből áll? Egyik partnerünk kifizette néhány számláját, de csak a végösszeget látom, és szeretném tudni, hogy ez a végösszeg pontosan milyen elemekből tevődik össze? Tehát van esetleg arra lehetőség, hogy lehívom a nyitott tételek listáját, és valahogy lekérem belőle azon összegek kombinációját, amik kiadják az utalt végösszeget?
Szerintem ikonkészlettel csak egymáshoz viszonyított relatív értékeket/adat sávokat lehet feltételes formázással megjeleníteni, egy adatkörön belül, ugyanúgy, ahogyan színskálákkal is.
Az "A" oszlopban kizárólag azokat a cellákat szeretném megjelölni pl. egy piros körrel, melyek megfelelnek annak a kritériumnak, hogy =ÉS(B$1>0;A$1>B$1)
Tudom, hogy van más módszer, amivel kijelölhető/színezhető az egész cella, de most kifejezetten arra vagyok kíváncsi, hogy ez ikonkészlettel megoldható-e?
Nem tudom jól hámoztam-e ki a mondandódból, de azt gondolom a Trello a segítségetekre lehet.
Bár mostanában már nem igazán használom, helyette Figmát használok jegyzetelésre, és mindenre is.
Csapatmunkára a legjobb választás mindkettő.
Érdemes elmélyülni bennük. PC-re, iPadre, mobilra is elérhető mindkettő. A FigJam-ben pencillel is jegyzetelhettek, és valós időben láthatjátok egymás tevékenységét.
A printelés módját, és lehetőségét ellenőrizni kell, ha ez fontos.
Szerintem egy ticketing rendszer kell nektek. Alapból ügyfélszolgálatoknak találtak ki, de ezeket használják a szoftverek hibakövetésére is (pl. Bugzilla). Ezekbe bárki (jogosult) felvihet témákat, hozzárendelhet felhasználókat, akik kommentelhetik, vagy rögzíthetik a jegy státuszának változásait (pl. új hiba, személyhez rendelve, több infó kell, javítva, ellenőrizve stb.) vagy bármilyen más munkafolyamat lépéseit.
Ha van belső szerveretek, még külsős tárhelyet sem kell bérelni, mert alig kell erőforrás. Ha nincs, az sem katasztrófa, kb. évi 10-20eFt-ból megvan. A szoftverek, amelyeken fut, mind ingyenesek (Apache webszerver, MySQL adatbázis). A fejlesztés tényleg sokba kerülhet, de ha nem akartok sok extra fícsört, akár nevetségesen olcsó is lehet (a CodeCanyon-on pl. 16$-tól vannak kész rendszerek). Már csak kell valaki, aki párszor ennyiért telepíti és beállítja.
Az első bekezdésre reagálva, azért nem annyira drága a dolog. Lehet bérelni is tárhelyet.
Én elvesztettem a fonalat, hogy pontosan mit is szeretnétek. Szerintem ugyan arról beszélünk amúgy.
Maradva az adatbázisnál, vannak korlátai, de messzemenőleg nem olyan szűkek, mint azt gondolnád. Lehet bennük komplett szöveges dokumentumokat is tárolni. Adattípus szerint 65.000, 16.800.000 vagy 4.300.000.000 karakter tárolására van lehetőség. Ha csak feljegyzéseknek kell, akkor szerintem untig elég a 65.000 is.
Ezt megfelelő programmal pedig úgy jeleníted meg ahogy szeretnéd.
Tovabbá annyi témakört rendelsz hozzá, amennyit szeretnél.
Ha DOS-os volt az alap program, akkor szinte biztosan Windowson futott a "megbuherált" változata. A WIN98-ig, ha nem csal az emlékezetem, akkor futott szinte az összes ahhoz képest nem túl öreg dos-os program. Maga a WIN98 is DOS alapú volt még.
Többször ki lettünk oktatva, hogy mi buta felhasználók vagyunk és hülyék az IT-hez, ilyet csak mérnökök tudnak megtervezni és rendszerterv kell hozzá jó sok pénzért és persze felhő meg webszerver, szóval, milliós az induló költség.
De az biztos, hogy nem adatbázis, mert ott meg vannak szabva, hogy milyen adatbázisban milyen adatokat lehet bevinni és milyen formában.
Olyat használják külön a pénzügyesek, van külön a könyvelőknek, meg a bérelszámolóknak és vannak, akik excelt használnak rengeteg munkafüzettel.
A szuper megoldás az olyan szöveges valami volt, amiben tetszőlegesen tudta összekapcsolni a különböző adatokat, és mindig gyorsan ki tudta deríteni, hogy mi mivel volt összefüggésben.
Ráadásul úgy, hogy egyben voltak a beírások, és mégis, amikor szükség volt rá, akkor a kapcsolatok révén úgy tudta kinyomtatni a különböző beírásokat, mintha egyetlen szövegfájl lett volna.
Próbáltunk szöveges fájlokat csinálni, de amikor ötven fölé mentünk, már nem tudtuk, hogy melyikben mi van, és nem lehetett őket összekötni, csak fizikailag másolni a tartalmak egy részét.
Félfüllel hallottam, hogy talán valami régi DOS-os, még az 1990-es években kötelezővé tett iktatóprogramnak volt valami megbuherált változata, de biztos, hogy windowsos vagy linuxos volt, nem DOS-os.
Hihetetlen dolgokat tudott vele pillanatok alatt kideríteni, csak néztünk.
Van sejtésem róla, hogy mit is szeretnél. Hogy őszinte legyek nem tudok ilyen jellegű programról.
De el tudok képzelni egy webes programot, ami ezt tudja. Az én olvasatomban ez viszonylag primitív program.
Ha jól értem az kell, hogy legyen egy adatbázis, amiben rögzítésre kerül, hogy ki, mikor, mit és melyik témához ír hozzá. Aminek kell hogy legyen egy rögzítő lapja és egy lekérdező lapja.
Ezt meg lehet oldani PHP és SQL alapon netes felületen. Ennek előnye, hogy ha publikus szerveren van, akkor bárhonnan és bármikor írható/olvasható. Ha helyi hálón van, akkor viszont kell egy szerver, ami ezt kiszolgálja, de "csak cégen belül" lesz elérhető.
Netes alapon egyszerre több eszközön is mehet az adatbevitel és az olvasás is.
De egyszerű excel dokumentumban is nyilvántartható. Akkor viszont egyszerre csak egy ember tudja szerkeszteni. (Kivéve Office 365 esetében). Ha vállalati közös tárhelyre van mentve, akkor többen is hozzáférhetnek és többen is szerkeszthetik egy időben. Viszont ügyelni kell rá, hogy ne írják felül egymás adatait.
Vagy lehet kombinálni a kettőt. Van egy adatbázis fájl, ami céges szerveren van és az tartalmazza az adatokat. Ehhez hozzá lehet férni excelben írt makrókkal és lehet azokat írni/olvasni.
Előre is elnézést kérek az off témáért, nem találtam megfelelő fórumot és a beírások tömegét olvasva úgy látom, itt az értelem uralkodik, ezért kérdezem:
Létezik "elektronikus titkárnő", vagy olyan program, amivel azonnal lehet mindenféle témához hozzáírni az aznapi fejleményeket, és ha kell, témánként látni, hogy csak abban a témában mikor mi történt?
Most abba a helyzetbe kerültünk, hogy elvesztettük a titkárnőt, akinek egyetlen jegyzetfüzete volt, abba írt mindent, de utána mégis mindig minden ügyről volt nyomtatott kimutatása, mikor mi történt.
Hasonló program kellene, az összejövetelen valaki beírja, hogy adott témákban mi történt, és később a beírásokat már a témákban lehet látni időrendi sorrendben.
Nem tudom, hogy egyértelmű volt-e, hogy csak azok a sorok duplikációját kellene teljesen törölni, amelyik soroknál minden cella egyezést mutat egy másik sorral.
utolsoSor = Cells(Rows.Count, "A").End(xlUp).Row Dim RangeToCheck As Range Set RangeToCheck = Range("A1:AL" & LastRow) Columns("AM:AM").formula = "=A1&B1&C1&D1&E1&F1&G1&H1&I1&J1&K1&L1&M1&N1&O1&P1&Q1&R1&S1&T1&U1&V1&W1&X1&Y1&Z1&AA1&AB1&AC1&AD1&AE1&AF1&AG1&AH1&AI1&AJ1&AK1&AL1" RangeToCheck.RemoveDuplicates Columns:=Array(39), Header:=xlYes ' Az 39. oszlop tartalmazza az egyesített értékeket Columns("AM:AM").ClearContents
Jól sejtettem, hogy a dátummal van a gond és az általad átírt kóddal tökéletesen működik (az első változatot próbáltam ki, másik kettőt még meg kell értenem (tanulom a VBA-t)). Köszönöm mindenkinek a gyors segítséget, kb 1hónapja kűzdöttem vele.
Lenne még egy kérdésem esetleg hátha erre is tudtok megoldást: Ismétlődések eltávolítása nagy adathalmazból.
Volt rá egy kódom amit kiokoskodtam, de nagyon lassú volt. Ugyan ennél az adathalmaznál a Menű -> Ismétlések eltávolítása pillanat alatt megoldotta. Ezt, hogyan lehetne lekódolni, hogy ilyen gyors legyen?
Ugyanezt a metódust használtam egy másik részen (igazából azt kopiztam le), de ott nem dátumot, hanem szöveget szűrtem és ott is A1-van és ott működik. ezért gondolom, hogy A1-el nincs gond.
Range("A1").Select If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False End If ActiveSheet.Range("A1").AutoFilter Field:=4, Criteria1:="*SZÖVEG*" Dim adatTartomany As Range Dim masolniTartomany As Range Set adatTartomany = ActiveSheet.AutoFilter.Range Set masolniTartomany = adatTartomany.SpecialCells(xlCellTypeVisible)
Az alap probléma az, hogy a dátumot az Excel makróban az amerikai "stíl" (MM/DD/YYYYY") szerint kell megadni, bármilyen formátumban és nyelven van is az adott táblázatban. Ez sajnos némi trükközést - függvény többszörözést - igényel. Ráadásul a szűrőben szöveg formátumban használandó. Az általad mutatott feltétel így hozható létre makró által "ehetően":
DE létezik ennél egyszerűbb lehetőség is időszakok szűrésére. Ilyenkor a Criteria2 paramétert kell használni az alábbi formátumban:
Also used as single criteria on date fields filtering by date, month or year. Followed by an Array detailing the filtering Array(Level, Date). Where Level is 0-2 (year,month,date) and Date is one valid Date inside the filtering period.
A szűrendő tartományt természetesen nem árt megadni egzaktul, de az Excel képes "kitalálni", amennyiben pl. az A1 cella része a tartománynak, akkor az egész tartományt fogja szűrni.
Van egy fejléces excel táblázat. 5.oszlop dátumokat tartalmaz. Feladat, szűrés makróval 2022-es dátumokra és szűrt adat sorok másolása. Az oszlop tartalmaz 2022es dátumokat.
Makró kód: Application.Workbooks(2).Worksheets(5).Activate Range("A1").Select If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False End If Dim startDate As Date Dim endDate As Date startDate = DateSerial(2022, 1, 1) endDate = DateSerial(2023, 1, 1) ActiveSheet.Range("A1").AutoFilter Field:=5, Criteria1:=">=" & startDate, Operator:=xlAnd, Criteria2:="<" & endDate
Ez egy másik próbálkozás, de ezzel is ua.: 'ActiveSheet.Range("A1").AutoFilter Field:=5, Criteria1:=">=2022.01.01", Operator:=xlAnd, Criteria2:="<2023.01.01"
Hiba jelenség leírása:
Szűrés a fejlécen bekapcsol, szűrés ikon az oszlopon ott van, szűrés ikonon megnézve a szűrést, tartalmazza a szűrés feltételt, de nincsenek szűrt adatok. Szűrt oszlop ikon jó helyen van. Szűrésbe belépve, rányomok egy OK-ot a szűrésre, megjelennek a szűrt adatok.Ugyanez a kódrészlet, ugyanebben a makróban egy másik helyen szöveges szűréssel működik. Dátum oszlop egyedi formátumban van, de átállítva dátum formátumra is fenn áll a hiba. Csatoltam egy excelt amiben a kód lefutása utáni állapot van.
Ha még olvasod a fórumot, akkor elkezdtem írni hozzá egy makrót. Kicsit másképpen fog működni, mint ahogyan eredetileg szeretted volna, de szerintem így is jó lesz.
Gépen rájöttem erre a trükkre ma, de most, hogy írtad telefonon is működik. Én az egyszerűség jegyében Chromeot használok telefonon és gépen is.
A Word körlevél készítőjét üzemorvosi beutaló készítésére használtam. Illetve én töltöttem ki a megfelelt papírokat is. Be volt víve egy adatbázisba a dolgozók összes lényeges adata és volt egy logikai mező, hogy ki az aktív dolgozó. Akkor egy kattintással lehetett nyomtatni a beutalókat és a megfelelt papírokat is. Az üzemorvos olyan lusta volt, hogy a megfelelt papírokat se szerette kitölteni... Mondjuk 3 alkalmazott volt velem együtt, plusz a főnök.
Átlag Jánosnak persze nincs telepítve a Notepad++, így ezt az utat kell bejárnia. Ha a beillesztett számok nem csak mellékes adatok, hanem számolni is kell velük, akkor pedig természetes, hogy ez a módszer kell, mert nem mindegy milyen tizedesjelölő van a szövegben.
Ami nekünk fontos az a leírás alapján az attachment paraméter. A szimpla macskakörmök közé kerülnek a csatolmányok, amiket vessző választ el kötelező jelleggel. Emiatt volt a hiba, mert a mappa nevében lévő vesszőt csatolmány elválasztónak vette. Ha jól emlékszem, akkor hibát írt ki felugró ablakban a Thunderbird és a body részt be se vette. Végül a body rész sincs már használva, mert a message részben TXT fájlból van beolvasva maga az üzenet. Ott meg lehetett formázni HTML kódokkal azt. Van valahol egy sor, hogy if message<>"" then body="" End if. Ez nem okoz problémát neki. A wait függvényre azért van szükség, mert kb. 3 secundom alatt töltődik be a Thunderbird új e-mail ablakja és utána kell, hogy "lenyomódjon" az enter a levél elküldéséhez.
A Wordre rátérve. Szerintem az első számítógépünkön is márt volt '98 vége felé. Jóformán sohasem használtam a nélkül, hogy ne látnám a rejtett karaktereket. Egyszerűen frusztrál, ha ki van kapcsolva. Amúgy az NP++-t azért szeretem, mert jóval gyorsabban megnyílik, mind a Word és rögtön eldobja az összes felesleges formázását a szövegnek. Így nem kell még pluszban mindent kijelölné, az egeret lökdösni, hanem rögtön mehet a CTRL+A&C és már a vágólapon van a szöveg eltüntetett formázással. Ha a volt munkahelyemen valakinek magyaráztam számítógép kezelési alapokat, akkor törekedtem arra, hogy minél kevesebb lépésből és egyszerűbben legyen megoldható egy probléma. Már az feladta a leckét és 8 év alatt amíg ott voltam, nem tudtam megtanítani, hogy ALT+Enter az új sor cellán belül, nem pedig 999999 space. Szóval reménytelen volt kicsit is összetettebb dolgokat megtanítani. Ezért próbáltam meg mindent makrókkal megoldani, amik elvégzi a felhasználó helyett a feladatokat, mert akkor csak a nyers adatokat kell bevinni és mindent elvégez a makró. De sajnos ez se jött össze minden esetben, pedig megpróbáltam a lehető leszájbarágósabban leírni minden lépést. De a számlázó programból való adatkinyerésnek is változott az oszlop sorrendje hébe-hóba és hiába írtam le, hogy mi legyen a sorrend és mi az ami egyáltalán nem kell, nem sikerült elmagyarázni. A vevők listájánál egy-két fontos oszlop volt nálunk: nyilván a neve, adószáma, vevőcsoportja és ha hivatkozni akartam rá Excelben, akkor a vevőkódja. (Mivel néha változtattak nevet, így egyszerűbb volt egy kód-név adatlapot csinálni, mint utólag módosítani mindenhol a régi nevet az újra). De akkor a fejlesztők egyszer csak gondoltak egyet és megjelenítettek számunkra teljesen felesleges oszlopokat is: levelezési cím, fax, weboldal, cégjegyzékszám, bankszámlaszám, hitelkeret, stb. Nagy részük ki sincs töltve, mert felesleges infók lennének vagy a kutyát se érdekli. De a fejlesztők gondolnak egyet és kirakják a listába plusz oszlopként, ahol összekuszálják a meglévő oszlopaink sorrendjét. De van rá lehetőség, hogy legalább elrejtsük.
Bizonyára félreérthető voltam az első hozzászólásban. Ott az általad megadott linken levő táblázat bemásolását próbáltam bemutatni az elválasztójel megváltoztatásával, azzal, hogy nem lett dátum egyetlen számból sem, hanem a tizedespontos szám került be.
Vagyis copy-paste történt.
Azt már nem mutattam be, ami a mostani hozzászólásban volt, hogy simán vissza lehet állítani a tizedesvesszőt és marad számként az érték, ezt most pótoltam. Még annyit kiegészítésül, hogy a módszer alkalmazható akkor is, ha ilyen tizedespontos számokat tömegesen szeretnénk kézzel bevinni.
Szerintem pont nem kanyarodtunk el. Hiszen itt is copy-paste van.
"időnként dátummá varázsol egyes számokat."
Nem időnként és nem csak a copy-paste, hanem minden olyan esetben, ahol általános cellaformátum van és dátumként értelmezhető adat kerül bele. Pl. ha 8.5-öt írsz be, akkor bizony dátum lesz a cellában.
Viszont a bemutatott esetben, amikor a módosított tizesjellel beolvassuk az értéket, utána visszaállíthatjuk a rendszer szerinti elválasztót és a pontok helyén megjelenik a tizedesvessző:
Tehát ez megoldás a copy -> paste problémára, nem kell Notepad++ vagy Word-be másolás!
Azért javaslom, hogy a makrót abban a környezetben mutasd be, ahol használod. Feltételezem, hogy a makrót nem abban a munkafüzetben indítod, ahol az adatok vannak, ezért az Excel VBA csoportban írt mintádban rögtön az első sor hibaüzenetet ad, ha azt a belinkelt munkafüzeteden belül próbálom indítani:
Application.Workbooks(2).Worksheets(5).Activate
Természetesen a Workbooks(2) nélkül működik: Application.Worksheets(5).Activate
Sziasztok. Láttam, hogy van Excel VBA csoport is, de ott nem kaptam választ problémámra. Esetleg itt tud na valaki segíteni Excel VBA programozásban? Ha igen, akkor megírom miről lenne szó.
A Wordben, ha bekapcsolod a rejtett szimbólumok megjelenítését (¶) sok ilyen problémát kiküszöbölhetsz.
A Wordben is egyszerű az összes formázás törlése.
Makrókat abban is lehet írni. De tény, hogy nagyon másra vannak!
A parancssorban a fájlnév idézőjelek nélkül van? Érdekes. Windows Servert én már nem használok, a W10 parancssora elvárja az idézőjelbeni fájlneveket, és a Word makrók is, mert a szóköz is gondot okoz neki. Idézőjelek közt mehet a szóköz, és a vessző is.
Nekem a Notepad++ az egyik első program amit telepítek. Nálam az egyik legalapabb a számítógépes munkavégzéshez. A Word-öt nem szeretem ilyen szinten, mert van benne csomó haszontalan funkció, miközben rengeteg hasznos nincs benne. Nyilván a kettő programot össze se lehet hasonlítani, mert teljesen másra van, hiába szövegszerkesztő mindkettő.
Ha kell egy gyors jegyzet, akkor azt is NP++-ba írom fel, el se kell menteni, mert csinál neki ideiglenes fájlt és a program bezárása, majd újranyitása után is ott van.
Apropó, ha már Word. Az előbb futottam bele egy problémába. Volt munkahelyemnek segítettem be EPR+KVTD bevallás elkészítésébe. A jó előbb sikerült a végére pontot tenni. A lényeg, hogy már nem rendelkezem a jogosult ügyfélkapus adatokkal, így megkértem volt kolléganőmet, hogy írja már bele egy dokumentumba az asztalra. Ő Wordbe írta bele. Én naivín kimásoltam, majd beillesztettem az ÁNYK-ba, de nem akarta elfogadni a jelszót. Egy kis telefonálgatás után kiderült, hogy a jelszónak jónak kell lennie. Mivel távoli asztalra voltam bejelentkezve és hogy biztosan átjön-e az éteren a CTRL+C, így beillesztettem az itthoni gépemre NP++-ba. Kb. nálam megszokás ilyen esetben az automatikus CTRL+A&C és úgy illesztettem be az ügyfélkapuba és el is fogadta. Visszalépve a távoli asztalra ott is bemásoltam NP++ba és ki is másoltam. Utána már ott is elfogadta. Én arra gondolok, hogy a Wordből való másolnál bekerül a sor végére egy felesleges CRL, LF karakter sor. Amit bevitt a jelszó mezőbe, amikor közvetlenül a Wordből másoltam. Az NP++ pedig nem teszi oda automatikusan, csak ha kijelölöd az új sor karaktert is.
Amúgy többek között ezért is szeretem, mert eldob minden felesleges formázást. És hozzá is készíthetők makrók.
Anno szintén a volt munkahelyemen csináltam árjegyzék kiküldő Excel táblázatot, mivel a Thunderbird levelező meghívható parancssorból így adta magát az automatizálás. A magyar karaktereket viszont nem igazán csipázta, így át kellett őket konvertálni html kóddá. Pl az á-ból lett "á". Minden magyar karakterhez csináltam egy kicserélő makrót az NP++-ban, így könnyű volt a szövegben minden karakter módosítani. Végül Excelesítettem azt a lépést is, sok-sok egymásba ágyazott helyette függvénnyel. Ami még feladta a leckét, az a mappa nevekben lévő vessző. A cégnél Windows Server fut és Windows 10 munkaállomások vannak. Viszont eszembe jutott (mert még volt szerencsém használni anno), hogy kompatibilitási okokból a régi windosokban benne maradt a DOS-os 8.3-as fájlnév formátum. Kis utána járással kiderült, hogy manapság ez már a MS Serveren le van tiltva, mert felesleges helyet és erőforrást foglalna ezek legenerálása. De ideiglenesen be lehetett kapcsolni a generálást, úgy hogy az ne automata legyen és annak az egy mappának adtam 8.3-as fájlnevet. A dolog érdekessége még, hogy nem kellett betartani az eredeti 8.3-as formátum generálási szabályait, hanem "szabadon" adhattam meg bármit. Ez alatt azt értem, hogy a "TextFile1.Mine.txt” a szabályok szerint "TEXTFI~1.TXT" lett volna, de én akár "alma.txt" nevet is adhattam neki. Csak nem fájlról volt szó, hanem mappáról, de a lényeg ugyan az. Majd kikapcsolva a generálást megmaradt az egy darab legenerált 8.3-as mappanév. Erre csak egy dolog miatt volt szükség, túl sok hivatkozást kellett volna átírni, ha megváltoztatjuk a mappa nevét, viszont logikailag onnan kellett csatolni a csatolmányt. Viszont a parancssor a vesszőt paraméter elválasztó karakternek vette és nem tudta csatolni a vesszős nevű mappából a fájlokat. Próbálkoztam jó pár megoldással, hogy a vesszőt másként adjam meg, de vagy nem edte meg a parancssor vagy vesszőként értelmezte.
Apósom volt a postása. Így volt szerencsém találkozni vele élőben három éve. Alá irattam a saját példányomat is, valamint édesapámét is. Így még nagyobb értéket képviselnek a szememben a könyvek.
A tizedespontot tartalmazó, és dátumnak is nézhetőt dátumnak rakja be, a kötőjelest is.
Én azt szoktam, hogy Wordbe rakom, ott (ha nem zavaró a végeredményben) lecserélem a tizedespontot vesszőre, a "-"-t "_"-ra. Ha gond, akkor marad az átbogarászás, utólag.
Aposztrófot előre nem lehet berakni, majd copy-paste. (Vagy nem tudok róla.)
Sziasztok! Bizonyos adatok Excelbe történő beillesztésekor vagy importálásakor az Excel a dátumnak vélt karaktersorokat dátumformátumban írja be. Pl. a 10-12 (telefonszám mellék) helyett dec. 10 -t jelenít meg dátumformátumban. Hogyan lehet ezt a funkciót kikapcsolni? Excel 2007
Lapfülek színezgetésével és megfelelő elnevezésével közelíthető a téma max. szerintem.
Amúgy összerakhatsz egy munkalaphierarchiát egy külön munkalapon úgymond félmanuálisan. Több lehetőség van erre - de beépített opció nincs. A munkalapok között pedig egy-egy hivatkozásra kattintva lehet ugrálni. Megfelelő szintű excel tudással egész jól meg lehet egy ilyet csinálni.
"Azt tudod tenni, hogy az xx... és az yy... munkalapokat külön-külön munkafüzetekben tartod." Amikor ezt írtam, nem láttam a pár perccel korábbi beírásodat, hogy pont ezt akarod elkerülni.
"...azt szeretném,ha az "xx,xx stb" nevű munkalapjaim tudnám valamilyen módon egy mappában helyezni..."
A mappaa számítástechnikában azt jelenti, hogy bizonyos szempont szerint összetartozó fájlokattudunk benne egy csoportba tenni, így egy kattintással láthatóvá tenni őket. Aztán mappákat is lehet csoportosítani, ilyenkor az ebben lévő mappákat almappának nevezzük.
Viszont az Excel munkafüzet egyetlen fájl, így a mappa fogalma nem értelmezhető ezen belül. A munkalapok nem csoportosíthatók az általad kívánt módon. Azt tudod tenni, hogy az xx... és az yy... munkalapokat külön-külön munkafüzetekben tartod.
Szia. Csoportosítani szeretném a munkalapjaimat. Azért lenne erre szükségem mert nem 7-8 munkalapról van szó egy fileon belül,és csoportosítás nélkül már néha nehézkes megtalálni amelyikben épp dolgozni szeretnék,de nem szeretném külön fileon menteni ezeket a munkalapokat.
Amire szükségem lenne egy olyan csoportosítás ahol pl alul ahol a munkalapok vannak tudnék valamilyen csoportokat létrehozni,egy legördülő menüt akár, és ott felsorolja melyik munkalapok vannak az adott "csoportban"
Tudtommal fájlon/munkafüzeten belül nem lehet mappákat használni. Viszont a munkafüzeten belül úgy csoportosítod a munkalapokat, ahogyan csak szeretnéd - megfogod a lapfület és áthúzod oda, ahol szeretnéd ha lenne.
Sziasztok. Azt szeretném kérdezni hogy tudom e valahogy külön csoportosítani a munkalapjaimat. Képen lévő példával élve azt szeretném,ha az "xx,xx stb" nevű munkalapjaim tudnám valamilyen módon egy mappában helyezni ugyan így az összes többi munkalapjaimmal eljárva csoportosítani egybe azokat. A legegyszerűbb megoldás az lenne ha a csoportosításokat egyszerűen több file-al oldanám meg,de egybe szeretném ha meglennének. Megoldható?
Ezt könnyebb volt megérteni, mint az előzőt. :) Kicicomáztam, az Összesítés lapra tettem egy kis korrekciós lehetőséget, ha mondjuk valaki ciklus közepén hagyja ott a szakkört, akkor ott le lehet nullázni. Itt van. Kipróbáljuk az osztályfőnökkel, remélem, szeretni fogja. Köszönöm a segítséget még egyszer!
Köszönöm még egyszer a szakkörnyilvántartó táblázatot. Működik, tudom formázgatni, fejlécezgetni, megvédeni a számolt cellákat, de van egy probléma, amivel nem tudok mit kezdeni.
A szakköröket elvileg valóban heti órarend szerint tartják, de ebbe folyton belerondít valami: ünnepek, iskolai kirándulás, a tanár betegsége stb., így gyakran elmarad egy-egy. Ezért a szakkörök megtartása nem egyszerűen az eltelt idő függvénye, hanem a tanár jelzi, hogy megvolt a négy szakkör, lehet fizetni a következő adagot. Ahogy az elején írtam:
"Ha megvolt a négy foglalkozás - akár ott volt a gyerek, akár nem - akkor az osztályfőnök jelzi, hogy most be kell fizetni az adott szakkör következő díját, és kezdődik az egész elölről."
Tehát valami olyan bemenet kéne, hogy "Szakkör1 - x alkalom fizetendő". Hogy mikor telt el az x alkalom, azt nem is kell nyilvántartani, majd a következő "Szakkör1 - x alkalom fizetendő" bemenet előírja a következő fizetést. Az x az nem mindig négy, például év végén lehet, hogy csak kettő.
Esélyem sincs, hogy ezt magam megcsináljam, de ha megcsinálnád, örömmel hozzájárulnék a közben elvesztegetett energiáid pótlásához. :)
Azért jöttem vissza, hogy beírjam, hogy rájöttem, hogy cellamásolásokkal megoldható a feladat, a megoldásod nagyon elegánsnak tűnik, gratulálok és nagyon köszönöm, hogy foglalkoztál vele!
Funfact nálam MS Office Professional Plus 2021 verzió ketyeg, ha lehet hinni a névjegynek akkor 32 bites verzióban. (Bár emlékeim szerint 64 bites verziót vásároltam és telepítettem...)
Ez okozhat problémákat a gyakorlatban, ha egy ilyen egyszerű esetben is van eltérés. Persze itt látom, hogy nincs hiba, noha az ellenőrző cella hibát jelez (értéke eltér 0-tól, ezért a feltételes formázás miatt színnel jelzi a hibát)
2 db 30 tizedesig megegyező szám különbsége a 12. tizedesnél eltér 0-tól.
A B2 cella egy másik táblázatra hivatkozik, és az értéke egy másik munkalapon korábban beírt érték 1000-el való osztás, majd szorzás után. A zöld szám egy másik táblázatba beírt érték, ami értékbeillesztéssel került a D2 cellába. Az itt látható értékek formátuma szám.
Nem exceles megoldás, csak azért mertem javasolni, mert ilyen esetekben van létjogosultsága. :)
És ha jobban belegondolunk, néha jobb a dolgokat nem túlbonyolítani.
Magamból kiindulva, soha nincs olyan hogy egy táblázatom eléri a tökéletes végleges változatát, mindig elcseszem a csinosítgatással és a továbbfejlesztéssel az időt.
A jó öreg kartotékrendszer! :) Kösz a tippet, az én szívemnek kedves, és lehetett volna így kezdeni. De ha már nagy pofával bemondtam az online megoldást, nem mehetek oda egy marék színes papírral. :)
Mi van ha a tanárnő készíttet kis kártyákat, mint egy teniszklubban?
4 alkalmas kártya, és a szakkörvezetőnek szignózni kell az alkalmakat, vagy készíttethet perforáltat, melyet leszakítanak. (kb. 100 Ft/bérlet) Faék egyszerű, kevesebb feladat.
Köszönöm szépen, úgy látom, a lényeget megcsináltad, azt hiszem, ebből már össze tudok hozni valamit amivel mindenki boldog lesz. Az adatvédelem tényleg problémás lehet, azt fogom a tanárnőnek javasolni, hogy csak ő használja, a nem fizető szülőket pedig nyektesse privátban. Még egyszer köszönöm, délután nekilátok, remélem bírok vele.
Tudnátok segíteni? Befutottam az erdőbe tátott szájjal....
A gyerek osztályfőnöke láthatóan nem tudja kezelni a tíz kölök szakkörbefizetéseit, én hülye meg azt mondtam hogy csinálok neki egy on-line táblázatot hozzá. Már bánom.
Először Google spreadsheet-ben akartam, de rájöttem, hogy itt több a dimenzió, mint kettő, ráadásul a Google spreadsheet-ben Pivot tábla sincs, csak a fizetősben. Néztem ingyenes on-line adatbáziskezelőket, pl. seatable.io, de nem tudok velük se egy rendes relációt, se egy használható űrlapot létrehozni. Nem is adatbáziskezelőnek néznek ki ezek, hanem felhízlalt Excel-tábláknak. Persze simán lehet, hogy csak én nem értek hozzá.
Van valakinek ötlete, miben, hogyan érdemes ezt megcsinálni?
Az osztályban van tíz tanuló, az iskolában tíz szakkör. Minden tanuló választ magának szakkört, ahányat akar. Minden szakköröknek van egy ára, ami négy foglalkozást fedez. A tanulók befizetik, a tanárnő felírja. Ha megvolt a négy foglalkozás - akár ott volt a gyerek, akár nem - akkor az osztályfőnök jelzi, hogy most be kell fizetni az adott szakkör következő díját, és kezdődik az egész elölről.
Hogy ne kelljen a képleteket átírni az kapott fájlban lévő oszlopokra, hanem az eredeti mintában lévő oszlopok szerepeljenek, ezért a Bevitel munkalapból készítettem két másolatot. Külön a férjeknek, és külön a feleségeknek: Bevitel teszt férj és Bevitel teszt feleség néven. Így mindkettőben az E és F oszlopban vannak a vesszőhelyek, az A oszlopban a vesszővel elválasztott nevek, és a B, C, D oszlopban a szétszedett nevek. A Feri technikájával szétszedett nevek pedig a G, H és I oszlopban vannak. Végül a J oszlopba egy teszt függvényt írtam, ami üresen marad, ahol egyezik a két megoldás mindhárom oszlopa, eltérés esetén meg azt írja bele, hogy eltér.
Ezzel a megoldással a férjek esetén egyetlen eltérést nem találtam, a feleségeknél is csak a 190. soron lett egy nem túl lényeges eltérés:
Ettől függetlenül azt gondolom, hogy Feri megoldása elegánsabb, és könnyebben kezelhető. Ha nem közel egy időben írjuk, akkor nem is kezdtem volna bele.
Nagyon köszönöm a fáradozásotokat, hálás vagyok érte!
Delila10 és pimre képleteinél bizonyos esetekben, ahogy észre vettem a nevek hosszának aránya a függvényében lett hibás a végeredmény (hol belekerület egy vessző, hol lemaradt valamelyik név eleje és/vagy vége). Igazából nem értem miért, hiszen ha a műveletet manuálisan elvégeztem akkor rendben volt. Én mindenféle "HA" művelettel és csillió segédoszloppal sem jutottam el idáig. :)
Fferenc50 képlete viszont hozta a kívánt végeredmény. Néhágy új szabályt alakalmaznom kellett, mert üres cellánál és két vessző közti szóközzel fals volt az eredmény, de semmi ilyen eshetőségről nem szóltam az elején, de ezeket könnyedén orvosoltam.
A függvények alakalmazása a BEVITEL munkalapon történt, a végeredményt jelentő INDEX munkalap pedig így reszponzív módon szépen megjeleníti a kívánt tartalmat.
Hú, ez a villámkitöltés tényleg óriási. Nem ismertem, de az előző példámon kipróbáltam. Ez egy kis lépés az AI felé.
Az első nevet - nálam: Kovács,péter,sándor a közvetlen mellette lévő 3 oszlopba (B, C, D) kimásoltam. Aztán az egyes kimásolt nevek közül az elsőre állok a B oszlopban, majd a Ctrl+E lenyomására végigmásolja. Aztán ugyanezt megteszem a C és D oszloppal. Azokat is másolja, és ha valamelyiknél nincs kitöltendő adat, akkor üresen hagyja. Egy feltétel van, az A oszlopban a neveknek folyamatosan kitöltve kell lenniük. Ha üres sor van, ott befejezi a munkát.
" én egy segédoszlopos megoldást csináltam". Elegánsabb lett volna, ha azt írom, hogy én is egy segédoszlopos megoldást csináltam, mert az eredeti kiindulópont Deliláé volt.
Szia, én egy segédoszlopos megoldást csináltam. Figyelembe véve egy olyan lehetőséget, hogy akkor is működjön, ha egyetlen vessző sincs valamelyik sorban:
Megnéztem a villámkitöltést, de hiába adok meg neki mindenféle variációt, nem igazán talál benne logikát. Ahol nincs harmadik név ott megismétli a másodikat. A legjobb eredményt a "szövegből oszlopok" adja ami a vesszőket figyeli és úgy dobja szét az oszlopokat.
Viszont ez és a villámkitöltés is független a kiindulástól, így ha az eredetiben módosítok az nem jelenik meg a végső feldolgozott formában, ezért görcsölök a függvényekkel. :)
Hasonló furcsaságokat produkál mint amikor én próbálkoztam, csak a te képleteid jóval egyértelműbekk.
Bizonyos esetekben megkergül, ezeket kezdtem a HA függvényekkel kigyomlálni, de abba nagyon belezavarodtam. Pl ebben az esetben a G5 értékét nem is értem...
Legfőképp az ilyen típusú eltérések okozzák a problémát, valahol csak egy vessző van, valahol kettő, illetve a nevek hossza is változó ami az általam próbálgatott képletekben csak problémákat szül. "HA" függvények halmazával sem tudok egységes függvényeket alkotni, ami mindegy típusú cellára jó lenne.
Vesszővel elválasztott, neveket tartalmazó cellákból szeretném függvény segítségével kinyerni az adatokat, későbbi feldolgozás céljára. A cél az lenne, hogy az egy cellában szereplő 3db vesszővel elválasztott nevek, 3db különböző cellába kerüljenek. Mindenképp függvénnyel szeretném, mert az alap adathalmaz változhat és emiatt a „szövegből oszlop” átalakítás nem célszerű út.
A cellák tartalma így néz ki:
Valahogy az én agyam nem tud ráhangolódni a függvényekre. Gondolom ez megoldható LEFT,RIGHT,MID és SEARCH függvények kombinációjával. Örülnék ha a függvény Google Táblázat kompatibilis lenne.
=HA(KEREKÍTÉS(A1;2)=KEREKÍTÉS(A2;2);"OK";"Valami nem OK")
Ez azt csinálja, hogy a matematika szabályai szerint kerekíti A1 és A2 cellák tartalmát 2 tizedes jegy pontosságra. Ha így egyenlőek, akkor kiírja, hogy "OK", ha nem egyenlőek, akkor kiírja, hogy "Valami nem OK".
"Ha nem nyitja meg az excel ma reggelre a gépen a fájlokat dupla kattintással. Ami még látszik, hogy #appvlp lett társítva a fájlokhoz. A hiba egy frissítés az office-hoz (szeptember 12). Megoldás. Office-on belül fiók-nál frissítések tiltása, majd rendszergazda joggal ennek a parancsnak a futtatása: "C:Program FilesMicrosoft Office 15ClientX64officec2rclient.exe" /update user updatetoversion=15.0.5571.1000 A fenti parancs Office 2013 64 bites verzióra vonatkozik, eltérő verzió esetén módosítani kell! Ezzel visszaállunk a július 11-én kiadott verzióra."
Hogyan tudok excelben úgy pdf-filera mutató hivatkozást vagy honlapra mutató hivatkozást befűzni, hogy a befűzés után a hivatjozás neve átnevezhető legyen? Illetve fog e működni a hivatkozás, ha utána az excel file-ból pdfet készítek?
Én az új munkafüzeteket mindig a Mentés gombbal mentem, mert egyszerűbb elérni, és hozzá vagyok szokva, hogy úgyis rákérdez a mentés helyére és a fájlnévre.
De nyilván más szokásokat is ki lehet alakítani :)
Nem szeretem, hogy alapból minden cella függőlegesen lentre van igazítva. Ezért egy új füzetben minden cellát függ. középre igazítottam, majd Munkafüzet.xlsx néven elmentettem az XLSTART könyvtárba. Azóta ezzel a füzettel nyílik meg az Excel (és persze a háttérben a personallal).
Egyebeket is be lehetne állítani ebben a füzetben, pl. hogy az első oszlop dátum formátumú legyen, ha általában ilyen lapokat használunk.
Valószínűleg a másik lapon "nevek" vannak. Ezek valójában tartományok, amelyeknek saját nevük van. A Képletek menüben a Névkezelő alatt lehet menedzselni őket.
Az ilyen névvel rendelkező tartományokat meg lehet adni adatforrásként Érvényesítés során.
A kijelölt cellákra a következő képen lehet ezt beállítani:
Ki kell jelölni a cellákat.
Át kell kattintani az adatok fülre.
Majd az "Adateszköz" csoportnál az "Érvényesítés" parancs
Megengedve szövegnél ki kell választani, hogy lista.
Forrásnak be kell állítani a lehetséges értékeket
A "Legördülő lista" mellett be kell pipálni a négyzetet
Illetve nézd meg a többi beállítást is. Pl. be lehet állítani, hogy csak az érvényes listaelemeket fogadja el, ha nem olyat ír be kézzel az ember, akkor milyen üzenetet kapjon, stb.
Más fájlnevekkel nem próbálkoztam, szerintem ha sok fájl van az XLSTART mappában, akkor mindegyiket megnyitja. De valószínűleg a PERSONAL.XLSB név speciális, és csak akkor lesz rejtett munkafüzet, ha így hívják.
De ez csak az én véleményem, szerintem jobban jársz, ha szépen módszeresen kiteszteled.
Fogalmam sincs, hogy ez mitől függ. Talán Office verziótól, vagy OS verziótól, vagy a csillagok állásától...
Mindenesetre az aktuális pontos helyet ki lehet deríteni. Ha a VB Editorban a Project Explorer ablakban ráállsz a PERSONAL.XLSB feliratú projektre, aztán az Immediate ablakban kiadod ezt a parancsot:
? ThisWorkbook.Path
akkor kiírja.
És ha már megtaláltad, szerintem ez is csak egy ugyanolyan fájl, mint a többi. Ha kiveszed a mappából, akkor nem nyílik meg automatikusan, ha visszateszed, akkor megnyílik.
Rá állsz a B1 cellára, majd feltételes formázásnál új szabály. A szabálytípusnál pedig válaszd "A formázandó cellák kijelölése képlettel" opciót. Értékek formázása, ha ez a képlet igaz mezőbe írd be:
=A1=2
Formátumnál pedig állítsd be, hogy mi legyen kék (vagy amit szeretnél).
Majd OK gomb.
Utána ugyan ezt meg kell csinálni, csak a mezőbe "=A1=1" szerepeljen macskakaparások nélkül és ott is állítsd be a formátumot olyanra amilyenre szeretnéd.
Használtam már feltételes formázást, de azt csak arra a cellára tudtam beállítani ami meg is lett formázva. Itt viszont másik cella értéke alapján kell formázni.
Köszönöm. Ez az egyéni makró munkafüzet ugye az XLSTART mappában lévő personal.xlsb? Csak ezen a néven ismeri az Excel vagy bármilyen nevű .xlsb -t ebben a mappában ugyanúgy kezel? Okozhat-e problémát, ha ez a fájl csak időnként van ebben a mappában (amikor szükségem van rá), máskor pedig nincs, illetve időnként cserélgetem?
Úgy hívják, egyéni makró-munkafüzet. Elindítod a makrórögzítőt, és amikor megkérdi, hogy mi legyen a rögzítés helye, kiválasztod a lenyílóból az "Egyéni makró-munkafüzetben"-t. Aztán rögzítesz egy tetszőleges makrót. Akkor létrejön ez a fájl, a Visual Basic editorban látod, és utána oda mindenféle makrókat be lehet pakolni. Ez a munkafüzet mindig a háttérben, rejtettként nyílik meg, valahányszor elindítod az Excel alkalmazást.
Hátránya, hogy ha indítasz párhuzamosan egy második Excel instance-ot, akkor az is meg akarja nyitni ugyanezt a fájlt, és abból lehet némi kavarodás. De nem vészes.
Ha van egy ilyen makróm, akkor azt hogy lehet elérni, hogy bármelyik megnyitott Excel fájlban működjön? Korábban, mikor tömegesen volt szükségem értékbeillesztésre, úgy sikerült megoldanom, hogy egy üres makróbarát munkafüzetben volt a makró, és ha használni akartam, akkor ezt a munkafüzetet is megnyitottam. Van ennél egyszerűbb megoldás?
Először irtam egy elnézést kérő hozzászólást, jelezve a hibát. Aztán törlést kértem a moditopikban mindkettőre, és szerencsére gyorsan megtették. Láthatsz két lyukat a számozásban.
"Nálam pl. nem megy, pedig tök jó ötlet." Nem egészen értem, hogy mi az oka, hogy nálad nem megy. Nincs Menü gomb?
Sajnos vannak olyan gépek, ahol nincs. Persze van olyan, ahol a jobb oldali Windows gomb hiányzik, és csak Menü gomb van.
Ha viszont van Menü gombod, akkor lehet, hogy nem jelöltél ki másolandó cellá(ka)t? Mert egyébként működnie kellene. Vagy a menü gomb egyáltalán nem ad a gépeden helyi menüt más helyzetben sem? Mert akkor a gépeden van valami másképp beállítva.
2016-os, 2019-es és 2021-es verzió alatt próbáltam. Mindhárom verzió alatt működött. Nem tudom, hogy mikortól érhető el a jobb egérgombos menüben a gyorsgomb. Régen emlékszem, hogy egy külön ablakban kellett beállítani a beillesztés beállításait.
Nálam így néz ki a menü, a piros feliratok akkor jelennek meg, amikor ráviszem az egeret. Nálam "É" betűvel lehet köztük váltani, a második "É" betű lenyomására ugrik az érték beillesztésre.
Férfiasan bevallom én se használtam túl sokat. De tavaly év végén felmondtam a régi munkahelyemen és írtam néhány utasítást, mit hogyan csináljanak az excel táblázatokban. Akkor jöttem rá, hogy ez a legegyszerűbb és a leggyorsabb módja. Amúgy is jó magam előnybe részesítem a billentyű kombinációkat az egérrel való hadonászással szemben, mert jóval gyorsabb velük a munka.
Amikor gyerekként egy-két alkalommal voltam a sebészeten ellátáson, akkor mindig csodáltam, hogy anya milyen gyorsan lépked ide-oda a programban. Akkor még valami DOS alapú programot használtak, gyakorlatilag egér nélkül lehetett csak. Mivel addigra már nagyon sok évet lehúzott ott, így a kisujjában volt minden kombináció és szinte csak egy villanásnyi időre jött fel egy új ablak, de ő már tovább is lépet.
Igaz a gomb nevére már nem emlékeztem :) De ezek szerint egész találó neve van.
Off: Ez nekem új. Nem használtam sose. Most rákerestem, és kiderült, hogy a neve is az, amit írsz menü billentyű, angolul menu button, vagy menu key: https://en.wikipedia.org/wiki/Menu_key. Lényegében a jobb egér gomb funkcióját látja el. Mellesleg a Shift + F10 is használható ugyanerre a célra.
Ha magyar Exceled van, akkor a jobb oldali alt mellett van egy speciális billentyű, azzal menüt lehet előhívni. Ha cellán állsz, akkor gyakorlatilag jobb kattintásnak felel meg. Utána kétszer É gomb, majd enter. És máris csak értéket illesztesz be.
Egy olyan kérdésem lenne, hogy megoldható-e makróval, hogy a ctrl+v lenyomására csak az értéket illesze be, és semmi mást. Szóval formátumot, meg ilyeneket ne.
Viselkedjen úgy, mintha csak az érték beillesztésére mennék egérrel.
Mert szerintem a második csoportnak így kellene kinéznie:
A4: 2 B4: 5
A5: 6 B5: 2
A6: 9 B6: 1
És az összegzőnek is így kellene kinéznie:
C1: =SUM(A1:A3)=12
C2: =SUM(A4:A6)=17
Mert Garashan ezzel a feltétellel gondolta a javaslatát. Szerintem helyesen, különben nem stimmelnek a számaid. A Sum (A3:A6) =11 lenne (3+2+6), és a második csoportban is - bár ott két A6 szerepel - a Sum (A3:A6) ott is 17 lenne.
Légy szíves figyelmesebben add meg a képleteket, bár szerintem Garashan megoldása jó.
Nem,viszont a probléma megoldásra kerül ha nem továbbküldöm a filet,hanem megoszton megnézésre.
Egy másik kérdésem lenne.
egy nagyon egyszerű példával szemléltetve a dolgot.
A1: 5 B1: 3
A2: 4 B2: 4
A3: 3 B3: 6
A5: 2 B5: 5
A6: 6 B6: 2
A6: 9 B7: 1
C1: =SUM(A1:A3)=12
C2: =SUM(A3:A6)=17
A B oszlop az egy sorrendet jelent a számok alapján legnagyobb az 1. és így tovább.
Vegyünk egy másik példát,amivel problémába ütközöm
A1: 3 B1: 4
A2: 4 B2: 3
A3: 5 B3: 2
A5: 1 B5: 5
A6: 11 B6: 1
A6: 0 B7: 6
C1: =SUM(A1:A3)=12
C2: =SUM(A3:A6)=12
A problémám az,hogy a C1 és a C2es számok nem lehetnek egyenlőek,ez esetben szeretném ha a táblázat hozzáadna az összeshez a C1 és C2 cellában,amelyiknél a B oszlopban az "1" szerepel. Ez esetben a C2eshez,mivel az A6os számhoz tartozik az egyes szám. Ezt hogyan tudnám megoldani?
A makró megakadásról jut eszembe. három évvel ezelőtt kezdtem el írni egy meglehetősen szertegátazó interaktív programot, akkor még Office 2010 alatt. Minden rendben volt vele. Aztán, amikor a befejezéshez közeledtem - jó néhány hónap múlva -, telepítettem a 2019-es verziót. Legnagyobb döbbenetemre a program időről időre egyes helyeken megállt. Nem küldött hibaüzenetet csak megállt. Amikor megtaláltam a megállás helyét - mindig más helyen volt - akkor F5-el tudtam folytatni. Csakhogy nem magamnak szántam, és nem lett volna elfogadható, hogy így adjam át a felhasználónak. Sok találgatás után kiderült, hogy a ScreenUpdating kikapcsolása volt az ok. Hogy miért, arról fogalmam sincs. Kiirtottam, és onnantól hibátlanul működött. Kicsit rángatódzott néha a képernyő, de ezt inkább tartottam elfogadhatónak, mint a rendszeres megállást.
Az eredeti makrót évekkel ezelőtt írtam, 2016-os vagy 2019-es Office verzió alatt. Itthon 2021-es verzióm van. Tegnap este viszont jött egy telefon, hogy jó lenne, ha hasonlóan a korábbihoz itt is meg lehetne vizuálisan jeleníteni, hogy hogy áll a kamion töltöttsége. Átmásolva a makrót és a hivatkozásokat rendbe téve az új dokumentumhoz jött a fekete leves, hogy sokszor hibára fut. Még éjjel a felhasználási helyén is ellenőriztem, ott amúgy nem tudtam reprodukálni a hibát. De csak egy munkaállomást érek el távolról az 5 darabból, így kicsit idegesített, hogy itthon megakad a makró. Amióta elkészült az eredeti makró azóta amúgy nem volt vele gond, nem is volt rajta módosítva még sohasem. De nyilván, ha új munkaállomás kerülne be a rendszerbe, akkor okozhatna gondot.
Egyelőre úgy hagyom, hogy marad a dupla copy-s sor. Ha esetleg mégis problémát okozna, akkor felhasználom az általad küldött kódrészletet. Bár a sok próba alatt 1 esetben a copy sorra is hibát adott. Esetleg még a DoEvents, mint lehetőség.
Ma nem akarta az igazságot. Sohasem jött ki 0 hiba :) Az esetek 90%-ban hiba=1, 10%-ban pedig hiba=2. 3 hibát sohasem regisztrált.
Közben rájöttem még valamire. Az Application.Wait függvénynek hiába lehet letuszkolni a torkán milliszekundumokat is jó formán nem veszi őket figyelembe. Szóval tegnap csak placebó hatás volt, hogy segített. Maximum 1 pillanattal több ideje volt utolérnie magát a makrónak. Arra alapozom az állításomat, hogy ha 500 ms várakozási időt adtam meg, akkor nem volt érezhető lassulás. Viszont ha 501 ms várakozási időt adtam meg, akkor kb. 1 mp-re felfüggesztette a futást.
Itthon a Sleep függvényt nem sikerült működésre bírni, pedig biztos vagyok benne, hogy már csináltam olyat.
Elküldtem e-mailben a dokumentumot, miután kipucoltam belőle az érzékeny adatokat.
A kérdező szerint a 9. javaslat (ezen belül nyilván a Sub maybe_4) a Paste megkerülésével oldotta meg a dolgot másolással. Nem tudom, nálad is megoldás lenne ez.
Ha egyik megoldás sem működik, akkor remélhetőleg jelentkezik Jimmy. Ő már többször talált az én hasonló problémáimra megoldást.
ha a munkafüzet megváltozott, akkor törli a megfelelő nevű képeket róla
a kocsi telítettségének megfelelően beilleszt egy képet
majd a képet eltolja a megfelelő koordinátákra
Nos nekem a beillesztéssel van probléma. Eddig tökéletesen futott a makró. De most itthonról nyitottam meg és hibára futott....
A hiba:
Run-time error '1004':
Worksheet osztály Paste metódusa hibás
vagy angolul "Paste Method of Worksheet class failed"
Arra magamtól is rájöttem, hogy túl gyors neki a gépem. Hahaha. (Vagy túl lassú) Ugyanis, ha hibakereséshez betettem a következő sort 'MsgBox kepnev', akkor sohasem futott hibára.
Amúgy pedig teljesen véletlenszerűen jött elő a hiba.
Itt az egyik kommentben azt javasolták, hogy 'Application.Wait (Now + TimeValue("0:00:01"))' sort szúrjuk be és akkor csökken a hibák száma.
Tudtok erre valami elegánsabb megoldást? Hogy ne legyen annyira zavaró az 1 másodperces szünet, így levittem 250 ms-ra a várakozási időt. De attól függetlenül nem tetszik a megoldás... Illetve az itthoni gépemen így igaz, hogy csökkent az esetek száma, de nem szűnt meg teljesen. Másik gépen tesztelve viszont nincs probléma.
A kérdéses kódrészlet:
i = Variables.Range("B1").Value If i < 5 Then kepnev = "kocsi000" ElseIf i < 10 Then kepnev = "kocsi005" ElseIf i < 97.5 Then i = i / 5 kepnev = "kocsi0" & i * 5 ElseIf i <= 100 Then kepnev = "kocsi100" Else kepnev = "kocsi101" End If Range("L1:M2").Select Variables.Shapes(kepnev).Copy 'MsgBox kepnev Application.Wait Now + ms * 250 ActiveSheet.Paste
A megoldástól még messze vagyunk, de annyival előrébb jutottunk, hogy a probléma a továbbküldéstől független.
Ha jól értelek, arról van szó, hogy van egy Excel munkafüzeted, és azon az egyik munkalapot a Drive-on formázod: képeket teszel bele, betméreteket módosítasz, cellákat formázol, és mindezek a módosítások elvesznek, mikor a munkafüzet kikerül a Drive környezetből.
Jól értem? Ha igen, akkor azt, hogy mi az ok és a megoldás, egyelőre nem sejtem, csak annyit tudunk,hogy a munkafüzet letöltése után a módosítások elvesznek. (A visszaimportálás ebből a szempontból érdektelen. Naná, hogy az elveszett formázások nem jönnek vissza:-)
Szóval arra keressük a választ, hogy a Drive-on végzett módosítások miért vesznek el letöltés után. Ugye az Office verziód viszonyleg friss? Mondjuk nem 2003-as?
letöltés utáni változát sem jó nálam sem már sem driveba újra beimportálva sem microsoft excelel megnyitva,ugyan ez a helyzet ha valakinek továbbküldöm
Sziasztok. Google Driveban szerkeztett táblázatnál ha továbbküldöm a fájlt elcsúszik az egész táblázat. A képek,a betűméretek visszaváltoznak eredeti méretre,a cellák nagysága visszaváltozik eredeti méretre (microsoft excel és google driveba is)
És ha kiválasztasz egy színt, akkor annak színkódját lekérdezed a Delilától kapott lekerdezes() makróval, majd a kapott színkódot beírod a masolo() makróban a szinkód helyére és utána indítod el a masolo() makrót.
Természetesen a megtartandó képletek színkódja mindenütt ugyanaz legyen.
A betűszín használatához az If forrashely.Cells(sor, oszlop).Interior.Color = 255 Then sorában az Interior.Color helyett Font.Color álljon.
A színkód lekérdezésére nem tudok jobb megoldást, mint a VBA oldalon (ALT + F11 után) az Immediate ablakban az aktív munkalap egyik már beszínezett cellájának színét lekérdezed: Ha mondjuk az A1, akkor ezt írod be: ?range("A1").Font.Color, majd az Enter után kiírja a színkódot.
Ha nálad nem jelenik meg az Immediate, akkor a fenti menüsorban a View alatt kérd a megjelenítését.
Köszönöm, működik. Kisebb módosításokkal fogom tudni használni. Ha nem a cella háttérszínével, hanem a karakter színével különböztetem meg a képletes cellákat, akkor az Interior.Color helyett mit kell használni? Az Excel által a betűszín kiválasztásánál felajánlott színek (Alapszínek és Színösszeállítás) kódjait hol tudom megnézni?
Elmondásod alapján arra gondolok, hogy van egy sablon táblázatod, aminek mindig ugyanaz a felépítése, és mindig ebbe pakolgatod bele az adatokat, de bizonyos adatokat képlet nélkül kellene.
Ha így van, akkor én azt tenném, hogy
a sablonban létrehoznék egy nevesített tartományt, avagy "nevet" az érintett cellákból,
átmásolok mindent úgy, ahogy van, képletestül
és utána futtatnék egy olyan makrót, ami a named range összes cellájában cseréli a képletet értékre.
Pl. ha a nevesített tartományt úgy hívják, hogy "no_formula_cells", és a Munka1 lap következő celláiból áll: F8, K12, J5, A7, J8 (valójában mindegy, milyen cellák vannak benne, ez tényleg csak egy példa)
akkor a makró ilyesmi lenne:
Dim c as Range
For Each c in Range(ThisWorkbook.Names("no_formula_cells").RefersTo).Cells
De ha ez sem megoldás. Akkor a makró futtatása előtt, ha kijelöléssel kijelöli azokat a cellákat, ahol át kell vinni a képletet, akkor szerintem meglehet úgy írni a makrót, hogy ezt le tudja kezelni.
A kijelölt cellák hivatkozását el kell menteni egy tömbben. Minden átmásolni csak értékként, majd a tömbben elmentett hivatkozásokat átmásolni függvényként.
Arra gondolok, hogy a táblázat szerkezete mindig ugyan az. Mondjuk egy árajánlat adó A4-es lap. A tételek változnak és mondjuk máshonnan jönnek az árak (nyilván azokat számként kell átvinni), de mondjuk a lap alján a szummázás már lehet képlet.
De lehet, hogy életszerűbb példa, ha megrendelő lapként gondolunk rá. Akkor az eladási ár kerül át számként, míg a sorösszegnek képletnek kell lennie.
"Esetleg ha a táblázat szerkezete statikus, akkor nem kell trükközni se az eltérő formázással." Bocs, de ezt nem értem. Kíváncsi vagyok, mire gondolsz.
Készítettem is egy makrót, ami megcsinálná. Piros hátteret (színkód 255) csináltam a meghagyandó képletet tartalmazó cella hátterének.
A program végigmegy a teljes táblázaton, és mindent számmá alakít, ha nem piros a háttér, utóbbiaknál megtartja a képletet. A formázást nem tartja meg, feltételezem, hogy a célhelyen már nem lesz rá szükség.
Egyetlen munkafüzeten belül terveztem meg, Munka1 és Munka2 lapokkal:
Sub masolo()
Dim forrashely As Worksheet, celhely As Worksheet, cell As Range, utolsosor, utolsooszlop, sor As Long, oszlop As Long
Set forrashely = ThisWorkbook.Worksheets("Munka1")
Szerintem a felsorolt 3 függvénnyel meg lehet oldani. Most éppen utazok és nincs nálam papír és ceruza, de annyi a trükk, hogy fel kell rajzolni az összes lehetőséget és utána azt vizsgálni, hogy annak megfelel-e vagy sem.
A két intervallum legyen (a;b) és (x;y).
Ha nem tévedek, akkor a következő esetek kellenek neked:
x<=a<=y
x<=b<=y
a<=x<=b
a<=y<=b
Nyilván nem mindegy, hogy nyitott vagy zárt intervallumról beszélünk. Annak függvényében a relációs jelek változhatnak.