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.
Fferinek igaza lehet. De nem csak az excel nyelve lehet eltérő a két gépen, hanem a területi beállítások is. Írtam a korábbi hsz-emben, hogy hiába copy pasteltem be a Lin.ill súgó mintapéldáját, az én gépemen nem működött. Azóta rájöttem, hogy miért nem. Hát azért, mert a súgó példa magyarított példa volt, tizedesvesszővel. Én meg a saját gépemen tizedespontot használok. Így mintapélda tizedesvesszője miatt az excelem néhány számot stringnek értelmezett, amit a Lin.ill nem akceptál. Nos ilyen banális beállítási hibákra is vadásszál.
De hagy kérdezzem meg újra: hogyan kell a kitevőket kapcsos zárójelbe tenni?
Van egy kérdőív, ahol a válasz legördülő listából "igen" és "nem" lehet.
Értékelésnél adott válaszoknál az "igen" válasz érhet 1 vagy 2 pontot kérdéstől függően, a "nem" mindenhol 0 pontot ér.
Cél, a listából kiválasztott "igen" választásánál a kérdéshez tartozó 1 vagy 2 ponttal számoljon a táblázat, "nem"-nél 0 ponttal a mellette levő oszlopban.
Próbáltam képletek / definiált nevek / kijelölésből új opciót, ahol volt a listában
"igen" - "igen." - "nem" , Hozzárendelt számok 1-2-0.
Viszont, választás után mégsem tudta számként értelmezni a mellette levő eredmény oszlop.
Lehetséges ezt kivitelezni valahogyan?
A választ előre is köszönöm, képet csatoltam róla.
Ami az ékezetes változókat illeti én már beleütköztem a problémába. Idén egy bő fél éven át egy tagnyilvántartó programot írtam. Ez zömmel interaktív, amit userformokkal oldottam meg. Aztán amikor a program egy angol nyelvű office-t használó kollégám kezébe került, előjött, hogy nem fut a progam. Pontosabban Lost Visual Basic project hibát jelzett. És néhány nap kellett, míg kiderítettük, hogy a hibát a Userformok és a rajtuk elhelyezett ékezetes objektumok okozták. Ezeket néhány órás munkával kijavítottam, szerencsére a függvények és változók nevével nem volt gondja az Excelnek.
Szóval igazad van, és rossz szokásom, hogy használom a kódban az ékezeteket. Lám hová vezet a féktelen nacionalizmus:-))) Még szerencse, hogy nem rovásírást használtam:-)
Szóval ebben is egy nagy elhatározásra lenne szükségem, hogy ezentúl leszokjak az ékezetek használatáról a programkódokban.
Hogy még szebb legyen, egyáltalán nem kell aktívnak lennie a munkafüzetnek sem:
Az előzőekben leírtak akkor is működnek, ha a
Workbooks(wbnév).Activate
sort kihagyod.
Hiszen ws.parent.name = wbnév. (Azaz a ws munkalapod a wbnév nevű munkafüzetben van!)
Még egy tanács: én abszolut nem használom az ékezetes változókat, mivel nem hordozható. Nem tudhatod, hogy egy másik gépen milyen windows fut. Ha nem magyar, akkor az ékezetes, pláne a két pontos, vesszős betűk jól bekavarhatnak.
Ezt valóban nem tudtam. Egyébként amióta többen leírtátok, magam is kerülöm a select használatát, viszont tartományban történő keresésnél egyelőre nem tudom kiváltani:
Nagyon kevés az olyan művelet, amit csak select után lehet végrehajtani. Általában erre nincs szűkség, "üldözendő" jelenség a kódban. A makrórögzítő utáni kódból ezt kell legelőször kitakarítani. (Meg az olyanokat, mint scroll...)
A select pont az a metódus, ami csak az aktív munkalapon/objektumon működik. Bár erre a help-ben nincs utalás, nagyjából logikus, hogy csak azt választhatod ki amit látsz. (A makró rögzítő ugye teleszórja select-tel meg activate-val a kódot, hogy megmutassa, mit is csináltunk, de ezt nem kell utánozni a vba kódjainkban.)
Ezért is írtam, hogy az értékadás működik akkor is, ha nem aktív munkalap egyik szereplője sem. A copy is működik így. Tehát azt kell végig gondolni, hogy melyik utasítás az, amelyhez feltétlenül kell az aktív munkalap. Erre vagy van a help-ben utasítás, vagy előbb-utóbb kiderül a gyakorlatban.
szuper, eddig működik már csak azt hogy csinálom meg, hogy úgy listázza ki külön, hogy eltüntesse a "duplikációk"? tehát most az 500 soromból lett 700 és szépen ott vannak a tulajdonságok, van amelyikből van 100 is. Mert most ha beírom a darabtelit és végighúzom, akkor ugye ott van a 100 egymás alatti tulajdonság mellett, hogy x tulajdonságból van 100 darab
Mi sem egyszerűbb: Egy teljeles üres munkafüzetben egy modulon a következőt elindítom:
Option Explicit Sub Ellenőrzés() Dim ws1 As Worksheet, ws2 As Worksheet Application.DisplayAlerts = False ' figyelmeztetések kikapcsolása Set ws1 = Workbooks("teszt.xls").Worksheets("Munka1") Set ws2 = Workbooks("teszt.xls").Worksheets("Munka2") ws1.Activate ws2.Range("A1").Select End Sub
Az előbbi hozzászólásomban (23147) adtam útmutatást a B oszlop szétbontására.
"
A B oszlop tartalmát az adatok szövegből oszlopok opcióval szétrakhatod a vesszők "mentén" külön oszlopokba. Utána ezeket az oszlopokat egy oszlopba másolod be egymás alá (az üres cellák is maradhatnak). Majd az adatok, ismétlődések eltávolítása opcióval eltünteted az azonosakat.
Vigyázz, mert "lakás" és "lakás " itt sem egyforma!!!"
Csinálj egy specialis szűrést a Csak az egyedi rekordok megjelenítése opcióval Így lesz egy listád az összes tulajdonságról. Amelyben lesznek olyan cellák, amelyek 1 tulajdonságot tartalmaznak, és lesznek olyanok amelyek többet. A többeket átnézed, hogy szerepel-e a bennük levő összes tulajdonság szólóban is. Amelyik tulajdonság nem, azt önállóan hozzáírod a listádhoz. Ha ezzel kész vagy jöhet Darabteli. Ha mondjuk a tul.listád az A oszlopban van akkor B1-be írod a képletet, majd végighúzod:
=Darabteli(Adatoszlop500;"*"&a1&"*")
Tehát a két jokerkaraktert hozzáfűzöd a keresendő tulajdonsághoz.
ps. A darabteli keresése nem case sensitive, tehát mindegy, hogy kisbetüt vagy nagybetüt használsz.
őőő bocsánat ismét :) nagy volt a szám, és nem gondolkoztam időben...
szóval a darabteli végülis mégse teljesen jó az én esetemben.
Megpróbálom megfogalmazni most már pontosan mi a kínom :)
tehát - az 500 sornál a tulajdonságok kb össze-vissza vannak emberenként.
Nekem mindenképpen át kéne néznem az egészet ennek a függvénynek a használatakor, de erre ha nem muszáj nem kerítenék sort, mert 10 ilyen táblázatom van.
kb így néz ki a dolog (csak táblázatonként 50-100 tulajdonsággal is akár)
a ember - kék, zöld, piros
b ember - zöld, fekete, lila
c ember - kék, zöld, lila, piros
stb.
A függvény használatakor át kéne néznem az összes sort, hogy van-e valahol új tulajdonság, és mindegyikre be kellene pötyögnöm a függvényt.
Van arra esetleg mód, hogy automatikusan kiszedi az összes kifejezést ÉS aztán ezekre a kifejezésekre nyomja rá a darabtelit? Picit még bonyolítja a dolgot, hogy a tulajdonságok között van olyan, ami 2-3 szóból áll, ezzel meg végképp nem tudom hogy boldogulna.
pl - d ember - kék, zöld, piros, bugyi lila, fehér
Ezt is meg kellene néznie, az én drága kis excelemnek, és kilistáznia, hogy kék -10 darab, bugyi lila -11 darab.
Vagy azt se bánom, ha úgy listázza ki, hogy
kék -10 darab
kék, zöld - 2 darab
kék, zöld, piros - 1 darab
Ekkor már az egyértelmű hülyeségeket ki tudnám szúrni, és ami nem kell azt tudnám törölni.
Alighenem elkerülte a figyelmedet a * karakter a példa szó elején és végén. Ez azt eredményezi, hogy akárhol van a keresett szó a cellában, mindig megtalálja.
Nagyon szívás tud ám lenni, ha szóközök vagy nem látható karakterek is vannak a cella értékében, amit szabad szemmel észre sem veszel!
Ezért használom én a joker karaktereket.
A B oszlop tartalmát az adatok szövegből oszlopok opcióval szétrakhatod a vesszők "mentén" külön oszlopokba. Utána ezeket az oszlopokat egy oszlopba másolod be egymás alá (az üres cellák is maradhatnak). Majd az adatok, ismétlődések eltávolítása opcióval eltünteted az azonosakat.
Vigyázz, mert "lakás" és "lakás " itt sem egyforma!!!
szóval arra már rájöttem, hogy a darabteli fix, hogy erre nem használható.
Ha rákeresek a lent említett bazaarvoice kifejezésre, akkor azokat a cellákat megszámolja, amiben CSAK ez van benne, viszont azokat már nem, amik így néznek ki "Bazaarvoice, ForeSee"
Tehát, hogy több tulajdonság is meg van adva.
Na most nekem vagy egy olyan függvény kellene, ami "szétbontja" a cellát és megnézi, hogy adott kifejezés a cellán belül ott van-e, vagy pedig egy olyan megoldás, hogy a vessző utáni dolgot új cellába tegye, és akkor már használható lenne a darabteli.
Most már tényleg csendben ülök és várok, hátha van ötlet :)
Na most valami vagy nagyon nem jó, vagy én vagyok hülye
Beírom ezt - =DARABTELI(A1:A500;"bazaarvoice")
Ki is dob rá szépen 252 találatot, nagyjából stimmel a mennyiség
Beírom ezt - =DARABTELI(A1:A500;"Liferay") (kis és nagybetűvel is próbáltam)
Kidob rá 0 találatot, úgy, hogy LÁTOM, hogy ott van közvetlen mellette legalább 3 (meg ki tudja mennyi még az egész doksiban)
Ugyanezt megjátszottam több más kifejezéssel is. A bazaarvoicera bárhol próbálom jó, meg még 2 másikra, de aztán megáll a tudomány. Próbáltam minden variációban beírni.
Az meg gondolom a program "helyes" működése, hogy szótöredékre nem keres - beírom, hogy voice, úgy már semmi eredmény.
Ez azért nem jó, mert nem csak három-négy fajta tulajdonság van, hanem sokkal több. A házas rész csak példa volt. Lehet, hogy az 500 emberhez van 50 fajta tulajdonság is, így meg ugyanott vagyok, ha kereséssel csinálom. Végig kell néznem akkor az összes sort, mert előfordulhat hogy az 500. embernél új tulajdonság van megadva.
Már kiszedtem egy külön munkalapra az összes tulajdonságot.
Gyakorlatilag az kellene, hogy kilistázza nekem hogy miből mennyi van, anélkül, hogy én nézegetném hogy milyen tulajdonságok vannak.
Használd a darabteli függvényt. A keresendő értéknél léteznek a joker karakterek. Pl. "*kertes*" minden olyan cellát beszámol, amelyben a kertes előfordul.
2010-es excelben kellene a következőt megcsinálnom:
Van 500 sorom, amibe fel vannak sorolva értékek.
500 ember, és mindegyikhez van 1-1 tulajdonság, DE van akinél több mint egy van.
Azt kellene csinálni, hogy megszámolni hogy x tulajdonság hány embernél van jelen.
Amiatt nem tudtam rendesen megcsinálni, úgy hogy simán sorbarendezem tulajdonság szerint, hogy ugye 1 emberhez több tulajdonság is tartozik és ez felsorolással van a cellába beírva.
Pontosítok inkább :) szóval van 500 ember, mellette pedig hogy milyen típusú háza van.
A1 Kiss Béla B1 Panel
A2 Nagy Béla B2 kertes
A3 Gazdag Elek B3 Kastély, kertes, nyaraló
stb, stb
Nekem az kellene, hogy kidobja, hogy kertes - 27 darab, nyaraló - 5 darab stb.
a ws.range(ws.cells(...),ws.cells(...)) szintaktika működik, ugyanakkor a ws.range("A:B"), vagy ws.range("A1:B1") stb. forma továbbra sem akar nekem összejönni aktiválás nélkül.
Szeretném a segítségeteket kérni! Munkám során gazdákhoz járok. Ott adatokat kell kitöltenem a gazdáról. Ezeket összesítenem kell egy táblázatba. Na most egy munkalap egy sor az összesítőbe és ez úgy van megoldva hogy van 150 munkafüzet az embereknek és van egy 151. ami az összesítő.
Az összesítőben ez a képlet van: =INDIREKT("Munka" & SOR()-1 & "!B3") ugye a B3 változik mindig. Fogalmam sincs amúgy mit jelent mert ezt a képletet is itt írták nekem! :D
Gond: Nyitottam egy 152. munkafüzetet ahol más jellegű összesítő van a termékek és azok árai, de ugyanúgy kell a gazdák elérhetősége mint az első 151. en találhat össezítőben, de például a 151. összesítőn a névnél lévő első cella képletét =INDIREKT("Munka" & SOR()-1 & "!B3") átmásolom a 152. névhez tartozó első cellába de nem működik. Tudom egyenlőség jellel is éehet de lesznek más cellák is amit így akarok megoldani.
Hogyan lehet ezt megoldani, hogy működjön akár melyik cellával és mindegyik munkalappal? Régen csináltam ezt és már fogalmam sincs mit csináltam :D Ha kell elküldöma táblázatot is :D Köszönöm!