-
Fototrend
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
Fferi50
Topikgazda
-
Fferi50
Topikgazda
válasz
Cilindrik
#37385
üzenetére
Szia!
Az alábbi makrót írd be egy általános modulba:
Sub szinvalaszt()
Dim cl As Range, xx As Integer, rang2 As Range, yy As Long
If Selection.Columns.Count > 1 Then
MsgBox "Csak egy oszlopot tudok kezelni, egy oszlopot jelölj ki csak!", vbInformation
Exit Sub
End If
Set rang2 = Selection.Offset(0, 2) ' a kettővel arrébb levő oszlopba fogja tenni az eredményt, ha közvetlenül mellé szeretnéd, akkor Offset(0,1)-et írj.
For Each cl In Selection.Cells
yy = cl.Characters(1, 1).Font.Color
For xx = 1 To cl.Characters.Count
If cl.Characters(xx, 1).Font.Color <> yy Then
rang2.Cells(cl.Row, cl.Column).Value = Left(cl.Text, xx - 1)
rang2.Cells(cl.Row, cl.Column + 1).Value = Mid(cl.Text, xx)
rang2.Cells(cl.Row, cl.Column).Font.Color = yy
rang2.Cells(cl.Row, cl.Column + 1).Font.Color = cl.Characters(xx, 1).Font.Color
Exit For
End If
Next
Next
End SubArra képes, hogy bármilyen két színnel készült szöveget szétszedjen 2 oszloppal arrébb, az eredeti színek megtartásával.
Kijelölöd az adott 1 oszlopban levő szöveget, majd elindítod a makrót - fejlesztőeszközök - makrók - inditás.Üdv.
-
Fferi50
Topikgazda
válasz
ppapp44
#37393
üzenetére
Szia!
"de a változó nem kap értéket. Olyan mintha nem válna globálissá sehogy sem a userform-on"
A userform kódlapján definiált változó csak akkor és addig él, amíg a form a memóriában van! Tehát betöltés előtt és Unload után már nem érhető el, akkor sem, ha Public.
Ezért ezeket a változókat is célszerű általános modulban deklarálni és a userform kódjában értéket adni nekik.Üdv.
-
Fferi50
Topikgazda
válasz
ppapp44
#37391
üzenetére
Szia!
A publikus változókra a Modulnév.Változónév szintaxissal hivatkozhatsz.
Pl. Thisworkbook.Ezavaltozo = "akarmi" vagy Module1.Valtozo=5
Ezt akkor is tanácsos betartani, ha éppen az adott modulon vagy formon belül vagy mert ugyanazon név előfordulhat eljáráson belül is.
Érdemes átnézned a VBA help változók élettartamára vonatkozó leírását.Üdv.
-
Fferi50
Topikgazda
válasz
the radish
#37304
üzenetére
Szia!
Fontos apróságok:
valtozo$=Range ("C1")
A C1 cella értékét teszi a valtozo$ nevű változóba!
Ha ez nem felel meg a Range meghatározás szabályainak, akkor hibát okoz.
Ha a C1 cella tartalmazza a kijelölés végének a címét, akkor Delila megoldása jó.Ha magát a cellát, mint objektumot szeretnéd a változóba tenni, akkor
set valtoz=Range("C1")Ebben az esetben a helyes kijelölés:
Range("A1",valtoz).SelectÜdv.
-
Fferi50
Topikgazda
válasz
dellfanboy
#37297
üzenetére
Szia!
1.A Ha függvényeket bátran ágyazhatod egymásba több szinten is.
2.Egyszerűbb megoldás:
Egy segédtáblát csinálsz az alábbiak szerint:
0 elégtelen
1 elégtelen
2 elégséges
3 közepes
4 jó
5 kiválóEzután a képlet a B1 cellába:
=FKERES($A1;$F$1:$G$6;2;1) ' nálam az F1:G6 cellákban van a táblázat, ezt módosítsd a tiedre.A képletet húzhatod végig a B oszlopon. Az A oszlopban tizedestört értékek (pl. 2,3 is szerepelhetnek).
Üdv.
-
Fferi50
Topikgazda
Szia!
Értékké átalakításhoz nem kell copy - paste makró esetén, egyszerűen ez a sor megoldja:
Range("a1:aq50000").Value=Range("a1:aq50000").ValueFontos, hogy ugyanoda szeretnéd az értéket visszaírni. Szerintem nem lehet nagy az időigénye sem, mivel csak a meglevő cellaértéket kell visszaírni.
Üdv.
-
Fferi50
Topikgazda
Szia!
A Word körlevélben az adatforrás - jelen esetben az Excel - egy sora egy rekordnak felel meg. Ha azt szeretnéd, hogy a szőrös összes előfordulása egy levélben jelenjen meg, akkor valamennyi hozzá kapcsolódó tételt egy Excel sorba kell betenni, pl. így:
Szőrös;kutya;négylábú;kétszemű;kutya;kétlábú;négyszemű;macska;kétlábú;ötszemű
Természetesen az egyes oszlopokat mezőknek kell elnevezned.
Ebben az esetben a körlevélben már az összes oszlopot fel tudod venni egy mintalevélben.Üdv.
-
Fferi50
Topikgazda
válasz
Flowtation
#37201
üzenetére
Szia!
Szerintem a napközisek külön megjelölését nem tudod elkerülni, hiszen különben honnan is tudnád, hogy valaki napközis-e vagy sem.
Ezután pedig az autoszűrő vagy speciális szűrő (ez másolni is képes egy menetben) tud segíteni. De begyűjteni laponként kell mindkét esetben.Üdv.
-
Fferi50
Topikgazda
válasz
m_kovacs
#37200
üzenetére
Szia!
"sajnos nagyon makacs ez a szintax error.
aid=Application.Worksheetfunction.VLookup(nev,Value,E1:F46,2,HAMIS)"Talán azért, mert a Value teljesen feleslegesen szerepel ott, így 4 paraméter helyett 5 paramétert kap a VLookup.
Mi akar lenni az a Value? Hiszen a nev változó tartalmazza a keresendő értéket!
Másrészt a tartományt nem így kell megadni!Az eredeti hozzászólásom javítva:
aid=Application.Worksheetfunction.VLookup(nev,Range("E1:F46"),2,False)Üdv.
-
Fferi50
Topikgazda
válasz
m_kovacs
#37195
üzenetére
Szia!
A VBA-ban ilyen esetben az angol (nemzetközi) konvenciók szerint kell használni a függvényeket. Tehát
aid=Application.Worksheetfunction.VLookup(nev;Range("E1:F46");2;False)A változókat pedig nagyjából ugyanúgy kell használni, mint más programokban is.
Itt azért felmerül, hogy mi van, ha nincs találat? Akkor a makró hibával le fog állni, mivel a függvény eredménye hiba.
Ennek elkerülésére hibakezelést kell beépíteni, ami már feltételezi a VBA mélyebb ismeretét.Egyébként a munkalapon ha a B oszlop első/második cellájába beírod az Fkeres képletet és végighúzod az oszlopon, akkor utána az A oszlop celláiba beírt értékeknek megfelelő adat megjelenik a B oszlopban.
Ha nem szeretnél hibát látni, akkor a képlet =HA(Hibás(Fkeres.....);"nincs") ezt megoldja.Üdv.
-
Fferi50
Topikgazda
Szia!
Nem tudom, hogy a 2003-as Excelben van-e lehetőség testreszabásra. Ha igen akkor keresd meg a Célformátummal egyező formátum lehetőséget és tedd elérhetővé.
Ha nem, akkor csinálnék egy makrót (makrórögzítéssel) és rátenném egy parancsgombra.
Kijelölöd a beillesztés helyét és klikk a gombra.Üdv.
-
Fferi50
Topikgazda
Szia!
Próbáld meg ezt a tömbképletet, pl. az E oszlopra. A D1 cellában legyen amit keresel.
Képlet az E1 cellába, azután lehúzod:=HAHIBA(INDEX($B$1:$B$66;NAGY(($A$1:$A$66=$D$1)*SOR($B$1:$B$66);DARABTELI($A$1:$A$66;$D$1)-(SOR()-1));1);"NINCS TÖBB")Természetesen a záró sorindexet igazítsd a te állományodhoz.
Tömbképlet bevitele Shift+Ctrl+Enter.Üdv.
-
-
Fferi50
Topikgazda
válasz
szőröscica
#37105
üzenetére
Szia!
Hova vannak elmentve a makróid? Modulba, munkalap kódlapjára, Thisworkbook kódlapjára?
Üdv.
-
Fferi50
Topikgazda
Szia!
A hozzáadás valószínűleg szövegformátumban van (csak kinézetre olyan, mintha dátum lenne...). nem elég ha átállítod a cella formátumot dátumra, dátumot is kell csinálni belőlük a Dátum függvénnyel. (A szöveget a bal, jobb, közép függvényekkel darabolhatod a Dátum paramétereihez). Ezt egy másik oszlopban teheted meg, majd az értéket visszamásolod az eredeti cellákba.
Üdv.
-
Fferi50
Topikgazda
Szia!
De akkor legyen alulvonal mindkét helyen.
Azt javaslom, hogy a keresendő értéket másold át a táblázatba - vagy fordítva. Így biztosan egyforma lesz.
Sokszor szokott problémát okozni, hogy "nem látható" karakterek vannak az egyik vagy a másik cellában pl. szóköz van a végén, vagy nem szóköz, hanem Karakter(160). Ezért a keresésnél a cella Kimetsz vagy Tisztit függvénnyel módosított tartalmát keressük.Próbáld ezeket is.
Üdv.
-
Fferi50
Topikgazda
válasz
SANYIBP11
#37060
üzenetére
Szia!
"az, hogy c1re fixáljuk a cellát nem jó."
Ki és mikor mondta neked, hogy C1-re fixáljuk a cellát. A képletet beírod abba az oszlopba, ahol a vizsgálat eredményét látni szeretnéd, mondjuk az F2 cellába. Ezután szépen lehúzod az adatok végéig és látod, hogy mi nincs.
Vagy nem erről lenne szó?
Üdv.
-
-
Fferi50
Topikgazda
válasz
SANYIBP11
#37052
üzenetére
Szia!
"Ezzel próbálkoztam de itt sajnos fixálni kell a cellát:
=HA($C2="A";HA(HIBÁS(HOL.VAN($A2;$B:$B;0));"nincs meg";" ");" ")"Ebben a képletben nincs fixált cella. Ráadásul pontosan azt teszi, amit elérni szándékoztál a leírásod szerint.
Az más kérdés, ha nem egy betűről van szó, hanem betűcsoportról, azaz pl. ABCD betűk valamelyike van a C oszlopban, akkor kell vizsgálni.
Ebben az esetben a HOL.VAN függvénnyel megnézheted, hogy van-e olyan betű, pl.=HA(HAHIBA(HOL.VAN($C2;{"A";"B";"C";"D"};0);HAMIS);HA(HIBÁS(HOL.VAN($A2;$B:$B;0));"nincs meg";" ");" ")Üdv.
-
Fferi50
Topikgazda
válasz
excel_segits
#36945
üzenetére
Szia!
"Viszont a képlettel valami nem stimmel, mert az A33-as mezőt hívja meg elsőként, és nem az A3-ast.
=INDIREKT("FELVÉTEL!A3"&SOR()*3)"
Mivel A3 és nem A szerepel a SOR függvény előtt!
Üdv.
-
Fferi50
Topikgazda
válasz
excel_segits
#36942
üzenetére
Szia!
Az indirekt függvény használhatod.
Ha az első sorban kezded a hármasokat, akkor az első sor képlete:
=INDIREKT("A"&SOR()*3),=INDIREKT("A" & SOR()*3+1),=INDIREKT("A" & SOR()*3+2)Ha másik munkalapra kell írnod, akkor az A elé természetesen írd be a munkalap nevét is (Munka1!A)
Ha nem az első sorban kezded az írást, akkor a (SOR()-x)*3 képletet kell helyettesítened, hogy a 3. sor kerüljön az első sor képletébe. x amennyivel lejjebb vagy az első sortól.
Ha az adatok nem a 3. sorban kezdődnek, akkor a sor() függvény eredményéhez hozzá kell adnod annyit, hogy a kívánt sortól kezdődjenek az értékek, a 2 további oszlopban pedig ehhez +1 ill. +2.
Ha pl. az 5. sortól kellenek a számok, akkor SOR()*3+2 az első képletben, a másodikban SOR()*3+3, a harmadikban SOR()*3+4.A 3-as szorzó az egy sorban megjelenítendő adatok miatt van.
Remélem érthető a logika.
Üdv.
-
Fferi50
Topikgazda
válasz
p5quser
#36929
üzenetére
Szia!
Meg van nyitva a célfájlod.
Megnyitod a forrásfájlt. Munkalap fülön jobb egérgomb - másolás vagy áthelyezés - kiválasztod a célfájlt - legyen másolat. Forrásfájl bezárás.
Ezt ismétled, mígnem elfogynak a forrás fájlok.
Persze lehet rá makrót is írni - sőt felvenni is. Ha a célfájlba valahova beírod a forrásfájlok neveit, akkor ciklusban sorban meg lehet nyitni azokat, átmásolni a munkalapot és bezárni.Üdv.
PS.
(valamikor hajdanán volt olyan DOS parancs, amivel több fájlt össze lehetett másolni
, nem tudom, Windows támogat-e ilyet, azt pedig végképp nem, hogy a legeslegeslegújabb fájlformátumban egyáltalán lehetséges-e hasonló - de szerintem nem) -
Fferi50
Topikgazda
válasz
csferke
#36923
üzenetére
Szia!
Akkor félreértettem...

