Keresés

Részletes keresés

maciti Creative Commons License 2014.06.01 0 0 25240

Szia!

 

Ez valami elfajzott lehet mert feladja!

 

Üdv

Előzmény: Fferi50 (25239)
Fferi50 Creative Commons License 2014.06.01 0 0 25239

Szia!

 

A 2014-es office már nagyon távol áll tőlem (ne is akarjon közelebb jönni).

 

Az viszont majdnem biztos, hogy a 2007-es nem ismeri az IFERROR függvényt, ezért csodálkozom a négysoros lefutásán.

Kipróbálhatod, ha egy cellában elkezded beírni a HAHIBA függvényt, feljön-e. Ha csak az jön fel, hogy HIBÁS akkor nincs benne az IFERROR függvény.

 

Ennyit nézz még meg lsz.

 

Köszi.

Előzmény: maciti (25237)
maciti Creative Commons License 2014.06.01 0 0 25238

Igen ez lefut hibátlanul:

 

Sub Kereso_negysoros()

usor = Range("A" & Rows.Count).End(xlUp).Row

With Range("B1:B" & usor)
.Formula = "=IFERROR(VLookup(A1,Adatok!$A$1:$B$4, 2, False), ""Nincs adat!!"")"
.Value = .Value
End With

End Sub

 

 

Előzmény: Fferi50 (25235)
maciti Creative Commons License 2014.06.01 0 0 25237

Köszi!

 

Ez már működik!

Bár a másik gépen (most nem tudom megnézni csak holnap) 2014 es office van. Ismernie kéne az IFERROR függvényt. És ott is hibaüzenetet irt ki. A súgóban olvastam, hogy lehetséges ok a hiányzó *.dll file, és pipáljam be a kívánt funkciót. De ott nem tudtam elképzelni sem melyik kellhet neki...

 

Mindenesetre még egyszer köszönöm a segítséget!

Előzmény: Fferi50 (25236)
Fferi50 Creative Commons License 2014.06.01 0 0 25236

Illetve azt akartam írni, ha hiba az eredmény, akkor beírni a hibaüzenetet. (Először fordítva kezdtem el írni és úgy maradt...)

Előzmény: Fferi50 (25235)
Fferi50 Creative Commons License 2014.06.01 0 0 25235

Szia!

 

A korábban irt 4 soros is ezen a gépen fut le hibátlanul? Ne hiszem, az alábbiak miatt:

 

Nagyon úgy néz ki, hogy az IFERROR függvényt az Excel 2010-es verziójában vezették be. Ezért nem szeresse a 2007. Ott sajnos más képlet kell.

Vagy meg kell vizsgálni az iserror függvénnyel az eredményt és ha nem hibás akkor beírni. Nézd meg ezzel:

Sub keresoA()

Dim sor As Long
Dim usor As Long
usor = Range("A" & Rows.Count).End(xlUp).Row
 For sor = 1 To usor
  Range("B" & sor) = Application.VLookup(Range("A" & sor), Worksheets("Adatok").Range("A1:B4"), 2, False)
  If IsError(Range("B" & sor)) Then Range("B" & sor) = "Nincs adat!!"
Next sor
End Sub

 

Üdv.

Előzmény: maciti (25234)
maciti Creative Commons License 2014.06.01 0 0 25234

Szia!

 

Ez az egyik kód:

 

 

Sub Kereso()
 
Dim sor As Long
Dim usor As Long
 
usor = Range("A" & Rows.Count).End(xlUp).Row
 
For sor = 1 To usor
  Range("B" & sor) = Application.WorksheetFunction.IfError _
(Application.VLookup(Range("A" & sor), Worksheets("Adatok").Range("A1:B4"),  2, False), "Nincs adat!!")
 
 
Next sor
 
End Sub

 

Ez a másik kód:

 

Sub KeresoDelila()
 
Dim sor As Long
Dim usor As Long
 
sor = 1
usor = Range("A" & Rows.Count).End(xlUp).Row
 
Range("B" & sor & ":b" & usor) = "=IFERROR(VLOOKUP(A1,Anyagok,2,FALSE),""Nincs adat!!"")" 'IDÁIG KÉPLET
Range("B" & sor & ":b" & usor).Copy         'EZEK MEG FIXÁLJÁK A KÉPLETET COPY PASTE VALUE-VAL
Range("B" & sor).PasteSpecial xlPasteValues
 
