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.
Úgy látom, itt sokan vannak akik tőlem sokkal jobban értenek a számítógépekhez mint én!Igaz, nem excelről kérdeznék,(nem mintha arról nem tudnék mit,)
de a segítségeteket szeretném kérni abban, hogy megtudjátok-e mondani, miért nem tudom megnyitni az index fórumaiban a fórumozók publikus e-mail címüket? Vmit javítani kellett a laptopomon, azóta. Ugyan ez a művelet a tableten szépen működik, tehát a laptop beállításaival lehet vmi gond, de nem tudom mi!
Ennek alapján viszont nem teljességgel megoldhatatlan Hoter 30864-e hozzászólásában, majd a 30879-ben pontosított feladat megoldása úgy, hogy az összefűzendő stringrészek közé fűzi a karakter(10)-et, majd amikor kész van a kitöltés az összes sorban, akkor a teljes oszlopra vonatkozóan beállítani a sortöréssel több sorba történő formázást.
Az persze, hogy mi hogyan kell kivágni, meg összefűzni, az nem derül ki egyértelműen az adott két hozzászólásból, hiszen valószínűleg nem szerepel bekezdésjel a forrás cellákban. Ahhoz egy minta jó lett volna.
Másképpen fogalmazva: nem a két azonos string viselkedik másképp, hanem a tartalom és a formázás együtt alakítja ki a megjelenést. Ami azt is jelenti, hogy az Excel a sortörést nem tekinti a string részének (nem lehet benne semmilyen whitespace a szóközön kívül).
Ami azért zavaró, mert már megszoktuk, hogy a másolás a formázást is másolja. Mármost ha cellát másolok az Excelben, akkor gyakorlatilag a cellaformázás ablak összes tulajdonsága másolódik, a betűformátum, mintázat, védelem, szegély, sőt az igazítás fülről is a lekicsinyítve, hogy beleférjen. Csak a sortöréssel tulajdonság nem.
Igen, ezt tapasztaltam én is. De érdekelt volna, hogy az Excel alkotói hogyan oldották meg azt, hogy két - látszólag azonos string eltérően viselkedik.
De a válaszod alapján gyanút fogtam. Lehetséges, hogy csak annyi a különbség, hogy az Alt + Enter, valamint a makróból történő értékadás egyidejűleg a cella formátumot is beállítja sortörésesre (Wraptext = True), és esetleg még mást is, hogy pont ott törje meg a sort, ahol szeretnénk.
Igen, sajnos a cellák egyesítése azt vonja maga után, hogy csak az első (egyesítés után "megmaradó") cella értéke őrződik meg. Ezért egyesítés előtt a többi cella értékét is ide át kell tenni.
sub egyesit()
dim cl as range,cl1 as range, elv as string
set cl1=selection.cells(1)
elv=";" ' a cellaértékek elválasztója - te határozod meg, mi legyen, egy "szokatlan karaktert" célszerű választani.
for each cl in selection.cells
if cl.address<>cl1.address then cl1.value=cl1.value & elv & cl.value
next
application.displayalerts=false
selection.merge
application.displayalerts=true
end sub
A makró a kijelölt cellákat egyesíti, mindegy, hogy vizszintes, vagy függőleges esetleg mindkét irányú a kijelölés.
Wordben szerintem ez nem működik, ott mások az objektumok, úgy láttam.
Sub cellaegyesítés() Range("A1:A2").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge End Sub
Az átalakítás lényege, hogy nem kizárólag A1 és A2 cella összevonása kellene, hanem bárhol állok, az aktuális cella és az alatta lévő 1 vagy 2, vagy 3 cella tartalmát kellene összevonni, de úgy hogy az összevonandó cellák tartalma megmaradjon. Mert jelenleg ezzel csak az egyik cella tartalma marad meg. Remélhetőleg nem csak excelben, de wordben is működne, mert az lenne az igazi. Előre is köszönöm.
Így van ez az Excel2016-ban és gyanítom a még újabb verziókban is. Szerintem a magyarázat egyszerű, az Excel nem szövegszerkesztő :( .
Egyébként a sortöréssel több sorba opció bekapcsolása a LF karakter nélkül is több sorba teszi a szöveget, a cella oszlopszélességétől függően - "önkényesen" elválasztva a beírt szöveget, még szavak közben is.
A saját LF beiktatása arra jó, hogy szabályozható vele, hol legyen az új sor. Viszont az oszlopszélességet szintén kísérletezni kell.
És ezek után külön be kellett állítani a cellaformázásnál a sortöréssel több sorba opciót, hogy működjék. :-( Szóval csak képlettel nem megy. (Office 2000)
"Szerintem Excelben bekezdésjel ilyen célra nem használható."
Off: Ennek kapcsán merült fel bennem a kérdés, hogy az Excel vajon hogyan oldja meg a cellán belüli sortörést. Azt tudom, hogy erre a nem a bekezdésjelet, hanem a 10-es kódú LineFeed karaktert használja, amikor Alt + Enter megnyomásával kézből adom ki a parancsot. Viszont összefűzéssel nem jeleníti meg a sortörést, bár a karakterláncba bekerül a LineFeed. A sortörés megjelenítése az Alt + Enter-en kívül csak makróból működik.
Ugyanakkor az égvilágon semmi különbséget nem látni azon cellák hossza és a kód függvénnyel kiolvasható tartalma között, amelyeken megjelenik, és amelyeken nem jelenik meg a sortörés.
Vajon mi lehet a technikai megoldás? Gyakorlati haszna nem sok volna, csak mint érdekesség lennék rá kíváncsi.
Ha benézel, még egy ötlet ami talán kicsit gyorsít a munkán:
A szűréshez egy segédoszlopban megszámoljuk, hogy hány szóköz van a névben.
Ezt a következő képlettel tudod:
=Hossz(A2)-Hossz(Helyette(A2;" ";""))
Ezután szűrsz az egynél több szóközt tartalmazó cellákra.
Az előtagot a következő képlettel tudod megkapni a szűrt nevekre:
=Bal(A2;Szöveg.keres(" ";A2)-1))
Persze itt is előfordulnak majd többtagú, nem előtagot tartalmazó nevek. Ezeket viszont talán már könnyebben le tudod "vadászni" és eltüntetni a cellából.
A megmaradt nevek előtag nélküli részének képlete:
=Jobb(A2;Hossz(A2)-Szöveg.Keres(" ";A2))
Mivel a rendezéshez szükségesek az előtaggal nem rendelkező nevek is :), ezért a képlet módosításával egyből a teljes névsort kaphatod:
Szerintem Excelben bekezdésjel ilyen célra nem használható.
Egyébként a B oszlopnak sincs teljes első sora, csak első cellája.
Ha az első cellában bármilyen egy karakter széles elválasztójel van, akkor a következő a tennivaló:
Az elválasztó karaktert kimásolod a vágólapra.
Utána - Adatok - szövegből oszlopok - tagolt - tovább - a határoló jeleknél bejelölöd az egyéb opciót és beilleszted a kimásolt határolót a vágólapról - tovább majd kiválasztod az új cellát, ahol kezdődjön a szétbontott szöveg - befejezés.
Ezután kijelölöd az így kapott tartományt - másolás - kijelölöd az A oszlop első szabad celláját - irányított beillesztés - transzponálás.
Szerintem pedig mégis a külön cellákba rendezés a legkönnyebben járható út (ha van egyáltalán más lehetőség is). Ha sikerül külön oszlopba tenni a nevek előtti szövegeket, akkor a megmaradt név szerint tudod már rendezni őket, majd egy harmadik oszlopba egyetlen képlettel összefűzöd őket. És a Word dokumentumba pedig csak az utóbbi oszlop tartalma kerül.
Köszönöm. Ezt ismertem. De talán nem pontosan fogalmaztam, ezt az összevonást (összefűzés) úgy kellene megcsinálni, hogy ne egy sorba kerüljön, hanem egymás alá (bekezdésjellel elválasztva). Mindezt ha lehetne, segédoszlop nélkül, mindjárt az A oszlop cellájából egyenesen a B oszlop cellájába.
És a B oszlop teljes első sorát a bekezdésjelig hogyan lehet kivágva átmásolni A oszlopba?
Az eredményhez szabályt kell alkotni. A szabály pedig, - amit le is írtál - hogy el kell tüntetni (a végére rakni vesszővel, vagy másik cellába) azt az előtagot...
Üdv Mindenkinek! Van egy meglehetősen terjedelmes szótáram (15.000+ szócikk). A szótár címszavait szeretném betűrendbe állítani, amivel még nem is lenne gond. A problémát 200-400 név okozza. A dokumentumban bizonyos nevek előtt vannak jelzők (római számok, vagy az, hogy szent, stb.). Szeretném, ha a sorba rendezésnél az ilyen jelöléseket figyelmen kívül hagyja az Excel. Hogyan lehet ilyesmi szűrőt beállítani?
Hogy 1-2 példával éljek, az lenne a cél, hogy mondjuk II. Andrást az a betűhöz, Szent Jeromost pedig a j betűhöz sorolja.
Értelemszerűen nem opció az ehhez hasonlóak kikutatása, és külön cellába válogatása, hacsak nincs valamilyen lehetőség a problémamentes későbbi visszacsatolásra, mivel a sorba rendezés után az egész egy Word dokumentumba kerül további megmunkálásra.