A formula, amit írtál rendben van.
Biztosan van olyan mappa, amibe ki akarod íratni a tételeket? Ha nincs, mkdir paranccsal létrehozhatod.
De a kiíráshoz is elég az elérési úttal megadott fájlnév - persze az elérési út legyen az, ahova ki szeretnéd íratni.Üdv.
-
Fferi50
Topikgazda
válasz
csferke
#36921
üzenetére
Szia!
1.A modul elején - az eljárásokon kívül - kell deklarálni a Public változót:
Public PathName As StringűA makrókban pedig Modulnév.PathName formátumban kell hivatkozni rá - más modulokban levő eljárások is látják ebben a formában hivatkozva.
2.Ha az elérési utat szeretnéd megkapni, akkor a Workbook.Path tulajdonságát kell lekérdezned - vagy a FullName tulajdonságot - ebből viszont le kell csípni a Nevét.Az hogy angol az Excel, a VBA-t nem befolyásolja, nemzetközi módon egyformán kell kódolni minden verzióban.
Üdv.
-
Fferi50
Topikgazda
válasz
Csatravi
#36838
üzenetére
Szia!
Akkor a C2 cellába a szöveg HELYTELEN AZONOSÍTÓ legyen és a B4 cella képletében is ezt a szöveget vizsgáld. Sőt a B4 cellába is kerülhet ebben az esetben ugyanaz a szöveg. Pl.
C2 cella képlete:=HA(ÉS(VAGY(ÉS(KÓD(BAL(B2;1))>96;KÓD(BAL(B2;1))<123);ÉS(KÓD(BAL(B2;1))>64;KÓD(BAL(B2;1))<91));HAHIBA(SZÁMÉRTÉK(JOBB(B2;3));0)>0;HOSSZ(B2)=4);"";"HELYTELEN AZONOSÍTÓ")B4 cella képlete:
=HA(C2="HELYTELEN AZONOSÍTÓ";"HIBÁS KERESÉS";HAHIBA(FKERES(B2;$A$7:$B$17;2;0);"Nincs adat"))A B2 cellára tehetsz feltételes formázást az alábbi képlettel:
=NEM(ÉS(VAGY(ÉS(KÓD(BAL(B2;1))>96;KÓD(BAL(B2;1))<123);ÉS(KÓD(BAL(B2;1))>64;KÓD(BAL(B2;1))<91));HAHIBA(SZÁMÉRTÉK(JOBB(B2;3));0)>0;HOSSZ(B2)=4))Ráállsz a B2 cellára. Kezdőlap - feltételes formázás - új szabály - a formázandó cellák kijelölése képlettel - a megjelenő helyre (értékek formázása, ha ez a képlet igaz) bemásolod a képletet. Utána kiválasztod a kitöltést vagy a betűformát, majd OK.
Üdv.
-
Fferi50
Topikgazda
válasz
Csatravi
#36835
üzenetére
Szia!
Szerintem belekeveredtél...
Kevered a két különböző esetet:
1. eset: a felhasználó helytelen formátumú kereső adatot írt a B2 cellába. Ebben az esetben kell a hibás adat, hibás keresés páros a két cellába.
2. eset: a kereső adat helyes formátumú, de nincs ilyen adat a 20000 azonosító között. Ekkor a C2 cella "néma marad", hiszen a formátum rendben van, de a B4 cellába a Nincs adat kell kerüljön.A K123 megfelelő formátumú, de nincs a táblában ilyen adat. Ezért jó amit mutat!
Üdv.
-
Fferi50
Topikgazda
válasz
Csatravi
#36829
üzenetére
Szia!
Hiszen ilyen esetben a nincs adat jelzést kell visszaadnia!!! Mert nem talált olyan adatot. Nem létező azonosítóra kerestél. Gondold át mégegyszer.
Hiszen az egész adathalmaz rejtve lesz a felhasználó előtt, honnan tudhatná szegény, hogy van-e olyan betűvel azonosító....Üdv.
-
Fferi50
Topikgazda
-
Fferi50
Topikgazda
válasz
Delila_1
#36825
üzenetére
Szia!
Az a baj, hogy itt
ÉS(KÓD(BAL(B2;1))>64;KÓD(BAL(B2;1))<91)
hamis érték jön vissza, ha az első karakter szám (és persze a másik kódos képletnél is).
Ráadásul nem is ez okozza a bajt, hanem a HIBÁS függvény, amibe bele van csomagolva
Kicsit még megpróbálom ezt is csavargatni, de egyenlőre nem látom (lehet a fától az erdőt), hogyan lehetne egyszerűbben megoldani.
Üdv.
-
Fferi50
Topikgazda
válasz
Csatravi
#36821
üzenetére
Szia!
Próbáld meg az alábbi képletet:
=HA(ÉS(NEM(HIBÁS(SZÖVEG.KERES(BAL(B2;1);"abcdefghijklmnopqrstuvwzxyABCDEFGHIJKLMNOPQRSTUVWXYZ")));NEM(HIBÁS(SZÁMÉRTÉK(JOBB(B2;3))>0));HOSSZ(B2)=4);"";"HIBÁS ADAT")Itt konkrétan benne van a képletben, hogy az első karakter milyen legyen, így ezen akár változtathatsz is.
Üdv.
-
Fferi50
Topikgazda
válasz
Csatravi
#36815
üzenetére
Szia!
Ráállsz a B2 cellára. Kezdőlap - feltételes formázás - új szabály - a formázandó cellák kijelölése képlettel - értékek formázása,ha ez a képlet igaz kockába beírod az =HIBÁS -sal kezdődő képletet, amit írtam.
Kijelölöd a háttérszínt stb. amit szeretnél még.
OK.Delila makróját a munkalap kódlapjára kell beírni: lapfülre állsz az egérrel, jobb egérgomb, kód megjelenítése. Oda másold be.
Üdv.
-
Fferi50
Topikgazda
válasz
Csatravi
#36810
üzenetére
Szia!
A kisbetű-nagybetűre gondoltál?
Ez a képlet jó rá:=ÉS(VAGY(ÉS(KÓD(BAL(B2;1))>96;KÓD(BAL(B2;1))<123);ÉS(KÓD(BAL(B2;1))>64;KÓD(BAL(B2;1))<91));SZÁMÉRTÉK(JOBB(B2;3))>0;HOSSZ(B2)=4)Ha az adatérvényesítésnél elhagyod a hibajelzést, betehetsz figyelmeztetést, amikor kijelöli a cellát. Ezzel együtt több dolog együttes alkalmazásával rá lehet mutatni a hibára:
A B2 cellára feltételes formázást használni az alábbi képlettel:=HIBÁS(ÉS(VAGY(ÉS(KÓD(BAL(B2;1))>96;KÓD(BAL(B2;1))<123);ÉS(KÓD(BAL(B2;1))>64;KÓD(BAL(B2;1))<91));SZÁMÉRTÉK(JOBB(B2;3))>0;HOSSZ(B2)=4))
szinesre állítva a hátteret.
A C2 cellába beírni a következő képletet:=HA(HIBÁS((ÉS(VAGY(ÉS(KÓD(BAL(B2;1))>96;KÓD(BAL(B2;1))<123);ÉS(KÓD(BAL(B2;1))>64;KÓD(BAL(B2;1))<91));SZÁMÉRTÉK(JOBB(B2;3))>0;HOSSZ(B2)=4)));"HIBÁS ADAT";"")
A B4 cella képletét az alábbiak szerint megadni:=HA(C2="HIBÁS ADAT";"HIBÁS KERESÉS";HAHIBA(FKERES(B2;$A$7:$B$17;2;0);"Nincs adat"))Így elvileg beírhat nem odavaló dolgokat is, de a hibaüzenetet megkapja több formában is.
Üdv.
-
Fferi50
Topikgazda
válasz
Csatravi
#36805
üzenetére
Szia!
Adatok - érvényesítés - egyéni. A képlet:
=ÉS(ÉS(KÓD(BAL(B2;1))>96;KÓD(BAL(B2;1))<123);SZÁMÉRTÉK(JOBB(B2;3))>0;HOSSZ(B2)=4)A hibajelzéshez pedig beírod a kívánt szöveget. Pl. Cime: helytelen adat Üzenet: egy betű 3 szám szükséges.
Most a kisbetűket fogadja el az elején, ha nagybetűket szeretnél, akkor a kód értékét át kell írni 64 és 91 értékre.
A B4 cellában a HAHIBA függvényt alkalmazhatod,
HAHIBA(FKERES(B2;$A$7:$B$17;2;0);"Nincs adat")Üdv.
Ps. használd a konvertálatlan vagy a programkód gombot a kettőspontot tartalmazó címeknél.
-
Fferi50
Topikgazda
válasz
lumpy92
#36803
üzenetére
Szia!
Pici ellentmondást érzek:
"a következő nem nulla érték ismét találat lenne. Az ezekhez a nullákhoz tartozó B oszlopi értékeket ha még ki is iratná a C oszlopba egymás alá"Akkor most a megtalált nem nulla melletti értéket kell kiíratni a C oszlopba, vagy az előtte levő nullához tartozót?
Ha az előbbi, akkor a C2 cellába írd be az alábbi képletet:
=HA(ÉS(A1=0;A2<>0);B2;"")
és húzd végig az oszlopon.
A C oszlopban ott jelenik meg érték, ahol a 0 sorozat után az első nem nulla található. Igaz, ezek nem szorosan egymás alá kerülnek, de gondolom, kimásolni egy másik helyre egymás alá az már nem okoz gondot.Üdv.
-
Fferi50
Topikgazda
-
-
Fferi50
Topikgazda
Szia!
Feltehetnél egy néhány sort tartalmazó mintát mind Excelből, mind Word-ből, benne azt is, hogy mit szeretnél elérni.
Mert így a sötétben adjuk a tanácsokat és úgy járunk, mint az egyszeri kádi, tanácsaink még lennének, de a libák elfogytak.
Természetesen nem kell valódi adat, csak "hasonlítson" a természete az eredetiekre.
Ebből össze tudnánk esetleg hozni azt az Excel munkalapot, amiből lehet körlevelet értelmesen csinálni a Wordben, vagy akár Excel munkalapon is megoldható.
Üdv.
-
Fferi50
Topikgazda
Szia!
Szerintem az természetes, ami történik. Egy hosszabb szövegtartalom nem fér le ugyanazon a helyen. Tehát a megnevezésedet tartalmazó szövegeket kell úgy formázni, hogy alkalmazkodjon a hozzá tartozó értékek hosszának változásához.
Például megpróbálhatnád táblázatként formázni az egész tartalmat. A táblázat első oszlopa a megnevezések, ezeket függőlegesen középre, vagy felülre,alulra állítod be. A táblázat második oszlopába kerülnek a tulajdonságokat tartalmazó mezők, amelyek elhelyezkedését szintén megadhatod. A táblázat képes automatikusan felvenni a benne levő szöveg méretét.Üdv.
PS. Csak ismétlésként, a körlevélbe egyetlen egyszer beválogatod az Excelből a szükséges mezőket. Ezek a mezők az Excel cella tartalmának változásakor megváltoznak. Nem kell semmit beilleszteni. -
Fferi50
Topikgazda
-
Fferi50
Topikgazda
Szia!
Egyrészt a Wordben is meg lehet adni, hogy a mező hogyan jelenjen meg (kapcsolók segítségével), bár erre borzasztóan kevés helpet találtam.
Másrészt és szerintem egyszerűbb, hogy az Excelben kikapod a cellából a soremelés karaktereket, hiszen ott úgysincs rá szükséged. Ezt pedig a HELYETTE függvénnyel tudod elérni. Azaz az adott cella tartalma nem simán a keresőfüggvény eredménye lesz, hanem pl. =Helyette(Fkeres......stb.;Karakter(10);"") ami kiveszi a soremelés karaktereket.
Azért azt nézd meg lsz. hogy a sortörést milyen karakter idézi elő, nem biztos, hogy Karakter(10), más is lehet. Pl. szöveg.keres függvénnyel megnézheted, van-e Karakter(10) "betű" a szövegben.
A KÓD függvény pedig megmondja egy karakter kódját.Üdv.
-
Fferi50
Topikgazda
Szia!
"most már csak azt kell megoldanom, hogy egy dokumentumon belül 20-25 építőanyag tulajdonságot tudjak automatikusan megadni
amelyek ugyan abból az excelből jönnek, és ugyan abban a doc fájlban vannak"Ennek megoldására írtam azt, hogy az Excel második sorban egymás után sorolod fel az anyagfajtákat + a tulajdonságokat:
A-D oszlop első anyag, E-H oszlop második anyag, I-L oszlop harmadik anyag és így tovább....
A fejléc pedig természetesen az első sorban minden anyagnál különbözik - mivel az lesz a körlevél mezője.
Így a Word körlevélben egymás alá, mellé tudod "behúzni" a különböző mezőket (amelyek a különböző anyagokat tartalmazzák).
Ezt a "mezőbeültetést" megcsinálod olyan hosszan, amilyen sok anyag előfordulhat.
Persze így abban az esetben, ha egy anyag nem szerepel a "receptben", ott a mező üresen fog maradni, esetleg kihúzás stb. tehetsz a mezőjébe.Fontos, hogy az Excelben egy sorban szerepeljen a 20-25 anyagra vonatkozó adat, mert így egy rekordként tudja kezelni a Word.
A Wordbeli elhelyezést pedig szépen meg tudod kreálni szerintem.Remélem, érthető.
Üdv.
-
Fferi50
Topikgazda
Szia!
Gondolom, már elmentetted egyszer a törzsdokumentumodat, ami tartalmazza mezőket is.
Amikor a Word dokumentumot megnyitod, akkor körlevél esetén keresni fogja a hozzá tartozó Excel fájlt. Ha nem találja, neked kell hozzárendelni adatforrásként - mintha egyébként fájlt nyitnál meg.Üdv.
-
Fferi50
Topikgazda
Szia!
Először nyisd meg az Excel fájlt. Utána a Word körlevél dokumentumot és rendelt hozzá a megnyitott Excelt (ha magától nem tenné meg).
Az Excel A3 cellájába írj egy akármilyen adatot, hogy 2 rekordsorod legyen.Ezután ha a 2. sorban változtatod az adatot, menj át a Word-be. A levelezés menücsoportban változtasd meg a rekordszámot (legyen előbb 2, majd utána vissza 1), ekkor a megváltozott tartalom fog megjelenni a körleveledben.
Semmit nem kell beilleszteni, tilos! Ha mindent szabályosan csináltál a körlevélben (mezőket illesztettél be), a mezők értékei automatikusan változnak a fenti műveletre.
Üdv.
-
Fferi50
Topikgazda
válasz
toth_janika
#36683
üzenetére
Szia!
Kijelölöd az A oszlopod majd feltételes formázás - cellakijelölési szabályok - ismétlő értékek, ezután kiválasztod a kívánt formátumot.
Üdv.
-
Fferi50
Topikgazda
Szia!
Hozz létre egy olyan munkalapot (ez lehet a meglevő Excel fájlban is), amelynek az első sora a fejlécet tartalmazza.
A második sorban pedig a kiválasztás (A1 cella) és a kiválasztotthoz tartozó (függvényekkel meghatározott) adatok szerepelnek. A további sorokba ne írj adatot, illetve a további sorokba is csinálhatsz kiválasztást és hozzá a tulajdonságokat.
Ez a munkalap legyen a körlevél forrása. Így mindig csak azt az egy kiválasztott rekordot fogja a körlevél mutatni neked, illetve ha több sorod is van benne, akkor egy menetben ki tudod nyomtatni minden kiválasztott tétel adatát.Üdv.
-
Fferi50
Topikgazda
Szia!
A körlevél készítőben konkrét helyekre tudod beszúrni az Excelből a mezők adatait. Ezek a helyek nem változnak, fixen megmaradnak.
A kívánt anyagot kiválaszthatod a WORD levelezés szabályok menüpontjában, illetve végigmehetsz a rekordokon egyesével.Ha több anyagot is szeretnél egy lapra, akkor a forrás Excel táblában ezeket egy sorba kell bevinni.
Üdv.
-
Fferi50
Topikgazda
válasz
the radish
#36629
üzenetére
Szia!
Arra van lehetőség, hogy a futásidejű hibák ne okozzanak leállást, illetve korrigálhatók legyenek. Nézz utána az On Error Goto ill. az On Error Resume utasításoknak a Help-ben.
Üdv.
-
Fferi50
Topikgazda
válasz
foregister
#36570
üzenetére
Szia!
Darabteli, Index, Hol.van függvények használatával megoldható. A Hol.van függvénnyel kikeresed az oszlopokat amelyekben számolni kell a jellem kombinációk alapján.
Most nem vagyok gép közelben a pár napig. Ha nem sikerül megoldani, hét közepén visszatérhetünk rá.
Üdv. -
Fferi50
Topikgazda
válasz
fricc_
#36565
üzenetére
Szia!
"i= 1
n = 0
For i = 1 To 10
If Range("i5").EntireColumn.Hidden Then
n = i"A kiemelt sorral az a baj, hogy a Range("i5") az i oszlop 5. celláját nézi meg !!!.
Ha ciklussal mész akkor a Cells tulajdonságot kell használni:If Cells(5,i).EntireColumn.Hidden ThenVagy:
Dim cl As Range
For Each cl in Rows(5).Cells :if cl.EntireColumn.Hidden Then
n=cl.Column :Exit For
Next
A kódod következő része pedig a D oszlopot rejtettnek találva az n értékét 2 -re állítja, legyen az bármennyi is az előző rész alapján.Üdv.
Ps. Légy szives, használd a Programkód gombot, ha makrót másolsz be.
-
Fferi50
Topikgazda
válasz
Angerfis
#36561
üzenetére
Szia!
Szerintem annyi elég, ha beépíted konstansként a programodba a nyomtatót.
Pl:Const Anyomt="\\............\.............RICOH-Aficio-MPC4502-PCL-6 a(z) Ne09: kimeneten"
Const Bnyomt="\\............\.............RICOH-Aficio-MPC4502-PCL-6 a(z) Ne10: kimeneten"Ezt akár publikus konstansként is deklarálhatod, így másik modulból, másik makróból is elérhető, csak arra kell figyelned, hogy a hivatkozás: Modulnév.változónév.
A makróban pedig megnézed, hogy az aktív printer melyik. Lekérdezed az Application.ActivePrinter tulajdonságot, ha valamelyik a kettő közül, akkor nyomtatsz rá. Ha nem, akkor beállítod.
Üdv.
-
Fferi50
Topikgazda
válasz
szatocs1981
#36559
üzenetére
Szia!
A többszáz keresés paramétereit hol tárolod, hogyan jutsz hozzá?
Felveszed makrórögzítővel a Speciális keresést, aztán hozzáigazítod a követelményeidhez. Csak a keresési paramétert és a célterületet kell változtatni.
Szerintem ez elég jól automatizálható.Üdv.
-
Fferi50
Topikgazda
válasz
szatocs1981
#36557
üzenetére
Szia!
Esetleg megnézheted az Adatok - Speciális menüpontot. Így több szempont alapján is szűrhetsz, lehet helyben is és másoltatni is az eredményt. Ha már van egy ilyen Excel eszköz, szerintem használni kellene.
Üdv.
-
Fferi50
Topikgazda
válasz
szatocs1981
#36553
üzenetére
Szia!
Hány oszlopban vannak az adataid? Csak ez a három oszlop van?
Mert ettől is függ a megoldási lehetőség.
Üdv.
-
Fferi50
Topikgazda
-
Fferi50
Topikgazda
válasz
foregister
#36547
üzenetére
Szia!
Egy kicsit zavaros ez a történet. Pl. Jellem1 kora 30-40 és 41-55, sőt féri is és nő is.
Nyilván 2 személyről van szó.
DE: honnan tudod, hogy melyikük 30-40, melyikük férfi, melyikük családos, melyiknek van gyereke --
ennek így szerintem abszolút nincs semmilyen értékelhető összesítési lehetősége.
Ezeket a személyeket (jellemeket) külön - külön soron kellett volna felvenni.
Ha úgy lenne, akkor Darabhatöbb függvénnyel, esetleg valamilyen tömbfüggvény kombinációval meg lehetne oldani.
Így szerintem értelme sincs az egésznek.
(De ezt természetesen tekintsd magánvéleménynek.)Üdv.
-
Fferi50
Topikgazda
válasz
Ghoosty
#36545
üzenetére
Szia!
"Makrót tudok írni, hogy bizonyos cella bizonyos karaktereit átírja félkövérre, de függvényben nem működik"
Akkor azt a makrót hívd meg pl. a munkalap változás (Change) eseménykezelőjében. Miután összefűzték az értekeket, változik a cella értéke, a makró pedig félkövérré teszi a kívánt karaktereket.Üdv.
-
Fferi50
Topikgazda
Szia!
A Weeknaming = Format(Date, "ww") eredménye egy kétjegyű szám.
"ActiveSheet.Name = "Valami_A_" & Weeknaming" a neve pl. Valami_A_46 lenne,
csak azt törli ki ahol a WS neve Valami_A_Week 46 volt pl, a többit nem, mikor és hol kerül bele a munkalap nevébe a Week?
Mert nyilván azt a munkalapot aminek nem egyezik a neve a "Valami_A_" & Format(Date, "ww") eredményével (lásd fentebb), ki fogja törölni.
A másik probléma:
Egy törlés után emiatt a sor miatt:
Worksheets(i).Delete
Exit For
azonnal kilép a ciklusból.Ha azt szeretnéd, hogy végigmenjen minden munkalapon, akkor ezt a sort töröld ki.
Üdv.
-
Fferi50
Topikgazda
Szia!
Egyrészt a deklarációkat szerintem tedd a függvény elejére. Jobban áttekinthető.
Másrészt írd be az Option Explicit kapcsolót a modul elejére. Ebben az esetben a következő hibát nem tudod elkövetni:
" Dim Z As String
ZNr = Munka2.Cells(Cllr.Row, 2).Text
If Z <> "" Then"Azért jönnek a hibák, mert egy érték nélküli változót használsz később.
Üdv.
-
Fferi50
Topikgazda
válasz
Slowman
#36502
üzenetére
Szia!
Egy javaslatot feltettem IDE, szerintem használható.
Sajnos csak úgy lehet megoldani, hogy egy másik diagramra bevisszük a célértékeket, majd a 2 diagramot egymásra tesszük.A célokat tartalmazó diagram típusa dobozos ábra (nem tudom, milyen verziód van, lehet nincs benne ilyen lehetőség, akkor sajnos nem fog menni).
Az összes területet átlátszóvá kell tenni és ezt tesszük felülre.
Az illesztést úgy tudod megoldani könnyen, ha az eredeti diagramot lemásolod és a másolatban módosítod az adatokat és a diagramtípust. Az egyes sorozatok színbeállítását is módosítani kell (
).Üdv.
-
Fferi50
Topikgazda
Szia!
Egyrészt talán nem szerencsés, hogy egy VBA névvel (Caller) jelölöd a saját változódat. Ez okozhat problémákat. Bár valószínűleg itt nem ez az elsődleges probléma.
Ahogyan már az előttem szóló is írta, a
Caller.Application.Worksheetfunction.Match helyett írj csak
Application.Match kifejezést.
Ennek az előnye az, hogy nem kell külön hibakezelési eljárást írni a makróba, mert nem idéz elő hibát.
Viszont a változót Variant-nak kell deklarálni és mindig meg kell vizsgálni, hogy a művelet eredményeként nem hiba lett-e a változó értéke.Ezt próbáld meg:
Public Function KKERES() As Double
Dim X As Variant, Y As Variant
KKERES = 0
If TypeOf Application.Caller Is Range Then
Dim Caller As Range
Set Caller = Application.Caller
Dim Z As String
Z = Munka2.Cells(Caller.Row, 2).Text
If Z <> "" Then
X = Application.Match(Z, Munka3.Range("B:B"), 0)
If IsError(X) Then
Y = Application.Match(Z, Munka4.Range("B:B"), 0)
If IsError(Y) Then Y = Application.Match(Z, Munka4.Range("C:C"), 0)
If IsError(Y) Then
KKERES = 0
Exit Function
Else
If Caller.Column = 5 Then
KKERES = Munka4.Cells(Y, 5).Value
Exit Function
End If
If Caller.Column = 6 Then
KKERES = Munka4.Cells(Y, 6).Value
Exit Function
End If
End If
Else
If Caller.Column = 5 Then
KKERES = Munka3.Cells(X, 5).Value
Exit Function
End If
If Caller.Column = 6 Then
KKERES = Munka3.Cells(X, 6).Value
Exit Function
End If
End If
End If
End If
End FunctionÜdv.
-
Fferi50
Topikgazda
válasz
ztibor
#36503
üzenetére
Szia!
A feltételes formázási szabályt kiterjesztheted a további sorokra, nem kell hozzá új szabályokat írni:
Kijelölöd az A3:G3 cellákat - másolás -kijelölöd az A4:G1500 cellákat - irányított beillesztés - formázás és máris kész.
Vagy:
Kezdőlap - feltételes formázás - szabályok kezelése - ez a munkalap - az A3:G3-ra vonatkozó szabály érvényesség mezőjébe beírod: $A3:$G1500 - ok.Üdv.
-
Fferi50
Topikgazda
Szia!
"de "szebb" lenne. ha a felesleges oszlopok/cellák nem lennének."
Ugye tudod, hogy cellát önmagában nem lehet "eltüntetni", csak a cellát tartalmazó egész sort vagy oszlopot?
Ha jól értem, akkor a példádban szereplő C-H oszlopok adatait szeretnéd áttenni egy db oszlopba, illetve a többi oszlopot szeretnéd "láthatatlanná" tenni.
Ez makróval biztosan megoldható. Nem tudom, Google Excel mit szól ehhez.
Szóba jöhet még az Index - Hol.Van függvény páros (angolban Index - Match), már ha egyáltalán van ilyen lehetőség benne.Üdv.
-
Fferi50
Topikgazda
válasz
tzimash
#36445
üzenetére
Szia!
Ugye tudod, hogy a Public változókra úgy kell hivatkozni, hogy mindig megadod hozzá a modul nevét is.
Pl. Userform1.datum
Ha simán csak datum -ra hivatkozol, akkor a saját moduljában levő változónak értelmezi.
Ezért van az, hogy a Userformon belül "létezik", más modulban simán meghívva nem.Üdv.
-
Fferi50
Topikgazda
válasz
Hestiana
#36391
üzenetére
Szia!
"kiválasszam az egyik cellából, hogy melyikről vegye az adatokat amikkel dolgozni kell"Arra a cellára tegyél adatérvényesítést, amelyben felsorolod a választható munkalapokat - ez utóbbi lehet akár egy oszlopban felsorolva is. (Adatok, érvényesítés menüpont)
A függvénybe a konkrét munkalap neve helyett írd be az
Indirekt( cella) függvényt, pl. Fkeres(A1;Indirekt(A3 & "!A
");2;0) az A3 cellában levő munkalapon keres.
Ezt egyszer végig kell végighúznod az oszlopon. Ezután ha megváltoztatod az A3 cella tartalmát (másik munkalapot választasz, akkor a képlet is a megváltoztatott cellára fog hivatkozni." legjobb az lenne, ha beírom 'A' oszlopba azt a 30 cikkszámot amivel dolgozni szeretnék, automatikusan döntse el melyik listában vannak,"
Ha csak 4 munkalapod van, akkor egymásba ágyazott HAHIBA függvényekkel megoldható.
=HAHIBA(fkeres.munkalap1;HAHIBA(fkeres..munkalap2; stb.;"NINCS")Üdv.
Új hozzászólás Aktív témák
- GoodSpeed: Mutasd magad topic!
- AMD off topik: VGA, CPU, APU és minden, ami AMD
- AliExpress tapasztalatok
- Milyen légkondit a lakásba?
- PlayStation 5
- Metal topik
- Multimédiás / PC-s hangfalszettek (2.0, 2.1, 5.1)
- Motoros topic
- Horgász topik
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- További aktív témák...
- Adobe Előfizetések - Adobe Creative Cloud All Apps - 12 Hónap - 15% AKCIÓ
- Kaspersky, BitDefender, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- Vírusirtó, Antivirus, VPN kulcsok GARANCIÁVAL!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest




amelyek ugyan abból az excelből jönnek, és ugyan abban a doc fájlban vannak"
");2;0) az A3 cellában levő munkalapon keres.
Fferi50