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 szerintem általatok rutinműveletnek tűnő, ám számomra annál sürgősebb probléma kapcsán fordulok hozzátok.
Mivel a komplett problémát nehézkes lenne írásban magyarázni, ezért egy egyszerű iskolapéldán keresztül szemléltetem, mellékelten pedig csapolok egy képet is:
Eddig ugye semmi probléma, a számítás egyszerű függvénnyel megoldható.
Én viszont azt szeretném, hogy egy külön táblázatban egymás alá gyűjtse a fizetendő összegeket, hogyha én változtatok a gyümölcs mennyiségén az input cellában. Valahogy így:
x kg gyümölcs - "x kg gyümölcs esetén számolt összeg" y kg gyümölcs - "y kg gyümölcs esetén számolt összeg" z kg gyümölcs - "z kg gyümölcs esetén számolt összeg" stb...
- Én olyasmin gondolkodtam, hogy be kellene vonni az accest majd az ott kapott adatbázist visszaimportálni excelbe. Ez akkor lenne az ideális ha automatikusan történne. Accesben viszont nem vagyok otthon kb semennyire, de ha elmondjátok hogyan kell, meg tudom csinálni.
- Az is elképzelhető, hogy makrót kell írni, de ott is hasonló a helyzet.
Éppen ezért arra kérlek benneteket, hogy a lehető legegszerűbb megoldást mondjátok nekem, ami persze neketek is kevesebb vesződséggel jár.
Alapvetően ugyanúgy közelíteném meg, mint Lucky problémáját:
- előállítanék egy számsort, ami vagy nullákat vagy a pozitiv ügyfélszámok esetén a sorok számát tartalmazza (pld. (a2:a500>0)*row(a2:a500))
- a SMALL függvénnyel sorra előszedném ennek a fenti számsornak a darabjait, oly módon, hgoy a cél cella sorának száma határozza meg,hogy hanyadik SMALL-t keressük.
Az INDIRECT tuti működik ezzel a technikával. Sajnos az OFFSET nem, mert a SMALL/LARGE egy 1*1-es tömböt ad vissza és az OFFSET visszaköpi a tömb bemenő adatokat.
Egy kis segítséget szeretnék kérni tőletek, hogy ti hogyan bírkóznátok meg ezzel a feladattal.
Van egy oszlop, amelybe alap esetben pozitív előjelű ügyfélszámokat jegyzek be, hogyha mondjuk eladok az ügyfél részére egy terméket.
Azokban az esetekben, amikor nem eladok nekik, hanem bármely más munkát csinálok (pl.: információadás) velük, abban az esetben mínuszos (-) ügyfélszámot jegyzek a cellába, vagy üresen hagyom azt.
A kérdésem az lenne, hogy hogyan lehet megoldani azt, hogy egy másik munkalapon ki legyen listázva az oszlop azon cellái, amelyekben a pozitív számok voltak beírva (sorkihagyás nélkül, tehát nem szűrős megoldással, hanem valami listázás félével).
Mellékeltem egy képet, hogy az oszlop tartalom hogy néz ki, és ezek közül kellenének külön listába azok a sorok, amelyekbe pozitív számok vannak.
Igazad van, végül csak megoldottam magamtól ilyen nyögve nyelős módszerrel, de ezt legalább el tudom magyarázni. Köszi a megoldást, azt is áttanulmányozom hogyan működik!
MINDEGYIK fenti cellát Ctrl+Shift+Enterrel kell lezárni (kapcsoszárójelbe kerül a függvény).
Ezután, ha tudod mennyi lehet a maximális találatok száma, akkor annyiszor másolod lefele copy-paste-tel a képleteket, ha nem tudod mennyi a maximális találat, akkor az 500.-sorig (mert ugye max 500 találat lehet egy 500 soros táblázatban.
Ha xl2007 előtti exceled van akkor az IFERROR nem fog működni, ISERROR a megoldás.
Ne tarts olyanból előadást, amihez nem értesz, mert csúnyán rá lehet égni
Köszönöm. Így tényleg működik, a duplikációsat nem próbáltam erre a verzióra előzőleg. Azt hogyan lehetne megoldani, hogy a 3 segédoszlopból a találatokat egy kupacba gyűjtse ki, hogy ne kelljen nekem külön kikeresni?
A variáció előtt mindhárom oszlopban csakis egyszer fordulhatott elő egy-egy adat.
A mostanihoz vagy makró kell, vagy 3 segédoszlop. Nézd meg a 15626-os, és 15629-es hozzászólásokat, vagy várd meg SQL-t, ő ír egy szorzatösszeges, vagy egy istentudjami() függvényt.
A múltkor segítettek páran megoldani nekem ezt a feladatot, de variálni kell egy kicsit rajta és hétfőn előadást kell belőle tartanom! Ezért nagyon sürgős lenne.
A lényeg az, hogy van egy 3 oszlopból álló Range-em (A2-től C500-ig).
Keresek egy adatot, amit F2-be írok be.
A feladat, hogy a függvény megkeresse az A2:C500 tartományban az F2-be beírt számot és kiírja annak a sornak a tartalmát, amelyik sor tartalmazza a keresett adatot. Szóval ha a F2-be rögzített szám a B8-ban van, akkor írja ki az A8-at, a B8-at és a C8-at is.
Az F2-be beírt érték viszont több találatot is adhat! A kérdésem az, hogy hogyan szedem szét sorokra a találatokat?
Itt az általam eddig használt függvény, ami duplikáció esetén már nem jó:
Időközben teszteltem a dolgot. A programhoz nem nyúltam, pusztán a munkalap nevét rövidítettem le. És így hibaüzenet nélkül lefutott a program. Tehát az .XValues = szöveg és hasonló értékadásnál a szöveg string hossza korlátozott. Valahol a 256 karakter környékén.
Egy furcsa dolgot tapasztaltam, ebben szeretnék segítséget kérni!
Létrehoztam egy menürendszert, hogy a makróimat legördülő menüből hívhassam meg, és azt tapasztaltam, hogy a menüből meghívva a makrók bizonyos részei nem működnek! Az Excelből közvetlenül meghívva minden utasítás jól működik, de menüből elindítva a makrót nem működnek ezek a sorok, és hibaüzenet sincs!
Ilyenek nem működnek ('Data' egy Worksheet objektum):
Data.Cells.ClearContents
Dim LastRow As Long LastRow = Data.Cells.SpecialCells(xlLastCell).Row
ez utóbbi azért különös, mert így viszont már jó eredményt ad:
LastRow = Data.Cells(1, 1).End(xlDown).Row
(De mi van, ha nem az első oszlop utolsó elemének helye kellene, hanem a munkalap legalsó cellájának sorindexe?)
Menüből hívva csak az utolsó sor ad vissza helyes értéket, míg a makrókat simán az Excelből indítva mind jó értéket ad vissza. Mi lehet ennek az oka, és mit lehet tenni? Előre is köszönöm a segítséget!
Bocs, hogy túl sokat kérdezek, de találtam valamit. A tegnapi problémám az aposztrof használatával megoldódott. Ma meg is írtam a programot, ami gyönyörűen összefűzi a tengelyek megadásához szükséges stringet, és rajzolja is a grafikonokat.
Ámde: Az egyik adatsoromnál, ahol nagyon szétszórtak voltak az adatok, egyszer csak kiakadt. Hosszas töprengés után azt találtam, hogy nem szintaktikai a probléma, hanem az összefűzött parancsstring hossza meghaladta a 256 karaktert, és erre kezdtem gyanakodni. Ki akartam próbálni a makró fényképezés módszerével, hogy ők hogy oldják meg, de azt találtam, hogy kézből kijelölgetve az adatokat, egy bizonyos pont után meglehetősen udvariatlanul, se szó se beszéd, félbehagyja a munkát, és törli az addigi kijelöléseket.
Lehetséges, hogy van egy olyan határ, hogy a parancssor hossza nem haladhatja meg a 256 karektert?
Tulajdonképpen ehhez hasonlót kapok, csak fekete-fehérben, ha a diagram főlé állva az egér jobb gombjával a forrásadatra kattintok. Csak míg ez következetes, addig a diagramra kattintva nem az.
Sziasztok, meg tudja valaki mondani, hogy az mitől függ, hogy egy elkészült diagramra kattintva az Excel megjelöli-e (lila és kék színekkel bekeretezi) azt az adattartományt, amiből a diagram készült.
Nekem egyetlen munkafüzet egyes munkalapjain másképp viselkedik. Egyiken bejelöli, a másikon nem. Szeretném egységesen kezelni őket, de nem tudok rájönni, hogy mitől van a különbség.
"Hiding an item in a row field or column field removes it from the report, but the item still appears in the dropdown list for the field. Hiding an item in a page field removes it both from the report and from the dropdown list for the field."
Szóval csak a page field-ekkel műxik ez.
Double-click the page field.
If the Hide items box is present, select each item that you want to hide, and clear the selection from each item that you want to show.
If the Hide items box is missing, your source data always lists all available items in the dropdown list for the page field.
Elnézést, két ilyen makró volt, és nem azt tettem ki, amelyiket kipróbáltam, és jól működött. Itt az igazi.
Sub DeleteOldItemsWB() Dim ws As Worksheet Dim pt As PivotTable Dim pf As PivotField Dim pi As PivotItem
On Error Resume Next For Each ws In ActiveWorkbook.Worksheets For Each pt In ws.PivotTables pt.RefreshTable pt.ManualUpdate = True For Each pf In pt.VisibleFields If pf.Name <> "Data" Then For Each pi In pf.PivotItems If pi.RecordCount = 0 And Not pi.IsCalculated Then pi.Delete Next pi End If Next pf pt.ManualUpdate = False pt.RefreshTable Next pt Next ws End Sub
Kimutatásokról és felesleges adatokról volt itt szó.
Nem tudom, a 2007-es verzióra is jellemző-e, hogy azokat a tételeket is mutatja a szűrőkben, amiket már töröltünk a tartományból, de a kimutatás nem felejt. A 2003-as verzióra még igaz.
Valahonnan kaptam egykor egy "szellemírtó"-t, ami ezt a hibát megszünteti. Közre adom, biztosan jó hasznát veszi, akinek ilyen gondja van.
Sub RemoveGhostPivotItems() Dim ghost As PivotItem Dim pt As PivotTable
Set pt = ActiveSheet.PivotTables(1) pt.ManualUpdate = True
For i = 1 To pt.PivotFields(i).PivotItems On Error Resume Next For Each ghost In pt.PivotFields(i).PivotItems ghost.Delete Next ghost Next i
A bekarikázott mezőben elrejti azokat, akiket nem akar látni a kimutatásban. Ezután a foglalkozás legördülője csak a megmaradt tételekhez tartozó értékeket mutatja, ill. ezek további szűrését engedélyezi.
Megint módosították az elvárásokat a táblázatommal kapcsolatban. Így már több találatot is ad a függvény, tehát sorokra is szét kellene szedni. Azt mondtad index függvénnyel lehet megoldani. Kérdésem, hogy hogyan?
Ebből az adatbázisból kell minden hónapban egy statisztikát készítenem, ami biztosan halál egysezrű lehet annak aki virtuóz a Kimutatásokban. Nekem nagyon neki kell feküdnöm, hogy ez menjen. S persze, ha kész a táblázat, akkor már automatizmus lesz a munka a továbbiakban.