End Sub

 

Mindkettőnél a hibaüzenet: Compile error: Sub or Function not defined

 

A gépen Win Xp van és 2007-es Office

Előzmény: Fferi50 (25233)
Fferi50 Creative Commons License 2014.06.01 0 0 25233

Szia!

 

Leírnád pontosan, hogy melyik megoldás nem működik és milyen környezetben? Másold be lsz. a makrót.

 

Csak valami elgépelési hiba lehet benne szerintem.

 

Üdv.

 

 

Előzmény: maciti (25232)
maciti Creative Commons License 2014.06.01 0 0 25232

Valószínűleg a hiba az én készülékemben van, ezért megpróbáltam egy másik gépen. Ezen XP fut és 2007-es Office.

Ez a hibaüzenet jelenik meg

Compile error: Sub or Function not defined

Ez már többször fejtörést okozott nekem. Valószínűleg valami hiányzik???

A másik gépen, amin szintén ez a hiba ott Win8 van 2014-es Office.

Tehát nem múlt el a tanácstalanságom.

Az utolsó megoldás, az viszont tökéletesen működik, pedig abban is  vannak függvények…

Ez ami műkszik:

With Range("B1:B" & usor)
    .Formula = "=IFERROR(VLookup(A1,Adatok!$A$1:$B$4, 2, False), ""Nincs adat!!"")"
    .Value = .Value
End With

 

Szerintetek kidobjam, vagy ráérek még? Mármint a gépet…

Előzmény: maciti (25231)
maciti Creative Commons License 2014.06.01 0 0 25231

Sziasztok!

Bocs, de egy pár napig (2) hírzárlat volt a közelemben, ezért nem tudtam elolvasni a reagálásokat, de Fferi 50 és tbando teljeskörűen kielemezte a problémámat.

Köszönöm!

Valóban elírás volt a keresésnél az oszlop száma, mert egy másik feladatból rövidítettem egy részletet a tanácstalanságom kiemelésére. Én csak egy amatőr programszerkesztő vagyok. Innen-onnan összeszedet, már működő részleteket rakok össze, néhol rögzített makrókat is belefűzök a cél érdekében. Teljeskörű átgondolástól mentesek ezek a kódok, profiknak nem akarom eljuttatni, mert megint leesik egy monitor...

Az, hogy milyen gyorsan és milyen erőforrással dolgozik arról álmodni sem merek, hogy figyelembe vegyem. Bár nagyon elgondolkodtató az okfejtés, és a próba idő mérés az értékadások esetében. Persze gondolom az összes többi művelet esetében is. Hiszen gyakorlat teszi a mestert... És a gyorsan működő programot!

Előzmény: tbando (25227)
Delila10 Creative Commons License 2014.06.01 0 0 25230

A súgóból:

 

FKERES(keresési_érték;tábla;oszlop_szám;tartományban_keres)

 

Tartományban_keres: Logikai érték, amellyel az FKERES függvény pontos vagy közelítő keresését adhatjuk meg. Ha értéke IGAZ vagy hiányzik, akkor a visszaadott érték közelítő lehet, azaz ha pontos egyezést nem talált a függvény, akkor a következő legnagyobb, de a keresési_érték argumentumnál kisebb értéket adja vissza. * Ha az argumentum értéke HAMIS, akkor az FKERES pontos egyezést keres, és ha ilyen nincs, akkor a #HIÁNYZIK hibaértéket adja eredményül.

 

A * jel tőlem származik. Ide jön, hogy rendezett állományban.

Előzmény: Sánta Kutya (SK) (25229)
Sánta Kutya (SK) Creative Commons License 2014.06.01 0 0 25229

Én sem ismertem, mióta van neki? Én ezer éve rászoktam az index/hol.van párosra, azóta egyszer sem éreztem hiányát az fkeresnek.

Előzmény: Delila10 (25228)
Delila10 Creative Commons License 2014.06.01 0 0 25228

