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.
Egy kis érdekesség a témához. Igaz, nem halmaz, de két tartomány metszetét meglehet határozni a szóköz operátorral Pl. Ha egy cellába beírjuk: =A1:B5 A2:C2 és Ctrl+Shift+Enterrel kibontjuk két egymás melletti cellába, akkor a két tartomány közös részének, a A2:B2 a tartalmát kapjuk meg.
Az FKERES függvénnyel keresd végig az egyik adathalmaz minden elemét a másik adathalmazban, és a közös rész az, ahol nem adott vissza hibát a függvény. Ha csak darabszám kell, akkor a =HA(HIBÁS(FKERES(...));0;1) módon 0-k és 1-ek sorozatát kapod, amit a végén összeadsz és kész az eredmény.
Sziasztok! Volna egy exceles kérdésem. Van egy rendezett tömböm 30 számból, meg egy másik 20 számból áll, meg kéne adnom a két tömb metszetét, azaz hány szám közös a két tömbben. Halvány elképzelésem sincs melyik függvénnyel lehetne. Előre is köszi a segítséget!
Ezeket próbálnám meg: - próbálkozni más címekkel: van-e olyan html oldal, amit importálni tud az Excel? Ha van, akkor ugye konkrétan ezekkel a címekkel van baj. - a nem működő címet megnézni böngészővel: meg lehet- nyitni? Ha meg lehet nyitni, akkor "a hiba az Ön készülékében van". - lépésről-lépésre történő programvégrehajtással megnézni, hogy pontosan mi az az URL, ami a Connection paraméterbe kerül. Hátha van benne valami elírás, tévedés, stb. Esetleg úgy is, hogy a Connection paraméter cím részének elérhetőségét ellenőrizni böngészővel.
Ha minden rendben lévőnek tűnik, és mégsem megy, akkor nem tudom, mi van.
Ha xls-t nyitsz meg a webről, azt nyilván be kell zárni, különben több száz nyitott munkafüzeted lesz.
Ha html oldalakat töltesz le, akkor... Nos, a QueryTables.Add valójában megegyezik azzal, mintha az Adatok->Külső adatok importálása-> Új weblekérdezés menüpontot használnád. Amikor új weblekérdezést nyitsz, a régi megmarad, de engem ez még sosem zavart semmiben, és így eszembe sem jutott foglalkozni vele.
De igazad van, az a legtisztább, ha minden nyitott kaput bezárunk magunk után. Szóval tedd a ciklus végére ezt:
While WS.QueryTables.Count > 0 WS.QueryTables.Item(1).Delete Wend WS.Cells.Delete
A fenti kód törli az összes definiált weblekérdezést a WS változóval definiált munkalapon, azután törli az összes cella tartalmát (ugyancsak a WS munkalapon).
Itt van két példa, az első webre feltöltött xls, a másik sima html oldal letöltésére:
Sub Letöltés_xls() Dim QueryString As String
QueryString = "http://ddl2.data.hu/get/0/1297990/teszt.xls" Workbooks.Open QueryString End Sub
Sub Letöltés_html() Dim QueryString As String, WS As Worksheet
Set WS = Sheets("Munka1") QueryString = "http://www.cpearson.com/excel/topic.aspx" With WS.QueryTables.Add(Connection:="URL;" & QueryString, Destination:=WS.Range("A1")) .BackgroundQuery = True .TablesOnlyFromHTML = True .Refresh BackgroundQuery:=False .SaveData = True End With End Sub
Nem lehet, hogy csoportos kijejölés volt érvényben a munkalapokra? Ha a Shift ill. Ctrl billentyűkkel együtt kattintassz 1-1 munkalapra, akkor több munkalapot jelölsz ki - ekkor történhetnek azok, amiket leírtál.
Feltöltöttem egy munkalapot adatokkal, egy VB programocskával átírtam egy másik munkalapra.
Aztán nem tudom mi hülyült meg, de egy idő után, amikor töröltem a második lapot, törölte az elsőt is. amikor beszúrtam valamit bármelyik lapra, mindkettőn megjelent ill. (törlés esetén) mindkettőről törlödött. Több órai munkám veszett el.
Munkalapot egy munkafüzeten belül ne nevezzek el "Input"-nak és "Output"-nak?
Létrehozod a két tartományt ábrázoló grafikont. Kijelölöd azt az adatcsoportot, amit a másik tengelyhez akarsz rendelni. Jobb klikk, Adatsorok formázása >Tengely>Másik tengelyhez.
Szintén az adatsoron, a jobb klikkre előjövő menüben megtalálod a Trendvonal felvételét. Nézd meg mindkét fület a párbeszéd dobozban.
Egyszer már megoldottam ezt a webről letölés problémát, de most nincs kéznél a program, amit akkor írtam, és nem emlékszem, hogy is volt pontosan. Attól tartok, félrevezettelek azzal a FollowHyperlik-kel... Elnézést. Hétfőn megnézem, és helyesbítek.
Excel-en belül még csak-csak használom az worksheet... és cells ... akármiket (de itt sem tudom melyik "metodus" és melyik "attributum").
Sajnos én öreg motoros vagyok, objektumorientált programozást soha nem tanultam, és a munkám során sem használtam, de hajlandó vagyok vénségemre megtanulni. Valahol van hozzá puska?
Egy excel táblázat egy oszlopa URL címeket tartalmaz, amelyek azonos szerkezetű kicsi táblázatokra mutatnak.
Hogyan lehet ezeknek a táblázatoknak a tartalmát EXCEL-ből elolvasni, letárolni akár a kiindulási táblázat adott sorába, akár másként. (pl. txt szerkezetű file-ként)
Ha a html source-t text-ként tudnám olvasni, akkor már ki tudnám szedni a nekem szükséges adatokat..
Magyarázat a "Public Declare Function SetActiveWindow Lib "user32.dll" (ByVal hwnd As Long) As Long" sorhoz:
Képzeld el, hogy írsz egy saját függvényt VBA-ban, aminek van két paramétere. Például:
Private Function Összeg (Szám1 As Long, Szám2 As Long) As Long Összeg = Szám1 + Szám2 End Function
Ezt a függvényt hogyan használod fel a program többi részében? Pl. így:
Dim Eredmény As Long Eredmény = Összeg(32, 15)
A SetActiveWindow függvény is pont ilyen. Van egy paramétere, aminek a neve történetesen hwnd. A hwnd-nek ugyanaz a szerepe, mint az Összeg fgv. esetében a Szám1-nek és Szám2-nek. Ezt a paramétert kell beadni a függvénynek ahhoz, hogy működni tudjon. Más szóval, a SetActiveWindow esetében a hwnd paraméterrel adjuk a függvény tudtára, hogy konkrétan melyik ablakot akarjuk aktiválni.
Ez tehát annak az ablaknak az egyedi azonosítóját tartalmazza, amit aktiválni akarunk. A Windowsban minden egyes megnyitott ablaknak van egy egyedi azonosítója, ami egy Long típusú egész szám. Ezt az azonosítót először megszerezzük a GetActiveWindow függvénnyel, majd átadjuk SetActiveWindow-nak.
Hogy miért pont hwnd a paraméter neve, azt nem tudom. Ez egy rövidítés, azt hiszem, talán "Handle of Window" vagy valami hasonló. Mert az API függvények világában az ablakok azonosítóját "Handle" névvel illetik (jelentése kb. nyél vagy foganytú). De lehet, hogy nem csak az ablakokra vonatkozik ez, hanem mindenféle process-ekre is, szóval alapvetően a Handle az valami olyan azonosító, aminél fogva hivatkozni lehet egy adott ablakra, folyamatra, stb. Ennél többet én sem tudok róla.
Annyiban hibádzik, hogy ami eddig megtörtént a "Application.CommandBars("munkalap").Visible = True" sornál, most nem történeik meg. (Tehát a munkafüzet aktiválásakor nem jelenik meg az eszköztár) Ugyanebben a projektben van egy másik eszköztáram hasonló eljárással írva, az működik.