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.
Még annyit, hogy a fájlnevek beolvasásához használd a DIR függvényt. Ciklusban végégmész a fájlokat tartalmazó könyvtáron - amíg nem lesz üres az eredmény -, és a beolvasott fájlnevekben ellenőrzöd, hogy azok-e, amik neked kellenek (feltéve, hogy nás fájlok is vannak az adott könyvtárban). Aztán sorba rakod őket, és onnan már egyszerű megnyitni, bemásolni.
Ezt nem nehéz makróval összehozni egyetlen munkafüzet egyetlen munkalapjára.
Az adatfájlokhoz rendelj hozzá egy nevet, pl. Adatok 2024, az egyes letöltött fájlok neve legyen ugyanez egy sorszámot tartalmazó toldalékkal. Pl Adatok 2024_1, Adatok 2024_2 stb. Azt meg tudod adni a makróban, hogy az Adatok 2024 kezdetű fájlokat nyissa meg, majd a legelsőt másolja be fejlécestől, a továbbiakat pedig fűzze hozzá a meglévőhöz fejléc nélkül.
Rendszerből kérünk le különböző időintervallumokra adatsorokat. Ezeket a rendszer exel-be hozza, táblázatos formátumban. A rendszerből 3 hónapnál hosszabb intervallumra nem lehet lekérdezni.
Így van amikor ha mondjuk 1 évre visszamenőleg kellenek adatok, az 4 lekérdezés.
Azt, hogyan lehet megcsinálni, hogy lekérdezem az adatsorokat 1 mappába és azt VBA-val egy excellé = egy táblázattá alakítani őket.
Változó, hogy a mappában mennyi táblázat lenne (1-5 -10 db, bármennyi) Mindegyiknek azonos a fejléce, de értelem szerűen a fejléc csak egyszer szerepeljen és aztán az adatsorok betöltve a lekérdezés sorrendjében.
Azért kell először egy cellába beírni a képletet és utána kitölteni lefelé, mert ha egyből az egész tartományba írnánk be, akkor csak az első sor érvénysülne az egész tömbben. (Ne kérdezd miért, ez van....)
2.
(Részben) VBA-val azért bonyolultabb, mert VBA-ban nem tudod a két oszlopot egyszerű módon összefűzni. Én azt választottam, hogy beolvastam a táblázatot egy tömbváltozóba, a változó első két oszlopát összefűztem - a második változatlan maradt - és a harmadik oszlopban keresek, mivel az FKERES tömbben is képes keresni, nemcsak tartományban.
Igy nézne ki:
Sub Minta() Range("C10").Value = Keres_Func(Range("C10").Row) End Sub Public Function Keres_Func(sora As Integer) As Variant Dim ws As Worksheet Dim r As Range Dim keres As String Dim keresotomb, xx As Integer Set ws = Workbooks("Fkeres_tobb_feltetellel.xlsm").Worksheets("Proba2") keres = ws.Range("A" & sora) & ws.Range("B" & sora) keresotomb = ws.Range("K2:M32").Value For xx = 1 To UBound(keresotomb, 1) keresotomb(xx, 1) = keresotomb(xx, 1) & keresotomb(xx, 2) Next Keres_Func = Application.VLookup(keres, keresotomb, 3, 0) End Function
Ne feledd, hogy ebben az esetben a cella értéket kap és nem képletet, így nem húzható lefelé!!! Minden cellára egyenként kell az értéket előállítani a függvény meghívásával.
Itt a fórumon néhány hete ügyeztünk erről a függvényről:
A minta C10 cellába beírva: =FKERES(ÖSSZEFŰZ(A10;B10);VÁLASZT({12};ÖSSZEFŰZ(INDEX($K$2:$M$32;0;1);INDEX($K$2:$M$32;0;2));INDEX($K$2:$M$32;0;3));2;IGAZ)
működik...
Ezt szerettem volna VBA ban megírni, de nem jártam sikerrel.
Én nem tudok olyan Excel függvényről, amely 2 oszlop összefűzésének eredményét keresné egy másik tartomány 2 össze nem fűzött oszlopában.
Ehhez a célterületen létre kell hoznod egy segédoszlopot, és abban keresni. Nálam ez az N oszlop lett. A 2-32 cellák tartalma pedig az N2-ben K2 & L2,és ez lefelé kitölve.
És mivel képtelen voltam rájönni, hogy a vlookup függvény miért ad Variant/error hibát, ezért – amíg valaki meg nem találja a megoldást – javaslom, hogy a find függvénnyel keress. Ez egy Range típusú változóban adja vissza az eredményt (nálam találat a neve), és ennek a sor értékét lekérdezve tudsz értéket adni az A3-nak:
Sub Minta()
Dim eredm As Variant
Range("A3") = Keres_Func
End Sub
Public Function Keres_Func() As Variant
Dim ws As Worksheet
Dim r As Range
Dim keres As String, talalat As Range
Set ws = Workbooks("Fkeres_tobb_feltetellel.xlsm").Worksheets("Proba2")
keres = ws.Range("A12") & ws.Range("B12")
Set talalat = ws.Columns("N:N").Find(what:=keres, LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByColumns, MatchCase:=True)
If talalat Is Nothing Then ' Ha nincs meg, bár ez elég valószínűtlen
Keres_Func = "Nem találom"
Else
Keres_Func = ws.Cells(talalat.Row, "L")
End If
'Set r = WorksheetFunction.Choose(Array(1, 2), ws.Range("K2:K32") & ws.Range("L2:L32"), ws.Range("M2:M32"))
A teszt kedvéért átjavítottam a tartományokat egyedi cellákra: Choose(2, ws.Range("K2") & ws.Range("L2"), ws.Range("M2")), 2, 0), akkor nem állt le hibaüzenettel a program, de még így is hibás, mert a Keres_Func értéke Error2042 lesz: Variant/Error. (Ezt a Locals ablakban láthatod). Majd az A3-ban pedig #HIÁNYZIK üzenet jelenik meg. Ennek az okát nem tudom.
Legyen üres az a cella, amiben még nincs adat - képlet se legyen benne! Ezután az adatforrás kiválasztása párbeszéd panelen rákattintasz a rejtett és üres cellák gombra, majd bejelölöd az adatpontok összekötése vonallal opciót.
Amikor adat kerül - akár képlettel - a még üres cellába, ez az opció nem hat már tovább.
Üdv, segítség kéne. Van egy vonaldiagramom, ami éves adatokat jelenít meg. Az a gond, hogy ahol még nulla van (értsd: a jövőbeni adatok helye, pl. most a június), ott a mostani tudásommal két rossz közül választhatok:
1: a cellákban elrejthetem a nullákat (Beállítások -> Speciális...), de a vonaldiagram beleáll a földbe, ami nem néz ki jól;
2: a cellákban a nullák helyén =HIÁNYZIK()-ot jelenítek meg, amit elrejthetek (Feltételes formázás), és a vonal nem áll a földbe, hanem megszakad (ez a cél), de a cella értéke a többi munkalapra is átmegy, mindenhol hibával, amit q kényelmetlen lekezelni.
Az Excel-ben található hiperhivatkozások működése és a kattintási viselkedés beállítása több tényezőtől függ, beleértve a felhasználói beállításokat és a program verzióját is. Az alábbi lépések segíthetnek a probléma megoldásában:
1. Frissítések Telepítése
Győződjön meg róla, hogy minden felhasználó a legújabb Office frissítéseket telepítette. Ez sok esetben megoldhatja a problémákat.
2. Alapértelmezett Böngésző Beállítása
Győződjön meg róla, hogy minden felhasználónál ugyanaz a böngésző van beállítva alapértelmezettként. Az Excel hiperhivatkozások megnyitásához általában az alapértelmezett böngészőt használja.
3. Excel Beállítások Ellenőrzése
Ellenőrizze az Excel beállításait minden felhasználónál:
Nyissa meg az Excel-t.
Kattintson a Fájl menüre.
Válassza a Beállítások lehetőséget.
Menjen a Speciális fülre.
Görgessen le a Szerkesztési beállítások szakaszhoz.
Győződjön meg róla, hogy a "Hiperhivatkozások kattintásra aktiválása" beállítás be van kapcsolva.
4. Böngésző Biztonsági Beállítások
Néha a böngésző biztonsági beállításai megakadályozhatják a hiperhivatkozások közvetlen megnyitását. Ellenőrizze és szükség esetén állítsa vissza a böngésző biztonsági beállításait.
5. SharePoint Beállítások
Ha a fájl egy SharePoint alkalmazásban van tárolva, győződjön meg róla, hogy a SharePoint beállításai egységesek minden felhasználó számára. Az engedélyek és a hozzáférési beállítások eltérései is okozhatják a problémát.
6. Makró Biztonsági Beállítások
Néha a makró biztonsági beállítások is befolyásolhatják a hiperhivatkozások működését. Győződjön meg róla, hogy minden felhasználónál a makró biztonsági szint megfelelően van beállítva.
Összefoglalás
A probléma megoldása érdekében ellenőrizze a következőket:
Office frissítések telepítése.
Alapértelmezett böngésző beállítása.
Excel beállítások ellenőrzése (különösen a "Hiperhivatkozások kattintásra aktiválása" opció).
Böngésző biztonsági beállításai.
SharePoint beállításai.
Makró biztonsági beállításai.
Ezek a lépések segíthetnek abban, hogy a hiperhivatkozások minden felhasználó számára megfelelően működjenek.
=HIPERHIVATKOZÁS(ÖSSZEFŰZ(G$1;B303);B303) adott ez a hivatkozás amely megfelelően működik . A file egy sharepoint alkalmazásban felhőben van elhelyezve. Több felhasználó is használja. Vannao olyan felhasználók akinél a hivatkozás a bal egérgombbal való kattintással megnyílik. Ez a jó. Vannak olyan felhasználók akiknél a hivatkozást csak két billentyű lenyomásával tudja elindítani. Mit kell beállítani, hogy a hivatkozás a bal egérmutató kattintásával elinduljon?
A hónap, nap szétválasztásához, pedig a BAL, JOBB, KÖZÉP függvények használhatóak a DÁTUM függvény belsejében.
Ez csak 1 lehetőség a sokból.
Ha nem dátum formátumúak az ilyen dátumot tartalmazó cellák, akkor lehet, hogy érdemes megpróbálni a szövegformátumot dátumra állítani, hátha dátummá alakul és onnantól a dátumfüggvények működnek rajta.
De ez még kevés lesz, végig kell az átalakított szövegformátumú cellákon "gyalogolni" egy F2, ENTER művelettel. Ha nagy tömegvben an van oszlopban , akkor ezt megteszi helyetted a szövegből oszlopok opció.
"az egyes értékek végén van még egy plusz vessző. (Valamint egy szóköz.) ". Próbáld meg, akár jegyzettömbbel, akár Excellel megnyitni - utóbbinál egyelőre nem kérni a szövegből oszlopok transzformációt -, majd a cserénél a Vesző + szóközt valami másra (például pontosvessző) cserélni. ezzel megmaradnak tizedsvesszők, de a határolójel a pontosvessző lesz. Ezzel már fog működni a transzformáció.
A problémám az alábbi. Egy térinfós szoftver .csv-ben dobja ki az eredménytáblát, amellyel tovább kellene dolgoznom.
A több oszlopban lévő numerikus értékek tizedesjegy elválasztója vessző, emellett az egyes értékek végén van még egy plusz vessző. (Valamint egy szóköz.)
Próbáltam az Adatok/Szövegből oszlopok-kal (szóközt beállítva. mint határoló jelet), ami szépen külön oszlopokba rendezi az értékeket, ugyanakkor a gond továbbra is az egyes értékek végén található vessző. Ez nyilvánvalóan nem szükséges.
Hogyan lehetne eltávolítani az értékek utáni vesszőt? Köszönöm a segítségeteket!
Attól függ, milyen címzéssel használod a képletet, de a lehúzásnál is ugyanaz a helyzet. Ha abszolút ($-os) címzést használsz sorra és oszlopra is, akkor igen.
Ha lehúzással jó volt a képlet, akkor a másolással is jónak kell lennie.
tehát a képletem mondjuk B7 ,és az alatta lévő helyen már B8 kell hogy legyen,majd B9 és így tovább. Ha lehúzom váltja a képletet is ugye,de a formátumot. én úgy szeretném hogy a formátum is megmaradjon minden helyen ahogy volt,és a képlet is változzon úgy mint lehúzásnál és ne keljen egyenként bemásolnom 800 helyre. Ezt így nem lehet megoldani sehogy sem?
Szia! Lehúzással megy a formázás is. Helyette: kijelölöd a másoladó képletet tartalmazó cellát, majd Ctrl +C (vagy jobb egérgomb másolás),
utána kijelölöd azt a tartományt, ahová a képletet szeretnéd másolni. Ezen állva jobb egérgomb - irányított beillesztés - képletet. Ezután ESC és megszűnik a kijelölés.
Ha egymás mellett vannak a képletet tartalmazó cellák, akkor együtt is megy a fentiek szerint.
Egy olyan problémába ütköztem,hogy van nekem egy majdnem teljesen készen lévő táblám.
A cellák formázása kész teljesen (cella kitöltő szín,betűszín,betűtípús,betűméret), a rácsok készen vannak az egész táblához.
Egyetlen egy dolog hiányzik a táblából,4darab képlet, amit 1-1x kéne beírnom a sor legtettejére és lehúznom a végtelenségig.
És itt jön a problémás rész,a képlet lehúzásával az összes cellában változik a formátum olyanra mint amelyik cellából lehúztam,ezeket visszaállítani órákig tartana.
Tudok valahogyan "Fill handle"-t (lehúzásos módszert) használni úgy hogy semmi mást ne alkalmazon a többi cellára csak a képletet és a formátumot és mindenmást hagyjon figyelmen kívül?
Jelenleg ezt google drive táblában csinálom,nem excelben.
Feltételes formázás - új szabály - a formázandó cellák kijelölése képlettel - a képletbe pedig beírod a megfelelő relációt.
De a dátummal-idővel kicsit kacifántosabb a dolog.
FONTOS! Mindegy, hogy milyen formátumban látod a cellában az időt, mivel az Excel számként kezeli a dátumot és az időt a következőképpen:
Az egész rész az 1900 jan. 0! óta eltelt napok számát jelenti (tehát 1 = 1900.01.01!), a törtrész jelenti a napon belüli időt, pl. 0,5 =12:00:00.
Vagyis ha egy napon belüli időt írsz be, azt törtként fogja értelmezni az Excel. Ha arra vagy kíváncsi, hogy ez a mostani időhöz hogyan viszonyul, akkor a MOST() - MA() értéket kell hasonlítanod az adott időhöz. Ha időt közvetlenül szeretnél képletbe bevinni, akkor az IDŐ vagy az IDŐÉRTÉK függvényeket kell használnod.
MÁS A HELYZET, ha szövegként vannak a cellában az értékek, ebben az esetben a hasonlítást is szövegként (vagy idővé-azaz számmá - alakítás után) tudod megtenni, de a szövegek hasonlítása más eredménnyel járhat, mint a számok összehasonlítása!!!
Azt pedig, hogy az adott cellában szöveg vagy "szövegnek látszó" szám van, a cella formátum megváltoztatásával tudod tesztelni. Ha számformátumra állítod a cellát és marad a benne levő érték változatlan, akkor szövegként van tárolva az érték és csak látszik pl. időnek. Ellenkező esetben számmá - tizedes törtté kell változnia a megjelenésnek.