A fórumon bejegyzett címedre küldtem. Azért írom ezt meg, mert egyszer azt mondtad, hogy ritkán nézed meg ezt a címet. A régebbi levelezésünk elszállt a gépemről. :(

 

Akkor vágtam földhöz a monitort, mikor másodjára írta a szerző, hogy a sokak által sűrűn alkalmazott függvény, az FKERES, csak rendezett állományban működik. Nem ismeri a 4. paramétert.

 

Előzmény: Törölt nick (25226)
tbando Creative Commons License 2014.06.01 0 0 25227

Szia!

 

Kösz a válaszod. Mindig tanulok belőle valamit. Most pl. a javasolt with ...end with-ben a .value=.value-t. Majd alkalmasint megnézem, hogy mennyivel gyorsabb mint a copy pastevalue, de erre sajnos egy darabig még várni kell, mert windows7-m total kifingott. Kiírtottam ugyan 3 vírust, de nem segített. Így nincs mese, a gépet a jövő héten be kell vinnem  a szervízbe :(((

 

Előzmény: Fferi50 (25223)
Törölt nick Creative Commons License 2014.05.31 0 0 25226

Küldd el légyszi privátban.

Előzmény: Delila10 (25215)
Fferi50 Creative Commons License 2014.05.31 0 0 25225

Szia!

 

Bizonyára a makrórögzítőből szerezte be a tudományát. Bár nem tudom, igazi MS kurzuson vajon mit taníthatnak--:)?

 

Nagyon aranyos vagy, hogy felajánlottad "közkincsnek", de az általad leírtak fényében ettől az "önkinzástól" most eltekintenék. Örök hála, hogy helyettem is szenvedtél és dühöngtél.

 

Egyébként sajnos úgy látom, hogy igazi Exceles tankönyv talán nincs is a piacon. MS sem nagyon törekszik arra, hogy érthető legyen, amit a Developerek számára leír - az Object modell pedig csak nő-nő mint a kisgömböc. (Lehet ideje lenne már kiszúrni.) Akkora már a dzsungel, hogy néha az erdőtől a fát sem lehet látni (nem véletlenül írtam így), egy objectum objectumának objectuma tulajdonságának az értékét megállapítani - egy tulajdonságra vezető fastruktúrára rálelni, bizony néha maga a gyötrelem.

 

Üdv.

Előzmény: Delila10 (25215)
Fferi50 Creative Commons License 2014.05.31 0 0 25224

Az előző hozzászólásom először elszállt a levegőbe (biztos megelégelte a blogmotor a "piszmogásom").

 

Még annyit tennék hozzá, hogy nem mindegy természetesen, hogy az adott cellába értéket akarsz betenni, vagy képletet, mert a két eset más-más kifejezést kíván.

A számoláshoz a VBA-s forma kell, a képletadáshoz az Exceles forma (azaz számolásnál Sheets("Munka1").range("A2") vagy cells(2,1), képletnél pedig csak Munka1!A2).

Előzmény: tbando (25216)
Fferi50 Creative Commons License 2014.05.31 0 0 25223

Szia!

 

Sok igazság van abban amit írsz, néhány gondolatra válaszolnék:

 

"többet segítek azzal, ha a problémás próbálkozását pofozom helyre, mint ha adok helyette egy ugyan professzionálisabb megoldást, amiből azonban nem derül ki, hogy milyen hibákat vétett"

Ezzel egyet is lehet érteni, de ha egy másik (jobb) megoldást is tudsz mutatni, akkor abból még többet tanulhat.

 

"Mert amíg az egyik esetben annyiszor kell végrehajtanod az értékadást for-next-tel, ahány sorod van, addig a másik esetben van 1 képleted az első sorban, amit 1 lépésben végigmásolsz az összes soron, majd a lemásolt képleteket megint csak 1 lépésben  CopyPasteValue-zol."

Én csak azért tettem szóvá a képlet utána CopyPasteValue megoldást, mert for-next ciklusban mentél végig, akkor pedig teljesen felesleges a képlet, mivel egy-egy celláról volt szó.

 

Ugyanakkor ciklus nélkül még annál is egyszerűbb a dolog, mint amit írtál, ha összefüggő tartományokról van szó. A példában a következő megoldás:

With Range("B1:B" & usor)
    .Formula = "=IFERROR(VLookup(A1,Adatok!$A$1:$B$4, 2, False), ""Nincs adat!!"")"
    .Value = .Value
End With

valószínűleg a lehető leggyorsabb. És nem szükséges a CopyPasteValue!!!

 

IfNa függvényről nem tudok, IsNa van a 2010-ben (gondolom korábban is volt), arra szolgál, hogy megmondja a hba #N/A vagy sem. Egyetlen paramétere van, a vizsgálandó kifejezés/érték.

 

Úgy tudom az IfError függvény 2007 óta van, és a ha(hibás(kifejezés);igaz;hamis) szerkezetet egyszerűsítette le.

 

Üdv.

Delila10 Creative Commons License 2014.05.31 0 0 25222

:)

Előzmény: Sánta Kutya (SK) (25218)
tbando Creative Commons License 2014.05.31 0 0 25221

3000 sorban F2 +Enter valóban perverz, de  jobb hiján SendKeys-sel tán megoldható.

Előzmény: vw.petya (25219)
Fferi50 Creative Commons License 2014.05.31 0 0 25220

Szia!

 

Off-ra: Könnyen lehet, hogy vírus. Biztosan van vírusírtód, stb. szabadítsd rá.

 

Üdv.

Előzmény: tbando (25217)
vw.petya Creative Commons License 2014.05.31 0 0 25219

Köszi a hozzászólást. Egyszerűen passzolom, hogy mi lehet a probléma. Nincsenek bonyolult számolások a táblában, de szerencsére nem konzekvens a felépítése, így a képlet végigmásolása nem jó megoldás, 3000 sorba meg belemászni egyenként F2-vel, és enterez-ni kicsit perverz :D Én is azt tudom elképzelni, hogy valami sérülhetett a file-ban, már jó pár éve használjuk... mindenesetre köszi!

Előzmény: E.Istvan (25204)
Sánta Kutya (SK) Creative Commons License 2014.05.31 0 0 25218

Ady helyett pedig Szabolcskát?

Előzmény: Delila10 (25215)
tbando Creative Commons License 2014.05.31 0 0 25217

OFF

 

Az előző 25216 hsz-m a nyugdíjazott XP-gépem reaktiválásával  voltam kénytalen elküldeni, mert a windows 2007-m máról-holnapra total meghülyült és ezt produkálta a válasz közben:

 

Szia Feri!

 

Köszönöm, ho gy reagáltál   a  hozz ászólásomho z   .   Szeretem ezeke t a viszakérd ezé seket, mert sokat tanul hatunk belőle. 

 

Kérde zed, hogy   miért nem e gy  lépés ben   csiná ltam   meg az értékadást            mivel szerinte d f elesleges a képletet beírni, csak azért, hogy utána visszaalakítsa m    értékké.      Nem eg és     zen értek vele d egyet. Ez  ugy anis csak akkor igaz, ha  1 értékadásr ó        l    v an szó .                                       D e       h        a                                                                                                                                                                                                            s                                                                                                                                                                                                          

Tehát a kurzor állandóan megbokrosodik, hiába állítom vissza újra elindul. Ezt csinálja az excelben is,  a Fórum oldalt meg behíva a lap tetejéről leszalad az oldal aljára, és hiába állítom vissza újra levágtat.

 

Van valami tippetek hogy mi lehet az oka? Vírus?  Reparálható? 

tbando Creative Commons License 2014.05.31 0 0 25216

Szia Feri!

 

Köszönöm, hogy reagáltál   a  hozzászólásomhoz .  Szeretem ezeket a visszakérdezéseket, mert sokat tanulhatok/tanulhatunk belőle. 

 

Kérdezed, hogy   miért nem egy  lépésben   csináltam   meg az értékadást,  mivel szerinted felesleges a képletet beírni, csak azért, hogy utána visszaalakítsuk értékké.  Nem egészen értek veled egyet. Amit mondasz  ugyanis csak akkor igaz, ha kevés értékadásról van szó . De ha többről akkor már korántsem biztos. Mert amíg az egyik esetben annyiszor kell végrehajtanod az értékadást for-next-tel, ahány sorod van, addig a másik esetben van 1 képleted az első sorban, amit 1 lépésben végigmásolsz az összes soron, majd a lemásolt képleteket megint csak 1 lépésben  CopyPasteValue-zol. Ez utóbbi menet pedig aránytalanul gyorsabb lehet mint az első, mivel zömmel az excel beépített metódusait használja és nem a vba-ét. Csináltam is rá egy próbát, ami egészen megdöbbentő eredményt adott. Amíg for-nextes értékadásnál 100 sort 3 mp, 1000 sort meg 33 mp alatt, addig a copyzos 100.000 sort 1 mp alatt, 1.000.000-t meg 5 mp alatt abszolvált.  

 

De valójában mégsem ezért csináltam így, hanem azért mert maciti-nek válaszoltam, és ilyenkor az az elvem, hogy többet segítek azzal, ha a problémás próbálkozását pofozom helyre, mint ha adok helyette egy ugyan professzionálisabb megoldást, amiből azonban nem derül ki, hogy milyen hibákat vétett.  

 

Az hogy a vlookup-jában hibásan a 3-ik oszlopra hívatkozott sima figyelmetlenség lehetett. Nyilván volt egy korábbi forrástáblázata amiben a 3-ik oszlopra kellett hívatkozni, és amikor e tábázatot 2 oszloposra változtatta, elfelejtette aktualizálni a függvényeit.  Ilyesmi hibákat én is gyakran elkövetek, és általában igen keserves folyamat míg kiküszöbölöm őket. Általában nem is aznap, hanem másnap, bár akkor promt. Az ő esetében persze az is bezavart, hogy már az IfNa is hibát okozott.

 

Volt még egy említésre méltó hibája, nevezetesen, hogy a 2-ik vlookup-jában  Names(„Anyagok”)-ban kereste az értékeket és nem Range(„Anyagok”)-ban.  A munkalaptartományokat ugyanis a vba Range tekinti, akár van nevük, akár nincs.

 

Végül lenne egy kérdésem: A 2007 fölötti verziókban van ifNa? Ha igen, hogy szól a szintaktikája

Előzmény: Fferi50 (25208)
Delila10 Creative Commons License 2014.05.31 0 0 25215

Egy egyetemista srác kérte a segítségemet userformos feladatokhoz. Szerinte az előadás egy nulla volt. Kérdezte, milyen könyvet tudnék ajánlani ez ügyben. Kovalcsik Gézáét ajánlottam, mire ő: "...kevéssé információdús, egysíkú, tanár szerint se a legjobb."

 

A tanára (akinek az előadása egy nulla) Bártfai Barnabástól a Makróhasználat Excelben c. könyvet javasolta. Érdekelt a dolog, beszereztem pdf-ben.

 

Ilyenek vannak benne:
"Minden változónak van egy neve és egy értéke. (Más programnyelvekben típusa is, amely meghatározza, hogy milyen jellegű adat tárolható a változóban. Itt a típust többnyire nem szükséges definiálni, azt az első értékadás határozza meg.)"

 

"...az FKERES függvény csak ábécébe rendezett listában működik..."

 

Favorizálja az ActiveCell és a Select használatát.

 

Ha akad köztetek mazohista, szívesen elküldöm a fájlt, mindössze 118 oldal, egy délután alatt kidühöngheti bárki magát. :)

Fferi50 Creative Commons License 2014.05.31 0 0 25214

Szivesen!

 

Előzmény: putto13 (25213)
putto13 Creative Commons License 2014.05.31 0 0 25213

Köszönöm, működik!

Előzmény: Fferi50 (25212)
Fferi50 Creative Commons License 2014.05.31 0 0 25212

Szia!

 

Az adattartomány (B3:C11) feltételes formázásához a következő képleteket használnám:

=ELŐJEL($B$2-$C$2)=ELŐJEL($B3-$C3) a kitöltés zöld

=ÉS($B$2=$B3;$C$2=$C3)  a kitöltés narancs

A képlettel számolt 3 cellára:

=ELŐJEL($B$2-$C$2)=ELŐJEL($B12) a kitöltés zöld

Az átlagot tartalmazó cellákra:

=INT(B15)=B2 a kitöltés zöld

 

A feltételes formázásnál pedig a képlet legyen a mérvadó.

 

Üdv. 

Előzmény: putto13 (25211)
putto13 Creative Commons License 2014.05.31 0 0 25211

Igen én is ezzel próbálkoztam. Egyébként is használok rejtett oszlopban számolási értéket, csak arra nem jöttem rá, hogy a példánál maradva hogyan lesz a B6 és C6 zöld hátterű, ha mondjuk a D6 értéke 2, vagy3; illetve B10-C10 piros/sárga, ha a D10 értéke 5.

Előzmény: Sánta Kutya (SK) (25210)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!