Keresés

Részletes keresés

luzer0901 Creative Commons License 2013.12.12 0 0 23417

Képzeld el megnéztem azokat a kész programmokat amiket ide írtak azok akik ahogy te írtad JÓFEJEK, és sajnos nem sokkal jutottam közelebb a megoldáshoz/megértéshez, leadták az alapokat, de eleve úgy kezdték az oktatást mintha már mindenki tudna programozni pedig ez nem tanultam ezt egyeltalán és nem az alatt az 5 óra alatt amit tartottak ezzel kapcsolatban nem lettem okosabb programozás terén. Amúgy köszi a mérhetetlen jóindulatot, ja és melesleg az email címem ikerkriszti@freemail.hu

Törölt nick Creative Commons License 2013.12.12 0 0 23416

És ezek után még mindig azt mondom, hogy van itt esélyed. Csak hát tenni kellene valamit a sikerért.

Előzmény: Törölt nick (23415)
Törölt nick Creative Commons License 2013.12.12 0 0 23415

Hát ezt már nem bírom ki.

 

Figyelj, bahátom. Idejössz egy olyan kéréssel, ami alapjaiban sérti a szakmai fórumok íratlan szabályait. A szavaidból egyértelműen kiderül, hogy fingod nincs az egészről. Ha ez egy egyetemi házi feladat, akkor nyilván órán leadták az elkészítéséhez szükséges anyagot, vagy legalább az alapokat, hogy elindulhass. Ha most olyan szinten vagy, hogy egy értelmes kérdést nem tudsz feltenni a témával kapcsolatban, akkor mi a francot csináltál egész félévben?

Végig azon sírsz itt, hogy segítsünk, közben egy szalmaszálat nem mozdítasz meg a siker érdekében. Előbb tán valamit le kéne tenni az asztalra, nem? Vagy nálad az a segítség definíciója, hogy "csináld meg kérlek az egészet helyettem"?

 

Mindezek dacára kapsz kész megoldást, mert vannak itt jó fejek is (nem én, de vannak). Gondoltam, majd biztos megnézed, és megpróbálod megérteni, és majd kérdezel, ha nem sikerül. De nem, te csak tovább nyüszítesz, még arra sem vagy hajlandó, hogy a kész megoldást megnézd. Hát mit vársz? Küldjük el elmail-ben az excel fájlt a sakkprogrammal? (És még csak az email címed sem publikus.)

 

Ha egy szikrányi eltökéltséget éreznék benned, hogy hozzáteszed a magad részét a munkához, azt mondanám: oké, mindenki hibázik, de adjuk meg az esélyt, hogy helyrehozza. De azok alapján, ami hozzáállásodból lejön, szerintem Taigetoszba való vagy. Uff.

Előzmény: luzer0901 (23414)
luzer0901 Creative Commons License 2013.12.12 0 0 23414

Légyszíves én olyannak a segítségét szeretném aki biztosan tud nekem és van annyira jó fej, hogy segít nekem.

lxt Creative Commons License 2013.12.12 0 0 23413

Nekem a "Bartel - Krass - Schrüer: Számítógép és sakk" van meg, de nincs digitalizálva - bár, szerintem idejét múlt.

 

VB forráskód - nem ellenőrzött

 

és egy megoldás 'okosba' - simán módosítod...:-)

Előzmény: luzer0901 (23411)
tbando Creative Commons License 2013.12.12 0 0 23412

http://jollierme.com/ThankYou.html

 

Shallow Bot 1.0 Download

 

Nyilt vba kódban.

Attól persze nem kell tartanod, hogy elhiszik hogy te csináltad. De talán méltányolják, hogy megtaláltad :)))).

 

Előzmény: luzer0901 (23411)
luzer0901 Creative Commons License 2013.12.12 0 0 23411

Az a baj hogy nézzelődtem netende sehol sem találtam semmit és gondoltam mivel excel forum ezért vki segíteni fog

Eredő Vektor Creative Commons License 2013.12.12 0 0 23410

Volt régebben részem hasonlóban... Jól lehet vele keresni... Így utólag bánom, mert tudatlanul jönnek ki az egyetemről, semmire kapnak diplomát... (Bár amúgy is)

Egyrészt rossz helyen keresgélsz, szerintem ez nem az a fórum, ami neked kell. Másrészt ez BTK annak is, aki elvégzi, és annak is aki kéri. Nézz utána.

Egyébként találsz kódokat neten, csak rá ne keressenek a tanárok...

Előzmény: luzer0901 (23395)
luzer0901 Creative Commons License 2013.12.12 0 0 23409

Légyszíves bármilyen konkrét segítségnek örülnék

luzer0901 Creative Commons License 2013.12.12 0 0 23408

Tudom, hogy nem etikus dolog mással megcsináltatni,de pont az a baj, hogy nem tudom magam megcsinálni és ezen múlik a félévem sajnos

Törölt nick Creative Commons License 2013.12.12 0 0 23407

Azt hittem, ilyenkor már vége a szemeszternek... Nem olyan nehéz feladat, viszont elég etikátlan mással megcsináltatni. Nem kéne lesüllyedni a volt államfőnk szintjére.

 

Mindenesetre pár tipp, ha esetleg becsületesen magad csinálnád meg:

- 8x8-as cellatömb a sakktábla, négyzet alakú mezőkre szabva

- a bábuk lehetnének mondjuk cellával megegyező méretű képek

- esemény makrók szabályozhatnák a lépéseket (pl. ha rákattintasz az egyik bábu képére az triggerel egy makrót ami beszínezi azt a cellát és utána egy másik cellára kattintással léphetnél)

- más esemény makrók szabályozhatnák azt, hogy mikor van vége a játéknak, vagy hogy hova lehet lépni és hova nem

- lehetne egy log, amit a program vezet, ami a lépéseket tartalmazza

 

Ezen felül még egy rakás dologgal lehetne csicsázni: stopper, lépésvisszavonás, lépéslehetőségek beszínezése, akármi.

 

Sok sikert.

 

 

Előzmény: luzer0901 (23399)
luzer0901 Creative Commons License 2013.12.12 0 0 23406

Jó nem feltétlenül kell eltudnom adni hogy én csináltam csak nagyjából értenem kéne hogy mi történik

Sánta Kutya (SK) Creative Commons License 2013.12.12 0 0 23405

"amit eltudok adni egyetemen hogy én csináltam"

Ezzel erősen lecsökkentetted  a válaszolók számát, én kiszálltam.

Előzmény: luzer0901 (23399)
luzer0901 Creative Commons License 2013.12.12 0 0 23404

Légyszíves segítsetek nekem minden megoldás jó mert már nincs más ötletem és én nem tudok ennek neki állni

pimre Creative Commons License 2013.12.12 0 0 23403

Aha, tehát a gép nem játszik, csak felügyel. Ez egy picivel kevésbé megoldhatatlan.

Előzmény: luzer0901 (23401)
pimre Creative Commons License 2013.12.12 0 0 23402

Ok, ha megmondod, milyen szempontok szerint készítsük el a plauzibilis lépésgenerátort, akkor kezdhetjük:-)

Előzmény: luzer0901 (23399)
luzer0901 Creative Commons License 2013.12.12 0 0 23401

Oldjuk meg valamilyen módon az Excelben, hogy a munkalapon valamilyen módon jelzett sakkbábukkal játszani tudjon
egymással 2 személy. Oldjuk meg, hogy a játék kezelje a sakkhoz tartozó lépéseket és szabályokat (aki ismeri a jelenlegi legfrissebb szabályt, azt is implementálhatja)   Ezt kaptam mint feladatot az egyetemen beadandónak

luzer0901 Creative Commons License 2013.12.12 0 0 23400

És amúgy nem bármivel :)

luzer0901 Creative Commons License 2013.12.12 0 0 23399

Szia csak egy sima sakk programm és a kódja kéne mert azt el kell magyarázni, amit eltudok adni egyetemen hogy én csináltam, j

Sánta Kutya (SK) Creative Commons License 2013.12.12 0 0 23398

Lefordítom Jimmy kérdését: amíg meg nem mondod pontosan, hogy mit akarsz, addig vagy senki nem csinálja meg neked, vagy megcsinálja, amit gondol, te meg nem azt kapod, amit akartál, mégis hálálhatod megfele bármivel.

Szóval pontosan mit is szeretnél?

Előzmény: luzer0901 (23395)
pimre Creative Commons License 2013.12.12 0 0 23397

"meghálálnám. ("bármivel")"

 

Tényleg bármivel?:-)

Előzmény: luzer0901 (23395)
Törölt nick Creative Commons License 2013.12.12 0 0 23396

Mármint olyan sakkprogramot akarsz, ami ellen több erősségi fokozatban lehet játszani, és 9-es fokozatban 10 lépésből bemattol?

Előzmény: luzer0901 (23395)
luzer0901 Creative Commons License 2013.12.12 0 0 23395

Sziasztok egy nagyon fontos életbe vágó kérésem lenne valaki aki tud vba-ban programozni és tudom, hogy nagy kérés, de segítene nekem sakkot csinálni azt nagyon meghálálnám. ("bármivel")

Nagyon fontos nincs más reményem ezen a forum kivűl.

Előre is köszi

pimre Creative Commons License 2013.12.12 0 0 23394

:-)))

 

A következő kérdésem nem igazán Excel ismereteket kíván, de hátha tudja valaki: Amikor a Windows XP alatt keresek, akkor lehetőség van arra, hogy az "egy szó, vagy kifejezés a fájlban" opciót használjam. Azon már szomorúan túltettem magam, hogy az Excel táblázatokban található számokra ez nem érvényes, nyilván a számábrázolás sajátosságai miatt.

Ugyanakkor néha előfordul, hogy egy VBA forrásszöveg részletre emlékszem, de arra már nem, hogy azt pontosan melyik programomban használtam, viszont szeretném előbányászni.  Sajnos tapasztalatom szerint erre sem terjed ki a keresés. Tud valaki lehetőséget erre? Néha nagyon hasznos lenne.

Előzmény: Törölt nick (23392)
exszajmon Creative Commons License 2013.12.12 0 0 23393

Jól gondoltad Jimmy the hand, nem értettem teljesen, most valamivel közelebb kerültem a makród megéréséhez.

köszi

Előzmény: Törölt nick (23388)
Törölt nick Creative Commons License 2013.12.11 0 0 23392

Mi is élveztük :)

Előzmény: pimre (23391)
pimre Creative Commons License 2013.12.11 0 0 23391

Ellenőriztem a dolgot, és ez valóban megoldotta. Mivel a TakeFocusOnClick=False hatására a vezérlés ugyan átadódik a visszaléptető gomb click eseményére, de a fókusz marad azon a boxon, ahol éppen állunk, így nincs módja az exit funkciónak érvényesülni, csak a visszaléptetés befejezésekor. De addigra már le tudom tiltani az eseményvezérlést, így az exit hatástalan.

 

Mindenesetre jól elbeszélgettem itt magammal:-)

Előzmény: pimre (23390)
pimre Creative Commons License 2013.12.11 0 0 23390

Jelentem, nyomon vagyok! Azt hiszem, hogy a visszaléptető gomb TakeFocusOnClick=False-ra állítása megoldja a dolgot, mert előbb ugrik oda, és csak aztán az Exit funkcióra. 

Előzmény: pimre (23389)
pimre Creative Commons License 2013.12.11 0 0 23389

Egy Userformon végzek adatbeadást. Van egy textboxom, amelyben ellenőrzöm a bevitt adatokat. Konkrétan éppen egy irányítószámot. Az Exit funkcióban ellenőrzöm a szám hosszát, és ha nem 4, akkor figyelmeztetem a felhasználó, és nem engedem ki a boxból.

 

Ugyanakkor van egy CommandButtonom, ami az adatbevitel mentés nélküli félbehagyását éri el, és visszatér a menüre.

 

A mentés nélkül tehát azt jelenti, hogy a textboxba történő írást is félbe kell hagyni (hiszen, lehet, hogy utána kell nézni a helyes adatnak). Viszont az exit funkció természetesen nem tudja, hogy Enterrel, vagy valamelyik vezérlő elemre kattintva léptem ki a boxból, így a félbehagyást jelző cmd gomb megnyomásáról sem tud.

 

Van arra valamilyen mód, hogy megállapítsam az éppen kiválasztott következő vezérlőelem nevét?

Törölt nick Creative Commons License 2013.12.10 0 0 23388

Nem vagyok benne biztos, hogy azt értetted, amit mondani akartam, úgyhogy még egy kis kiegészítés.

 

Az Option Base arra az esetre vonatkozik, amikor egy tömbváltozót deklarálsz a szubrutin elején.

Pl.

Sub akármi()

Dim Tömb(10)

...

End Sub

 

Option Base 1 esetén a Tömb 1-től 10-ig indexelt, Option Base 0 esetén pedig 0-tól 10-ig.

 

A Split függvénnyel azonban megkerülöd a deklarációt, és direktben létrehozol egy tömböt. Ha megnézed a makrót, az arrMunkalapok változó nem tömbként van deklarálva, hanem Variant-ként. Ez az a típus, ami minden értéket képes befogadni, még objektumokat is. A Split függvény csinál a Variant típusból tömböt.

 

A Split függvény pedig úgy van megírva microsoftilag, hogy az általa létrehozott tömb 0-ról indul. De az Option Base ettől függetlenül továbbra is érvényes a Dim-mel létrehozott tömbökre.

Előzmény: exszajmon (23387)
exszajmon Creative Commons License 2013.12.10 0 0 23387

Köszi szépen, ezek szerint ez a függvény 0-tól indul. Nem probléma, ha nem 1-gyel kezdődik, csak nem értettem, mivel azt olvastam, hogy a tömbök alap esetben 0-tól indulnak de az option base  paranccsal módosítani lehet, akkor ezek szerint ezt nem lehet.

mégegyszer köszi

Előzmény: Törölt nick (23386)
Törölt nick Creative Commons License 2013.12.10 0 0 23386

Súgó mondja:

 

Split Function

       

Description

Returns a zero-based, one-dimensional array containing a specified number of substrings.

 

Innentől kezdve szerintem mindegy, hogy Option Base-be mit adsz meg.

Fontos lenne, hogy 1-től induljon?

Előzmény: exszajmon (23385)
exszajmon Creative Commons License 2013.12.10 0 0 23385

Kedves Jimmy the Hand, kedves Mindenki!

 

Kipróbáltam az alábbi kódodat és jól működik. Egy apróságban kérném a segítséged vagy bárki más segítségét, biztos tudjátok mi lehet a probléma.

Itt a tömb elemein lépked végig a ciklusszámláló, és nullától indul, ha az eljárás elé írom az option base 1-et akkor elvileg 1-től indulna a számláló. Valamiért továbbra is nulla lesz az első elem indexe. Mi lehet a gond?

 

Üdv:

Szajmon

 

Sub ciklus2()
    Const cMunkalapok = "Management Accounts Hotel/Management Accounts Apartments/Rooms/F&B Summary"
    Const cPrintAreak = "AN1:BZ70/AN1:BZ110/AN1:BZ199/AN1:BZ134"
    Dim inti As Integer, arrMunkalapok, arrPrintareak, ws As Worksheet
    
    arrMunkalapok = Split(cMunkalapok, "/")
    arrPrintareak = Split(cPrintAreak, "/")
    For inti = LBound(arrMunkalapok) To UBound(arrMunkalapok)
        On Error GoTo hiba
        Set ws = ThisWorkbook.Worksheets(arrMunkalapok(inti))
        ws.PageSetup.PrintArea = arrPrintareak(inti)
        If ws.Visible <> xlSheetVisible Then
            ws.Visible = xlSheetVisible
            ws.PrintOut Copies:=1
            ws.Visible = xlSheetHidden
        Else
            ws.PrintOut Copies:=1
        End If
hibaután:
    Next
    Exit Sub
hiba:
    MsgBox "A '" & arrMunkalapok(inti) & "' nevű munkalap nem található."
    Debug.Print Err.Number, Err.Description
    Resume hibaután
End Sub

Előzmény: Törölt nick (22280)
Delila10 Creative Commons License 2013.12.10 0 0 23384

:))

Előzmény: Törölt nick (23383)
Törölt nick Creative Commons License 2013.12.10 0 0 23383

:)

Ez is jó megfogalmazás: "halála előtt pár évvel"

Születése után pár tucat évvel?

Előzmény: Delila10 (23381)
Sánta Kutya (SK) Creative Commons License 2013.12.10 0 0 23382

Létezik az az összeg.

Helyesírási versenyen kaptam az alábbi mondatot: "Az aradi vértanúk közül Dessewffy Arisztid nevét nem tudom szótagolva leírni." Természetesen szótagolva.

Előzmény: Törölt nick (23380)
Delila10 Creative Commons License 2013.12.10 0 0 23381

Teller Ede atomfizikus halála előtt pár évvel ezt mondta Pakson:

"...Új jeles felfedezésem, miszerint egy nyelv van, s az a magyar." (Mai Nap, Budapest, 1991. 9.)

 

Dürrenmatt mesélte, aki egy német írótól hallotta:

A világon a két legnehezebb nyelv a portugál és a magyar, de ezek közül a magyar olyan nehéz, hogy azt még a portugálok sem értik.

Előzmény: Törölt nick (23380)
Törölt nick Creative Commons License 2013.12.10 0 0 23380

Köszönöm a megoldást, igazából viccből kérdeztem.

A minap olvastam egy cikket az amerikairól, aki a CNN-en a magyar nyelv nehézségét taglalja. Meg eszembe jutott egy külföldi diák, aki egyszer azt mondta a magyar nyelvről, hogy tök logikus a felépítése, csak az a baj, hogy minden második eset kivétel a szabályok alól :)

 

Nemrég kezembe került egy nyelvtani tananyag, ami a tulajdonnevek helyesírását fejtegeti. Hát, tudod... Thewrewk (török) meg Georch (görcs) meg hasonlók... Bat-thyá-ny? Thew-rew-köt??? Nem mondom, hogy ezeket nem lehet mind megtanulni, de én sem fogok a kardomba dőlni, ha véletlenül nem tudom valamelyiket.

 

És mindezt leprogramozni milyen üdítő lehet :)

 

Mondjuk az lenne a feladat, hogy írjál programot excelben, ami egy tetszőleges magyar szó szótagolós elválasztását elvégzi. Hogy tetszik? :-)

Előzmény: Sánta Kutya (SK) (23379)
Sánta Kutya (SK) Creative Commons License 2013.12.10 0 0 23379
Előzmény: Sánta Kutya (SK) (23378)
Sánta Kutya (SK) Creative Commons License 2013.12.10 0 0 23378

Bocsánat, nem figyeltem, a toldalékolásra koncentráltam! Pedig az elválasztás volt a kérdés.

Shakes-peare-rel (az eredeti szó két magánhangzót tartalmaz).

 

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

Teljesen alapszintű feladat, Shakespeare-rel (néma e a végén).

Inkább az a baj, hogy kezd elterjedni az az idióta szokás, hogy mindenhova kötőjelet tesznek, ha idegen szó, sőt már akkor is, ha magyar.

 

Előzmény: Törölt nick (23375)
pimre Creative Commons License 2013.12.10 0 0 23376

Inkább új sorba írnám, egyben:-), mint a rendőr, aki áthúzatta a döglött lovat a Rottenbiller utcából a Király utcába.

(Az nem lenne sportszerű, ha rákeresnék az angol elválasztási szabályokra)

Előzmény: Törölt nick (23375)
Törölt nick Creative Commons License 2013.12.10 0 0 23375

Hogy választod el írásban azt a szót, ami fonetikusan így hangzik: "sékszpírrel"?

:)

Előzmény: pimre (23374)
pimre Creative Commons License 2013.12.10 0 0 23374

Köszönöm mindenkinek a válaszokat. Különösen Delilának ezt.

 

Egyébként pedig elnézést kérek a következő mondatomért: "...az Option Compare Text utasítás segít abban, hogy a stringek összehasonlításánál az adott nyelvi beállításokat - esetünkben magyar ABC szabályait - érvényesítse a program. "

 

Szóval, amit a magyar ABC szabályainak véltem, az csak az én képzeletemben élt. És bár a nyelvhelyességet világéletemben fontosnak tartottam, a betűrendbe sorolás kérdése elkerülte a figyelmemet. Mostanáig azt képzeltem, hogy amit bebifláztam gyermekként (a, á, b, c ...), az érvényes a rendezésre is. 

Még egy ilyen hiányosságomról tudok a magyar nyelvtanban, az pedig a kötőjelek helyes használata. De ezt már nem biztos, hogy képes leszek valaha is pótolni:-)

Előzmény: Delila10 (23370)
tbando Creative Commons License 2013.12.09 0 0 23373

Oh  :)))))))))))

Előzmény: Delila10 (23370)
Delila10 Creative Commons License 2013.12.09 0 0 23372

Köszönöm. :)

 

Azt hiszem, ezen a fórumon olvastam anno a megoldást.

Előzmény: Fferi50 (23371)
Fferi50 Creative Commons License 2013.12.09 0 0 23371

Szia!

 

Igen! Nagy piros pont Neked!

 

Üdv.

Előzmény: Delila10 (23370)
Delila10 Creative Commons License 2013.12.09 0 0 23370

Rendezés magyar ABC szerint:
Vezérlőpult | Területi és nyelvi beállítások | Területi beállítások fül | Testreszabás gombon katt | Rendezés fül | Lenyílóból a Technikai lehetőséget választjuk, végig okézzuk.


Természetesen az alapértelmezett területi beállítás Magyar kell hogy legyen.

tbando Creative Commons License 2013.12.09 0 0 23369

Most látom hogy ny-betüt a chr(9)-re cseréltem. Valszeg így is jó, bár a 209-re terveztem :)))). 

Előzmény: tbando (23368)
tbando Creative Commons License 2013.12.09 0 0 23368

Szia!

 

Quicksortért cserébe egy a te izlésed szerinti  abc sorbarendezés az aktiv munkalapon.  Az ékezetes betük helyes rendezését  a szövegből oszopok, a kettős betűkét a nem abc karakterekre való  oda-vissza cserélés biztosítja.  A szóközöket  kitöröltem,  hogy az Aba Pétert előbbre sorolja mint az Abasári Rizlinget.

 

A futtatáshoz ki  kell jelölni a sorbarendezendő nevek oszlopát.  Ebben a formában az első 10 betű és a maradék alapján rendez, de ezt persze átírhatod. Ha a nevek rendezésekor  a táblázatod többi oszlopát is mozgatni akarod, akkor az 5. pontban bővítheted az oszlopszámot.

 

Sub pimreabc()

 

Dim oszl, sor1, sor2, i

Dim cs, gy, ny, sz, zs, ly, ty

 

''1. selection parameterek, kisegítő oszlopok betoldása es duplikalas

 

oszl = Selection.Column

sor1 = Selection.Row

sor2 = Selection.Rows.Count

sor2 = sor1 + sor2 - 1

 

Range(Cells(sor1, oszl + 1), Cells(sor1, oszl + 11)).EntireColumn.Insert

Selection.Copy Cells(sor1, oszl + 1)

 

''2. kettos betuk csereje nem abc karakterekre

 

cs = Chr(198)

gy = Chr(199)

ny = Chr(9)

zs = Chr(142)

ly = Chr(197)

sz = Chr(200)

ty = Chr(223)

 

Range(Cells(sor1, oszl + 1), Cells(sor2, oszl + 1)).Select

   

    Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _

        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

        ReplaceFormat:=False

   

    Selection.Replace What:="cs", Replacement:=cs, LookAt:= _

        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

        ReplaceFormat:=False

    Selection.Replace What:="gy", Replacement:=gy, LookAt:= _

        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

        ReplaceFormat:=False

Selection.Replace What:="ny", Replacement:=ny, LookAt:= _

        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

        ReplaceFormat:=False

Selection.Replace What:="sz", Replacement:=sz, LookAt:= _

        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

        ReplaceFormat:=False

Selection.Replace What:="zs", Replacement:=zs, LookAt:= _

        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

        ReplaceFormat:=False

Selection.Replace What:="ly", Replacement:=ly, LookAt:= _

        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

        ReplaceFormat:=False

Selection.Replace What:="ty", Replacement:=ty, LookAt:= _

        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

        ReplaceFormat:=False

 

''3. sz0vegbol oszlopok

 

Selection.TextToColumns ActiveCell, DataType:=xlFixedWidth, _

        FieldInfo:=Array(Array(0, 1), Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array _

        (5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1)), _

        TrailingMinusNumbers:=True

 

''4 Nem abc karakterek visszaalakitasa kettos betukke

 

Range(Cells(sor1, oszl + 1), Cells(sor2, oszl + 11)).Select

 

Selection.Replace What:=cs, Replacement:="cs", LookAt:= _

        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

        ReplaceFormat:=False

    Selection.Replace What:=gy, Replacement:="gy", LookAt:= _

        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

        ReplaceFormat:=False

Selection.Replace What:=ny, Replacement:="ny", LookAt:= _

        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

        ReplaceFormat:=False

Selection.Replace What:=sz, Replacement:="sz", LookAt:= _

        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

        ReplaceFormat:=False

Selection.Replace What:=zs, Replacement:="zs", LookAt:= _

        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

        ReplaceFormat:=False

Selection.Replace What:=ly, Replacement:="ly", LookAt:= _

        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

        ReplaceFormat:=False

Selection.Replace What:=ty, Replacement:="ty", LookAt:= _

        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

        ReplaceFormat:=False

 

''5 sorbarendezes

 

 

ActiveSheet.Sort.SortFields.Clear

   

   For i = 1 To 11

   ActiveSheet.Sort.SortFields.Add Key:=Range(Cells(sor1, oszl + i), Cells(sor2, oszl + i)) _

        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

    Next i

    With ActiveSheet.Sort

        .SetRange Range(Cells(sor1, oszl), Cells(sor2, oszl + 11))

        .Header = xlGuess

        .MatchCase = False

        .Orientation = xlTopToBottom

        .SortMethod = xlPinYin

        .Apply

    End With

 

''7. kisegito oszlopok torlese

Range(Cells(sor1, oszl + 1), Cells(sor1, oszl + 11)).EntireColumn.Delete

 

End Sub

 

 

 

Előzmény: pimre (23354)
tbando Creative Commons License 2013.12.09 0 0 23367

Az excellel minden megoldható :)))).  Itt van még egy megoldás:

 

Mivel a szóló ékezes betüket az excel a magyar abc szerint rendezi, a szövegből oszlopot paranccsal  a karaktereket  külön oszlopba téve  már megoldható az ékezetes betük pimre féle sorrendje. Így persze a kettős betűk sorrendje borulhat, de ez  praktikusan csak c/cs esetében fordulhat elő, ott is csak elvétve.

 

Az alábbi makró az első 10 betűt teszi külön oszlopokba, amikre aztán egy 11 rendezési kulcsos sorbarendezéső makró írható. Már amennyiben ez tényleg fontos.

 

Selection.TextToColumns ActiveCell, DataType:=xlFixedWidth, _

        FieldInfo:=Array(Array(0, 1), Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array _

        (5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1)), _

        TrailingMinusNumbers:=True

 

 

Előzmény: Sánta Kutya (SK) (23365)
Fferi50 Creative Commons License 2013.12.08 0 0 23366

Szia!

 

Rendben, igazad van!

Ebből vették:

MTA A magyar helyesírás szabályai

http://mek.oszk.hu/01500/01547/01547.pdf

 

Üdv.

Előzmény: Sánta Kutya (SK) (23364)
Sánta Kutya (SK) Creative Commons License 2013.12.08 0 0 23365

Ez egy jó ötlet, ha valaki nem a hivatalos rendezést akarja csinálni, hanem sajátot.

Biztos, hogy megoldható, hiszen ha makrórögzítővel felveszel egy ilyen rendezést, kapsz egy kódot. Ahhoz persze kell mondjuk egy rejtett oszlop, amit akár ideiglenesen is fel lehet venni és törölni képernyőfrissítés letiltásával, amíg tart a rendezés, és akkor nem látja a user.

 

A másik lehetőség, ha rendezőkulcsnak meg lehet adni egy függvényt is. A Python nyelv például tudja ezt. Nem tudom, a VBA tud-e ilyent. Ha igen, akkor elegánsabb úgy, mint a fenti módszerrel.

Előzmény: tbando (23359)
Sánta Kutya (SK) Creative Commons License 2013.12.08 0 0 23364

Ez a Wikiforrás (Wikisource), nem a Wikipédia.

Előzmény: Fferi50 (23361)
Fferi50 Creative Commons License 2013.12.08 0 0 23363

Szia!

Megelőztél amíg összeszedtem a hozzászólásomat.

Szóló betűknél az az elv érvényes, hogy a rövid előrébb van, ahogy azt az idézet is mondja, és a szóló betű kerül legelőre.

 

Üdv.

 

Előzmény: Sánta Kutya (SK) (23357)
Sánta Kutya (SK) Creative Commons License 2013.12.08 0 0 23362

Teljesen logikus és jó, pont erről beszéltem.

Előzmény: tbando (23360)
Fferi50 Creative Commons License 2013.12.08 0 0 23361

Szia!

 

Nem akarlak elkeseríteni, de az Excel jobban tudja a magyar szabályokat mint mi: 

Idézet a Wikipédiából: (http://hu.wikisource.org/wiki/A_magyar_helyes%C3%ADr%C3%A1s_szab%C3%A1lyai/A_bet%C5%B1k)

 A magánhangzók rövid és hosszú változatát jelölő betűk (a – á, e – é, i – í, o – ó, ö – ő, u – ú, ü – ű) a kialakult szokás szerint mind a szavak elején, mind pedig a szavak belsejében azonos értékűnek számítanak a betűrendbe sorolás szempontjából. A magánhangzó hosszú változatát tartalmazó szó tehát meg is előzheti a rövid változatút:

ír       Irán     író

Irak   írandó iroda

iram  iránt    irónia stb.

 

A rövid magánhangzós szó kerül viszont előbbre olyankor, ha két szó betűsora csak az azonos magán­hangzók hosszúsága tekintetében különbözik:

Eger   keres   szelel

egér   kérés   szeles

éger   koros   szelés

égés   kóros    széles

 

A kettősbetűket pedig megelőzik az egyesek (mármint ny előbb van mint nz, úgy ahogy az előbb is írtam).

 

Nagy lexikonokban is keverednek a rövid-hosszú magánhangzós szavak: pl:állvány alma .......Álmos ...álnév ... áloé ....alom

idézet az Új Magyar Lexikonból (1960-as kiadás).

 

Üdv.

Előzmény: pimre (23354)
tbando Creative Commons License 2013.12.08 0 0 23360

Az excelnél ezek a sorrendek: bele-belé, de belég-belet :))))

Előzmény: Sánta Kutya (SK) (23357)
tbando Creative Commons License 2013.12.08 0 0 23359

Amiből az is következik, hogy az első betűre viszonylag könnyen rendezheted a neveket a magyar ábc szerint. Csak annyi kell, hogy a BAL függvénnyel leválasztod az első betüket, és 2 oszlopos rendezést csinálsz. Persze ez csak a munkalapon egyszerű, a vba-tömbökben nem tudom, hogy lehet-e ilyen rendezést csinálni.

Előzmény: tbando (23356)
Sánta Kutya (SK) Creative Commons License 2013.12.08 0 0 23358

Pontosabban kétféle módszer van, de a hivatalos, szótári és könyvtári rendezés ez. Magáncélra lehet használni olyat is, ahol az e és é különbözik.

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

Lehet, hogy kiábrándítok valakit, de a rendezés szempontjából az a-á és az e-é között nincs különbség a magyarban. Tessék elővenni bármelyik szótárat, akár helyesírásit, akár magyar–idegen nyelvűt. Az ében és az Elemér ebben a sorrendben helyes. Szóló betűknél nem tudom, miért állít be sorrendet, lehet, hogy ott más elv szerint dolgozik, vagy úgy tekinti, hogy a két szó majdnem egyforma, csak az utolsó betűben különböznek, és akkor mégis kell valamilyen rendező elv. Lehet, hogy a bele, belé esetén is ez történne, most nem kísérletezem.

 

Tehát jó lenne látni pimre példáit, hogy tudjuk: az Excel működésében van a hiba vagy az elvárásokban?

Előzmény: tbando (23355)
tbando Creative Commons License 2013.12.08 0 0 23356

De mégsem teljesen azonos értéküek, mert a szóló betűket már jól rakja sorrendbe. Tehát növekvőben az é-e sorrendet megcseréli.

Kicsit komplikált :))))

Előzmény: tbando (23355)
tbando Creative Commons License 2013.12.08 0 0 23355

Nekem úgy tűnik, hogy a kettős betükkel szemben, az AÁ és az EÉ betüpárokat a munkalap is azonosnak tekinti. Meg temészetesen az IÍ, OÓ, ÖŐ, UÚ, ÜÚ betűpárokat is. Tehát amig cucu-csacsi sorrend a magyar abc szerinti, addig az ében-elemér már nem. 

Előzmény: pimre (23354)
pimre Creative Commons License 2013.12.08 0 0 23354

Szia, ugyanarra gondolok, amit Te is tapasztalsz. Azaz, hogy a sort parancs használatakor nem tudom elérni, hogy a területi beállítások szerinti sorrendet kapjam. Nem tragédia, csak érdekelt volna, hogy erre tényleg nincs-e lehetőség. Persze nagyon körmönfont programozási technikával biztos megoldható, csak alapból nem. 

Mellesleg a z<->y esetben ez kevéssé feltűnő, de az ékezetes karaktereknél feltűnően nem szép, ha keverten látjuk azokat a saját ékezet nélküli párjukkal.

Előzmény: Fferi50 (23353)
Fferi50 Creative Commons License 2013.12.08 0 0 23353

Szia!

 

Mire gondolsz?

Mert nekem az anziksz és az anya összehasonlítása Option Compare Text-tel azt eredményezi, hogy az anziksz van elől, anélkül pedig az anya szó kerül előre.

A range("A1:A2").sort pedig mindkét esetben az anziksz, anya sorrendet hozza programból.

Írnál egy példát?

 

Üdv.

 

 

 

Előzmény: pimre (23352)
pimre Creative Commons License 2013.12.08 0 0 23352

Másfél hónapja tisztáztuk, hogy az Option Compare Text utasítás segít abban, hogy a stringek összehasonlításánál az adott nyelvi beállításokat - esetünkben magyar ABC szabályait - érvényesítse a program. 

 

Viszont úgy tapasztalom, hogy a programban a sort parancs esetén ez nem működik. Jól gondolom, hogy erre nincs is megoldás?

Előzmény: pimre (22870)
champ1 Creative Commons License 2013.12.08 0 0 23351

oké, már rá is jöttem!!! :-)

köszi

Előzmény: champ1 (23350)
champ1 Creative Commons License 2013.12.08 0 0 23350

csináltam vele egy hosszabb kísérletet, és műkodik, de nem a b oszlopba írja, mellé, hanem 4 sorral lejjebb...

én is keresem az okát

Előzmény: champ1 (23349)
champ1 Creative Commons License 2013.12.08 0 0 23349

Szia!

köszi a gyors választ!

kipróbáltam, nem mőködik egyenlőre. biztosan valamit elrontok, de nem jelez, hogy dupla. Nem tudom jól értetted-e hogy mit szeretnék.

van az "a" oszlop, ahová beérkeznek a vonalkód adatok. Ha beérkezik egy olyan adat,amit már egyszer beolvastam valamikor (mondjuk 50 sorral ezelőtt) akkor jelezzen, hogy dupla. Így kellene működnie a képletednek, amit adtál?  

Előzmény: tbando (23348)
tbando Creative Commons License 2013.12.08 0 0 23348

Természetesen nem a B1 oszlopba, hanem a B1 cellába  :(((((.

Előzmény: tbando (23347)
tbando Creative Commons License 2013.12.08 0 0 23347

Alkalmazhatod rá a darabteli-t.

 

Ha az A oszlopba kerül a vonakódszám, akkor B1 oszlopba írd ezt: =Ha(darabteli(A$1:A1;A1)>1;"DUPLA";"")

 

Ha bekapcsolod a képletek folytatása opciót, akkor ennyi elég. Ha nem, akkor B oszlopon végighuzod a B1 képletet.

Előzmény: champ1 (23346)
champ1 Creative Commons License 2013.12.07 0 0 23346

Sziasztok,

Mivel tudnám megoldani a következőt?

Vonalkód olvasóval olvasom be a kódokat az excel cellába, és az lenne a feladat, hogy ha már egyszer beolvasott egy számot, és már másodszor szeretném (véletlenül), azt rögtön jelezze...

Előre is köszi az ötleteket

Ro0oBi Creative Commons License 2013.12.07 0 0 23345

Hát ez óriási! Nagyon szépen köszönöm a segítséget és a türelmet, hogy ennyire leegyszerűsítve elmagyaráztad! Így mostmár nem csak a feladat oldódott meg, de meg is értettem a lényeget! Le a kalappal!!!

Előzmény: Fferi50 (23344)
Fferi50 Creative Commons License 2013.12.07 0 0 23344

A bibi a következő: 

Ha az éves 6% kamatrátát elosztod 12-vel és azt írod be, az nagyon jó közelítés, de nem pontos - főleg magasabb kamatlábak esetén - mivel az adott havi kamat tőkésedik (azaz kamatos kamat a számítás).

Ezért ha 12 hónap alatt  a 6% tizenketted részét veszed havonta, akkor az 1 forintod az év végére

        (1+0,06/12)^12-1=6,16778118645 %-os éves kamatnak felel meg.

A MÉ és minden pénzügyi képlet a kamatos kamattal számol.

Ha tehát azt akarod, hogy tényleges éves 6%-os kamattal számoljon a képlet, akkor a rátához

nem 0,06/12-t kell beírnod, hanem (1+0,06)^(1/12) - 1-et, vagyis a 6 %-os kamattényezőnek a tizenkettedik gyökéből számított  - havi - kamatlábat.

 

Ez a képletben néhány forinttal nagyobb összeget fog adni jelenértéknek, mivel a kamatláb alacsonyabb.

(Ajánlom még figyelmedbe a pénz időértékéről szóló írásokat.)

 

Üdv.

Sánta Kutya (SK) Creative Commons License 2013.12.07 0 0 23343

Bocs, de ebbe most nincs kedvem beleásni magam, talán majd valaki más... Ezt a függvényt az életben nem használtam még, és nem ma este fogom teli hassal elkezdeni.

Előzmény: Ro0oBi (23342)
Ro0oBi Creative Commons License 2013.12.07 0 0 23342

Pfú nagyon köszönöm, nagyban elősegítetted a megértést!

Még csak egy olyan kérdés, hogy a vázolt feladatban a MÉ függvényt használva: 23 354, 05 jött ki eredményül.

Most pedig a Te útmutatásod alapján írtam egy ilyen képletet: =((2000*(1+(0.06/12)/(100))^12)-1)*12 és ezzel  24002.4 jön ki akkor most ez lenne a pontos érték? Vagy valamit esetleg elrontottam a képletben?

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

6% az nem 6, hanem 0,06. A 0,005 a 0,5%-nak a tizedestört alakja, de ez nem Excel, hanem számtan. Ha az Excelben ez problémát okoz, akkor nem jó a cella formázása.

 

Az egy elvi kérdés, hogy éves vagy havi kamatlábbal számol a bank. Vagyis mennyi időnként írják jóvá. Ha havonta x% a kamat, akkor egy év alatt nyilván (1+x/100)^12 a szorzó, hiszen a második hónapban már az első havi kamattal megnövelt összeg hízik tovább. Ebből visszafelé ki lehet találni, mi dolga a 12-ik gyöknek. De ez is számtan.

Előzmény: Ro0oBi (23340)
Ro0oBi Creative Commons License 2013.12.07 0 0 23340

Sziasztok! Következő feladatot kaptam a tanáromtól:
Pénzügyileg melyik a kedvezőbb? 12 hónapon keresztül megvásárolni a bérletet minden hónap elején 2000 Ft-ért, vagy éves bérletet venni év elején 23 000 FT-ért? A kamtláb évi 6%)

Adatok:
A1 cella: 12
A2 cella: 0,005
A3 cella: 2000
A4 cellába meghívom az MÉ függvényt és kiszámolja, 23 354,05-t hoz ki eredménynek.
Ráta: A2
Időszakok száma: A1
Részlet: A3
Típus: 1
Ez így rendben is van azt mondta így elfogadja a megoldást. DE! Azt mondta ez így egy kerekítés és aki több pontot szeretne az a 12.-ik gyökkel számoljon.
Nem tudok rájönni mit ért ez alatt már mint hova kellene beírni és melyik számnak a 12.-ik gyökét valaki érti esetleg? Ennél több infót nem adott, pontosan lejegyeztem mindent...Nagyon nagyon örülnék ha valaki megfejtené ezt!

U.I.: Mellesleg már az sem teljesen világos, hogy ha az éves kamatláb 6% akkor a havi miért/hogy lesz 0,005. Mikor 6/12=0,5-el. Akkor honnan jön ez a 0,005!?

Előre is köszönöm a segítségetek!

Törölt nick Creative Commons License 2013.12.05 0 0 23339

Gyere máskor is :)

 

Egyébként te vezettél rá a megoldásra. Ha nem írod be 23315-ben, hogy hogy lehet egzakt módon méretre állítani a képet, én nem biztos, hogy rájövök, és akkor még mindig egy zsákutcának tűnő sikátorban botorkálnék, messze a megoldástól.

 

 

 

Előzmény: JT2 (23336)
Fferi50 Creative Commons License 2013.12.05 0 0 23338

Szia!

 

Select ügyben abszolút egyetértek veled. Vannak azonban olyan esetek - sajnos - amikor a nyavalyás excel csak akkor hajlandó az adott objektumon végrehajtani a kívánt módosításokat, ha az éppen ki van választva. Most éppen nem tudok ilyen példát hirtelen, de szívtam már egy-két esetben emiatt.

 

Talán az application.dialogs(xx).show-val lehetne valamit csinálni, de még nem jutottam el odáig, hogy kipróbáljam, a help és az MSDN pedig ebben a tekintetben abszolut 0-hoz közelít.

 

Üdv.

Előzmény: Törölt nick (23335)
Sánta Kutya (SK) Creative Commons License 2013.12.05 0 0 23337

Köszönöm a válaszokat! Nagyon kellene már egy tudástár. :-(

Előzmény: Törölt nick (23335)
JT2 Creative Commons License 2013.12.05 0 0 23336

Jimmy...... le a kalappal előtted. Köszönöm!

 

Mivel én nem konyítok a makróhoz .....ssssssemmit...már az is teljesítmény részemről, hogy amit küldtél, be tudtam másolni ahova kell, hogy működjön.

És voila....megoldotta a problémámat - még ha szerinted vagy bárki szerint is ez nem szép megoldás. De legalább van!!!

Mellesleg úgy érzem magam ezen az oldalon, mint egy általános elsős az egyetemisták között. Épp, hogy ismerkedem a betükkel. Csak nagyra tárt szemmekkel figyelek. Egy kukkot sem értek az egész oldalból, agyaltam is rajta, hogy merjek-e regisztrálni, ezért ezt megelőzően vagy egy egy hónapon át inkább próbáltam innen-onnan megoldást szerezni a problémámra de sikertelenül. Szóval a szükség hozott ide mielőtt feladnám de sikerrel jártam.

Mégegyszer köszönet. Persze ha ezt még tudod tökéletesíteni, hogy szerinted is "szép megoldás" legyen küldjed csak, kiváncsian várom!

 

Köszönet neked is Fferi50 és mindenki másnak is, aki bármilyen próbálkozást tett a probléma megoldására.

Előzmény: Törölt nick (23331)
Törölt nick Creative Commons License 2013.12.05 0 0 23335

A Select ellen régóta kampányolok itt, mert az esetek döntő többségében fölösleges. Azért Select-álsz valamit, hogy aztán a Selection által hivatkozott objektumon hajts végre valami műveletet. Ennek mi értelme? Az objektumokat direkben kell meghivatkozni, egyértelmű elérési úttal. Ha az objektumokra Selection-nel hivatkozol, akkor a kódod annyira lesz robusztus, mint mondjuk a kártyavár. Ráadásul a kód megírását is bonyolultabbá teszi. Próbáld ki. Másold be a kódmodulra ezeket:

Sub teszt()

   'Select
   Range("A1").Select
   Selection


   'No select
   Range("A1")
End Sub

 

Tegyél a Selection után pontot, mintha pl. az Interior.ColorIndex-et akarnád beállítani. Mit tapasztalsz?

Most tegyél a Range("A1") után pontot, mintha pl. az Interior.ColorIndex-et akarnád beállítani. Mit tapasztalsz?

 

Az intellisense (intelligens kódkiegészítő) nem működik Selection-nel, mert f.ngja nincs, hogy a Selection milyen ojektumot takar. Range("A1") esetében tudja, és ezért csak azokat a tulajdonságokat és műveleteket hozza fel, amelyek a Range típusú objektumra értelmezettek.

 

A SendKeys meg végképp a programozás megcsúfolása. A legbizonytalanabb kimenetelű dolog, amit Excelben el tudok képzelni. A bolygók állásától talán nem függ az eredménye, de minden mástól igen. Vészhelyzetben oké lehet, de minden más esetben kerülendő. Például vegyük azt a kódot, amit beküldtem. Mi van, ha pl. elszámoltam a TAB-okat, és rossz helyen "nyomok" ENTER-t? Vagy mi van, ha az Excelnek idő kell, hogy egy SendKeys-sel indított feladatot végrehajtson, és addig nem tud fogadni új billentyűparancsokat, de a kódom meg rendületlenül küldi őket? A gép sebességétől függő számú lépés kimarad, aztán megy tovább?

Előzmény: Sánta Kutya (SK) (23332)
pimre Creative Commons License 2013.12.05 0 0 23334

Hogy ne kelljen Jimmynek elismételnie a mostanában a témában elhangzottakat, készítettem egy kis összeállítást az elmúlt negyedévben itt született indoklásokról a select utasítás mellőzésének érdekében:

 

Egy munkalap használatához (nyomtatásához) nem kell a select: http://forum.index.hu/Article/viewArticle?a=127139728&t=9009340

 

Másoláshoz sem kell: http://forum.index.hu/Article/viewArticle?a=127141602&t=9009340 és http://forum.index.hu/Article/viewArticle?a=127200457&t=9009340

 

Itt egy kicsit részletesebb indoklás: http://forum.index.hu/Article/viewArticle?a=127561473&t=9009340 és egy másik: http://forum.index.hu/Article/viewArticle?a=127584953&t=9009340. Az utóbbi egyik mondatához „A select utasítás csak az aktív munkalapon működik.” tartozik egy kiegészítés: A képernyőfrissítésnek ezalatt nem szabad tiltva lennie (tehát az Application.ScreenUpdating értéke True kell, hogy legyen), különben nem érvényesül.

 

Ráadásul kompatibilitási problémákat is okozhat a 2003-as és 2007-es verzió között: http://forum.index.hu/Article/viewArticle?a=127842112&t=9009340

 

 

Előzmény: Sánta Kutya (SK) (23332)
enyan Creative Commons License 2013.12.05 0 0 23333

Hibátlan, működik faszán. Kisebb-nagyobb változtatásokat remélhetőleg én is tudok majd eszközölni rajta.

 

Köszi szépen!

Előzmény: Fferi50 (23296)
Sánta Kutya (SK) Creative Commons License 2013.12.05 0 0 23332

Miért kerülendők?

Előzmény: Törölt nick (23330)
Törölt nick Creative Commons License 2013.12.05 0 0 23331

Ha rejtett Comment-ek vannak, azokat előbb meg kell jeleníteni, hogy a Select ne akadjon ki:

 

Sub Megjegyzem()
    Dim sh As Shape, cm As Comment, i As Long
    For i = 1 To 2
        For Each cm In ActiveSheet.Comments
            cm.Visible = True
            Set sh = cm.Shape
            sh.Select
            DoEvents
            Application.SendKeys "^1"
            Application.SendKeys "{TAB}"
            Application.SendKeys "{TAB}"
            Application.SendKeys "{TAB}"
            Application.SendKeys "{TAB}"
            Application.SendKeys "{TAB}"
            Application.SendKeys "{TAB}"
            Application.SendKeys "{TAB}"
            Application.SendKeys "{ENTER}"
            Application.SendKeys "{TAB}"
            Application.SendKeys "{ENTER}"
            cm.Visible = False
        Next
    Next
End Sub

Előzmény: Törölt nick (23330)
Törölt nick Creative Commons License 2013.12.05 0 0 23330

Meg fogom kövezni magam ezért a makróért, de nincs jobb ötletem, mint Select és Sendkeys, a két leginkább kerülendő cucc.

 

Sub Megjegyzem()
    Dim sh As Shape, cm As Comment, i As Long
    For i = 1 To 2
        For Each cm In ActiveSheet.Comments
            Set sh = cm.Shape
            sh.Select
            DoEvents
            Application.SendKeys "^1"
            Application.SendKeys "{TAB}"
            Application.SendKeys "{TAB}"
            Application.SendKeys "{TAB}"
            Application.SendKeys "{TAB}"
            Application.SendKeys "{TAB}"
            Application.SendKeys "{TAB}"
            Application.SendKeys "{TAB}"
            Application.SendKeys "{ENTER}"
            Application.SendKeys "{TAB}"
            Application.SendKeys "{ENTER}"
        Next
    Next
End Sub

 

 

És hogy miért kell a For i = 1 To 2 ciklus?

Halvány lila gőzöm sincs. Azt tapasztaltam, hogy ha nincs ismétlés, akkor az első komment képe kimarad a formázásból. Ha kétszer egymás után lefuttatom ugyanazt, akkor az első is átállítódik.

 

Ami feltétlenül szükséges előkészület:

Egy képen csináld meg méret helyreállítását. Ez azért kell, hogy amikor legközelebb feljön a Megjegyzés formázása ablak, akkor a Méret fül legyen felül.

 

A kód működésére nincs garancia. Az egyik gépemen fut, a másikon nem...

 

Előzmény: JT2 (23315)
Sánta Kutya (SK) Creative Commons License 2013.12.04 0 0 23329

Na jó, az Ecel teljes újraindítása megoldotta. Bill Gates-módszer.

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

Hmm, a másikon is részben elromlott. Ha leveszem az érvényesítést, majd visszateszem, az se segít.

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

Nagyon furcsa dolog történt.

Kitöltendő cellákra adatérvényesítést használok, részben szabály nélkül, csak a felirat kedvéért.

Rákattintva a megjelenő szövegre egy vatag keretet láttam körülötte. Ekkor egérrel odébb lehetett húzni.

Na ez az, amit nem kellett volna. Soha többé nem bírtam visszatenni a helyére, mert akárhogy próbálkozom, innentől fogva az ÖSSZES cella érvényesítő szövege azon a helyen jelenik meg, ahova azt az egyet húztam, bármelyik is legyen az. Akár méterekre a cellától, ahova tartozik. És nem lehet visszavonni. Mentést meg nem csináltam közvetlenül előtte.

Szerencsére két hasonló táblázatom van, a rontottat eldobtam, majd visszamentem a másikból.

tbando Creative Commons License 2013.12.04 0 0 23326

A 2007-es excelben is úgy van mint a 2007-ben. A sorvektor hatványozásánál a pontosvessző az elválasztójel, az oszopvektor hatványozásánál pedig a backslash. Nagy meglátásod volt ezt felfedezni, mivel a súgóban erről sehol semmi.

 

És ezzel meg is van a többször visszatért kérdésemre a válasz, hogy mi a fenének kellett transzponálni a LIN.ILL képletben. Mert aki kiokumlálta a képletet, az is annyit tudott, hogy a default elválasztójel csak a sorvektoroknál müködik. Így hát transzponált.  Ahelyett, hogy konzultált volna veled, hogy megmond neki, hogy egyszerűbb lenne backslasht használni :)))))

Előzmény: Fferi50 (23319)
tbando Creative Commons License 2013.12.04 0 0 23325

Szeretnék még megemlíteni neked valamit.  Most hogy megint szóbahoztad hogy dátumok az x változóid, az az érzésem, hogy a trendszámításodhoz a harmadfoku polinomnál sokkal adekvátabb a  Fourier analizís. Az Adatelemzés excelbővítmény tartalmazza.

Előzmény: NPW (23300)
Sánta Kutya (SK) Creative Commons License 2013.12.04 0 0 23324

Igen, köszönöm. Valószínűleg maradok az egy munkalapos verziónál. Ronda, de működni fog. (A probléma egyébként nem bővebb annál, ami le volt itt írva.)

Előzmény: Fferi50 (23314)
Fferi50 Creative Commons License 2013.12.04 0 0 23323

Szia!

 

Valóban, magában a fileban vannak a képek tárolva.

 

Viszont: Mi lenne, ha egyszer rászánnád magad és végigmennél a megjegyzéseken az alábbi makróval:

 

for each cmnt in activesheet.comments

     cmnt.visible=true

     stop

     'itt átmész az adott oldalra és beállítod az alaphelyzetet, utána visszajössz.

    hossz=cmnt.shape.height  ' itt elmentheted a méreteket, ahova akarod, hogy később ne kelljen vele foglalkozni.

    szel=cmnt.shape.width

    cmnt.visible=false

next

 

A méret visszaállítás már a korábban leírt makróval megy, ahova a szélességet, hosszúságot az elmentett helyről veszed.

 

Cserébe még próbálkozom kibányászni az alaphelyzet beállítását - mert a metódus (SetShapesDefaultProperties) meg van rá, csak valamiért nem akarja megenni.

 

Üdv.

Előzmény: JT2 (23322)
JT2 Creative Commons License 2013.12.04 0 0 23322

Szerintem az Excel a megjegyzésekben tárolt képeket nem külön tárolja, hanem a mentett fájlban...ezt a fájl méretéből okoskodtam ki, ami nálam 40Mb körül mozog.

Előzmény: Delila10 (23318)
JT2 Creative Commons License 2013.12.04 0 0 23321

ja, és hátha valakit érdekel e témában ha sok megjegyzéshez lenne kép rendelve és szeretné kibányászni mondjuk az összes képet, elegendő a mentés másként parancsnál weblap-ként menteni. Én is találtam, hasznosnak tartom ezért osztottam meg.

Delila10 Creative Commons License 2013.12.04 0 0 23320

Kipróbáltam, igaz. :)

Előzmény: JT2 (23315)
Fferi50 Creative Commons License 2013.12.04 0 0 23319

Szia!

 

A hivatkozott hozzászólásban láthatod, ha az x adatok sorvektort alkotnak, akkor a hatványvektornak oszlopvektornak kell lennie, azaz nem backslash-sel, hanem pontosvesszővel kell az elemeit elválasztani.

Nálam a 2010-ben működik az alábbi képlet:

=LIN.ILL(G3:K3;G1:K1^{1;2;3})

 

ahol G1:K1 cellák a mai dátum + 4 nap.

 

Kíváncsian várom a Te eredményed!

 

(Hogy a 2007-ben mi a helyzet, talán Tbando tudna valamit mondani)

 

Más: már írtam, statisztikából úgy tanultam (és tanítottam), hogy idősorok trendszámításánál nem a dátumokat használjuk x adatokként, hanem az 1,2,3 ... stb. számokat.

Persze nyilván előfordulhat, hogy a valós számadatokat az excel képes dátumként is értelmezni - aztán számol is velük, mivel egyébként meg számnak tekinti.

 

Üdv.

Előzmény: NPW (23300)
Delila10 Creative Commons License 2013.12.04 0 0 23318

Biztosan tartalmazza a sorokban egy-egy cella a képek útvonalát és nevét.

 

Nagyon zavar, ha egy makró újra betölti a képeket, onnan megjegyzi az eredeti méreteit, és átállítja eszerint a megjegyzés méreteit? A betöltött képet törli. A méreteket el is tárolhatja a saját rekordjába, hogy legközelebb ne kelljen újra betölteni a képet.

Előzmény: JT2 (23315)
JT2 Creative Commons License 2013.12.04 0 0 23317

pontosan

Előzmény: Fferi50 (23316)
Fferi50 Creative Commons License 2013.12.04 0 0 23316

Szia!

 

És akkor visszaáll neked az eredeti méret (a változások előtti)?

 

 

Üdv.

Előzmény: JT2 (23315)
JT2 Creative Commons License 2013.12.04 0 0 23315

megint én!

 

A megjegyzésben tárolt képek eredeti méretének beállítása egyszerű csak automatizálni nem tudom azért kellene a makró.

 

Megjegyzésben tárolt kép eredeti méretre állítása:
- cellára jobb klikk
- megjegyzés szerkesztése
- megjegyzés peremére dupla bal klikk
- méret
- alaphelyzet
- ok

 

ezt a folyamatot viszont nem lehet együtemben megcsinálni akkor, mikor a képet hozzáadtuk a megjegyzéshez.(részemről erre nincs is szükségem)
Tehát előbb le kell okézni, kilépni a szerkesztésből majd a fentebb leírtakkal folytatni.

Fferi50 Creative Commons License 2013.12.04 0 0 23314

Szia!

 

Akkor ennyit tudtam segíteni...

 

Üdv.

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

Ott egy jelszóval levédett Excel-táblázatot fogsz találni, szerintem azzal nem sokra mész...

 

Előzmény: Fferi50 (23312)
Fferi50 Creative Commons License 2013.12.04 0 0 23312

Szia!

 

Adsz egy linket a honlapra?

Ha gondolod lehet priviben is.

 

Üdv.

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

Ja és a makró eleve nem játszik, hiszen a felhasználók egy része eleve nem engedélyezi a külső forrásból származó makrókat. Mindent az Excel alapfunkcióival kell megoldanom.

 

Lehet, hogy az lesz a megoldás, hogy megszüntetem a másik munkalapot, és valahol ugyanazon a munkalapon elrejtett XY oszlopokban sorolom fel az elemeket. Az én életem lesz bonyolultabb tőle, de legalább jól érzi magát valaki Redmondban a bal kettőben...

Előzmény: Fferi50 (23309)
Sánta Kutya (SK) Creative Commons License 2013.12.04 0 0 23310

Ezek nagyon bonyolult megoldások, egyrészt nem is ér ennyi munkát az egész, másrészt ugye itthon szerkesztem a táblázatot Excel 2000-ben, mert az biztos mindenhol megnyílik, elmentem xls-ben, aztán holnap odabent tudom 2010 alatt tesztelni, szóval még csak nem is egy kerületben zajlik a két esemény. :-)

Marad a figyelmeztetés.

Tudtommal a megnyitáskor nem történik verziók közötti konverzió, csak ha másként menti.

Előzmény: Fferi50 (23309)
Fferi50 Creative Commons License 2013.12.04 0 0 23309

Szia!

 

Ha a probléma a mentésnél van, akkor a mentést tedd egy command gombra és a beforesave eseményben makróval mentsd el a megfelelő formátumban a filet.

 

De lehet, hogy már a megnyitáskor van probléma. Ezt lehet kezelni az open eseménybe betett verzió vizsgálattal.

 

De valóban segíthet egy olyan figyelem felhívás is, hogy ne konvertálja, csak kompatibilis módban nyissa meg. Aztán ha nem tartja be, lehet neki hivatkozni a figyelem felhívásra.

(Azt nem tudom, hogy meg lehet-e akadályozni a konvertálást.)

 

Üdv.

Előzmény: Sánta Kutya (SK) (23306)
Fferi50 Creative Commons License 2013.12.04 0 0 23308

Szia!

 

Ahogy én látom, a képek eredeti méretét nem lehet már meghatározni, mert az a tulajdonság nem használható sajnos itt.

Viszont az adott makróval egyrészt ki lehet íratni a jelenlegi méreteket.

Aztán lehet módosítgatni a méreteket tetszés szerint, amíg el nem találod a megfelelőnek látszót.

Azt gondolom, ez is jobb mint a kézzel állítgatás.

Tanulság viszont, hogy mindenképpen el kell tárolni valahova - elővehető módon - az eredeti méreteket.

 

Üdv.

Előzmény: Törölt nick (23298)
tbando Creative Commons License 2013.12.04 0 0 23307

Szerintem tedd fel a 2010-es füzeted a datahura. Feri biztos megnézi, mivel sokat molyoltunk e témán. 

Előzmény: NPW (23300)
Sánta Kutya (SK) Creative Commons License 2013.12.04 0 0 23306

Ez egy olyan űrlap, amit kiteszünk a honlapunkra, ahonnan az emberek letölthetik, és mindenki azzal tölti ki, amije neki van, aztán e-mailben visszaküldi. Ha én nyitogatnám meg, akkor nem lenne ilyen bonyolult...

Esetleg írjam oda, hogy hagyja meg xls-ben, és ne mentse át xlsx-be, mert akkor elromlik? Ez segít?

Előzmény: Fferi50 (23304)
tbando Creative Commons License 2013.12.04 0 0 23305

Hogy én hogy kerestem ezt a worksheet_calculate eseményt!  Mivel a change nem indított a helybenszűrések utáni  részösszeg változásokra.

 

Már megérte ma idelátogatni :))))

Előzmény: Fferi50 (23296)
Fferi50 Creative Commons License 2013.12.04 0 0 23304

Szia!

 

Az egyik megoldás lehet szerintem az, hogy a munkafüzet megnyitásakor figyeled az Excel verziószámát és attól függően végignézed az érvényesítéseket.

Úgy gondolom - de csak gondolom -, hogy konverziónál fordulhat elő a nevek behelyettesítése.

A verzió figyelés azért is lehet hasznos, mert az újabb verziókban vannak olyan lehetőségek/tulajdonságok, amelyek a régiekben nem működnek, ezért azokat a műveleteket ajánlatos elkerülni.

 

Üdv.

 

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

Most esik le a tantusz, hogy ez nagyobb probléma, mint gondoltam!

 

Tud valaki olyan módszert, amivel egy másik munkalapon elhelyezett lista alapján xls munkafüzetben Excel 2000-től 2010-ig megbízható módon működő legördülő listás adatérvényesítést lehet csinálni?

 

Előzmény: Sánta Kutya (SK) (23208)
Törölt nick Creative Commons License 2013.12.04 0 0 23302

Szívesen.

Jobban belegondolva, ha munkafüzetek megnyitása van a ciklusmagban, akkor a DoEvents által okozott lassulás valószínűleg nem is vehető észre.

Én úgy teszteltem, hogy ciklusban felvettem a ListBoxba 2000 UUID-t, és ott a DoEvents kb. kétszeresére növelte a futási időt. De még így is csak 12 másodperc volt, szóval... :-)

 

Előzmény: Pit-bit (23297)
Törölt nick Creative Commons License 2013.12.04 0 0 23301

Azt lehetne, hogy egy mini adatbázist tárolni egy (rejtett) munkalapon, ahol az egyes cellákhoz tartozó képek elérési útvonala van, vagy inkább rögtön a méretadatok. Abból egyszerűen helyre lehetne állítani a méreteket. Persze egyszer meg kell csinálni a listát, ezt nem lehet el/megkerülni, de aztán már csak karban kell tartani, ami talán nem olyan vészes.

Előzmény: JT2 (23288)
NPW Creative Commons License 2013.12.04 0 0 23300

Köszi, ez hasznos!

 

Már csak azt nem értem, hogy az otthoni 2007-es Excel miért tudta eredetileg a negyvenezres dátumokkal is kiszámolni, míg a munkahelyi 2010-es nem; megnéztem, a beállításoknál ugyanúgy (a default) mindkettő.

Előzmény: Fferi50 (23262)
NPW Creative Commons License 2013.12.04 0 0 23299

természetesen nem a 123.-ra emeltem, csak a hozzászólásban nekem is eltűnt a backslash... :-)

Előzmény: Fferi50 (23244)
Törölt nick Creative Commons License 2013.12.04 0 0 23298

Szerintem félreérted a feladatot (vagy én értem félre). Arról van szó, hogy adott egy munkalap, amin már eleve vannak képes megjegyzéssel ellátott cellák.

Tehát nem most teszem be a képet, hanem eleve adva van. Ha most tenném be, akkor gyerekjáték lenne a méreteit meghatározni, és a comment szövegdobozát aszerint formázni. De ha már benne van a kép, akkor hogyan szeded ki belőle? Én erre nem találtam megoldást, kezelőfelületen sem, és programban sem. Erre a kérdésre a te ötleted sem válasz.

Előzmény: Fferi50 (23285)
Pit-bit Creative Commons License 2013.12.04 0 0 23297

Jimmy the Hand , köszönöm a segítséget,

a DoEvents működik, a futásidő megnövekedése pedig nem számít, a lényeg az elvi működés.

Előzmény: Törölt nick (23231)
Fferi50 Creative Commons License 2013.12.04 0 0 23296

Szia!

 

Akkor viszont a worksheet calculate eseményét kell kihasználni:

 

Private Sub Worksheet_Calculate()
If Range("Z1").Value <> Range("H2").Value Then
   Application.EnableEvents = False
   Range("F3").Value = Range("H3").Value
   Range("Z1").Value = Range("H2").Value
   Application.EnableEvents = True
End If
End Sub

 

Ez akkor fut le, amikor a munkalap adatai újraszámolódnak.

Viszont nekünk csak akkor kell a folyamat, ha a H2 cella értéke megváltozik. Ezért ezt el kell tárolnunk valahova, erre szolgál a Z1 cella a példában (de bárhova is teheted).

Ha a Z1 értéke nem egyezik a H2 értékével, akkor lefut a kívánt akció és a Z1 értékét is átállítja.

Legközelebb, ha kiváltódik az esemény - újraszámolja a munkalapot -  de a H2 cella értéke nem változik, nem fut le az akció.

 

Remélem, így már megfelel a céljaidnak.

 

Üdv.

Előzmény: enyan (23295)
enyan Creative Commons License 2013.12.04 0 0 23295

Ez nagyon állat, működik is, viszont csak akkor, ha én írom át a cella értékét. Egyébként ez a cella egy szummázás végösszegét tartalmazza, aminek az értéke változik a többi munkalap adataitól függően. Valahogy el kéne érni, hogy fusson a makró akkor is, ha egy másik munkalap megváltoztatásának hatására változik meg a folyamat beindítására használt cella értéke. Remélem ez sem bonyolítja túl a helyzetet, mert már majdnem tökéletes!!!

 

Köszi mégegyszer!

Előzmény: Fferi50 (23294)
Fferi50 Creative Commons License 2013.12.04 0 0 23294

Szia!

 

Számodra a megoldás egy eseménykezelő eljárás:

 

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Nothing Is Application.Intersect(Target, Range("H2")) Then
   Application.EnableEvents = False
   Range("F3").Value = Range("H3").Value
   Application.EnableEvents = True
End If
End Sub

 

Ezt másold be az adott munkalap kódlapjára.

Ha a bal oldalon kiválasztod a worsheet-et, akkor jobb oldalon megjelennek az események. Itt válaszd ki a Change eseményt.

Ekkor a kódlapon megjelenik a fentiekben nem vastagított 2 sor.

Közéjük másold be a vastagított sorokat.

 

Üdv.

 

Előzmény: enyan (23293)
enyan Creative Commons License 2013.12.04 0 0 23293

Sziasztok!

 

Átrágtam magam az ajánlott könyvön, valamit talán még tanultam is belőle, de hogy új makrót írjak, arra nincs sok esélyem.

Viszont most talán pontosabban meg tudom fogalmazni, hogy mit csináljon a makró. Ha valaki össze tudja dobni, az nagy segítség lenne. Tehát az adott munkafüzet h2-es cella értékének a változására kellene lefutnia és egész egyszerűen a h3-as cella értékét kellene átmásolnia az f3-as cellába. Persze több másolás kell majd, de a többivel talán majd én is tudom bővíteni. Nagy problémám, hogy nem tudom például a kijelöléseket megszűntetni. Valahogy úgy kéne lefuttatni a makrót, hogy ne generáljon smmi más változást beleértve a kijelölések megváltoztatását, egyszerűen csak kerüljön bele a célcellába a másolt cella értéke. Lehet ilyet csinálni?

 

Köszönöm előre is!

Előzmény: tbando (22424)
Delila10 Creative Commons License 2013.12.04 0 0 23292

Most meg rossz helyre tettem, de többször már nem javítok, úgyis tudjátok.

Előzmény: Delila10 (23291)
Delila10 Creative Commons License 2013.12.04 0 0 23291

Nálam is megette. :(

 

ActiveSheet.Pictures.Insert("E\:JpgLóÁtló.jpg").Select

Selection.ShapeRange.Fill.UserPicture "E\:JpgLóÁtló.jpg"

Előzmény: Delila10 (23290)
Delila10 Creative Commons License 2013.12.04 0 0 23290

Rögzítettem egy makrót, majd itt-ott töröltem belőle.

A lényeg, hogy behívom a képet, elteszem a 2 méretét 1-1 változóba, törlöm a képet.

Beszúrok egy megjegyzést, ehhez az előbb tárolt 2 méretet rendelem, majd be(le)szúrom ismét a képet. Itt nem foglakoztam a képernyőfrissítés tiltásával és engedélyezésével. Kicsit kacifántos módszer, de működik.

 

Teheted ciklusba, ha az egyes képek útvonalát és nevét előbb tároltad az egyes sorokban.

 

Sub Rögzítés1()
    Dim magassag As Double, szelesseg As Double
    ActiveSheet.Pictures.Insert("E:JpgLóÁtló.jpg").Select
    Selection.ShapeRange.LockAspectRatio = msoFalse
    magassag = Selection.ShapeRange.Height
    szelesseg = Selection.ShapeRange.Width
    Selection.Delete
    Range("A1").AddComment
    Range("A1").Comment.Shape.Select True
    Selection.ShapeRange.Height = magassag
    Selection.ShapeRange.Width = szelesseg
    Selection.ShapeRange.Fill.UserPicture "E:JpgLóÁtló.jpg"
    Range("A1").Comment.Text Text:=""
End Sub

Előzmény: JT2 (23288)
Delila10 Creative Commons License 2013.12.04 0 0 23289

Nagyobb berendezéseket gyártottunk, amiknek az állapotáról havonta kellett tájékoztatni a vezetőséget. A munkaszámokat tartalmazó cellákhoz megjegyzésben csatoltam a berendezések aktuális állapotáról a felvételeket. Szerintem nagyon hasznos funkció.

 

Arra is jó, hogy pl. az ügyfelek fotóját tegyük a megjegyzésbe. A nevek kiesnek a fejemből, de egy fotó sokat segít az azonosításban.

Előzmény: Sánta Kutya (SK) (23287)
JT2 Creative Commons License 2013.12.04 0 0 23288

"Jelenleg azt gondolom, hogy rövidebb időbe fog telni neked megcsinálni az átméretezéseket manuálisan, mint nekem az, hogy erre programot eszkábáljak össze, úgyhogy átengedem a megoldás lehetőségét."

Sajnálom az elvesztegetett idődet, nem kitolásból tettem fel a kérdést hanem, mert több szem többet lát, hátha valakinek semmiség az ami nekem lehetetlen.

 

Manuálisan átméretezni? Már megfordult a fejemben de visszatart az, hogy valaminek a hatására (más szempont szerinti rendezés, törölt sor, stb...mittudomén) a képek méretei megváltozhatnak (ez már megtörtént, ezért vagyok itt) és akkor oda a belefektetett idő. Ilyenkor jönne jól egy makró, mely néhány másodperc alatt elintézné a problémát. Persze ha lehetetlen, akkor mást kell kitalálnom.

Előzmény: Törölt nick (23280)
Sánta Kutya (SK) Creative Commons License 2013.12.04 0 0 23287

Inkább tenném mellé egy külön cellába, hogy állandóan láthassam. :-)

Az én felfogásom szerint a megjegyzés csak olyasmire való, aminek nincs "üzemszerű" helye a táblázatban, nem funkcionális és csak a cellák kis részénél használjuk. Elég visszafogottan érdemes használni. De persze ez vitatható egyéni állláspont.

Előzmény: Fferi50 (23286)
Fferi50 Creative Commons License 2013.12.04 0 0 23286

Szia!

 

Én sem csináltam még ilyet, de pl. el tudom képzelni, hogy egy címlistában a nevet tartalmazó cella megjegyzésébe beteszed az illető fényképét.

Így amikor a cellán jársz, láthatod az illető mosolyát.:)

 

Üdv.

Előzmény: Sánta Kutya (SK) (23284)
Fferi50 Creative Commons License 2013.12.04 0 0 23285

Szia!

 

Amit írtam ötletet az működik, egy dologra kell vigyázni:

 

A megjegyzés szerkesztésénél a méret fülön levő dolgokat nem szabad piszkálni. (Érdekes módon ott engedi az eredeti méret és a rögzített arány bejelölését is, ezeknek jelöletlennek kell lenni).

 

Egyébként, ha programból szúrod be a képeket, akkor úgyis megtudod a méretet is.

 

 

Üdv.

 

Előzmény: Törölt nick (23282)
Sánta Kutya (SK) Creative Commons License 2013.12.04 0 0 23284

Sőt, még rafináltabban: elmented egyenként a képeket megadott képtípusban, megnyitva a file-okat kinyered a méretet a fejlécből, majd törlöd.

Megér ennyit, hogy a megjegyzésben legyen a kép? Nekem az életben nem támadt még ilyen ötletem.

Előzmény: Fferi50 (23283)
Fferi50 Creative Commons License 2013.12.04 0 0 23283

Szia!

 

Egy ötlet:

 

Beszúrod szép sorban a képeket a munkalapra. Arról le tudod olvasni a méreteket és máris át tudod tenni a megjegyzésre. Utána törlöd a beszúrt képet.

Nyilván for each ciklussal végig kell ballagni a megjegyzéseken. A hozzájuk tartozó képeket pedig csak tudja, honnan szúrta be.

 

Üdv.

Előzmény: Törölt nick (23282)
Törölt nick Creative Commons License 2013.12.04 0 0 23282

"Már csak azt kell tudnod, mennyi volt az eredeti méret."

 

Hát ez az. És azt honnan?

Előzmény: Fferi50 (23281)
Fferi50 Creative Commons License 2013.12.04 0 0 23281

Köszi!

 

Cserébe a formázás:

 

With Range("A1").Comment
     .Visible = True
     .Shape.Height = magasság
     .Shape.Width = szélesség
     .Visible = False
End With

 

Már csak azt kell tudnod, mennyi volt az eredeti méret.

Sajnos a scalewidth és scaleheight tulajdonságok itt nem működnek!

 

Üdv.

Előzmény: JT2 (23277)
Törölt nick Creative Commons License 2013.12.04 0 0 23280

Már elcs.sztem vele 4 órát eredmény nélkül. Most nincs több kidobni való időm.

Annyi bizonyosnak tűnik, hogy az objektum nem publikál semmiféle fogódzót, amivel a megjegyzés hátterének beállított kép tulajdonságait le lehetne kérdezni. Talán valami Windows függvénnyel meg lehetne ragadni, de erre sem találtam semmi értelmes tippet.

 

Jelenleg azt gondolom, hogy rövidebb időbe fog telni neked megcsinálni az átméretezéseket manuálisan, mint nekem az, hogy erre programot eszkábáljak össze, úgyhogy átengedem a megoldás lehetőségét.

Előzmény: JT2 (23278)
maciti Creative Commons License 2013.12.04 0 0 23279

Köszi a gyors reagálást! Ezzel a trükkel működik is!!!

Előzmény: Sánta Kutya (SK) (23269)
JT2 Creative Commons License 2013.12.04 0 0 23278

"Szoktam mondani, hogy Excellel bármit meg lehet csinálni, de most kedvem támadt visszavonni."

 

Jó lenne ha ha a fenti mondatodra rácáfolnál! Hajrá!:)

Előzmény: Törölt nick (23271)
JT2 Creative Commons License 2013.12.04 0 0 23277

kattints a cellára jobb billentyűvel

legördülő menü

megjegyzés beszúrása

kattints újra a cellára jobb billentyűvel

legördülő menü

megjegyzés szerkesztése

dupla katt a megjegyzés peremére

színek és vonalak

szín

kitöltési effektusok

kép

képválasztás

beszúrások

ok

ok

Előzmény: Fferi50 (23273)
Sánta Kutya (SK) Creative Commons License 2013.12.04 0 0 23276

Nem tudja előre, mikor melyik lesz az összefűzendő oszlop.

Szerintem sokkal egyszerűbb, amit én írtam, de nem akarok vetélkedni.

Előzmény: Fferi50 (23274)
Törölt nick Creative Commons License 2013.12.04 0 0 23275

Megjegyzés formázása -> Színek és vonalak -> Szín: Kitöltési effektusok -> Kép -> Képválasztás

Előzmény: Fferi50 (23273)
Fferi50 Creative Commons License 2013.12.04 0 0 23274

Szia!

 

A folytatásban fűzd össze az összetartozó oszlopokat és távolítsd el ami ezek után felesleges:

 

Az end sub elé:

Range("A1").entirecolumn.insert

Range("A1:A123").formula="=B1 & "" "" & C1"

Range('A1:A123").value=Range("A1:A123").value

Columns("B:C").delete

 

ugyanezt megcsinálod a C oszlopra:

Range("C1").entirecolumn.insert

Range("C1:C123").formula="=D1 & "" "" & E1"

Range('C1:C123").value=Range("C1:C123").value

Columns("D:E").delete

 

ha van még hasonló oszlop, akkor ugyanígy.

 

Üdv.

Előzmény: maciti (23267)
Fferi50 Creative Commons License 2013.12.04 0 0 23273

Szia!

 

Egyáltalán, hogy kerül a cella megjegyzésébe kép? Mert én eddig csak szöveget tudtam beletenni.

 

Üdv.

Előzmény: Törölt nick (23271)
Fferi50 Creative Commons License 2013.12.04 0 0 23272

Bocs!

 

Ez biztosan nem jó, mert ugyanazt csinálja!

 

Üdv.

Előzmény: Fferi50 (23270)
Törölt nick Creative Commons License 2013.12.04 0 0 23271

"olyan egyszerűnek tűnik"

 

Hát, nem egyszerű.

Szoktam mondani, hogy Excellel bármit meg lehet csinálni, de most kedvem támadt visszavonni.

Előzmény: JT2 (23261)
Fferi50 Creative Commons License 2013.12.04 0 0 23270

Szia!

 

Próbáld így:

 

Range("A1").TextToColumns Destination:=Range("A1"), _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=True, _
Tab:=False, _
Semicolon:=False, _
Comma:=False, _
Space:=True, _
Other:=False

Üdv.

Előzmény: maciti (23267)
Sánta Kutya (SK) Creative Commons License 2013.12.04 0 0 23269

Ha jól sejtem, ez egy makrórögzítővel felvett makró. Így soha nem fog menni, mert a szövegből oszlopok funkció csak egy határoló karaktert kezel.

De ha ugyanezt elkezded elölről több lépésben, pl. a makrórögzítés közben először csinálsz egy globális cserét (két szóközből valami nem használt karakter, pl. | vagy @, mindent cserél), majd az így bevezetett határolójel szerint bontasz, akkor sikerülni fog.

Lehet még turbózni a felesleges szóközökk törlésével is.

Előzmény: maciti (23267)
Fferi50 Creative Commons License 2013.12.04 0 0 23268

Szia!

 

Köszi, mondanám, hogy ezért írtam oda zárójelben, de sajnos nem így van. (Aztán meg hiába is vettem volna észre, szerkeszteni meg nem lehet a hozzászólást...ja, hogy ezért van az előnézet.)

tehát a kiváltó képlet helyesen

=LIN.ILL(C2:C6;A2:A6^{123})

 

Üdv.

 

Mindig tanul az ember!!!(is)

Előzmény: Sánta Kutya (SK) (23263)
maciti Creative Commons License 2013.12.04 0 0 23267

Sziasztok!

 

Tudna valaki segíteni abban, hogy egy stringből készített oszlop határoló karaktereit hogyan tudnám megváltoztatni. Az a problémám, hogy kettő, vagy több szóköz esetén kellene új oszlop.

 

például:

 

M 8   HIT-V M8*80/65                   8      8.8    HILTI      0.00kg

 

Ezt a lenti kódot próbáltam, de nem sikerül. Mindenképpen egy szóköz, vagy egymásutáni szimplán szereplő szóközök esetén teszi új oszlopba.

 

 

Sub Oszlopbabont8()
'
'

'
Range("A1").TextToColumns Destination:=Range("A1"), _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=True, _
Tab:=False, _
Semicolon:=False, _
Comma:=False, _
Space:=False, _
Other:=True, _
OtherChar:=" "

End Sub

 

Ez lett belőle:

 

 

Pedig ezt szertném:

 

 

 

Van valakinek ötlete?

 

 

 

Sánta Kutya (SK) Creative Commons License 2013.12.04 0 0 23266

:-)

Előzmény: Törölt nick (23265)
Törölt nick Creative Commons License 2013.12.04 0 0 23265

Úgy látom, igen.

Előzmény: Törölt nick (23264)
Törölt nick Creative Commons License 2013.12.04 0 0 23264

Ehhez négyszer kellett beírnod?

(próba: \\)

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

És a backslash jele továbbra is \\ a fórumban. :-)

Előzmény: Fferi50 (23262)
Fferi50 Creative Commons License 2013.12.04 0 0 23262

Mindenkinek, akit érdekel a tömbök használata!

 

Tbando-val addig agyaltunk NPW problémáján(ak egy részén), míg az alábbi érdekességre jöttünk rá:

 

Ezt a képletet:

=LIN.ILL(TRANSZPONÁLÁS(D9:R9);TRANSZPONÁLÁS(D$2:R$2)^{1;2;3})

ki lehet váltani ezzel:

=LIN.ILL(D9:R9;D$2:R$2^{1;2;3})

mivel a transzponálás mindkét bemenő tömböt érinti, ezért felesleges.

 

Viszont ha a képletünk oszlopvektorokat tartalmaz:

=LIN.ILL(TRANSZPONÁLÁS(C2:C6);TRANSZPONÁLÁS(A2:A6)^{1;2;3})

akkor a kiváltó képlet így néz ki:

=LIN.ILL(C2:C6;A2:A6^{123})

 

Az Excelben az oszlopvektorok elemeit a   ;   (pontosvessző) választja el, mig

                   a  sorvektorok elemeit a           (backslash) választja el.

 

Tehát transzponálás helyett egyszerűen kicseréljük az elválasztó jeleket, ha direktben adunk meg tömböket valamelyik képletben.

 

Üdv. mindenkinek!

JT2 Creative Commons License 2013.12.03 0 0 23261

Üdv mindenkinek!

 

Kellene egy kis segítség!

 

Már vagy egy hónapja próbálkozom készíteni rögzítéssel vagy szerezni egy olyan makrót, mely MSO 2003 Excelben a kijelölt cellákban a képet tartalmazó megjegyzés esetén beállítja a kép eredeti méretét. Ennyi! Ha ez egyáltalán lehetséges? Korábban találtam egy angol nyelvű topicot, ahol angolul már kérte ugyanezt valaki de ott nem tudták megoldani. írt mindenki mindenfélét de erre nem volt megoldás pedig olyan egyszerűnek tűnik.

tbando Creative Commons License 2013.12.03 0 0 23260

Belátom, igazad van.

 

Most már csak azt nem értem, hogy NPW-nek hogy-hogy nem tűnt fel, hogy a dátumtranszformációja utáni x^123-mal kapott Linill-je nem a harmadfokú polinomé. 

Előzmény: Fferi50 (23252)
wawabagus Creative Commons License 2013.12.03 0 0 23259

Fferi50, Jimmy the Hand!!!!

Zsenik vagytok!!!!!!!

Nagyon köszönöm a segítséget!!!!!

<3

J.

Fferi50 Creative Commons License 2013.12.03 0 0 23258

Szia!

 

Ebben viszont igazad van, ezt benéztem.

 

De még jobb így:

 

if  MsgBox(prompt:="Kér új számolást?", Buttons:=vbYesNo)=vbNo then

    exit sub

end if

loop

 

Változó sem kell, hiszen máshol úgysem használom.

 

A többi marad ugyanaz.

 

Üdv.

Előzmény: Törölt nick (23256)
Fferi50 Creative Commons License 2013.12.03 0 0 23257

Szia!

 

Szerintem belül is megy a dolog.

 

Üdv.

Előzmény: Törölt nick (23254)
Törölt nick Creative Commons License 2013.12.03 0 0 23256

Ja és még valami.

 

A Choose változó tartalmazza a választ, de a Response változót vizsgálod?

 

Előzmény: wawabagus (23253)
Fferi50 Creative Commons License 2013.12.03 0 0 23255

Szia!

 

A macro elejére, ahol az érdemi végrehajtás kezdődik beírod:

 

do while true

 

A feltétel vizsgálatnál pedig:

Choose = MsgBox(prompt:="Kér új számolást?", Buttons:=vbYesNo)
If Response = vbNo Then
    Exit Sub

End if

loop

end sub

 

Üdv.

Előzmény: wawabagus (23253)
Törölt nick Creative Commons License 2013.12.03 0 0 23254

Ezt a kérdést nem a makróban kellene feltenni, hanem azon kívül.

 

Sub Izé()

Dim Wálasz As Long

    Do

        Masodfoku1

        Wálasz = MsgBox("Még egy kört?", vbYesNo)

    Loop Until Wálasz = vbNo

End Sub

Előzmény: wawabagus (23253)
wawabagus Creative Commons License 2013.12.03 0 0 23253

Sziasztok!

Segítséget szeretnék tőletek kérni.

 

Van egy macro...fut fut...majd a végén felteszek egy kérdést. Ha a válasz nem, akkor kilépek a macroból, ha igen, akkor újra kéne magát indítani...

 

Ezzel vagyok gondban. Hogyan tudom újra indítani a macrot a macro végén egy feltételhez kapcsolva?

 

Eddig ezt csináltam....működik a kilépés, de nem tudom elindítani újra önmagát...

 

Tudtok segíteni esetleg?

Előre is köszi!

 

Sub Masodfoku1()

.

.

.

.

Choose = MsgBox(prompt:="Kér új számolást?", Buttons:=vbYesNo)
If Response = vbYes Then
DoCmd.RunMacro "Masodfoku1"
Else
' The no button was selected.
Exit Sub
End If

Fferi50 Creative Commons License 2013.12.03 0 0 23252

Szia ismét!

 

Másrészt, ha csinálsz egy próbát a lin.ill függvénnyel, akkor azt látod, hogy az x a 123-on -ra azt írja ki, hogy #szám, majd az egészre azt, hogy #érték, mert a #szám bemeneti érték nem megfelelő az x értékekre.

 

Tehát még akkor is jön az #érték hibaüzenet, ha tömbképletként van bevive egyébként.

 

Üdv.

 

 

 

 

 

Előzmény: tbando (23248)
tbando Creative Commons License 2013.12.03 0 0 23251

Aha. Erre nem is gondoltam, hogy egy tömbképletet a 2010-n nem tömbképletként akar bevinni. 

Előzmény: Fferi50 (23249)
tbando Creative Commons License 2013.12.03 0 0 23250

A szűrt listából szerintem sehogy se akard eltüntetni a már nem x-ket, mert aki kimaradt belőle, az már nem tud visszakerülni. 

 

Amit te akarsz szerintem, azt egy új szúréssel tudod elérni. Ehhez átírhatod a kritériumtartomány első celláját, ahogy Fferi javasolta, vagy megcsinálod az én indexes oszlopaimat, de az irányított szűrés helyett alkalmazhatod a normál szűrést is az új nap oszlopát választva.

Előzmény: Hellcat86 (23247)
Fferi50 Creative Commons License 2013.12.03 0 0 23249

Szia!

 

Ez a hibaüzenet akkor is, ha nem tömbképletként viszi be...

 

Üdv.

Előzmény: tbando (23248)
tbando Creative Commons License 2013.12.03 0 0 23248

OK. De a hibaüzenete nem érvénytelen számra, hanem érvénytelen argumentumra utal.

Előzmény: Fferi50 (23246)
Hellcat86 Creative Commons License 2013.12.03 0 0 23247

Köszi a segítséget, sikerült kiszűrni őket, meg is van mindenki akinél x van. Már csak az az egyetlen kérdésem lenne, hogy ha változik a beosztás akkor hogyan tudom automatizálni, hogy akinél már nem x van azt eltüntesse a szűrt listából, vagy akinél megjelenik az x azt belevegye; frissítse a listát?

Előzmény: tbando (23243)
Fferi50 Creative Commons License 2013.12.03 0 0 23246

Szia!

 

Nézd meg lsz. amit NPW-nek írtam. Kipróbáltam, a mai dátum a 123-on már nem megy be az Excel agyába!

 

Üdv.

Előzmény: tbando (23242)
tbando Creative Commons License 2013.12.03 0 0 23245

Ha túl nagy a szám, akkor #SZÁM hibát ír ki.  Az #ÉRTÉK a nem megfelelő típúsú argumentumot jelöli. 

Előzmény: NPW (23212)
Fferi50 Creative Commons License 2013.12.03 0 0 23244

Szia!

 

Már ne is haragudj, csak nagyon halkan és csendesen mondom, hogy ez a képlet:

=LIN.ILL(TRANSZPONÁLÁS(D9:R9);TRANSZPONÁLÁS(D$2:R$2)^{123})

nem egyenlő ezzel:

=LIN.ILL(TRANSZPONÁLÁS(D9:R9);TRANSZPONÁLÁS(D$2:R$2)^{1;2;3})

 

Az elsővel a 123-dik hatványra kívánod emelni a dátumokat!!! Ezt nem bírja már el az excel.

 

Szerintem próbálkozz mégis a beállításokat megnézni!

 

Üdv.

Előzmény: NPW (23227)
tbando Creative Commons License 2013.12.03 0 0 23243

A Munka1 táblázatodnak nincs fejléce. úgy elég nehéz szűrni.

 

Meg azt sem írtad meg, hogy melyik napra akarod elvégezni a szűrést.

 

Ha a naponkénti munkavégzőket akarod listázni, akkor azt javaslom, hogy miután megcsináltad a fejlécet, a táblázat mellé tegyél még 2 oszlopot. Az első a névoszlop, a második pedig a vizsgálandó napé lesz. És ezekbeaz index függvénnyel hozd ki a neveket meg az adott napot. Majd erre a 2 oszlopra szűrjél 

Előzmény: Hellcat86 (23241)
tbando Creative Commons License 2013.12.03 0 0 23242

Most támadt egy eszement ötletem. Mint anno SK-nak, aki rájött hogy a magyar excel a magyar abc kettős betűit 1 betűnek látja, szemben a vba-val, amelyik nem.

 

Szóval én el tudom képzelni, hogy a 2010-es excel a dátumfomákból való számolásnál dátumformában akarja kiírni az eredményt, amiknél azonban már értelmezhetetlenek a baszomnagy számok. 

Előzmény: tbando (23240)
Hellcat86 Creative Commons License 2013.12.03 0 0 23241

Köszönöm a segítséget, de lehet rosszul írtam le a problémámat, mert a Speciális Szűrővel nem sikerült megoldanom.

 

Munka1-ről szeretném a Munka2-re kilistázni azokat a neveket, amelyiknek az adott napnak megfelelő oszlopban 'X' van megadva.

 

Csatoltam két képet is, a két munkafüzetről, hogy könnyebb legyen átlátni mi a problémám.

 

    

 

                 Munka 1                                          Munka 2

Előzmény: Fferi50 (23238)
tbando Creative Commons License 2013.12.03 0 0 23240

Lehetséges. Ehhez annyira nem értek. Bár szerintem akkor a 2007-es excelben is átcsúszott volna.

Előzmény: Fferi50 (23237)
tbando Creative Commons License 2013.12.03 0 0 23239

Kösz!. Megjött. Studiroznom kell, ami számomra nem olyan eccerű. Ugyanis ez az én egyik szűk keresztmetszetem. A térlátás.  Egyetlen tantárggyal nem tudtam megbarátkozni a gimis éveim során, az ábrázoló geometriával.  És beugrik a matek érettségim is, amikor a 4 feladatból 3-mal negyedóra alatt végeztem, de a negyedikkel meg még azóta is küszködöm. Mert abban egy forgástest felszínét és volumenét kellett kiszámolni, ami elég bajos, ha az ember a forgástestet nem látja, nem tudja elképzelni.  És így vagyok ezekkel a kurva márixokkal is. A 2 dimenziósak még csak-csak, de a többdimenzósoknál teljes sötétség.  De talán sikerül megértenem :))))

Előzmény: Fferi50 (23234)
Fferi50 Creative Commons License 2013.12.03 0 0 23238

Szia!

A speciális szűrő 2010 előtt irányított szűrő-nek volt nevezve. De ugyanazt és ugyanúgy végzi.

 

Üdv.

Előzmény: Hellcat86 (23229)
Fferi50 Creative Commons License 2013.12.03 0 0 23237

Szia!

 

Viszont a mátrix számolási műveletekben simán átcsúszhat az Excel által már nem értelmezett tartományba...

 

Üdv.

Előzmény: tbando (23235)
Fferi50 Creative Commons License 2013.12.03 0 0 23236

Szia!

 

Az adatok - speciális szűrő a Te barátod.

Az A és B oszlop első cellája legyen cimke, pl. dolgozó és jelen.

Ezután mondjuk a C oszlop első cellájába beírod jelen, a C oszlop második cellájába beírod x.

 

A speciális szűrő párbeszéd panelján bejelölöd a más helyre másolás és a csak egyedi értékek kapcsolókat.

A listatartomány az A:B oszlopod értékekkel bíró része.

A szűrőtartomány C1:C2

A hova másolja helyre egy cellát kijelölsz.

 

Ezután OK gomb.

 

Csak azok a dolgozók jelennek meg az x-el együtt, akiknél a B oszlopban x volt.

 

Ezt alkalmazhatod a többi jelölésre is, ha C2 tartalmát átírod.

 

Üdv. 

Előzmény: Hellcat86 (23229)
tbando Creative Commons License 2013.12.03 0 0 23235

Nézd meg az adatérvényesítést az adott oszlopra. Mert azt kizártnak tartom, hogy a munkalapok alapból korlátoznák 40.000^3-nál nagyobb számok használatát. 

Előzmény: NPW (23232)
Fferi50 Creative Commons License 2013.12.03 0 0 23234

Szia!

 

Privi ment!

 

Üdv.

Előzmény: tbando (23226)
Fferi50 Creative Commons License 2013.12.03 0 0 23233

Szia!

 

Bocsi, de mi értelme van 2013-at, mint dátumot négyzetre és köbre emelni egy regresszió számításnál?

 

Az A megoldás az, amit csináltál (már ha jól értettem, hogy a kezdődátum az adatsor első dátuma).

Ilyenkor simán az 1,2,3,.... értékeket kell  x-nek felvenni, hiszen az y adat nem az évszám nagyságához korrelál, hanem az egymás utáni adatok összefüggését (trendjét) szeretnéd megtudni.

 

Üdv.

Előzmény: NPW (23232)
NPW Creative Commons License 2013.12.03 0 0 23232

Rájöttem, mi volt a probléma a 2010-zel, sajnos elég banális!!!

 

Az x értéksorban dátumok voltak megadva, amit az excel 41-ezeregynéhánynak érzékel.

És úgy tűnik, hogy a munkahelyi 2010-es Excelnek ezek túl nagy számok, hogy a másodikra, harmadikra emelje...

 

Esetleg van valakinek ötlete, hogyan lehetne a beállításoknál átállítani, hogy ezeket is tudja számolni?

 

...

 

Közben rájöttem egy B megoldásra: ha mindegyik dátumból kivonom a kezdődátum értékét, ugyanolyan jól működő lesz a függvény, és ki is tudja számolni.

De ha esetleg valaki tudja az A megoldást, az is jó lenne!

 

 

Előzmény: Fferi50 (23223)
Törölt nick Creative Commons License 2013.12.03 0 0 23231

Tedd be a ciklusba az alábbi utasítások valamelyikét:

 

DoEvents

 

vagy

 

Me.Repaint

 

Azzal azért számolj, hogy ez meg is lassítja a kód futását. Esetleg érdemes lehet a cikluson belül egy számlálót futtatni, és pl. minden tizedik, huszadik, vagy századik ciklusvégrehajtásnál használni a fenti parancsok egyikét.

Előzmény: Pit-bit (23228)
Sánta Kutya (SK) Creative Commons License 2013.12.03 0 0 23230

A legegyszerűbb megoldás, ha ráteszel a fejlécre egy szűrőt, és rászűrsz az x-re, aztán esetleg az eredményt ki is másolhatod egy másik munkalapra, és utána kikapcsolhatod a szűrőt.

Előzmény: Hellcat86 (23229)
Hellcat86 Creative Commons License 2013.12.03 0 0 23229

Sziasztok!

Egy olyan problémával küzdök Excelben, hogy már befonom a hajam tőle kb.

 

A helyzet a következő:

 

Adott az A oszlop: a, b, c, d, e, f, g, h (alkalmazottak nevei)

Adott a B oszlop: x, x, y, z, y, x, z, x (x=munkanap, y=szabadság, z=szabadnap)

 

Szeretném, csak azoknak az alkalmazottaknak a neveit kigyűjteni egy külön oszlopba lista szerűen, akiknek a neve mellett x van, tehát dolgoznak.

 

Előre is köszi a segítséget!

 

Üdv.

Hellcat86

Pit-bit Creative Commons License 2013.12.03 0 0 23228

Üdv.

Visual Basic programozáshoz kérek segítséget.

Megírtam egy makrót EXCELL-ben. A makró tartalmaz egy FORM-ot (listbox, labelek, parancsgombok - commandbuttonok). Az egyik parancsgombra való kattintás után generálok egy DO ... LOOP ciklust, amelyben sorra megnyitok adatfájlokat (.xlsm), néhány adatot elhelyezek a form listboxában és labeljein, az adatfájlt bezárom, majd folytatom a ciklust.

A gondom az, hogy a FORM-on elhelyezett adatok a ciklus folyamán nem jelennek meg folytonosan, csak a ciklus befejezése után egyszerre.

Valamit be kellene állítanom?

A segítségeket köszönöm!

NPW Creative Commons License 2013.12.03 0 0 23227

Sajnos a 2010-es továbbra is kifog rajtam :-(

A kitevő mátrixban ha a -t átírom ;-re, hibát jelez. Viszont a -k közé írt számokat tetszés szerint módosítgathatom, adhatok hozzá újakat, elvehetem, azt nem bánja.

 

=LIN.ILL(TRANSZPONÁLÁS(D9:R9);TRANSZPONÁLÁS(D$2:R$2)^{123})

 

Próbáltam a LIN.ILL függyvány utolsó két argumentumát (igaz/hamis párok) variálni, az sem segít.

 

Amit küldtél példa, abból nem derül ki, hogy tényleg a helyes adatokat számolja-e? (Vagyis azt, amit kiír a grafikonra.)

 

Előzmény: Fferi50 (23223)
tbando Creative Commons License 2013.12.02 0 0 23226

Amennyit én tudok a matrix müveletekről, az sajnos nem magyaráz semmit :(((.

Előzmény: Fferi50 (23225)
Fferi50 Creative Commons License 2013.12.02 0 0 23225

Szia!

 

A mátrix műveletek miatt. Nézz utána a mátrix algebra szabályainak és gondold végig a képlet részeit ennek fényében.

 

Üdv.

 

 

Előzmény: tbando (23224)
tbando Creative Commons License 2013.12.02 0 0 23224

Kösz!

 

Most már nekem is működik. 2007-tel. A kitevők között pontosvesszővel. 

 

De egy valamit nem értek: Mi a fenének kell az xy oszlopokat transzponálni? Mert kell. Van valami ötleted rá?

 

Mivel megcsináltam mezei módon is. Azaz az ABC oszlopokban az x^1, x^2, x^3 hatványokkal, és úgy a tartományokat transzponálás nélkül kell megadni.

Előzmény: Fferi50 (23219)
Fferi50 Creative Commons License 2013.12.02 0 0 23223

Szia!

 

A mátrixban (ill. tömbben) levő értékeket egyedileg nem engedi módosítani.

Megoldás

vagy a tömb törlése és az egyes cellák újraírása,

vagy a tömb kijelölése és a képlet módosítása tömbképletként az egész tömbre (a benne levő összes cellára).

Ha az x, y adatsort definiáltad tömbként, akkor megoldás lehet, hogy a tömböt törlöd és az adatokat tartalmazó tartományt elnevezed.

Akkor engedi a tartományban levő egyes cellák módosítását, a számmolásban viszont mátrixként veszi figyelembe.

 

Üdv.

Előzmény: NPW (23222)
NPW Creative Commons License 2013.12.02 0 0 23222

Biztos, én vagyok a béna, de nem működik...

Úgy tűnik, nem engedi a mátrixműveletben lévő mátrixot módosítani, hiába nyomom a végén a ctrl-shift-entert.

Előzmény: Fferi50 (23218)
Tagore1972 Creative Commons License 2013.12.02 0 0 23221

Szia!

 

köszi a tippet, ez tényleg nem jól működik,

ám ebből is tanultam, mert eddig csak 2 tartományra használtam

a szorzatösszeg függvényt, de többre is működik.

 

üdv Joe

Előzmény: Sánta Kutya (SK) (23193)
Tagore1972 Creative Commons License 2013.12.02 0 0 23220

Szia!

 

Nagyon köszönöm, jól működik :-)

 

üdv Józsi

Előzmény: tbando (23195)
Fferi50 Creative Commons License 2013.12.02 0 0 23219

Csak a képet nem illesztettem be.

 

Üdv.

Előzmény: Fferi50 (23218)
Fferi50 Creative Commons License 2013.12.02 0 0 23218

Szia!

 

A képen láthatod az én képletemet.

 

 

Hát nem túl látható, de ilyen:

 

{=LIN.ILL(TRANSZPONÁLÁS(y_adatsor);TRANSZPONÁLÁS(x_adatsor)^{1;2;3})}

 

Üdv.

Előzmény: tbando (23217)
tbando Creative Commons License 2013.12.02 0 0 23217

Nem sikerült megoldanom. Nálam el se fogadja a becopyzott képletet, a Beirt képlet hibás üzenettel, és a hibakurzor rááll a kapcsoszárójeles  kitevőkre.  ?????

Előzmény: Fferi50 (23215)
Fferi50 Creative Commons License 2013.12.02 0 0 23216

Bocsi-bocsi!

 

"rejtéjét" = rejtélyét

Előzmény: Fferi50 (23215)
Fferi50 Creative Commons License 2013.12.02 0 0 23215

Szia!

 

Bocs, de már nem emlékeztem rá. A kapcsos zárójelek "rejtéjét" ezek szerint már megoldottad azóta.

 

Üdv.

Előzmény: tbando (23214)
tbando Creative Commons License 2013.12.02 0 0 23214

A 23165-ben már megírtam.  A mintapéldában a számok tizedesvesszősök voltak, én meg tizedespontot használok.  Így aztán az excelem stringnek értelmezte a súgópélda tizedeszámait. Amit a LIN.ILL nem fogad el.

Előzmény: Fferi50 (23211)
Fferi50 Creative Commons License 2013.12.02 0 0 23213

Szia!

 

Tömbképletként kell bevinni!

Leírnád ide a képletedet, amire hibát ír ki?

 

Üdv.

Előzmény: NPW (23212)
NPW Creative Commons License 2013.12.02 0 0 23212

Ekkor #érték! hibát ír ki... :-(

Előzmény: Fferi50 (23201)
Fferi50 Creative Commons License 2013.12.02 0 0 23211

Szia!

 

Elárulnád, hogy mi volt a "bibi"?

 

Üdv.

Előzmény: tbando (23210)
tbando Creative Commons License 2013.12.02 0 0 23210

A Lin.ill 2007-es súgója  megegyezik a 2003-aséval. És mivel a 2003-as hálistennek kevésbé okos mint a 2007-es, azon jöttem rá, hogy a súgó péda becopyzása miért nem müködik a 2007-en sem :)))).

Előzmény: Fferi50 (23205)
Törölt nick Creative Commons License 2013.12.02 0 0 23209

Ez kedves, de túlzás. Na jó, makró oldalról talán igaz, de a táblázatkezelő furfangjait szerintem legalább olyan jól tudjátok, mint én. Vagy még jobban.

Előzmény: Sánta Kutya (SK) (23204)
Sánta Kutya (SK) Creative Commons License 2013.12.02 0 0 23208

Stimmel. A táblázatomban névvel volt megadva a tartomány, ez 2007-ben működött is.

Majd amikor megkaptuk ajándékba ezt a csodálatos 2010-est, akkor elromlott az egyik nagyon fontos táblázatom, és kiderült, hogy a 2010 öntevékenyen lecserélte a nevet cellahivatkozásokra, ráadásul $ jel nélkül, tehát csak az oszlop legfelső cellájában működött normálisan, és a kollégák néhány napig nem tudták rendesen használni ezt az alapvető táblázatot. Itt is ez történhetett.

 

Tehát a megoldás két részből áll:

1. A régebbi verzióban létrehozott adatérvényesítésekhez az első megnyitás után újból hozzárendelni a nevet (hátha így már békén hagyja, és nem kell minden alkalommal újra megtenni).

2. Rendkívül csúnyákat gondolni arra a "programozóra" (opcionálisan az édesanyjára), aki ezt a viselkedést beletervezte.

Előzmény: Fferi50 (23207)
Fferi50 Creative Commons License 2013.12.02 0 0 23207

Szia!

 

A KIMETSZ az a TRIM függvény "magyarítása" lett.

 

A 2010-ben konkrétan megadhatsz adatérvényesítést másik munkalapra hivatkozva. 2003-ban ez csak név megadással működött szerintem.

 

Üdv.

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

Mi az a KIMETSZ a 2010-ben? Konkrétan az érdekel, hogy egy régebbi függvény átnevezése-e? Merthogy egyszer csak felbukkant egy táblázatomban a 2010 telepítése után, pedig sose láttam.

 

A másik érdekes az volt, hogy az xls táblázatom mentésekor nyivákolni kezdett a 2010, hogy az egyik munkalapom az adatérvényesítés egy másik munkalapról veszi a megengedett értékeket, és ez funkcióveszteség, mert a 2003 ilyet nem tud. Ami pedig konkrétan hazugság, és a 2007 nem is reklamált érte.

Fferi50 Creative Commons License 2013.12.02 0 0 23205

Szia!

 

Mondanám, hogy tudja a fene!:)

De attól még a területi beállítások bejátszhatnak, hogy mindkettő magyar.

Egyébként lehet, a 2007-es súgóban is meg kellene nézni.

(Nekem csak 2003-as és 2010-es excelem van. 2007-est már nem látok - munkahelyemen volt olyan, de ma már ez nem játszik.)

 

Üdv.

Előzmény: tbando (23202)
Sánta Kutya (SK) Creative Commons License 2013.12.02 0 0 23204

Szerintem mi ketten együtt már egészen jól tudjuk az Excelt. Azt vettem észre, hogy egy csomó mindent tudsz, amit én nem, és fordítva is. Persze Jimmy valószínűleg többet tud, mint mi ketten együtt.

Előzmény: tbando (23203)
tbando Creative Commons License 2013.12.02 0 0 23203

Ilyesmi időnként előfordul :))). Én például jimmy előbbi képletén filóztam vagy 10 percig, míg megértettem :)))

Előzmény: Sánta Kutya (SK) (23197)
tbando Creative Commons License 2013.12.02 0 0 23202

OK, de akkor a 2007-es szintén magyar miért fogadja el ponttal? 

Előzmény: Fferi50 (23201)
Fferi50 Creative Commons License 2013.12.02 0 0 23201

Szia!

 

A magyar képletekben a tagok elválasztójele a pontosvessző. Szerintem így írd a 2010-es Excelbe:

 

=LIN.ILL(TRANSZPONÁLÁS(y adatsor);TRANSZPONÁLÁS(x adatsor)^{1;2;3})

 

Természetesen tömbképlettel.

 

A LIN.ILL még egyéb dolgokat is tud, érdemes elolvasni a súgóját.

 

Üdv.

Előzmény: NPW (23199)
tbando Creative Commons License 2013.12.02 0 0 23200

Sajnos a 2010-es excel problémában nem tudok segíteni. Így a 2010-ben kénytelen leszel a 23121 hsz szerinti polielo udf-függvényt használni, természetesen 9. pont-beli For -jának a javításával, ahogy azt pár hsz-szel később megírtam.

Előzmény: NPW (23198)
NPW Creative Commons License 2013.12.02 0 0 23199

Még annyi, hogy az első fokú tag együtthatójának minden adatsor esetében 0-t számol ki a 2010-es Excel.

NPW Creative Commons License 2013.12.02 0 0 23198

Mind a két helyen magyar Excel van, csak a verziószám 2007/2010 különbözik.

 

Ami a kérdésedet illeti: csak simán kimásoltam az ausztrál oldalról, ahol találtam, és utána továbbmódosítottam (a képlet zárása a szokásos ctrl+shift+enter kombinációval), ezzel nem volt gond.

 

De valahol itt lehet a probléma, mert a 2007-es {1.2.3}-nek írja, és jól működik, míg a 2010 {123}-nek nyitja meg ugyanazt, és nem jó.

Csak nem tudom, ezt hol lehet korrigálni, a beállítások között nem találtam.

 

Előzmény: tbando (23165)
Sánta Kutya (SK) Creative Commons License 2013.12.01 0 0 23197

Na hogy ezek nekem sose jutnak eszembe!

Előzmény: tbando (23195)
tbando Creative Commons License 2013.12.01 0 0 23196

Eltekintve persze attól, hogy nem a CD oszlopok szorzatösszegét számolja, hanem a BC-ét :)))))

Előzmény: tbando (23195)
tbando Creative Commons License 2013.12.01 0 0 23195

Szerintem ez jó lesz (tömbképlet):

 

{=SZUM(HA(A2:A6=1;B2:B6*C2:C6))}

 

Előzmény: Tagore1972 (23192)
Sánta Kutya (SK) Creative Commons License 2013.12.01 0 0 23194

Nem is, úgy értettem, hogy vagy 1, vagy 0 van az A-ban.

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

Hihetetlenül trükkös módon: =SZORZATÖSSZEG(A1:A6;C1:C6;D1:D6)

Előzmény: Tagore1972 (23192)
Tagore1972 Creative Commons License 2013.12.01 0 0 23192

sziasztok!

 

Egy speciális (kritériumos) szorzatösszegre lenne szükségem:

 

=szorzatösszeg2(A2:A6;1;C2:C6;D2:D6)

 

azaz, ha

- az A oszlopban az érték 1, akkor

- szorozza össze rendre a sorában a C és a D oszlopban levő értéket,

- majd ezeket adja össze.

 

Persze megoldható lenne egy segédoszlop bevezetésével

=ha(A2=1;C2*D2;0)

de jó lenne nélküle megoldani.

 

 

köszi

 

üdv Joe

Sanyi0007 Creative Commons License 2013.11.30 0 0 23191

Köszönöm a segítséget.

Előzmény: Törölt nick (23190)
Törölt nick Creative Commons License 2013.11.30 0 0 23190

Többféle megoldás lehet, mondjuk itt egy:

=ÉRTÉK(HELYETTE(KÖZÉP(A1;SZÖVEG.KERES("(";A1)+1;10000);")";""))

Előzmény: Sanyi0007 (23189)
Sanyi0007 Creative Commons License 2013.11.30 0 0 23189

Sziasztok!

 

Van-e lehetőség arra az excelben, hogy egy ilyesmi szövegből: "xy termék (10986)", egy képlet

segítségével a zárójelben levő számot másoljam egy adott cellába?

makako6 Creative Commons License 2013.11.29 0 0 23188

Szia,

 

Köszönöm a segítséget, most már működik!

Előzmény: Fferi50 (23168)
makako6 Creative Commons License 2013.11.29 0 0 23187

Kedves TBando,

 

Nagyon szépen Köszönöm a gyors segítséget, ez Fantasztikus! )

 

Előzmény: tbando (23167)
makako6 Creative Commons License 2013.11.29 0 0 23186

"B" oszlop csak szöveg. Képlet, számadat csak C-D-E oszlopra vonatkona. Megtévesztő lehetett, hogy a kérdések mellé az adható pont értékét írtam be, pedig pont az ellenkezője volt a cél, hogy jobban személtessen.

Előzmény: Sánta Kutya (SK) (23166)
tbando Creative Commons License 2013.11.28 0 0 23185

Kösz. Majd emésztem :))))

Előzmény: Sánta Kutya (SK) (23181)
Sánta Kutya (SK) Creative Commons License 2013.11.28 0 0 23184

Szó szerint igazad van, de mégis szokás a "legbaloldalibb bitet" legmagasabb helyiértékűnek nevezni.

Merthogy nem feltétlenül jobbról a 8. (http://www.princeton.edu/~achaney/tmve/wiki100k/docs/Most_significant_bit.html -- a Conventions szakaszt nézd a dupla csavarért), ráadásul nem is helyes 8-iknak nevezni, mert nem csak egybyte-os számokról beszélünk, hanem akármekkorákról.

És a nyolcadik utast sokan hetedik utasnak hívják, mert nullától szokás számolni. Tehát a jobb szélső bit jobbról a nulladik...

 

A legmagasabb helyiértékű bit annyiban helytálló, hogy bármely egészt tekinthetünk előjel nélkülinek, és akkor tényleg az a legmagasabb helyiértékű; az meg nem magában a számban rejtőzik, hogy előjeles vagy sem, hanem az értelmezésen.

Ha egy kupac számot elmentesz és nem mondod meg hozzá az adatszerkezetet, akkor amúgy sem lehet rekonstruálni az értéküket. (Hány bitesek? Big vagy little endianként tárolódnak? Vagy BCD-ben? Előjelesen vagy sem?)

Előzmény: Fferi50 (23183)
Fferi50 Creative Commons License 2013.11.28 0 0 23183

Szia!

 

Ezt azért pontosítsuk: negatív az a szám, amelynek az előjelet jelző bitje 1.

Ez pedig nem lehet a szám legmagasabb helyiértékű bitje, hiszen akkor honnan tudnád, hogy -2 vagy a 3. amit ábrázol.

Az előjelbit pedig a jobbról számított 8. bit (ami annyiban legmagasabb "helyiértékű", hogy nem előjeles ábrázolásnál ezen a biten van a legmagasabb hatványhoz tartozó érték).

 

Üdv.

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

Előjeles esetben negatív az a szám, amelyiknek a legmagasabb helyiértékű bitje 1.

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

Ugyanazt a számot tekintheted előjeles és előjel nélküli egésznek is. Maga az 11111111 nem egyértelmű, ha nem rendeltél típust hozzá. A legtöbb nyelv ismeri a "signed int" és "unsigned int" típusokat ugyanannyi biten (bár ez éppen C-s megnevezés). Viszont ha -1-nek tekinted, az bitszámtól függetlenül minden egész típusra jó lesz, ha meg előjel nélkülinek, az 8 biten 255, 16 biten 65535 stb. A -1 meg örök és megbonthatatlan. :-)

 

Előjeles: -128 - +127

Előjel nélküli: 0 - +255

stb. több biten is.

 

Egyébként az előző hozzászólásomban az az érdekes, hogy beírás közben jöttem rá magam is. :-)

Előzmény: tbando (23180)
tbando Creative Commons License 2013.11.28 0 0 23180

Most nagy tudatlanságról tanuskodó kérdést teszek fel: az 11111111 a basicben miért -1 és miért nem 255?

Előzmény: Sánta Kutya (SK) (23178)
tbando Creative Commons License 2013.11.28 0 0 23179

Hm. Nem tudtam. Igaz, vba-ban sosem használtam. Viszont most esett le a tantusz, hogy retro image miért írt egy régi hozzászólásában  valami ilyesmit: a=-(b=c) *d. Kösz.

 

Előzmény: Fferi50 (23177)
Sánta Kutya (SK) Creative Commons License 2013.11.28 0 0 23178

Régi BASIC-es hagyomány az igaz értéket -1-nek venni. Ennek az az alapja, hogy ha egy byte-ot (szót stb.) feltöltünk csupa egyes bittel, akkor a kapott szám előjeles egészként -1-nek felel meg. Vagyis ez az a szám, amelyiknek minden bitje 1 (és így pl. a bitenkénti logikai műveletekben is feltétlenül igaz értékként viselkedik).

Előzmény: Fferi50 (23177)
Fferi50 Creative Commons License 2013.11.28 0 0 23177

Szia!

 

Annyi igaz, hogy a hamis mindkét helyen = 0.

 

Az igaz viszont a munkalapon = 1, VBA-ban pedig = -1.

 

Próbáld ki a VBA-ban a True * 1 kifejezést. Eredmény: -1.

 

Csak nyilván, nagyon ritkán "számolunk" vele, inkább használjuk a logikai "értéket". Pedig, mint az adott példa mutatta, egyszerűbb is lehet a képlet  esetenként, ha számnak tekintjük.

 

Üdv.

Előzmény: tbando (23176)
tbando Creative Commons License 2013.11.28 0 0 23176

Apropos: Hogy-hogy nem ugyanaz a szám van rendelve az igaz/hamis-hoz a vba-ban és a munkalapon? Én idáig abban a hiszemben voltam, hogy a hozzárendelt számok mindkét helyen 1 és 0.

Előzmény: Fferi50 (23174)
tbando Creative Commons License 2013.11.28 0 0 23175

Ez a legkreatívabb valóban :))))

 

Az előbbi meg a megoldásod elismerése mellett a saját figyelmetlenségemet díjazta :))))). 

Előzmény: Fferi50 (23174)
Fferi50 Creative Commons License 2013.11.28 0 0 23174

Szia!

 

Ez egy szerintem még szebb verzió:

 

E2-be a  képlet  =(D2="igen")*C2

 

Mivel a logikai kifejezéshez (igaz,hamis) is van számérték rendelve (ami a VBA-ban nem ugyanaz a szám, mint a munkalapon!!!)

 

Üdv.

 

ps. Tudom, a C oszlopnak szólt az elismerés.

 

 

Előzmény: tbando (23170)
lucabrazi Creative Commons License 2013.11.28 0 0 23173

Kösz!

 

 

 

Előzmény: tbando (23171)
tbando Creative Commons License 2013.11.28 0 0 23172

Úgy látom, mások se igen értik, hogy mit szeretnél. Ha még aktuális, tedd fel a Data.hu-ra, vagy küldd el priviben. Megnézem.

Előzmény: Tyorotyere (23139)
tbando Creative Commons License 2013.11.28 0 0 23171

Meg lehet. De attól függően, hogy mik az érényesítés feltételei, lehet egyszerű vagy komplikált.  Lehet, hogy simán alkalmazható az excel Adatok/érvényesítés parancsa, de lehet, hogy önmagában nem elég, és makrót kell az érvényesítéshez írni.  Ezért első lépésben nézd át az említett parancsot, és ha az nem elég, akkor írd meg a konkrét előírásaidat. 

Előzmény: lucabrazi (23169)
tbando Creative Commons License 2013.11.28 0 0 23170

:)))))

Előzmény: Fferi50 (23168)
lucabrazi Creative Commons License 2013.11.28 0 0 23169

Sziasztok!

 

Segítséget szeretnék kérni.

Meg lehet-e adni, pl.:hogy egy cellába csak bizonyos számokat és betűket lehessen írni.

Mást ne engedjen.

 

Köszönöm.

Fferi50 Creative Commons License 2013.11.28 0 0 23168

Szia!

 

Ha jól értelmezem a képet, akkor a C oszlopban található a kérdések (az igen válasz) pontértéke. Ekkor az eredmény oszlop E2 be írd be ezt a képletet:

=ha(D2="Igen";C2;0) és húzd végig az oszlopon.

 

Üdv.

Előzmény: makako6 (23164)
tbando Creative Commons License 2013.11.28 0 0 23167

Én is azt hiszem, hogy a legegyszerübb, ha az F-oszlopba beirod, hogy az adott kérdés igenje 1 vagy 2, az eredményoszlopba meg ezt a képletet:

 

=Ha(d2="igen";f2;0)

Előzmény: makako6 (23164)
Sánta Kutya (SK) Creative Commons License 2013.11.27 0 0 23166

Van rá valami nyomós okod, hogy a B oszlopban két adatot zsúfolj egy cellába? Ellenkezik a táblázatkezelés szellemével.

Előzmény: makako6 (23164)
tbando Creative Commons License 2013.11.27 0 0 23165

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?

Előzmény: NPW (23162)
makako6 Creative Commons License 2013.11.27 0 0 23164

Sziasztok,

 

Segítséget szeretnék kérni, az alábbi dologban:

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.

 

 

 

Fferi50 Creative Commons License 2013.11.27 0 0 23163

Szia!

 

Milyen nyelvű az otthoni Excel 2007-es otthon és milyen nyelvű az Excel 2010 a munkahelyen?

Mert a nyelvi beállítások okozhatnak problémát.

 

Üdv.

 

Előzmény: NPW (23162)
NPW Creative Commons License 2013.11.27 0 0 23162

A transzponálás akkor kell, ha egy sorban (vízszintesen egymás mellett) van az adatsor. Ha függőlegesen, akkor természetesen nem kell.

 

Viszont azt továbbra sem értem, hogy 2010-esben miért nem működik??????????

Előzmény: tbando (23125)
pimre Creative Commons License 2013.11.27 0 0 23161

Szia, köszönöm. Ezeket majd holnap tesztelem.

 

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.

Előzmény: Fferi50 (23160)
Fferi50 Creative Commons License 2013.11.27 0 0 23160

Szia!

 

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.

 

Üdv.

 

Előzmény: pimre (23158)
Fferi50 Creative Commons License 2013.11.27 0 0 23159

Szia!

 

Próbáld így:

Set eredm = ws.Range("A:A").Find(what:=kód, After:=Cells(1, 1), LookIn:=xlValues, LookAt:=xlWhole, _ SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)

 

Üdv. 

Előzmény: pimre (23158)
pimre Creative Commons License 2013.11.27 0 0 23158

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:

 

dim eredm as Range

...

Workbooks(wbnév).Activate
ws.Range("A:A").Select 
Set eredm = Selection.Find(what:=kód, After:=Cells(1, 1), LookIn:=xlValues, LookAt:=xlWhole, _
SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)

 

 

Előzmény: Fferi50 (23155)
tbando Creative Commons License 2013.11.27 0 0 23157

Hát akkor erre az listádra csinálj egy egyedi szűrést. Így mindegyik kombiból csak 1 db lesz. Vagy egy Adatok/Adateszközök/Ismétlődések eltávolítását. 

Előzmény: albino combino (23154)
Fferi50 Creative Commons License 2013.11.27 0 0 23156

Még egy kis kiegészítés:

 

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...)

 

Üdv.

Előzmény: Fferi50 (23155)
Fferi50 Creative Commons License 2013.11.27 0 0 23155

Szia!

 

Sejtettem, hogy valami ilyesmi lehet a dologban.

 

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.

 

Üdv.

 

 

Előzmény: pimre (23153)
albino combino Creative Commons License 2013.11.27 0 0 23154

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

Előzmény: tbando (23151)
pimre Creative Commons License 2013.11.27 0 0 23153

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

 

És a ws2.Range("A1").Select soron hibát jelez. 

Előzmény: Fferi50 (23141)
Fferi50 Creative Commons License 2013.11.27 0 0 23152

Szia!

 

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!!!"

 

Üdv.

 

Előzmény: albino combino (23150)
tbando Creative Commons License 2013.11.27 0 0 23151

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.

Előzmény: albino combino (23146)
albino combino Creative Commons License 2013.11.27 0 0 23150

őőő 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.

 

Előzmény: Fferi50 (23148)
albino combino Creative Commons License 2013.11.27 0 0 23149

mucsász grásziász  :)

igazad van, figyelmetlenül olvastam már a legelső válaszod, csináltam magamnak 1 óra pluszmunkát. 

köszönöm szépen, így minden megy normálisan

Előzmény: Fferi50 (23148)
Fferi50 Creative Commons License 2013.11.27 0 0 23148

Szia!

 

Közben megírtam neked!

Szerintem ez egy lépésben megy a darabteli általam javasolt formájában!

 

Üdv.

Előzmény: albino combino (23146)
Fferi50 Creative Commons License 2013.11.27 0 0 23147

Szia!

 

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!!!

 

És már jöhet is a darabteli függvény.

 

Remélem segít!

 

Üdv.

Előzmény: albino combino (23145)
albino combino Creative Commons License 2013.11.27 0 0 23146

elnézést, hogy telenyomom a falat...

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 :)

Előzmény: albino combino (23145)
albino combino Creative Commons License 2013.11.27 0 0 23145

Elkezdtem játszani a darabtelivel.

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.

 

valakinek tipp?

Előzmény: albino combino (23144)
albino combino Creative Commons License 2013.11.27 0 0 23144

Szia

 

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.

Előzmény: Fferi50 (23143)
Fferi50 Creative Commons License 2013.11.27 0 0 23143

Szia!

 

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.

 

Üdv.

Előzmény: albino combino (23142)
albino combino Creative Commons License 2013.11.27 0 0 23142

Sziasztok

 

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.

 

Ezt hogy tudom megoldani?

Köszi

Fferi50 Creative Commons License 2013.11.27 0 0 23141

Szia!

 

Pedig elvileg annak működnie kellene. Mutatsz egy kódrészletet?

 

Üdv.

Előzmény: pimre (23140)
pimre Creative Commons License 2013.11.27 0 0 23140

Szia, azért maradt még egy gondom:

 

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.

 

Ez kivédhető?

Előzmény: pimre (23138)
Tyorotyere Creative Commons License 2013.11.26 0 0 23139

Sziasztok!

 

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!

pimre Creative Commons License 2013.11.26 0 0 23138

Szia, köszönöm. Így érthető a dolog logikája is.

Előzmény: Fferi50 (23132)
kezdos Creative Commons License 2013.11.26 0 0 23137

Meg lett így, köszönöm szépen a gyors segítséget!

 

Előzmény: kezdos (23136)
kezdos Creative Commons License 2013.11.26 0 0 23136

Szerintem valamit mellé írhattam? 

http://prntscr.com/26rohc

Előzmény: Törölt nick (23134)
Fferi50 Creative Commons License 2013.11.26 0 0 23135

Szia!

 

Vagy A2 cellába =CSERE(A1;1;SZÖVEG.KERES("/";A1);"")

 

Üdv.

Előzmény: Törölt nick (23134)
Törölt nick Creative Commons License 2013.11.26 0 0 23134

Elnézést, azt hittem a fórum megfelezi a perjeleket. Helyesen:

 

=RIGHT(A1;LEN(A1)-FIND("/";A1))

Előzmény: Törölt nick (23133)
Törölt nick Creative Commons License 2013.11.26 0 0 23133

Szia!

 

Feltéve, hogy a szöveg amire a függvény hivatkozik, az A1 cellában van:

=RIGHT(A1;LEN(A1)-FIND("//";A1))

 

Előzmény: kezdos (23131)
Fferi50 Creative Commons License 2013.11.26 0 0 23132

Szia!

 

Az értékadásoknak attól függetlenül kell múködniük, hogy az adott munkalap aktív-e vagy sem. A leírt formában viszont valóban akkor működik helyesen, ha az a munkalap, amiről adatot kérsz, vagy amire adatot írsz, éppen aktív (erre sajnos nem gondoltam - sorry-). De ezt az akadályt kis módosítással el lehet hárítani.

Hogy miért van így, arra egy kis magyarázat:

Az excel minden olyan tulajdonságot, amihez nincs külön hivatkozás, az aktív munkalapon levőnek tekint. Azaz pl. az összws.range(cells(1,1),cells(1,utolsóoszlop)) kifejezést csak akkor tudja valóban értelmezni, ha az aktív munkalap az összws, mivel itt két tulajdonság van -range és cells - és két különböző hely lenne mivel a cells adatokat az aktív munkalapról szeretné venni és ez nem "fér össze" az össws-el.

 

Ennek elhárítása egyszerű: minden tulajdonsághoz oda kell írni a hivatkozását:

összws.range(összws.cells(1,1),összws.cells(1,utolsóoszlop)).value=fejlec

 

Ha csak egy tulajdonságot használsz, akkor elég az egy hivatkozás természetesen:

 

összws.range("A1:D1").value=fejlec, ez működik változókkal is:

összws.range("A1:" & utolsóoszlopbetűjele & elsősor).value=fejlec

 

De még így is:

cím = ws.range(ws.cells(1,1),ws.cells(1,utolsóoszlop)).address

összws.range(cím).value=fejlec

 

A változatokból nyilván mindig azt használjuk, ami éppen a leghatékonyabbnak tűnik az adott helyzetben.

 

Remélem, ezzel sikerült egy kicsit érthetőbbé tenni a működést és nem összezavarni amit eddig kikutattál.

 

Üdv.

Előzmény: pimre (23129)
kezdos Creative Commons License 2013.11.26 0 0 23131

Sziasztok!

Abban kérném seígtségeteket, hogy lenne egy ilyen formátumom:

 

12/szoveg1

145/szoveg2

189/szoveg3

 

A /-jel sem kellene ill. az előtte lévő számok sem. 

 

Erre milyen függvényt alkalmazhatnék?

 

Köszönöm a válaszokat!

pimre Creative Commons License 2013.11.26 0 0 23130

Még annyit kiegészítésül, hogy a ws és az összws munkalapok nem ugyanabban a munkafüzetben voltak. Most nem próbálgattam, hogy azonos munkafüzetben hogyan viselkedne a range parancs.

Előzmény: pimre (23129)
pimre Creative Commons License 2013.11.26 0 0 23129

Szia!

 

Most volt alkalmam kipróbálni az alábbi javaslatodat:

 

fejlec= ws.Range(Cells(1, 1), Cells(1, utolsóoszl)).value

összws.Range(Cells(1, 1), Cells(1, utolsóoszl)).Value=fejlec

 

Ahol a ws és az összws munkalapok, amelyeket dim ws as worksheet formában deklaráltam és set ws = Workbooks(akármi).Worksheets(másikakármi) módon adtam meg.

 

Az első sor működik, ha egyébként a ws munkalap aktív. A második azonban nálam csak akkor működött, ha kiadtam az összws.Activate parancsot.

 

 

Tehát tapasztalatom szerint a range használatához az adott munkalapnak aktívnak kell lennie. Jól látom? Erre vonatkozóan nem nagyon találtam leírást, így hosszas próbálgatás után akadtam rá a megoldásra.

Előzmény: Fferi50 (23081)
Fferi50 Creative Commons License 2013.11.22 0 0 23128

Szia!

 

Hát igen, ezeket a "trükkös" jellemvonásokat csak a tapasztalat alapján lehet kiszűrni. Még szerencse, hogy ezeken az oldalakon nagyon sok tapasztalat gyűlik össze.

 

További jó munkát!

 

 

Előzmény: tbando (23127)
tbando Creative Commons License 2013.11.22 0 0 23127

Szia!

 

Én az excellel kapcsolatban semmiben  sem vagyok biztos :)))).

 

Ebben az esetben csak annyit tudtam, hogy az ykorrvekt-t a debug a kép szerint listázta. Ami alapján én oszlopvektornak véltem. Pedig mint  most a segítségeddel rájöttem, ha így listázza tömböt, akkor az excel sorvektornak értelmezi. Hát most már ezt is tudom.

Kösz az együttmüködést.

 

A transpose szintaktikát is köszönöm. Ma nálam is müködött. Tegnap ugyanez  nem müködött, de akkor feltehetőleg egyéb hibák miatt.

 

Előzmény: Fferi50 (23126)
Fferi50 Creative Commons License 2013.11.22 0 0 23126

Szia!

 

Tuti biztos vagy az ykorrvekt szerkezetében? Az Excel ilyen esetekben nem szokott tévedni.

Szerintem az ykorrvekt vízszintes, azaz S1O4 alakú, mivel számolod(!) és nem range-ből definiálod.

Ha azt akarod, hogy S4O1 alakúnak látsszon, akkor transzponálnod kell:

Worksheetfunction.Transpose(ykorrvekt)

 

Remélem, így már működik.

 

Üdv.

Előzmény: tbando (23124)
tbando Creative Commons License 2013.11.22 0 0 23125

Érdekes ez a LIN.ILL-es megoldás. De nálam nem működik (2007-es). Nem csak a te polinomialis problémádnál, de már az excel súgó mintapéldájánál sem, pedig azt copy-paste-tal  vittem be. De csak #ÉRTÉK hibákat ereményezett. A te képletedben a kitevők kapcsos zárójelét hogy kell beírni?  Billentyúzéssel?  Meg azt sem értem minek kell transzponálni?

 

Ja és még valami! A felrakott polielo függvényemben maradt egy sajnálatos hiba, ezért a jelenlegi formájában csak a negyedfoku polinomot számolja ki. A javítása elég egyszerű. Az állandó kiszámításánál (9. pont) A For i=1 to 4 helyesen: For i=1 to fok.

 

Előzmény: NPW (23122)
tbando Creative Commons License 2013.11.22 0 0 23124

Hát bár úgy néz ki, hogy igazad van,  de a feltett udf-ben valami speiális probléma lehet Ugyanis a  

 

'bisvekt = Application.WorksheetFunction.MMult(xikorrmtx, ykorrvekt) utasítás S4O1=S4O4*S4O1 szerkezetű aminek müködni kéne, de nem müködik,

 

míg a bisvekt = Application.WorksheetFunction.MMult(ykorrvekt, xikorrmtx) pedig   S4O1=S4O1*S4O4 szerkezet, aminek nem lenne szabad müködnie, és mégis müködik.  ????

 

A matrix is és a vektor is For next-tel lett feltöltve. 

 

***********

 

Javasoltad a tanspose-t. De nem megy. A vba tömbök transponálásának mi a szintaktikája?  

Előzmény: Fferi50 (23123)
Fferi50 Creative Commons License 2013.11.21 0 0 23123

Szia!

 

A titok nyitja a mátrix algebrában van!

"Csak"  annyi a probléma a matrix szorzásnál, hogy a matrix műveleteknél nem mindegy balról vagy jobbról szorzod a mátrixokat!

Hogy ismét az Excel helpet idézzem:

"A tömb1 oszlopai számának egyeznie kell a tömb 2 sorainak számával és mindkét tömb csak számokból állhat."

 

Az első esetben a 4S*4O mátrix szorozható az 4S*1O mátrixxal (eredmény 4S*1O), de az 4S*1O mátrix nem szorozható a 4S*4O matrixxal.

 

A második esetben szintén arról van szó,hogy a két egy oszlopból álló mátrix (azaz vektor) nem szorozható direktben össze. A szorzáshoz a második mátrixot transzponálni kell (Transpose függvény!) és akkor kapsz egy egy elemű mátrixot (skalárt) eredményül.

 

Üdv.

Előzmény: tbando (23121)
NPW Creative Commons License 2013.11.21 0 0 23122

Köszi!

 

Közben kutakodtam én is tovább, és azt hiszem, egy ausztrál honlap meghozta az ihletet.

 

A nyerő képlet:

 

{=LIN.ILL(TRANSZPONÁLÁS(y adatsor);TRANSZPONÁLÁS(x adatsor)^{1.2.3})}

 

Ez kiadja a harmadfokú egyenlet kitevőit, amivel megkereshető az új x-hez tartozó y.

 

Viszont ennek kapcsán 2 további érdekességre bukkantam.

 

1/Ez csak 2007-es Excelnél működött (itthon ilyen van), 2010-essel valamiért nem (munkahelyen olyan van). Tudja valaki, mi lehet az oka? (ja és az utolsó mátrix 2010-ben: {123}

 

2/A képlet csak akkor működik, ha minden x és y érték megvan. Ugyanakkor ha kitörlök néhány x-et vagy y-t, akkor a grafikonon megjelenő egyenlet továbbra is működik. Kiváncsi lennék, ott hogyan számolnak.

Előzmény: tbando (23121)
tbando Creative Commons License 2013.11.21 0 0 23121

Bár Jimmy szenzációs makrójával a diagramról is le tudod venni polinomialis egyenletet, úgy gondoltam, hogy ha már belekezdtem, be is fejezem  a polinomialis illesztes makrósítását. Sokat tanultam közben. Neked meg felteszem  ide a polinomialis összefüggés forecast fuggvényét polielo() néven. 

 

=polielo(a,b,c,d), ahol

 

a: x, aminek a párját keresed

b: x adatok tartománya

c: y adatok tartománya

d: a polinomiális egyenlet foka

 

Fontos: A függvény moduljat Option Base 1-re állitsd.

 

A függvényt az Immediate ablakban ellenőrizheted, mert oda beírja az együtthatókat és az állandót, így azokat összevetheted a diagramon szereplőkkel.

 

A makróban van 2 kikommentelt piros sor is. Matrixmüveletek amik nem müködtek. Hátha lesz itt valaki olyan okos, aki meg tudja magyarázni,  hogy mi velük a probléma.

 

 

**********

Option Explicit
Option Base 1

****************

 

Function polielo(a, b, c, d)

 

Dim wsac&, x#(), y#(), xy(), tmb1(), tmb2(), xkorrmtx(), xikorrmtx(), ykorrvekt(), kovarvekt(), bisvekt(), bivekt(), xavgvekt()
Dim fok%, i%, j%, k&, sumi#, Ykovar#, Yavg#, allando#

 

'1 adatbevitel és Redimek
fok = d
wsac = b.Rows.Count
ReDim x(wsac), y(wsac), xy(wsac, 2), tmb1(wsac), tmb2(wsac), xkorrmtx(fok, fok), xikorrmtx(fok, fok), ykorrvekt(fok), kovarvekt(fok)
ReDim bisvekt(fok), bivekt(fok), xavgvekt(fok)


For i = 1 To wsac ''wsac: adatparok szama
x(i) = b(i)
y(i) = c(i)
Next i

 

''2.xkorrmtx kitoltese
For i = 1 To fok
For j = 1 To fok
For k = 1 To wsac
tmb1(k) = x(k) ^ i
tmb2(k) = x(k) ^ j
Next k
xkorrmtx(i, j) = Application.WorksheetFunction.Correl(tmb1, tmb2)
Next j
Next i

 

''3 xikorrmtx (inverzR) kiszamitasa

 

xikorrmtx = Application.WorksheetFunction.MInverse(xkorrmtx)

 

''4 ykorrvekt kitoltese
For i = 1 To fok
For k = 1 To wsac
tmb1(k) = x(k) ^ i
tmb2(k) = y(k)
Next k
ykorrvekt(i) = Application.WorksheetFunction.Correl(tmb1, tmb2)
Next i

 

''5 bisvekt (bi standardizalt regrkoef) kiszamitasa

 

''bisvekt = Application.WorksheetFunction.MMult(xikorrmtx, ykorrvekt) EZ MIÉRT NEM MÜKÖDIK, ha az alatta levő igen. Az xkorrvekt(4), a xikorrmtx(4,4) dimenzójú

 

bisvekt = Application.WorksheetFunction.MMult(ykorrvekt, xikorrmtx)

 

''5 kovarvekt es Ykovar
For i = 1 To fok
For k = 1 To wsac
tmb1(k) = x(k) ^ i
tmb2(k) = x(k) ^ i
Next k
kovarvekt(i) = Application.WorksheetFunction.Covar(tmb1, tmb2)
Next i

 

For k = 1 To wsac
tmb1(k) = y(k)
tmb2(k) = y(k)
Next k
Ykovar = Application.WorksheetFunction.Covar(tmb1, tmb2)

 

''6 kovarvektor módosítasa
For i = 1 To fok
kovarvekt(i) = (Ykovar / kovarvekt(i)) ^ (1 / 2)
Next i

 

''7 bivektor (polinomialis regr. koeff)
For i = 1 To fok
bivekt(i) = bisvekt(i) * kovarvekt(i)
Debug.Print bivekt(i)
Next i

 

''8 xavgvekt és Yavg

For i = 1 To fok
sumi = 0
For k = 1 To wsac
sumi = sumi + x(k) ^ i
Next k
xavgvekt(i) = sumi / wsac
Next i

 

sumi = 0
For k = 1 To wsac
sumi = sumi + y(k)
Next k
Yavg = sumi / wsac

 

''9 allando
''allando = Application.WorksheetFunction.MMult(xavgvekt, bivekt). MIERT NEM MUXIK ???? Kénytelen voltam For-next-tel kiváltani. Mindkét vektor 4 elemű.
sumi = 0
For i = 1 To 4
sumi = sumi + xavgvekt(i) * bivekt(i)
Next i
allando = Yavg - sumi

Debug.Print allando

 

'' 10 elorejelzes
sumi = 0
For i = 1 To fok
sumi = sumi + bivekt(i) * a ^ i
Next i

 

polielo = sumi + allando

 

End Function

 

Előzmény: NPW (23105)
tbando Creative Commons License 2013.11.21 0 0 23120

Neked is köszönöm Feri! Az ilyen magyarázatok, sokat segítenek. 

Előzmény: Fferi50 (23118)
Fferi50 Creative Commons License 2013.11.21 0 0 23119

Szia!

 

Még egy kiegészítés: Ha hibakezelési részt is írsz bele, akkor megkapod az 1004 Application defined errort.

 

Üdv.

Előzmény: tbando (23115)
Fferi50 Creative Commons License 2013.11.21 0 0 23118

Szia!

 

Amíg az Excel "szerkesztés" üzemmódban van, nem lehet megváltoztatni makróval a munkalap tartalmát. Márpedig a függvény beírásakor szerkesztés  feliratot látsz a statusbaron. Ha csinálsz egy kis próbát a worksheet change eseménnyel, kiderül, hogy az csak akkor kezd lefutni, ha már a függvényed lefutott.

Ilyen esetben még a VBA szerkesztő sem működik. Én már többször jártam úgy, hogy egy munkalapon belekattintottam egy cellába, majd utána átváltottam VBA-ra és az "istennek" sem akarta bevenni, amit írni szerettem volna.

 

Üdv.

Előzmény: tbando (23115)
tbando Creative Commons License 2013.11.21 0 0 23117

Kösz Jimmy! Így utólag belegondolva, logikus. 

Előzmény: Törölt nick (23116)
Törölt nick Creative Commons License 2013.11.20 0 0 23116

Vannak dolgok, amiket egy UDF nem hajlandó megcsinálni. Többek közt ilyen a munkalap módosítása. Ne is erőlködj vele.

 

http://www.ozgrid.com/Excel/free-training/ExcelVBA1/excelvba1lesson21.htm

 

Első pár bekezdés.

Előzmény: tbando (23115)
tbando Creative Commons License 2013.11.20 0 0 23115

Tisztára hülyét kaptam excel  udf készítéskor. Segítséget kérnék, mert anélkül hamarosan begolyózok.  Az alábbi 3 makró közül a makro2 a makró1-ből indítva gond nélkül lefut. Azaz a kijelölt Munka1!A11:B28 tartományt szépen másoja.

 

A másolandó tartományt azonban fgv-nyel  kijelölve krach.

A Munka1!B30-ban levő függvény csak az első 3 lépést hajtja végre normálisan, a többit nem

A kikommentelt Copy bekapcsolva sem másol

A bekapcsolt wsaa értékadás sem müködik, ráadásul  a makró futását is leállítja

A kikommentelt wsaa  esetén a makro2-t ugyan  meghívja, de nem hajtja vége  az abban előírt másolást, és nem lép vissza a fgvmakróba.

Hogyan van ez?

 

**************

Option Explicit

Dim wsp As Worksheet, wsa As Worksheet, wsaa As Range, wsaacim$, wsaasor

***********

 

Sub makro1()

makro2 0

End Sub

 

***************

 

Sub makro2(flag)

Set wsa = ActiveSheet: Set wsp = Sheets("Munka2")

If flag = 0 Then Set wsaa = Selection

wsaa.Copy

wsp.Range("d11").PasteSpecial xlPasteValues

wsp.Range("f11").Formula = "=a11 = d11"

End Sub

*************

 

Function fgv(x, adatok)

Set wsaa = adatok

wsaacim = wsaa.Address

wsaasor = wsaa.Rows.Count

''wsaa.Copy ActiveSheet.Range("e11")

''ActiveSheet.Range("e11") = wsaa

makro2  1

fgv = 4

End Function

***************

 

A munkafüzetetet felraktam a Data.hu-ra is.

Letöltőlink :

http://data.hu/get/7145608/excel_makro-vs-fgv.xlsm

 

Előzmény: forzajuve (23114)
forzajuve Creative Commons License 2013.11.20 0 0 23114

Kimásolod, és Irányított beillesztés, értéket.

Előzmény: szgaborgabor (23113)
szgaborgabor Creative Commons License 2013.11.20 0 0 23113

köszi, ez jónak tűnik elsőre, DE az a bajom már csak vele, hogy függvényként menti el. 

ezt a fájlt fel kellene töltenem aztán máshova, viszont így, hogy függvényként van, így nem tudja értelmezni, mert azt látja hogy =A1$B1, nekem meg az kéne hogy 001.JPG legyen.

Ha arra nyomok, hogy szövegként illessze be, akkor viszont leveszi a .JPG-t

Előzmény: forzajuve (23112)
forzajuve Creative Commons License 2013.11.20 0 0 23112

Hát ez nem átnevezés, de egy másik cellába össze tudod fűzni a 001-et és a .JPG-t az & segítségével. Tehát pl. A3=A1&A2, ahol A1=001, A2=.JPG

Előzmény: szgaborgabor (23111)
szgaborgabor Creative Commons License 2013.11.20 0 0 23111

Sziasztok

 

A következő lenne a gondom:

2013-as excelben kellene megcsinálni, hogy adott egy oszlop és abban az összes cellát át kellene nevezni.

 

Így néz ki most 

001

002

003

 

És ilyenre kellene 

001.JPG

002.JPG

003.JPG

 

Tehát mindegyik után utána kellene fűzni a .JPG-t tömegesen.

 

Mi erre a megoldás?

Köszi

pimre Creative Commons License 2013.11.20 0 0 23110

Köszönöm, értem. Akkor ezentúl számítok rá.

Előzmény: Törölt nick (23108)
Törölt nick Creative Commons License 2013.11.20 0 0 23109

Most nézem, hogy ezt a spanyolviaszt már feltalálták előttem :-|

Előzmény: Törölt nick (23107)
Törölt nick Creative Commons License 2013.11.20 0 0 23108

Ha megfigyeled, a 1,81898940354586E-12 az kísértetiesen egyezik 2-39 értékével.

Valószínűleg a lebegőpontos számábrázolás törtrészének legeslegutolsó bitjében van az eltérés. Nem hiszem, hogy ez kerekítési hiba lenne, hanem inkább konverziós. Nem tudom, pontosan mi van a háttérben, de rémlik valami, hogy az op. rendszer minden számot először 32 vagy 64 bites egésszé konvertál, és csak utána tud vele dolgozni. Aztán az eredményt visszakonvertálja az eredeti típusba. Ez a probléma nem VBA eredető, és nem is korlátozódik erre a programnyelvre. A kerekítésnél jobb megoldást én sem találtam még. (Ettől még lehet, hogy van.)

Előzmény: pimre (23106)
Törölt nick Creative Commons License 2013.11.20 0 0 23107

Van azért egy lehetőség, csak kicsit komplikált.

A trendvonal egyenletét programmal is le lehet olvasni a diagramról, és azt némi sztring-bűvészkedéssel vissza lehet fejteni. Pl.:

Sub Polinom()
    Dim ch As ChartObject, Képlet As String
    Dim Együtthatók_száma As Long, Együtthatók() As Double
    Dim s As String, pos As Long
    
    Set ch = Worksheets("Munka1").ChartObjects("Diagram 1")
    With ch.Chart.SeriesCollection(1).Trendlines(1)
        .DisplayEquation = True
        .DisplayRSquared = False
        Képlet = .DataLabel.Text
    End With
    Együtthatók_száma = 0
    ReDim Együtthatók(Együtthatók_száma)
    Do
        s = Trim(Mid(Képlet, InStrRev(Képlet, " ")))
        Együtthatók(UBound(Együtthatók)) = s
        If InStr(Képlet, "x") = 0 Then Exit Do
        pos = InStrRev(Képlet, "x")
        Képlet = Left(Képlet, pos - 1)
        Debug.Print Képlet
        Együtthatók_száma = Együtthatók_száma + 1
        ReDim Preserve Együtthatók(Együtthatók_száma)
    Loop
End Sub

 

A piros sort azért emeltem ki, mert lényeges, hogy az R-négyzetet ne jelenjen meg a diagramon (vagy legalább ideiglenesen tűnjön el). Ellenkező esetben az is benne lesz a leolvasott képletben, és félreviszi az együtthatók visszafejtésének algoritmusát.

Előzmény: NPW (23105)
pimre Creative Commons License 2013.11.20 0 0 23106

És még kiegészítésül kérdezem, hogy mi a helyes megoldása a problémának? Egyelőre azt tettem, hogy összegzéskor, minden egyes új adat hozzáadásakor az eredményt 10 számjegyre kerekítettem. Talán többre is lehetett volna, ha nagyobb számaim lennének, de az adott példában megfelelt, ez is. Viszont nem hiszem, hogy valóban ez a megfelelő megoldás a kerekítési pontatlanság kivédésére.

 

Ez az egész azért volt zavaró, és azért derült ki, mert a program egy bizonyos pontján teszteltem, hogy az adott összeg 0-e, és csodálkozva láttam, hogy a program néha nem hajtja végre azt a feladatot, amit a nulla összegű tételeknél meg kellene tennie.

Előzmény: pimre (23102)
NPW Creative Commons License 2013.11.19 0 0 23105

Először is köszönöm a fáradozásaidat. :-)

Valóban körbe néztem a neten, és a legértelmesebb tanács, amit találtam, az volt, hogy rajzoltassam meg a trendvonalat, és másoljam ki az x együtthatóit.

De rejtély, hogy miért nincs alapból egy ilyen függvény az excelben, amikor a grafikon trendvonala akár a 6-od fokú polinomot is kiszámolja???

(Ha én írtam volna az Excelt, akkor az ELŐREJELZÉS függvény egy ELŐRJELZÉS.POLINOM lenne, egy új argumentummal, ahová beírom a polinom fokszámát. :-) )

Hogy milyen trendekre van szó? Ha ez ember egy elnyújtott N betűre gondolunk: egyszer fel, egyszer le, egyszer fel...

Előzmény: tbando (23103)
NPW Creative Commons License 2013.11.19 0 0 23104

Elolvastam, köszi, de őszintén szóla nem értem, nagyon pongyolán van megfogalmazva... :-(

 

Az még hagyján, hogy felcseréli az x/y értéksorokat a lenti példához képest, de hogy lehet trendet számolni B-D és A között (úgy, hogy az működjön is)?

Előzmény: Fferi50 (23084)
tbando Creative Commons License 2013.11.19 0 0 23103

Ezt inkább NPW-tól kellett volna megkérdezned. Ő akar polinomiális összefüggés alapján előrejelzéseket készíteni. Ezek értelmességéről a véleményem teljesen megegyezik a tieddel. Írtam is NPW-nek lejjebb. Én csak az ő kérdésére/kérésére bonyódtam bele ebbe a problémába. És ha már belekezdtem, valahogy végigviszem. A terveim szerint hamarosan meglesz a polinomiális függvények előrejelzésére alkalmas udf. Aztán hogy ez mennyire hasznos, az már legyen NPW gondja. Egyébként utána néztem a neten, nincs egyedül. De a többiek is csak olyan tanácsokat kaptak, hogy a diagramról manuálisan vegyék le az együtthatókat. És szerintem ez az igazán érdekes ebben a problémában. Hogy mi lehet a magyarázata annak, hogy az excel kiszámítja az együtthatókat, hozzáférhetővé is teszi őket, de megnehezíti az elérhetőségüket? Szerinted?

 

Előzmény: Törölt nick (23098)
pimre Creative Commons License 2013.11.19 0 0 23102

Egy újabb meglepetés: Programciklusban összegzem a következő számokat: -1,-14999,-2419.24, 1, 14999, 2419.24. A változók, amibe olvasom, és amibe összegzem egyaránt double típusúak.

Az eredmény 0 kellene, hogy legyen, erre a program 1.81899E-12 értéket hoz ki.

 

Kipróbáltam az összegzést az immediate képernyőn a

print application.sum(-1,-14999,-2419.24,1,14999,2419.24)

képlettel, és az eredmény: 1.81898940354586E-12 lett.

 

Azután megpróbáltam egyszerűen összeadni: print -1+-14999+-2419.24+1+14999+2419.24 képlettel, és az eredmény 0 lett?

 

Hogy van ez?

Előzmény: Delila10 (23101)
Delila10 Creative Commons License 2013.11.19 0 0 23101

:))

Előzmény: Fferi50 (23100)
Fferi50 Creative Commons License 2013.11.19 0 0 23100

Szia!

 

Elég régen próbáltam már küldeni, de úgy látszik a Windows Live "tartalékolta" és most egy szuszra kinyomta az összes eddig el nem küldött levelet - amit egyébként én már el is felejtettem -, biztos nagyon megörült, hogy végre el tudta érni a gmail-es fiókomat....

 

Ugyanez igaz SK-ra nézve is.

 

Üdv.

Előzmény: Delila10 (23097)
forzajuve Creative Commons License 2013.11.19 0 0 23099

Sziasztok!

 

Van szerintetek valami egyszerű módja, hogy az excel A oszlopában található adatokat beillesszem egy sima netes űrlapba? Vagyis, hogy minden cella után valahogy automatikusan "nyomjon" egy TAB-ot?

 

köszi

Törölt nick Creative Commons License 2013.11.19 0 0 23098

Csak kíváncsiságból: milyen természetes folyamat írható le harmad- vagy magasabb fokú polinommal? Én viszonylag sok függvényt illesztettem már, de magasfokú polinomot csak szórakozásból. Van bennem némi  kétség, hogy ezek felhasználhatók-e egyáltalán előrejelzésre...

Előzmény: tbando (23096)
Delila10 Creative Commons License 2013.11.19 0 0 23097

Én is kaptam 2 levelet. Mivel mindegyikhez csatoltál 1-1 Próba.xlsx nevű üres füzetet, gondolom, a próba a küldésre vonatkozik.

 

Sikerült. :)

Előzmény: Fferi50 (23092)
tbando Creative Commons License 2013.11.19 0 0 23096

A lineáris trenddel nincs probléma, mert annak a paraméterei a munkalapról is elérhetők. De a többi trendtípusé csak a diagramra kerülnek rá, tehát ha tovább akarsz velük számolni, be kell pötyögni őket, már amennyiben nem tudod őket linearizálni. Márpedig egyre inkább úgy látom, hogy a polinomiálisakat a többtaguságuk miatt nem lehet. Igy marad a pötyögés, vagy a makró és az udf.   

Előzmény: pimre (23095)
pimre Creative Commons License 2013.11.19 0 0 23095

Valahol a trendlines method környékén érdemes keresni a helpben. Egyébként bő két éve készítettem programból grafikonokat. Azokra ráírattam a programmal az egyenletet is. Igaz, csak lineáris trenddel foglalkoztam. Nagyon sok grafikon volt egy-egy munkalapon, ezért kellett a program. A lényeg, hogy teljesen automatizálni tudtam.

 

Csak annyira összetett volt a feladat, hogy hosszabb idő kellene az előbányászásukhoz.

 

Valahogy így néztek ki:

 

Előzmény: tbando (23094)
tbando Creative Commons License 2013.11.19 0 0 23094

Szerintem a diagramra kiiró utasítást kéne megnézni. De lővésem sincs, hogy elérhető-e a vba-val.

Előzmény: Fferi50 (23091)
Sánta Kutya (SK) Creative Commons License 2013.11.19 0 0 23093

Én azt hiszem, nekem küldtél egy e-mailt, de most álmos vagyok, és nem értem, miért kaptam. .-)

Előzmény: Fferi50 (23092)
Fferi50 Creative Commons License 2013.11.18 0 0 23092

Szia!

 

Küldtem számodra egy privit. Ha tetszik ami benne van és tudod használni, megbeszéljük nyilvánosan is mások okulására.

Kérlek jelezz vissza itt, vagy priviben.

 

Üdv.

 

Előzmény: pimre (23089)
Fferi50 Creative Commons License 2013.11.18 0 0 23091

Szia!

 

A diagramra ráhúzott függvény képletét ki tudod íratni a diagramra. Az alapadatokat ismered. A függvénnyel pedig ki tudod hozzá számolni az y adatokat. Ennél jobbat sajnos nem tudok. Tudom, persze sok adatsorozatnál ez eléggé hosszadalmas.

Illetve a TREND függvény idézett helpjét érdemes egy kicsit mélyebben megnézni, lehet, hogy segít valamit.

 

Üdv.

 

 

Előzmény: tbando (23090)
tbando Creative Commons License 2013.11.18 0 0 23090

Feri!

 

A 23087-ben felvetett eljárásra nincs valami ötleted? Azaz erre:

 

 Abban lehet itt a segítségedre egy nálam jóbban képzett exceles, hogy elmondja, miként lehet a diagramra ráíratható függvény paramétereit lekérdezni. Ez speciel engen is érdekelne.

Előzmény: Fferi50 (23088)
pimre Creative Commons License 2013.11.18 0 0 23089

Van 2003-as és 2007-es egyaránt. De annyira nem szeretem a 2007-est, hogy lényegében csak a 2003-ast használom. Bár most éppen az itt emlegetett programom a laptomon fut, amin a 2007-es van telepítve, hogy az alatt a 3 óra alatt, amíg dolgozik, nyugodtan tudjak dolgozni az asztali gépemen,

 

Egyébként sajnos legkésőbb jövő nyáron át kell állnom, tehát biztos fogom tudni használni az érdekességeket. Kipróbálni meg most is tudom.

Előzmény: Fferi50 (23088)
Fferi50 Creative Commons License 2013.11.18 0 0 23088

Szia!

 

Jól emlékszem, hogy 2007-es exceled van?

 

Mert akkor lenne egy-két érdekesség táblázat kezelésre szerintem.

 

 

Üdv.

Előzmény: pimre (23085)
tbando Creative Commons License 2013.11.18 0 0 23087

Most hogy újra nézem, biztos, hogy a poliniáis transzformációm egy marhaság:((((. De hogy mi lenne a jó, azt nem tudom. Így ha valaki nem súgja meg, marad, hogy az excellel illeszted a polinomiális függvényt, majd az így meghatároztt függvénnyel jelzel előre. Abban lehet itt a segítségedre egy nálam jóbban képzett exceles, hogy elmondja, miként lehet a diagramra ráíratható függvény paramétereit lekérdezni. Ez speciel engen is érdekelne.

Előzmény: tbando (23086)
tbando Creative Commons License 2013.11.18 0 0 23086

Igen, egy kicsit félreérthetően fogalmaztam. Akkor most pontosabban. Szó sincs a harmadfokú függvény linearizálásáról, majd az eredmény vissza transzformálásáról.  Ha ugyanis már megvan a harmadfokú függvény, akkor nem a forecast-t kell előre jelezni,  hanem magával a harmadfoku függvénnyel.

 

Amiról én írtam, hogy adatpárjaid vannak és azokból akarsz előre jelezni az excel segítségével.   Nos, ebben az esetben a  függvények meghatározásával nem kell foglalkoznod.  Azt rábízod az excelre. Te csak az adataidat teszed a lineárissá, persze csak akkor ha nem vagy megelégedve a jelenlegi linearításukkal. Írtad korábban, hogy nem akarsz veszkődni a grafikus függvénymeghatározással. Az adatok grafikus Pont(XY) diagramon való megtekintése azonban ajánlatos, mert ábrából a legkönnyebb eldönteni, hogy a függvényedhez milyen függvényt érdemes illeszteni. Nos ha ezt eldöntötted, akár az ábrából, akár hasra ütve, akkor kell az Y adataidat ennek megfelelően transzformálni. Teszem azt, ha másodfokú osszefüggést posztulálsz, akkor veszed mindegyik Y-nak a négyzetgyökét, ha harmadfokút akkor a gyök3-t, ha logarimusost, akkor a logaritmusát stb.  Majd az XY' adatpárjaidra elvégzed a lineáris a regressziót. Ha a korrelácó javult az eredeti adataidból számítotthoz képest, akkor érdemes volt transzformálnod, ha nem javult akkor vagy maradsz az eredeti adataidnál, vagy új transzformációt választasz. Ha meg vagy elégedve a javulással, akkor csinálod meg a lineáris előrejelzést, majd a kapott forecast visszatranszformálását az eredeti skálára, az előző transzformáció inverzével.  Tehát ha előzőleg gyököt vontál, akkor most négyzetre emelsz stb. 

 

A polinomiális előrejelzéshez úgy gondolom, hogy az Y=x+gyök(x)+gyök3(x)+gyök4(x)+..... transzformációt kellene elvégezni. De ezt azért csekkold, mert nem vagyok matematikus, lehet hogy tévedek.  Azt azonban tudnod kell, hogy a polinomiális összefüggések csak az adott adathalmazon érvényesek. Ugyanis a polinomiális függvény első sorban arra használatos, hogy az adott adathalmazod  összes kis kilengését baromi pontosan írja le.  Ezért egy másik adathalmazon nyilvánvalóan hibás eredményeket fog előre jelezni.  Ezért én a polinomiális függvényt csak az adathalmazban rejlő tendenciák felismerésére használtam, előrejelzésre sosem

 

Előzmény: NPW (23083)
pimre Creative Commons License 2013.11.18 0 0 23085

Szia, ez épp jókor jött, amikor azt kezdtem tesztelgetni, hogy hogyan tudom a formulát alkalmazni, ha másik fájlból olvasom az egyik összegzendő adatsort. És sikerült a workbook és a worksheet nevét is beleillesztenem a képletbe.

Előzmény: Fferi50 (23081)
Fferi50 Creative Commons License 2013.11.18 0 0 23084

Szia!

 

Nézd meg a TREND függvény súgóját.

Idézet belőle:

A TREND függvényt polinomgörbe illesztésére is használhatja: ekkor a regresszió számítása ugyanazon változó különböző hatványainál történik. Tegyük fel például, hogy az A oszlop az y, míg a B oszlop az x értékeket tartalmazza. A C oszlopba beviheti az x^2, a D oszlopba az x^3 értékeket és így tovább. A regressziós görbe ezután a B-D, illetve az A oszlop értékei között számítható.

 

Üdv.

Előzmény: NPW (23083)
NPW Creative Commons License 2013.11.18 0 0 23083

Sajnos a súgó nem ír a polinomiális trend előrejelzésről, csak a lineárisról meg az exponenciálisról...

A másik, amit írsz: nem értem, hogyan alakítok át egy harmadfokú függvényt lineárissá, majd vissza harmadfokúvá.

Ki tudndád fejteni?

Előzmény: tbando (23072)
pimre Creative Commons License 2013.11.18 0 0 23082

Szia!

 

A feladat lényegét a #22993-ban hivatkozott http://data.hu/get/7127187/sumif_teszt.xls tesztfájl tartalmazza. Akkor éppen a Sumif tesztelésére készítettem, és az adatszerkezet bemutatására. Ezért a benne lévő program már nem aktuális, de az adatszerkezet érvényes.

 

Az első két oszlopban árucikkek kódja és neve szerepel, a többiben az egyes időszakokban történt értékesítések 3-3 adata. Csak éppen az éles adatfájlokban (amiből 30-nál több van, ezek az egyes üzletek adatai) átlag 20.000 sor szerepel és kereken 100 oszlop.

 

Ráadásul az árucikkek listája nem teljesen fedi egymást az egyes fájlokban, ugyanakkor egy fájlon belül a nevek ismétlődnek más kódszámmal.

 

Az egyes fájlok adatainak vízszintes és függőleges összegzésén túl kell készítenem egy olyan összegfájlt, amelyben a fájlokban előforduló összes – adattal rendelkező - árucikk (az üres tételek kihagyása miatt összesen kb. 10.000) egyszer szerepel, és annak adatait a fájlokból összesítve tartalmazza. Aztán kell egy olyan összesítő fájl, ami az egyes fájlokban (üzletekben) található oszlopösszegeket írja az egyes sorokba.

 

Tulajdonképpen egyszer már működött a program, de fájlonként 7-8 percig futott, összesen több mint 3 órán át. És mivel még kell egy kicsit finomítani (pl. az azonos nevű, eltérő kódú tételek összevonásával), ezért gondoltam, hogy akkor már meggyorsítom, nem mellesleg a formula- és a munkalap képletek használatával is ismerkedem. 

Előzmény: Fferi50 (23080)
Fferi50 Creative Commons License 2013.11.18 0 0 23081

Szia!

 

A tartomány értékadást még kiegészíteném azzal, amit korábban is írtam, ezzel csak képletet adhatsz meg és utána változtathatod értékké.

 

Tehát az működik hogy:

with összws.range(Cells(1, 1), Cells(1, utolsóoszl))

       .formula="=" & ws.name & "!A1"

       .value=.value

end with

 

Ami még működik, hogy tömbbe beolvasod a fejlécet és utána kiírod az új helyre:

dim fejlec() 'dinamikus tömbnek kell definiálni

 

fejlec= ws.Range(Cells(1, 1), Cells(1, utolsóoszl)).value

összws.Range(Cells(1, 1), Cells(1, utolsóoszl)).Value=fejlec

 

Ennek megvan az az előnye, ha ugyanazt a fejlécet használod máshol is, akkor csak a fejlec-re kell "hivatkozni".

 

Üdv.

Előzmény: pimre (23078)
Fferi50 Creative Commons License 2013.11.18 0 0 23080

Szia!

 

Azért ha a feladat lényegét leírnád, lehet, többet tudnánk segíteni neked.

Hiszen az Excelben számos olyan eszköz van, amivel a táblázatokat könnyen lehet kezelni.

Pl. kimutatások készítése, amelyek utána pillanatok alatt variálhatók.

Nem biztos, hogy neked kell kitalálnod azokat a programsorokat, amiket már eleve beépítettek valamilyen excel funkcióba.

Én mindig arra törekszem, hogy először dolgozzon az Excel és csak utána jövök én. Teljesítmény szempontjából is általában ez a szerencsésebb.

 

Más: ha egy sort összegzőnek szeretnél és beírod a szum képletet, utána ebben a sorban a képletet kell/lehet módosítani a hozzáadandó tartomány címének megfelelően.

Továbbá: Hasznos, ha az összegző sor az adatok előtt van, mert ilyenkor az összegzőképletet csak egyszer kell beírnod, ami akár az oszlop végére is mutathat. Ha újabb adatot írsz a következő sorokba, az összeg automatikusan képződik.

Ugyanez igaz összegző oszlopra is.

 

Üdv.

Előzmény: pimre (23078)
Fferi50 Creative Commons License 2013.11.18 0 0 23079

Szia!

 

Szerintem inkább így próbáld:

 

ws.Range(Cells(1, 1), Cells(1, utolsóoszl)).copy összws.Cells(1, 1)

 

 

Üdv.

Előzmény: pimre (23078)
pimre Creative Commons License 2013.11.18 0 0 23078

Szia!

 

Kösz, a helyzet az, hogy próbáltam a szum-al is a képletet, de azzal sem jött össze.

Az igazság az, hogy mintát mutatni nem érdemes. Az eredeti feladat egy sokezer soros, 98 oszlopos táblázat, sőt ebből is sok van. És az adatok gyűjtögetése ciklusban nagyon lassú, ezért szeretnék képleteket használni. 

 

És amíg a megfelelő képleteket nem találom meg, addig kisméretű mintatáblákon próbálgatom, amelyekbe néhány sort, és néhány oszopot teszek csak.

 

És nem ragaszkodnék a formula képlethez, de az általad írt megoldás is megfelel nekem. Tökéletesen működik.

 

Egyébként meg éppen most elakadtam a következőnél:

 

With ws.Range(Cells(1, 1), Cells(1, utolsóoszl))
összws.Range(Cells(1, 1), Cells(1, utolsóoszl)).Value = .Value ' fejléc másolás
End With

 

method range of object _worksheet failed hibaüzenetet kapok

Valószínű, hogy 1-2 óra alatt megtalálom a hibát, de hátha te kapásból átlátod.

Előzmény: Fferi50 (23076)
Fferi50 Creative Commons License 2013.11.18 0 0 23077

Szia!

 

Kérdésem:

 

Mindig új helyre töltöd be az új adatokat és azt szeretnéd látni a diagramon? Ha ez fontos, akkor a diagram forrását kell megadnod a makróban tartományként.

Van egy chartwizard tulajdonsága a chartnak, aminél a source paramétert kell megadni range("A1:B15") formában.

Ha elnevezted az adattartományt, akkor a név.referestorange kell a source-hoz (arra figyelj, hogy a név laphoz, vagy munkafüzethez van kötve, mert aszerint kell keresned).

 

Ha mindig ugyanoda töltöd be az új adatokat, akkor viszont sokkal egyszerűbb a helyzet:

Az adatokat betöltöd, utána kimutatásdiagram, létrehozod a diagramot.

Utána amikor frissíted az adatokat, frissül a diagram is.

Igaz, itt meg van kicsit kötve a kezed a diagram tipusait és formáját tekintve, de azért ez is elég kényelmes és gyorsan lehet pl. változtatni, hogy mit akarsz látni rajta.

 

 

Remélem, segítettem.

 

Üdv.

 

 

 

Előzmény: egerkiraly68 (23073)
Fferi50 Creative Commons License 2013.11.18 0 0 23076

Szia!

 

A VBA-ban megadott formula képletekre ugyanaz a szabály vonatkozik, mint a munkalap képletekre - hiszen ugyanazok - , így a saját magával való összeadás formula megadással nem megy, ez csak a VBA-ban működik.

Áthidaló megoldásként egy másik sorban alkalmazhatod a képletet, majd értékké változtatva átmásolhatod az összegsorba, valahogy így:

 

with range(cells(ujsor,1),cells(ujsor,oszlopszam))

     .formula="=R" & osszegsor & "C + R" & aktsor & "C"

     .value=.value

     .copy cells(osszegsor,1)

     .clear

end with

 

De miért nem használod az összesítő függvényeket (szum,stb)? Ha mutatsz egy mintát, szívesen segítek.

 

Üdv.

 

 

Előzmény: pimre (23075)
pimre Creative Commons License 2013.11.18 0 0 23075

Még mindig a tartományi képleteken vagyok elakadva. A következő részt szeretném kiváltani egy egysoros paranccsal, tekintve, hogy nagyon sok sor, nagyon sok oszlopát szeretném gyűjteni:

 

For j = 1 To oszlopszám
    Cells(összegsor, j) = Cells(összegsor, j) + Cells(aktsor, j)
Next i

 

Ez így ciklusban simán működik, de amint képletet próbálok hozzá kreálni, vagy körkörös hivatkozást jelez, vagy csak simán lenullázza az összegsorban lévő adataimat.

 

Tudnál még ebben is segíteni? 

Előzmény: Fferi50 (23034)
egerkiraly68 Creative Commons License 2013.11.18 0 0 23074

Helyesen: hivatkozik

 

Ami nem működik nálam relatív címzésként makrónál, az az Excelben amúgy simán használható SHIFT+CTRL+lefelé nyíl, vagy oldalra nyíl. Ugyan jól jelöli ki az Excel látszólag, de látszik a VBA kódban, hogy fix cellanevekre hiányzik bent a pivotnál.

Előzmény: egerkiraly68 (23073)
egerkiraly68 Creative Commons License 2013.11.18 0 0 23073

Sziasztok, hogyan tudom beállítani Excel 2007 angol nyelvű verzióban azt, hogy a rögzített makróm dinamikus tartományt tudjon kezelni?

 

Konkrétan: pivot táblát szeretnék úgy frissíteni minden egyes újabb forrásadatbetöltésnél, hogy az aktuális adattömböt vegye figyelembe.

 

Ami nem működik nálam relatív címzésként makrónál, az az Excelben amúgy simán használható SHIFT+CTRL+lefelé nyíl, vagy oldalra nyíl. Ugyan jól jelöli ki az Excel látszólag, de látszik a VBA kódban, hogy fix cellanevekre hiányzik bent a pivotnál.

Így legközelebb hiába fut le a lefelé és jobbra való kijelölés, a korábban fixen benne lévő cellanevekkel dolgozik a pivot a tábla frissítésénél.

 

Próbálkoztam azzal is, hogy túl járok a pivot eszén, elnevezést használva az adattartományra, így csak be kell frissítenem a pivotot, amikor újabb "target" adatforrásom van.

 

A gond csak az, hogy az elnevezést se csinálja meg jól a fent említett lefelé és oldalra való kijelöléssel. Pont ugyanez a gond a SHIFT+CTRL+End kijelöléssel is: mivel az Excel emlékszik rá, hogy korábban abban a cellában volt adattartalom, mert pl. korábban egy hosszabb adattartományom volt, akkor hiába van az újabb adattartományban kevesebb adatom, nem az utolsó sorig jelöli ki, hanem az üres cellákat is.

 

Ha esetleg valamilyen offsetes automatikus tartománykijelölés létezik a definiált "Target"-re, az is megoldaná a gondomat szerintem.


Az adattartomány az oszlopnevekkel az A7-es cellában kezdődik, nem A1-től. Az adatok A-tól P oszlopig terjednek, kb. 20 ezer soron. A munkalap neve Sales.

 

Köszönöm!

 

tbando Creative Commons License 2013.11.17 0 0 23072

Ajánlom még a figyelmedbe az excel súgó "A sorozatok értékeinek előrejelzése" című blokkját.

Előzmény: NPW (23070)
tbando Creative Commons License 2013.11.17 0 0 23071

Megoldás lehet hogy linearizálod a magasabbrendű függvényed adataid és azon határozod meg a forecastot. Majd az eredményt visszaalakítod az eredeti függvény szerintire.

Előzmény: NPW (23070)
NPW Creative Commons License 2013.11.17 0 0 23070

Van az előrejelzés (forecast) függvény, ami tök jó arra, hogyha a lineáris trend következő y-ját akarjuk kiszámolni. De mi van akkor, ha a trend nem lineáris, hanem másodfokú, harmadfokú stb? Ott milyen képletet kéne használni? (Ha grafikusan megrajzolom a trendvonalat, akkor kiírja az egyenletet, de ez többszáz esetben eléggé macerás kézzel bemásolni.)

kati79 Creative Commons License 2013.11.17 0 0 23069

Köszi, így már megy, bár biztos túlbonyolítom (index és sorszám függvénnyel a képletben).

 

Eddig úgy próbáltam ugyanis, hogy a legelső 3 legyen bronz, utána a legelső 2 ezüst, utána a legelső egy sárga:)

Működött, a változásokat is figyelembe vette, csak a többi adattal nem foglalkozott...

 

Köszi szépen még egyszer!

tbando Creative Commons License 2013.11.17 0 0 23068

Az a gyanum, hogy a képleteidben nem abszolut hivatkozást használsz. Tehát valahogy így kéne, miután kijelölted az A1:C20 tartományt:

 

=$C1=Nagy($C:$C;1)   stb.

Előzmény: kati79 (23067)
kati79 Creative Commons License 2013.11.17 0 0 23067

Sziasztok!

Tegnap este óta gondolkodom rajta, remélem, itt tud valaki segíteni:

 

Feltételes formázásról van szó, 2010-es Office-om van.

A feladat, hogy egy verseny első három helyezettjének pontszámát, nevét, klubját kellene kiemelni, arany-ezüst és bronz színnel.

A szerzett pontszám a C oszlopban van. Ezt sikerül is megoldani, de nem formázza az adathoz tartozó nevet és klubot, csak a pontszámot.

A kijelölt tartományban benne van az A és B oszlop is. Formátumot hiába másolom.

A kiírás szerint a sima kitöltést nem fogadják el, mert gondolni kell arra, hogy az eredmények változhatnak!

 

Előre is köszönöm!

tbando Creative Commons License 2013.11.17 0 0 23066

Aha! Így tényleg készen vannak a BC oszlopok. Annyira nem mélyedtem el a feladatleírásban, hogy erre magamtól rájöjjek. De akárhogyis van, a lényeg, hogy sikeresen megoldottad :)))). 

Előzmény: Fferi50 (23060)
Fferi50 Creative Commons License 2013.11.17 0 0 23065

Szia!

 

Én is csak véletlenül jöttem rá (nagyon untam már a copy - pastespecial -cutcopymode folyamatot), így aztán kipróbáltam - és működött.

De csak összefüggő tartományban működik, erre vigyázni kell.

 

Üdv.

Előzmény: pimre (23061)
Fferi50 Creative Commons License 2013.11.17 0 0 23064

Szia!

 

De még szebb a dolog,ha a tartomány végére nem írsz $-t:

 

B2 cellába =FKERES(A2;C$2:E25;3;1)

 

Ha így húzod le a képletet, akkor a tartomány vége automatikusan növekszik, nem kell vele törődnöd később.

 

Üdv.

Előzmény: djmorphy (23062)
djmorphy Creative Commons License 2013.11.17 0 0 23063

Mint ahogy egyik fórumtársunk HSZ-t olvastam lentebb én is túlbonyolítottam :D

Napi szinten használom az Fkeres()-t de rá nem jöttem volna erre az egyszerű megoldásra :D

Előzmény: tbando (23044)
djmorphy Creative Commons License 2013.11.17 0 0 23062

Köszönöm! Tökéletes :)

Előzmény: Fferi50 (23051)
pimre Creative Commons License 2013.11.17 0 0 23061

Nagyon köszönöm. És most már kezdem is sejteni a dolog logikáját.

És ez a .value=.value meg az életben nem jutott volna eszembe a copy/paste kiváltására.

Előzmény: Fferi50 (23034)
Fferi50 Creative Commons License 2013.11.17 0 0 23060

Szia!

 

Miért kellene a BC oszlop számait összehozni. Azokat induláskor úgy kezdték el írni és ha jön egy új szám, csak folytatják a cellában. B oszlopban magánszámok, C oszlopban céges számok.

 

Üdv.

Előzmény: tbando (23058)
tbando Creative Commons License 2013.11.16 0 0 23059

Tényleg. Most, hogy irod, dereng hogy már találkoztam a leírásával. De mivel sosem használtam, tökre kiesett. Kösz.

Előzmény: Fferi50 (23057)
tbando Creative Commons License 2013.11.16 0 0 23058

Tényleg rövidebb. De sokkal körülményesebb. Előkeresni az A oszlopból a megfelelő Miszámunkat, majd ennek a sorából egy másik cellában szöveg.keresezni… Hát nem semmi.  Azt már meg sem emlitem, hogy elötte a BC oszlop celláit is össze kell hozni.  Persze ha összeszedném magam, tudnék még  ennél is komplikáltabb megoldást csinálni :)))))

Előzmény: Fferi50 (23056)
Fferi50 Creative Commons License 2013.11.16 0 0 23057

Szia!

 

A Redim A(2 to 5) azt jelenti, hogy az új tömbödnek az első indexe amire hivatkozhatsz, az a kettes lesz, vagyis a tömböd 4 elemet (2-3-4-5) fog tartalmazni.

A Redim(5) viszont azt jelenti, hogy az első indexed az Option Base utasítástól függően 0 vagy 1, tehát a tömbben 6 ill. 5 elem helyezhető el.

 

A Dim tömb utasítást egyébként ugyanigy tudod használni.

 

Üdv.

Előzmény: tbando (23055)
Fferi50 Creative Commons License 2013.11.16 0 0 23056

Szia!

 

A számpárok mit jelentenek:

  A2: miszámunk1 B2: magánszám1

  A3: miszámunk1 B3: magánszám2

  A4: miszámunk1 B4: magánszám3

  A5: miszámunk1 B5: cégesszám1

  A6: miszámunk1 B6: cégesszám2

  A7: miszámunk2 B7: magánszám4

és így tovább.

Ezzel szemben amit csinálnak:

  A2:miszámunk1 B2: magánszám1,magánszám2,magánszám3 C2:cégesszám1,cégesszám2

  A3:miszámunk2 B3: magánszám4     C3: cégesszám3 ...

és így tovább.

 

A második verzió azért sokkal-sokkal rövidebb szerintem

 

Szöveg.keres feladata: megkeresni az adott cellában a hívott számot. Ha a B oszlopban megtalálja, akkor magánszám, ha a C oszlopban, akkor céges a szám, ha nem találja, akkor nincs még felvéve a listába.

 

Az adattábla lehet majd a következő lecke szerintem.

 

Üdv.

Előzmény: tbando (23052)
tbando Creative Commons License 2013.11.16 0 0 23055

A Redim A( 2 to 5) utasítás milyen tömböt declarál? 

 

Mit jelent, hogy van alsó és felső határa? Mondjuk ahhoz képest, hogy Redim A(5)?

Előzmény: tbando (23054)
tbando Creative Commons License 2013.11.16 0 0 23054

Értem én. Nálunk is csináltak valami hasonlót egy rövid ideig. De aztán elhalt. Mivel nem sok értelme volt. Mondjuk annyi különbség azért volt, hogy a főnökségnek se voltak túlzott reményei a módszer hatékonyságával kapcsolatban. Úgy tudom, egy APEH intézkedést gondoltak így hatástalanítani.

Előzmény: Maryenm (23050)
tbando Creative Commons License 2013.11.16 0 0 23053

Ez tecc. Frappáns.

Előzmény: Fferi50 (23051)
tbando Creative Commons License 2013.11.16 0 0 23052

Szia!

 

Valamit rosszul láthatok, mert szerintem a számlista ugyanolyan hosszú, ha a magán és céges hívások el vannak különítve egymástól, mint ha nem lennének. De ha nem így lenne, 1 millió hosszúságú akkor se lenne, már pedig annyit az excel könnyedén kezel.

 

Nálam a szöveg.keresnek nincs funkciója, és őszintén megvallva, a tiedben sem látom, hol lenne szerepe.

 

A szumhatöbb is jó természetesen. De pivot sokoldalubb elemzést tesz lehetővé. Arról nem is beszélve, hogy az adattábla kezelése is egyszerűbb. 

Előzmény: Fferi50 (23047)
Fferi50 Creative Commons License 2013.11.16 0 0 23051

Szia!

 

Próbáld ki a B oszlopban a következő képletet:

 

B2 cellába =FKERES(A2;C$2:E$25;3;1)

 

E$25 helyett írhatsz akár E$125-öt vagy amennyi sorod várhatóan lesz.

 

Ha csak a kiadott azonosítókig húzod le, akkor mindig beírja a B oszlopba az E oszlop megfelelő adatát.

Ha túlhúzod, akkor a B oszlopba az E oszlop utolsó adata kerül, ami azonnal megváltozik, ha egy új azonosítót kiadsz a C,D oszlopokban és melléírod a termék nevet az E oszlopba.

 

Remélem működik.

 

Üdv.

Előzmény: djmorphy (23037)
Maryenm Creative Commons License 2013.11.16 0 0 23050

Szerintem nem teljesen érted a lényegét. Vannak a céges telefonok, amit a kollégáim használnak. Engedélyezve van magánhívás is de azt ki kell fizetni. Vannak alap feltételek, amiket nézünk. 4-nél többször hívta vagy 4-nél több sms-t küldött. Megkérdezem a kollégám, hogy amit Ő hívott a céges telefonjáról számot az a munkáltató érdekében volt vagy magánhívásnak minősül. Ő erre besorolja valamelyik kategóriába. Én ezt folyamatosan gyűjtöm. Magán hívásnak minősül az, ami nem a munkájából adódóan hívott. Céges hívásnak amit a munkája miatt hívott. Pl.: nekem mondjuk a UPC csak magánhívás lehet. De az informatikus kollégának céges hívás mert a cég miatt hívta.

Előzmény: tbando (23046)
Fferi50 Creative Commons License 2013.11.16 0 0 23049

Szia!

 

A tlistádnál a B és C oszlopokban levő telefonszámok ugye el vannak választva valamivel?

 

Próbáld ki lsz. amit legutóbb írtam, remélem működik.

 

Üdv.

Előzmény: Maryenm (23048)
Maryenm Creative Commons License 2013.11.16 0 0 23048

2010-es excelem van

Előzmény: Fferi50 (23043)
Fferi50 Creative Commons License 2013.11.16 0 0 23047

Szia!

 

Igen, csak ez akkor egy lényegesen hosszabb telefonszámlista lenne.

Amit most csinálnak, az a telefonszámhoz tartozó két oszlopban tudja kezelni a magán, céges kérdést - más kérdés, hogy én csak a magánt kezelném, a céges már egy kicsit "Nagy Testvéres".

Kiválogatni pedig, ahogy látod, a szöveg.keres-sel lehet egy adott cella tartalmából.

Nem mondom, hogy egyszerű a képlet, de azért még elviselhető hosszúságú szerintem.

 

Miért pivot ha a szumhatöbb is megteszi?

 

Üdv.

Előzmény: tbando (23046)
tbando Creative Commons License 2013.11.16 0 0 23046

De ha már mégis van olyan cég, amelyik az alállomásai szerint variálgatja a hívás minősítését, akkor én egy olyan telefonszámlistát csinálnék:

 

A: Hivó

B: Hivott

C: Hivó &" "&Hivott

D: magán/céges

 

Az összeszámláló lapon ismét összefűzném a Hivót a Hivottal, a D oszlopban meg Fkeressel meghatároznám a hvás minősítését. És onnantól pivot.

Előzmény: Maryenm (23040)
Fferi50 Creative Commons License 2013.11.16 0 0 23045

Szia!

 

 

Rendben,  a Te telefonlistáddal dolgozunk (továbbra is tlista).

 

Akkor annyit kellene módosítani a korábban leírtakon, hogy a

 

A híváslistát kiegészíted a következővel:

D1 cellába beírhatod: magán/céges

D2 cellába képlet   =HA(HIBÁS(FKERES(A2;tlista!A:A;1;0));"Nincs ilyen céges szám a listádban!";HA(HIBÁS(SZÖVEG.KERES(B2;FKERES(A2;tlista!A:B;2;0)));HA(HIBÁS(SZÖVEG.KERES(B2;FKERES(A2;tlista!A:C;3;0)));"Nincs ez a hívott szám a listádban!";"céges");"magán"))

 

Ez megmutatja, ha egy céges számot még nem vittél fel a listádba (tlista), ha egy hívott szám nincs benne még a listádban, ha pedig megtalálta, akkor beírja, hogy céges, vagy magán volt a szám.

 

Ezt így szűrve megláthatod azt is, hogy melyik céges szám hiányzik, illetve melyik céges számról hívták az adott számot.

 

A továbbiakra nézve a korábban leírtak állnak.

 

Kérdezz továbbra is bátran.

 

Üdv.

Előzmény: Maryenm (23040)
tbando Creative Commons License 2013.11.16 0 0 23044

Valami nem stimmel a magyarázatoddal. A H-oszlopban nem a Termék1-t és Termék2-ket számoltad meg hanem a sorozatjaikat. Ha a termék db-kat akarod megszámolni, és nem a B-oszlop kitöltésével (ami pedig szerintem egyszerübb lenne, mint a CDE oszlopoké), akkor az F-oszopba számold ki a soronkénti termékdarabok számát a D-C+1 képlettel, majd H-ban szumha-val a Termék1 és Termék2 darabszámát:

 

=szumha(e1:e1000;"Termék1"f1:f1000) és ugyanezt a Termék2 vel is. 

Előzmény: djmorphy (23037)
Fferi50 Creative Commons License 2013.11.16 0 0 23043

Szia!

 

Milyen exceled van (2003,2007,2010,2013)?

 

Üdv.

Előzmény: Maryenm (23040)
tbando Creative Commons License 2013.11.16 0 0 23042

Nem szűri ki. De ilyen hogy lehetséges? Miféle cég az, ahol egy külső telefonszámot attól függően minősítenek magánnak vagy cégesnek, hogy ki a hívó?  

Előzmény: Maryenm (23036)
Maryenm Creative Commons License 2013.11.16 0 0 23041

Köszönöm szépen! kipróbálom!

Előzmény: Fferi50 (23038)
Maryenm Creative Commons License 2013.11.16 0 0 23040

Leírtam lentebb. Van ilyen listám! Melyik céges számhoz tartozik a szám.

 

A táblám:

 

A oszlop: eszköz (céges telefonszám)

 

B oszlop: az eszközhöz tartozó magánhívás számai

 

C oszlop: az eszközhöz tartozó céges hívások számai

 

Köszi. 

 

Maryen

Előzmény: Fferi50 (23039)
Fferi50 Creative Commons License 2013.11.16 0 0 23039

Szia!

 

Ezt most hogyan szűröd ki, gondolom kézzel - fejjel.

 

Úgy gondolom, ez akkor működhet, ha a magánszámokat a hozzájuk tartozó céges párjukkal együtt tároljuk a listában. Tehát nem elég megjelölni, hogy magán, azt is tudni kell, melyik hívónál magán.

Ez egy kicsit bonyolítja a helyzetet, de megoldható.

 

Dolgozom még rajta.

 

Üdv.

Előzmény: Maryenm (23035)
Fferi50 Creative Commons License 2013.11.16 0 0 23038

Maryenm!

 

Egy kicsit tovább folytatva a történetet:

 

Ezt a részt

A hlista sorbarendezése: fejléc van.

A oszlop emelkedő majd D oszlop emelkedő.

Ezután adatok részösszeg:

csoportosítási alap: A oszlop illetve a fejléce

összesítő függvény: Összeg

összesítendő oszlop: C Hívásdíj

összegek az adatok alatt

 

Ezzel megkapod minden eszközhöz a céges és a magán hívások díját.

 

Felejtsd el.

 

Helyette: az nlista C oszlopába lehet begyűjteni a magánhívások díját a következő képlettel:

 C1 cella fejléc pl magánhívások díja

 C2 cella képlet: =szumhatöbb(hlista!C:C;hlista!A:A;A2;hlista!D:D;"magán")

Ezt a képletet végighúzod az nlistádon és megkapod a magánhívások díját az adott céges telefonhoz.

Kijelölöd a C oszlopot, copy, irányított beillesztés értéket, ugyanoda, hog eltűnjön a képlet.

 

A következő hónapokban a követkő oszlopokat használhatod ugyanígy a magán hívásokhoz.

 

Ha a céges hívások díjait is szeretnéd összesíteni, akkor a következő oszlopba a képlet az alábbi (pl D oszlop):

  D2 cella képlet: =szumhatöbb(hlista!C:C;hlista!A:A;A2;hlista!D:D;"céges")

  Ezt húzod végig a sorokon.

 

Természetesen a magán és céges szöveget más, egyértelműen azonosíthatóval is helyettesítheted.

 

Remélem, működik, ha bármi problémád van, ne habozz írni.

 

Üdv.

Előzmény: Fferi50 (23030)
djmorphy Creative Commons License 2013.11.16 0 0 23037

Szia!

 

Azt szeretném hogy van mondjuk 1-től 1000-ig "vonalkód" kinyomtatva. Ahogy jön egy termék időbrendben arra rakom a kódot.
De nem tudom hogy mikor melyik termék jöhet és mennyibe van csomagolva ezért kell használnom intervallumokat.
"A oszlopban" van a "vonalkód" ami folyamatosan töltődik fel 1000-ig ahogy érkezik az árú.
"C és D oszlopban" van a kezdő és záró érték aminél megadom, hogy egy termék mettől meddig kapta meg a sorszámot.
A "H oszlopban" meg összesítem, hogy hány darab van az adott termékből.
A "B oszlopot" semmire nem használom. Vagyis ha van rá ötlet akkor arra használnám, hogy oda automatikusan beírja hogy Termék1 vagy Termék2 függően hogy a C,D,E oszlopba mi van írva és onnantól meg darabteli() meg heppyhour :D

Ami most meg tudok valósítani, hogy soronként egyesével beírogatom a B oszlopba, hogy Termék1 Termék2 stb... és azt darabteli()-vel megszámolom. De nincs túl nagy lelkesedésem több száz sort kitöltögetni manuálisan :D

 

Tudom, hogy a Termékenkénti Egyedi ID lenne a legjobb de sajnos itt nem valósítható ez meg.

Előzmény: tbando (23031)
Maryenm Creative Commons License 2013.11.16 0 0 23036

Szia!

 

S mi van ha ugyan az a szám a kollégámnál magán hívás nálam pedig céges hívásnak minősül? Ez kiszűri?

Előzmény: tbando (23032)
Maryenm Creative Commons License 2013.11.16 0 0 23035

Ez hogyan szűri ki azt, hogy ami az én céges számomról lett hívva szám pl.: 198. Az nekem magán szám. Viszont a kollégámnak céges szám.

Előzmény: Fferi50 (23030)
Fferi50 Creative Commons License 2013.11.16 0 0 23034

Szia!

 

Ezt szerintem két lépésben lehet megoldani:

 

with ws.range(cells(2,utolsóoszl+1),cells(utolsósor,utolsóoszl+1)

       .formula="=counta(RC3:RC" & utolsóoszl & ")"

       .value=.value

end with

 

Mivel először a képletet kell a tartományra megadni, hogy utána átkonvertálhasd.

 

Üdv.

Előzmény: pimre (23033)
pimre Creative Commons License 2013.11.16 0 0 23033

Egy pillanatra visszatérve a tegnapiakra, mert a Range használattal még mindig nem vagyok teljesen képben. Egy nagy táblázat összes sorában a nem üres cellák számát a "C" oszloptól kezdve eddig a következő ciklussal írtam be az utolsó oszlop utáni cellába:

 

For i = 2 To utolsósor
     ws.Range("O" & i) = Application.CountA(Range("C" & i, "N" & i)) 

' vagy egy kicsit általánosabb formában:    

     ws.Cells(i, utolsóoszl + 1) = Application.CountA(Range(Cells(i, 3), Cells(i, utolsóoszl)))

Next i

 

Azt hiszem, ezt is meg lehet oldani ciklus nélkül, csak nem jövök rá a helyes formára. 

Tud valaki segíteni, hátha aztán már magamtól is megy:-)

Előzmény: Fferi50 (23012)
tbando Creative Commons License 2013.11.16 0 0 23032

Szerintem túlbonyolitod.

 

A te gyűjtőtáblázatodat így csinálnám:

 

A: hívó szám

B: hivott szám

C: költség

D: Ha a hivott szám (B) céges akkor 1, ha nem akkor 2.

 

A D  kitöltéséhez ez a képlet is jó lehet:

 

=ha(hahiba(fkeres(hivottszám;cégesszámok listája;1;0);0)=0;2;1)

 

Az így kapott táblázat aztán pivottal könnyedén elemezhető. 

Előzmény: Maryenm (23025)
tbando Creative Commons License 2013.11.16 0 0 23031

Szia!

 

Számomra a felrakott képből nem derúl ki, hogy mit akarsz.

 

1. Ott van az A-oszlop, semmi kapcsolata a többivel.

2. Az E oszlop forrása rejtély.   Ha feltételezem, hogy az A-oszlopbeli ID-khez kapcsolódnak, akkor a B-oszlopnak is ki kéne lennie töltve az ID-khez tartozó terméknevekkel. Ha így lenne, akkor egy pótlólagos oszlop beszúrásáva az E-oszlop FKERES-sel lenne kitölthető.

3. A H az E-oszlop Darabteli-s értékelésének tűnik. Ha így van, problémamentes.

Előzmény: djmorphy (23023)
Fferi50 Creative Commons License 2013.11.16 0 0 23030

Szia!

 

Amit én tennék:

Egy munkafüzetben lenne:

1.A magán/céges telefonszámlista (legyen   a neve tlista). 

Szerkezete:

A oszlop: telefonszám

B oszlop: "magán" vagy   "céges"

C oszlop: eszköz (céges telefonszám,   ahonnan hívják) de ez szerintem felesleges, mert céges számot általában   többen is hívnak és magán számot is hívhatnak többen is (tehát több oszlop is   kellene, vagy ebben az oszlopban több szám). Viszont az adott havi híváslistából   egyértelműen kiderül, hogy éppen ki(k) hívták a számot.

 

2.Lenne egy listám az eszközök (céges   telefon) használójáról (ez biztosan meg is van), hogy személyhez tudjam kötni   (legyen a neve nlista). 

Szerkezete: A oszlop eszköz (céges szám)

B oszlop használó neve

 

3.A híváslistát bemásolnám ide (legyen a   neve hlista).

 

A folyamat:

 

A híváslistát kiegészíted a következővel:

D1 cellába beírhatod: magán/céges 

D2 cellába képlet   "=ha(hibás(fkeres(A2;tlista!A:A;1;0));"Új   szám";fkeres(A2;tlista!A:B;2;0))"

Ezt a képletet lehúzod az utolsó sorig.

Ez megkeresi azokat a számokat a híváslistában, amelyek még nincsenek benne a tlistában. Amelyek benne vannak, oda pedig beírja, hogy magán vagy céges a szám.

A munkalapra autoszűrő, D oszlopban kiválasztod az "Új szám" -ot, a B oszlopban levő számokat kijelölöd, copy, majd a tlista A oszlopának végére bemásolod.

A tlista új számainak B oszlopába beírod, hogy magán, vagy céges.

Ha ezzel megvagy, visszamész a hlista munkalapra és kikapcsolod az autoszűrőt. El kell tűnnie az "Új szám"-oknak és helyettük a magán/céges megjelölés látszik.

D oszlopot kijelölöd. Copy majd irányított beillesztés ugyanide! értéket, utána ESC. Ezzel eltüntettük a képletet.

Most már minden telefonszámhoz megvan, hogy magán vagy céges.

A hlista sorbarendezése: fejléc van.

A oszlop emelkedő majd D oszlop emelkedő.

Ezután adatok részösszeg:

csoportosítási alap: A oszlop illetve a fejléce

összesítő függvény: Összeg

összesítendő oszlop: C Hívásdíj

összegek az adatok alatt

 

Ezzel megkapod minden eszközhöz a céges és a magán hívások díját. 

 

Próbáld ki, eddig sikerül-e eljutni. Utána lehet még egy kicsit tovább javítani a megoldáson.

 

Üdv.

Előzmény: Maryenm (23029)
Maryenm Creative Commons License 2013.11.16 0 0 23029

Nem ismerem a makrót, de ha elmagyarázod nekem úgy is jó :-)

 

Bevallom őszintén minden segítségért háls vagyok!

Előzmény: Fferi50 (23028)
Fferi50 Creative Commons License 2013.11.16 0 0 23028

Szia!

 

Ok, értem a "feladatot". Mit szeretnél, makrót vagy csak olyan képleteket, amelyek megkönnyítik a végrehajtást?

 

Üdv.

Előzmény: Maryenm (23027)
Maryenm Creative Commons License 2013.11.16 0 0 23027

Szia!

 

Igen, jól érted. Az eszköz a céges telefonszám és erről lehet céges vagy magánhívást is kezdeményezni. Minden hónapban vannak új számok is de amiket már leadtak nem kérdem meg újra.

 

Két dolgot gyűjtik de külön táblában.

 

Van egy táblázat amiben gyűjtöm a kollégák által megadott céges és magánszámokat. Ezt minden hónapban frissítem.

 

Utána pedig az adott havi listából kigyűjtöm mi a céges és mi a magán hívás. Illetve mennyi a magánhívás összege.

Üdv:

 

Előzmény: Fferi50 (23026)
Fferi50 Creative Commons License 2013.11.16 0 0 23026

Szia!

 

Akkor, ha jól értelmezem, a probléma a következő:

 

A hívás listából kellene megállapítani a b oszlop - azaz a hívott szám - alapján, hogy a hívás magán vagy céges volt-e.

Mivel azt mondod, hogy az eszköz(ami a céges telefon számának felel meg), nyilván hívhat magán és céges számokat is, a telefon használójának kell megmondania, hogy melyik hívott szám milyen célú. Gondolom, ezeket folyamatosan "bemondják" a munkatársak, ha új szám keletkezik.

 

Még azt nem értem, hogy a Te táblázatodban akkor mit és hogyan gyűjtesz:

A céges telefonhoz (eszközhöz) tartozó konkrét telefonszámokat, vagy a magán és céges hívások díját?

 

Ezeket legalább ismerni kellene ahhoz, hogy értelmes megoldást tudjunk adni.

 

Üdv. 

Előzmény: Maryenm (23025)
Maryenm Creative Commons License 2013.11.16 0 0 23025

Szia!

 

Köszönöm szépen a válaszod. A probléma abból adódik, hogy lehet, hogy ami nálam céges szám, az a kollégámnál magán. Így szükséges, hogy az eszközt (céges számot) is figyelembe vegye.

 

A hívás lista tábla:

 

a oszlop: eszköz (céges szám)

 

b oszlop: hívott szám

 

c oszlop: hívás díja

 

Az én táblázatom, amiben a számokat gyűjtöm:

 

a oszlop: eszköz (céges szám)

 

b oszlop: magán hívás

 

c oszlop: céges hívás

 

A saját táblázatom úgy módosítom, ahogy szükséges. Illetve a híváslista táblát is tudom másolgatni, szerkezgetni.

 

Eddig ezt úgy oldottam meg, hogy a híváslistára rászűrtem céges számonként. Lementettem egy új excel-ben. FKERESSEL  a hozzá tartozó általam kígyűjtött táblázatomból megkerestem a céges számokat és a másik oszlopból a magán számokat. Viszont ez nagyon időigényes, mert sok a céges szám. Így segítséget kértem, hátha lehetne egy képlettel könnyebben megoldani és utána csak rá kelljen szűrni.

Mindenkinek köszönöm a segítséget előre is!

 

Üdv:

 

Maryen

 

 

 

 

Előzmény: Fferi50 (22991)
Maryenm Creative Commons License 2013.11.16 0 0 23024

Szia! XLS-ben kapom.

Előzmény: Sánta Kutya (SK) (22990)
djmorphy Creative Commons License 2013.11.16 0 0 23023

Szia!


Bocsánat, hogy ilyen későn válaszolok. Ilyet szeretnék megvalósítani:

https://picasaweb.google.com/lh/photo/Xpp7wEU_2Oi8w0qSYkLkuMXNc_m4uWcm5_aG3wZVcfM?feat=directlink

Előzmény: tbando (22848)
tbando Creative Commons License 2013.11.16 0 0 23022

Lenne megint egy eszement kérdésem: Azt hogy csinálja az excel, hogy az =INDEX($A$4:$A$10;0;0) képlet bizonyos cellákban nem #ÉRTÉK hibát eredményez? Az indexelt tartomány sávjában levő cellákban ugyanis a vele azonos sorban levő értéket adja vissza. 

 

tbando Creative Commons License 2013.11.15 0 0 23021

Hát nem csoda, hogy nem bukkantam rá :))).

 

De most hogy idemásoltad, asszem sokat javul a kereséstechnikám. Kösz. 

Előzmény: Fferi50 (23020)
Fferi50 Creative Commons License 2013.11.15 0 0 23020

Szia!

 

VBA Help:

Using Data Types Efficiently

Dim X As Integer

This statement declares that a variableXis an integer — a whole number between –32,768 and 32,767. If you try to setXto a number outside that range, an error occurs. If you try to set X to a fraction, the number is rounded. For example:

 

X = 32768 ' Causes error. X = 5.9 ' Sets x to 6.

 

Hát elég jól el van dugva, nem mondom.

 

 

Üdv.

 

 

Előzmény: tbando (23019)
tbando Creative Commons License 2013.11.15 0 0 23019

Kösz!

 

Nem tudtam róla. Sehol sem láttam az eltérő kerekítésre történő utalást, így aztán igencsak meglepődtem amikor hülye eredményt kaptam. Eltartott egy darabig, amíg rájöttem az okára....    

Előzmény: Fferi50 (23017)
pimre Creative Commons License 2013.11.15 0 0 23018

Ez a két sor jó, ezt eddig nem ismertem, és nem használtam. 

 

usor = Range("A" & Rows.Count).End(xlUp).Row
uoszlop = Cells(1, Columns.Count).End(xlToLeft).Column

 

Eddig jobb híján ciklusban szaladtam végig a Cells.SpecialCells(xlLastCell).Row/Column után hátulról tesztelve a cellák üres voltát. Ez különösen akkor érdekes, ha sorokat/oszlopokat töröltem a táblázat végén.

 

 

Előzmény: Delila10 (23014)
Fferi50 Creative Commons License 2013.11.15 0 0 23017

Szia!

 

A válasz az integer és a double közötti tulajdonság különbség. Az integer - és a long - a törteket a kerekítés szabályai szerint  kerekíti, azaz neki az 5,51 már 6.

Próbáld ki:  k%=5.51  : debug.print k% => 6

                  k%=5.31 : debug.print k% => 5

Ezzel szemben a double és a variant lebegőpontos és nem kerekít, neki tehát az 5 után következő 6 már nagyobb, mint az 5.51.

 

Üdv.

 

Előzmény: tbando (23015)
Fferi50 Creative Commons License 2013.11.15 0 0 23016

Szia!

 

Az xlLastCell eredménye nem hamis, hiszen a formázás is a használatba vétel egyik formája - hiszen az xlLastCell a munkalap használt tartományának utolsó celláját adja meg - csak az eredmény nem a mi elképzelésünknek felel meg...., mi nem ezt akartuk megtudni, de az Excel ezt tudja nyújtani.

 

Ezért én nem is használom ezt a paramétert.

 

Akkor már inkább a specialcells xlcelltypeblanks (vagy xlblanks) paraméterét érdemes használni. Ez megmutatja, hogy hány üres cella van és azok hány területen helyezkednek el, a címét is megmondja területenként.

 

debug.print columns("F").specialcells(xlblanks).cells.address

eredmény:
$F$4,$F$6:$F$7,$F$9:$F$13

 

Ebből már ki lehet kalkulálni az utolsó foglalt cella címét is.

 

De az utolsó  nem üres cellát az end.(xlup) és end.(xltoleft) adja meg az adott oszlopban/sorban - a nem összefüggő táblázatok/adatok esetében is.

 

Üdv.

Előzmény: Delila10 (23014)
tbando Creative Commons License 2013.11.15 0 0 23015

Szerintetek mi a logikája annak, hogy az alábbi makróban a k-változót integernek vagy  longnak definiálva 6x fut le a ciklus (azaz kerekít), míg double vagy variant k-k esetében 5x (azaz csonkol)? 

 

Sub ciklusszam()
Dim k
Range("o1:o10").Clear
For k = 1 To 5.51
Cells(k, 15) = k
Next k
End Sub

Delila10 Creative Commons License 2013.11.15 0 0 23014

Amit meg én vettem csak most észre, hogy az

 

    usor = Cells.SpecialCells(xlLastCell).Row
    uoszlop = Cells.SpecialCells(xlLastCell).Column

sorok hamis eredményt adhatnak, ha az adatokon kívüli celláknak valamilyen formát adtam.

 

Sub mm()
    Dim usor As Long, uoszlop As Long
    usor = Cells.SpecialCells(xlLastCell).Row
    uoszlop = Cells.SpecialCells(xlLastCell).Column
    MsgBox usor & Chr(10) & uoszlop
End Sub

A formázott terület utolsó sorát-, és oszlopát adja ereményül (szegélyezés nagyobb területen, mint az adatok).

 

Összefüggő táblázatnál érdemesebb például az

    usor = Range("A" & Rows.Count).End(xlUp).Row
    uoszlop = Cells(1, Columns.Count).End(xlToLeft).Column
formát használni.

Előzmény: pimre (23011)
Delila10 Creative Commons License 2013.11.15 0 0 23013

Az érdem Fferié, ő csalta elő az agytekervényei közül a left-es képletet.

Előzmény: pimre (23011)
Fferi50 Creative Commons License 2013.11.15 0 0 23012

Szia!

 

Akkor még néhány lehetőség:

 

Ha új adatot kell beírnod, akkor sem kell a képleten módosítani: az utolsó adatokat tartalmazó 3 oszlop elé szúrj be 3 oszlopot. Ekkor az összegző oszlopok képletei automatikusan alkalmazkodnak! (Ha az összegző oszlopok elé szúrod be, akkor nem!) Ha fontos az adatok sorrendje, akkor az "eltolt" 3 oszlop adatát másold be a beszúrt oszlopba és a helyére kerüljenek az új adatok.

 

Szerintem még szebb, ha az összegző oszlopokat közvetlenül a név oszlop után teszed (azaz az adatok elé). Ennek az az előnye, hogy az összegzőképletet kiterjesztheted az ezután beírandó (még meg sem lévő) adatokra a beíráskor (akár a munkafüzet utolsó oszlopáig!). Az új adatokat egyszerűen csak be kell írni a meglevőek mögé és máris kész az új összegzés.

 

Az összegzést megcsinálhatod egy új munkalapra is, hogy csak azt lássák mások. Ekkor az összegző képletbe fel kell venni az adatokat tartalmazó munkalap nevét: (az adatok az Adat nevű munkalapon vannak)

formula="=SUMIF(Adat!$C$1:$N$1,left(Adat!C$1,7) &""*"",Adat!$C3:$N3)"

Ezután az Adat nevű munkalapot akár el is rejtheted.

 

Üdv.

 

Előzmény: pimre (23011)
pimre Creative Commons License 2013.11.15 0 0 23011

És csak most veszem észre a végső trükköt, ahogy veszem át soronként a programot a sajátomba.

 

Így még azzal sem kell bíbelődni, hogy a rövidített neveket /left(C1,7)/ bemásolgassam az összegző oszlopok fejlécébe. Egyszerűen a képlet tartalmazza a rövidítést. És így még a képletek értékké való átalakításával sem kell foglalkozni. Nagyon jó!!!

Előzmény: Delila10 (23007)
pimre Creative Commons License 2013.11.15 0 0 23010

Igen, ez a végső forma. Így igazán elegáns az egész. Mindkettőtöknek köszönöm.

Előzmény: Delila10 (23007)
pimre Creative Commons License 2013.11.15 0 0 23009

„Bár ez a R1C& ""*"" szintaxis nekem új, de majd megpróbálom megérteni.”

 

Ezzel kicsit pontatlanul fogalmaztam. Azt értettem, hogy a * itt egy wildcard karakter, csak nem igazán értettem az alkalmazásának módját, illetve a szintaxisát.

 

A megoldásod "=SUMIF($C$1:$N$1,left(C$1,7) &""*"",$C3:$N3)"

(a fejléc hiányában persze $C3:$N3 helyett persze $C2:$N2-t alkalmazva) tökéletesen működik. Köszönöm.

Előzmény: Fferi50 (23005)
pimre Creative Commons License 2013.11.15 0 0 23008

Igazad van, ugyanakkor a ws.cells() formát január óta használom következetesen, amikor kiderült, hogy az Excel 2007-es verziója (vagy a 2003-asra konvertáló funkció) nem kompatibilis a 2003-assal. Ezt megírtam a http://forum.index.hu/Article/viewArticle?a=123557575&t=9009340 hozzászólásban, amire – az azóta a fórumról sajnálatosan eltűnt és törölt – robbantómester adta meg a kulcsot. A gondot az okozta, hogy hiába választottam ki worksheets(2).select paranccsal egy másik munkalapot, a cells() parancs munkalapnév nélkül csak a 2003 alatt működött jól, 2007 alatt a munkalapváltást figyelmen kívül hagyta. Aztán kicsit később Retro Image (http://forum.index.hu/Article/viewArticle?a=123577102&t=9009340) magyarázta el, hogy miért célszerű egzakt hivatkozásokat használni. Ráadásul most veszem észre, hogy az általa javasolt Application qualifier használatáról időközben meg is felejtkeztem.

Előzmény: Delila10 (23004)
Delila10 Creative Commons License 2013.11.15 0 0 23007

Igazad van a "=SUMIF($C$1:$N$1,left(C$1,7) &""*"",$C3:$N3)" képlettel. Ennek a segítségével a 3 oszlop képleteit 1 lépésben beírhatjuk. Nincs szükség sor beszúrására, és törlésére, képletek helyett értékek beillesztésére.

 

A makró tömörebben:

 

Sub sumifteszt()
    Dim utolsósor As Long, utolsóoszl As Integer
    
    Application.DisplayAlerts = False
    If Worksheets.Count = 2 Then Sheets(2).Delete
    Application.DisplayAlerts = True
    
    Sheets("3500").Copy After:=Sheets(1)
    utolsósor = Cells.SpecialCells(xlLastCell).Row
    utolsóoszl = Cells.SpecialCells(xlLastCell).Column
    
    If utolsóoszl <> 14 Then
        MsgBox "Utolsó oszlop nem N! Ellenőrizd!", vbOKOnly + vbExclamation
        Exit Sub
    End If
    
    Cells(1, utolsóoszl + 1) = "Összesített tranzakció"
    Cells(1, utolsóoszl + 2) = "Összesített mennyiség"
    Cells(1, utolsóoszl + 3) = "Összesített érték"
    
    Range("O2:Q" & utolsósor) = "=SUMIF($C$1:$N$1,left(C$1,7) &""*"",$C2:$N2)"
End Sub

Előzmény: Fferi50 (23005)
Fferi50 Creative Commons License 2013.11.15 0 0 23006

Szia!

 

Az hasznos szerintem, hogy a munkalapra is hivatkozik, mivel nem feltétlenül marad mindig az adott munkalap aktív (jó, ebben az esetben nem változik az aktív lap). Így legalább biztosan nem téved el a képlet.

 

Üdv.

Előzmény: Delila10 (23004)
Fferi50 Creative Commons License 2013.11.15 0 0 23005

Szia!

 

 Bár ez a R1C& ""*"" szintaxis nekem új, de majd megpróbálom megérteni.

 

A szöveg keresésben vannak speciális karakterek (ezt biztosan ismered), a csillag, a kérdőjel.Ezt lehet használni a szumha függvényben, meg más számolós,hasonlítós függvényben is.  A fenti formulában azt jelenti, hogy minden olyan számot összegez, ahol az oszlop első cellájában levő érték kezdő karakterei (esetünkben 7 db karakter) megegyezik a megadott karakterekkel. Tehát pl. "Tranzak*"  eredménye minden Tranzak-kal kezdődő oszlop összesítése, akármivel is folytatódik.

 

szöveg(j)  itt az zavart meg, hogy a munkalapfüggvények között is van ilyen nevű függvény - az álmoskönyvek szerint nem szerencsés a rendszer neveit bekeverni a saját neveink közé.

 

chr(34) ahogy már írtam, korrekt a chr(34) használata, ha idézőjelet akarsz a szövegben megjeleníteni - de akkor csak egy kell belőle. A formula képleteknél gyakran előfordul, hogy idézőjel kell a szövegbe, itt az idézőjel megduplázása az elegánsabb megoldás (lásd az első felvetésed és Delila képlete).

 

Delila képlete: "=SUMIF($C$1:$N$1," & Chr(34) & "Tranzak" & Chr(34) & ",$C3:$N3)"

 

E helyett:" & Chr(34) & "Tranzak" & Chr(34) & " figyelem, az idézőjelek sem kellenek!

kerülhet be: left(C$1,7) & ""*"" 

Tehát így néz ki:"=SUMIF($C$1:$N$1,left(C$1,7) &""*"",$C3:$N3)"

 

Üdv.

 

Előzmény: pimre (23002)
Delila10 Creative Commons License 2013.11.15 0 0 23004

Részemről szívesen.

 

Nem tudom, felfigyeltél-e rá, hogy az új lapnak nem adtam nevet, és a Set ws= ... sort sem használtam, a továbbiakban a hivatkozások sem kezdődtek ws. -tal. Mikor a másolatot elkészíted az első lapról, hivatalból a másolt lap lesz aktív, ezért nincs szükség laphivatkozásokra.

Előzmény: pimre (23001)
pimre Creative Commons License 2013.11.15 0 0 23003

És még egy kérdést engedj meg a játék kedvéért:

 

A Delila által írt képletet ("=SUMIF($C$1:$N$1," & Chr(34) & "Tranzak" & Chr(34) & ",$C3:$N3)") is át lehetne úgy alakítani, hogy ne kelljen új fejlécsort beszúrni? Hogy a "Tranzak" helyén valami hasonló automatizmus működjön? Próbálgattam, de azzal nekem nem jött össze.

 

Előzmény: pimre (23002)
pimre Creative Commons License 2013.11.15 0 0 23002

Szia Feri, neked is köszönöm. Kipróbáltam, működik. Az különösen tetszik, hogy nem kell hozzá a fejléccel babrálni, és egyetlen sorban intézi el a teljes tartományt. Bár ez a R1C& ""*"" szintaxis nekem új, de majd megpróbálom megérteni. 

 

Azért válaszolok az előző hozzászólásodra is: 

 

- szöveg(j). Elsőre nem is értettem, mire gondolsz aztán rájöttem. Én nem a függvényt használtam, hanem egy szöveg() nevű tömbváltozót.

 

- A chr(34)-ek szerepe az volt, hogy a makrórögzítéssel készített programszöveget akartam megvalósítani. Az pedig a következőképp nézett ki:

 

ActiveCell.FormulaR1C1 = "=SUMIF(R1C3:R1C14,""Tranzak"",RC3:RC14)"

 

És ez ráadásul működött, ha makróban futtattam. És ott voltak dupla idézőjelek, amiket másképp nem tudtam előállítani. 

De most, hogy kaptam megoldást Delilától és tőled is, erre a formulára nincs szükség. Így is vért izzadtam, míg előállítottam, ráadásul nem is működött. És ami fontos, nem is volt elegáns.

Előzmény: Fferi50 (23000)
pimre Creative Commons License 2013.11.15 0 0 23001

Delila, ez szuper. Sajnos a tartományok kezelésében bizonytalan vagyok. Magam is gondoltam erre, de rosszul sikerült, ezért használtam a ciklust. És jogos volt az előző észrevételed az utolsósor változó hibájával, azt elnéztem. A megoldásod kiválóan működik, és jól áttekinthető. Köszönöm.

Előzmény: Delila10 (22996)
Fferi50 Creative Commons License 2013.11.14 0 0 23000

Szia PImre itt a folytatás:

 

1. Amikor átmásolod a tesztlapot nem kell új sort beszúrni a fejlécnek, elég ha megcsinálod a "left"-eket:

 

ws.Range(Cells(1, utolsóoszl + 1), Cells(1, utolsóoszl + 3)).Formula = "=Left(C1,7)"

 

Ezek lesznek az összesítés alapjául szolgáló fejlécek.

 

2. A ciklusos rész helyére írd be az alábbiakat:

 
képlet = "=SUMIF(R1C3:R1C" & utolsóoszl & ",R1C& ""*"",RC3:RC" & utolsóoszl & ")"
ws.Range(Cells(2, utolsóoszl + 1), Cells(utolsósor, utolsóoszl + 3)).Formula = képlet

Így megvolnánk a számolással! De mivel a fejlécet érthetővé kell tenni, ezért át kell alakítani a képleteket értékekké:

 

ws.Range(Cells(2, utolsóoszl + 1), Cells(utolsósor, utolsóoszl + 3)).Value = ws.Range(Cells(2, utolsóoszl + 1), Cells(utolsósor, utolsóoszl + 3)).Value

 

Ezután már beírhatod a kívánt fejléceket:
ws.Cells(1, utolsóoszl + 1) = "Összesített tranzakció"  ' sorösszeg oszlopcímek kiírása
ws.Cells(1, utolsóoszl + 2) = "Összesített mennyiség"
ws.Cells(1, utolsóoszl + 3) = "Összesített érték"

 

Ta-dam!

 

Kész az összesítés.

 

Remélem, sikerül és nálad is működni fog. De keress bátran, akár priviben is.

 

Üdv.

Előzmény: Fferi50 (22999)
Fferi50 Creative Commons License 2013.11.14 0 0 22999

Sziasztok, ez még mindig PImrének szól:

 

A helyes képlet a teszt alapján így nézne ki, amennyiben ciklusban csinálod:

 képlet="=SUMIF(R1C3:R1C" & utolsóoszl & ",R1C" & j + 2 & ",R" & i & "C3:R" & "C" & utolsóoszl & ")"

 

DE: mód van arra, hogy egy egész tartománynak is adj képletet egy lépésben, ezen még dolgoznom kell egy kicsit.

 

Üdv.

Előzmény: Fferi50 (22997)
tbando Creative Commons License 2013.11.14 0 0 22998

Én nem igazodtam ki, hogy melyik szumif-es képleted működik és melyik nem. Abban azonban biztos vagyok, hogy a szumif 0-t fog adni eredményül, ha Tranzak-ra keresel és a keresősorban egy fia tranzak sincs :)))).

 

Én azt javaslom, hogy szúrj be még egy sort az első sor elé, és a havi 3 oszlopokat számozd be 1-2-3-mal, majd a szumha-val összegezd az oszlop1-ket, az oszlop2-ket és oszlop3-kat. 

Előzmény: pimre (22993)
Fferi50 Creative Commons License 2013.11.14 0 0 22997

Szia!

 

Tényleg belekeveredtél egy kicsit.

Ebben a sorban van egy-két hiba:

        képlet = Chr(34) & "=SUMIF(R1C3:R1C" & utolsóoszl & "," & Chr(34) & Chr(34) & szöveg(j) & Chr(34) & Chr(34) & ",R" & "C3:R" & "C" & utolsóoszl & ")" & Chr(34)

 

  1. szöveg(j) Ez a magyar excel függvény, nincs helye a vba sorokban,akkor sem, ha cellába írod a formulát!!! Gondolj arra, hogy SUMIF -et írtál a SZUMHA helyett!
  2. szöveg(j)  Nincs szükség szöveggé alakítani a változót, azt megteszi magától a vba a hozzáfűzésben!
  3.  képlet = Chr(34) & nem kell a chr(34) &, simán képlet ="= és a folytatás.
  4. Chr(34) & Chr(34) & szöveg(j) & Chr(34) & Chr(34) itt sem értem a chr(34) duplázásokat, ennek az lesz az eredménye, hogy dupla idézőjelek lesznek a szövegben - amit gondolom nem akarsz és nem is jó.
  5. A végére sem kell chr(34).

Ez lett a sorból:

képlet = "=SUMIF(R1C3:R1C" & utolsóoszl & "," & Chr(34) & j  & Chr(34) & ",R" & "C3:R" & "C" & utolsóoszl & ")"

vagy

képlet ="=SUMIF(R1C3:R1C" & utolsóoszl & ",""" & j & """,R" & "C3:R" & "C" & utolsóoszl & ")"

 

mivel vagy chr(34), vagy dupla idézőjel.

A többit még nézem.

 

Üdv.

Előzmény: pimre (22993)
Delila10 Creative Commons License 2013.11.14 0 0 22996

Egy kicsit játszadoztam. Mindjárt jön Jimmy, és 2 sorban elintézi az egészet.

 

Sub sumifteszt()
    Dim utolsósor As Long, utolsóoszl As Integer
    
    Application.DisplayAlerts = False
    If Worksheets.Count = 2 Then Sheets(2).Delete
    Application.DisplayAlerts = True
    
    Sheets("3500").Copy After:=Sheets(1) 'Másolat az első lapról
    utolsósor = Cells.SpecialCells(xlLastCell).Row ' a most megnyitott file utolsó sorát megkeressük
    utolsóoszl = Cells.SpecialCells(xlLastCell).Column
    
    If utolsóoszl <> 14 Then
        MsgBox "Utolsó oszlop nem N! Ellenőrizd", vbOKOnly + vbExclamation
        Exit Sub
    End If
    
    Cells(1, utolsóoszl + 1) = "Összesített tranzakció"  ' sorösszeg oszlopcímek kiírása
    Cells(1, utolsóoszl + 2) = "Összesített mennyiség"
    Cells(1, utolsóoszl + 3) = "Összesített érték"
    
    Rows(1).Insert shift:=xlShiftDown ' Új első sor beszúrás
    
'Képletek
    Range("C1:N1") = "=LEFT(C2,7)"  '7 karakteres címek a C1:N1 tartományba
    'O, P, és Q oszlopokba szumha
    Range("O3:O" & utolsósor + 1) = "=SUMIF($C$1:$N$1," & Chr(34) & "Tranzak" & Chr(34) & ",$C3:$N3)"
    Range("P3:P" & utolsósor + 1) = "=SUMIF($C$1:$N$1," & Chr(34) & "Összmen" & Chr(34) & ",$C3:$N3)"
    Range("Q3:Q" & utolsósor + 1) = "=SUMIF($C$1:$N$1," & Chr(34) & "Összért" & Chr(34) & ",$C3:$N3)"
    
    'Képletek helyére értékek beillesztése, mert az első sor törlése után a képletek fejre állnak enélkül
    Range("O3:Q" & utolsósor + 1).Copy
    Range("O3:Q" & utolsósor + 1).PasteSpecial xlPasteValues
    Rows(1).Delete ' Az új első sor törlése ' A teszt alatt ezt is kihagyom
End Sub

Előzmény: pimre (22993)
Delila10 Creative Commons License 2013.11.14 0 0 22995

A képletet az utolsósor+1 -ig add meg, mivel felülre beszúrtál egy sort.

ws.Range("O3:O" & utolsósor+1) = ...

Előzmény: Delila10 (22994)
Delila10 Creative Commons License 2013.11.14 0 0 22994

Megadhatod a képletet egyszerre az összes sorba, és még rá sem kell állnod az O3-ra.

 

ws.Range("O3:O" & utolsósor) = "=SUMIF($C$1:$N$1," & Chr(34) & "Tranzak" & Chr(34) & ",$C3:$N3)"

Előzmény: pimre (22993)
pimre Creative Commons License 2013.11.14 0 0 22993

Köszönöm a segítő szándékot. Időközben volt egy kevés egyéb feladatom, ezért csak most válaszolok.

 

Hát sajnos a szövegfelvágottba még jobban belekeveredtem.

 

Egyszerűen képtelen vagyok programból megoldani a SumIf függvényt.  És hogy ne rébuszokban adjam elő a panaszomat, készítettem a tesztfájlt, benne egy nyúlfarknyi tesztprogrammal, amin bemutatom a problémámat: http://data.hu/get/7127187/sumif_teszt.xls

 

A tesztfájlban néhány mintaadat van. A program először a munkalapot átmásolja egy új lapra, és azon dolgozik, hogy tesztelés közben ne rontsuk el az adatokat, hátha újra akarjuk indítani.

 

Ezután az új teszt munkalapon létrehoz egy új fejlécsort, és ebbe átmásolja a fejléc oszlopok első néhány karakterét, hogy ezek felhasználásával tudjuk a feltételes összegzést végrehajtani.

 

 

A teszt kedvéért bemásoltam értékadásra a makrórögzítővel kapott eredményeket, és az működik. Ezeket kommentekben be is írtam a programba.

 

A programmal létrehozattam (látszólag) ugyanazt a kódot, amit a makrórögzítővel kaptam.

És az új munkafüzet végén az első szabad oszlopba be is másoltam ezt az értéket. De valamiért nem működik. Pedig nem látom a különbséget a programom által előállított kód és a makrórögzítős kód között.

 

Tudnátok segíteni? Mi az ördögöt ronthattam el? 

 

Előzmény: Fferi50 (22970)
Fferi50 Creative Commons License 2013.11.14 0 0 22992

Szia!

 

Másrészt, mivel gondolom a telefonköltségekre vagy elsősorban kíváncsi, az még egyszerűbben megoldható a Szumha függvénnyel:

 

A magán-céges listádat tartalmazó táblázatod utolsó oszlopa után írd be a következő képletet:

= szumha(híváslista telefonszám oszlopa;telefonszám;híváslista költség/díj oszlopa), azaz

=szumha(munka2!A:A;munka1!A2;munka2!G:G), ha a híváslista a munka2 munkafüzetben van, A:X oszlopig, a táblázatod pedig az A oszlopban tartalmazza a telefonszámot és az első sor az fejléc.

Ezt a képletet húzd végig a táblázatodon lefelé.

Az oszlopot megcímezheted a hónappal és így minden hónapot behozhatsz ide egy-egy oszlopba.

 

Természetesen a copy irányított beillesztés érték manőver itt is kell, hogy a képletek "eltűnjenek".

 

Üdv.

Előzmény: Maryenm (22989)
Fferi50 Creative Commons License 2013.11.14 0 0 22991

Szia!

 

Feltételezések:

A táblázatodban az első oszlopban vannak a telefonszámok, a második oszlopban a minősítése, hogy magán vagy céges (azaz ugyanabban az oszlopban!), mellette lehet a harmadik oszlopban pl. a név.

Nevezd el ezt a táblázatot pl. maganceges (kijelölöd a táblázatot, utána E2010-ben képletek, név megadása, munkafüzet szintű név)

Gondolom, a híváslistád is Excelben van, vagy oda betehető. Legyen a híváslista ugyanabban a munkafüzetben, mint a táblázatod, de külön munkalapon az A1 cellától. 

Az fkeres függvénnyel megoldható a feladat, a híváslista utolsó oszlopa után írd be a képletet az első cellába:

=ha(hibás(fkeres("A1";maganceges;1;0));"Nincs ilyen szám";fkeres("A1";maganceges;2;0))

Ezt a képletet húzd/másold végig a híváslista végéig. Utána jelöld ki az oszlopot, másol, majd irányított beillesztés--értéket. Utána Esc, hogy visszatérj normál módba.

 

Ezután már bármilyen szűrést tudsz a kiegészített híváslistában csinálni.

 

Ha a "maganceges" táblázatodban a név van az első oszlopban, akkor cseréld meg az oszlopokat, hogy a telefonszám legyen az első oszlop. (Ha ezt nem akarod, akkor az index függvényt kell használni a hol.van függvénnyel kombinálva.)

 

A neveket ugyanezzel a módszerrel adhatod hozzá a híváslistához, ott azt az oszlopot kell a második fkeresbe írni, amelyikben a név található.

 

Remélem, tudtam segíteni.

 

Üdv.

Előzmény: Maryenm (22989)
Sánta Kutya (SK) Creative Commons License 2013.11.14 0 0 22990

És te miben kapod ezt a listát a szolgáltatótól, xls-ben vagy csv-ben?

Tudom, hogy unalmas vagyok, de azért kérdezem, mert ez megint egy tipikusan adatbázis-kezelőre való feladat. Én úgy fognék hozzá, ha választhatnék. Határeset, mert meg lehet még oldani viszonylag normálisan Excelben is, de mivel ismétlődően kell elvégezni a munkát, szerintem fölöslegesen bonyolult lesz.

Előzmény: Maryenm (22989)
Maryenm Creative Commons License 2013.11.14 0 0 22989

Sziasztok!

 

Segítséget szeretnék kérni. Az adott havi híváslistából kellene kigyűjtenem a magán és céges hívásokat. Ehhez adott egy lista az aktuális hónapban, hogy melyik céges számról milyen hívást indítottak. Ez a lista excel-ben van. Van egy másik táblázatom, amiben céges számonként gyűjtöm a munkavállalók által lenyilatkozott számokról, hogy céges szám vagy magán. A kérdésem az lenne, hogy melyik függvénnyel tudom azt megcsinálni, hogy kikeresse, hogy az adott eszközhöz (céges számhoz) tartozó hívás az az én nyilvántartásomban ennél a céges számnál magán vagy a céges oszlopban van?!

 

Köszönettel: 

 

Maryen

roley Creative Commons License 2013.11.13 0 0 22988

Köszönöm a válaszokat!!!

Delila10 Creative Commons License 2013.11.13 0 0 22987

A VB szerkesztőben a lapodra állsz. A tulajdonságainál (properties) a ScrollArea értékeként add meg a területet, ahova a felhasználó írhat, pl. A1:C15. Ezután csak ebbe a területbe léphet be a júzer, de a többi cellában a fenti területre történő hivatkozások, képletek továbbra is működnek.

Előzmény: roley (22984)
Fferi50 Creative Commons License 2013.11.13 0 0 22986

Szia!

 

Az adott tartományt (Range-et) rendeld a makróban egy változóhoz mielőtt dolgozni kezdesz vele.

Pl:

dim tartomany as range,talal as range

set tartomany=activesheet.range("A1:Z25")

set talal=tartomany.find(what:="mit",lookin:=xlvalues,lookat:=xlwhole)

if not talal is nothing then

   msgbox "Megtaláltad, a cella helye " & talal.address

else

  msgbox "Nincs találat"

endif

 

De activesheet helyett működik másik munkalapon is, akkor ide a munkalapot úgy írd be, hogy

sheets("Munkalapneve").range("A1:Z25")

 

A keresésnél a lookat paraméter azt határozza meg, hogy az egész cellának meg kell felelnie, vagy részleges találat is jó. Ez utóbbi esetén xlpart a paraméter értéke.

 

Üdv.

Előzmény: roley (22984)
Eredő Vektor Creative Commons License 2013.11.13 0 0 22985

Target

 

Pl.:

 

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B5:B10")) Is Nothing Then MsgBox Target.Address
End Sub

 

 

Előzmény: roley (22984)
roley Creative Commons License 2013.11.13 0 0 22984

Sziasztok!

 

 

Hogyan lehet azt elérni, hogy a makro csak a munkafüzet egy bizonyos tartományában fusson le?

 

Konkrétan egy adott Rangben kell keresnem és utána abban dolgoznom, és nem akarom h más, a Range-n kívül eső értékeket is megtaláljon a keresés során.

 

 

Köszönöm,

R

Fferi50 Creative Commons License 2013.11.13 0 0 22983

Szia!

 

Örülök, hogy segíthettem, írj máskor is, ha excel gondba kerülnél. (Itt a fórumon sokan vannak ám, akik segíteni tudnak!)

 

Üdv.

 

Utóirat: Légy szíves ne ess túlzásokba!!!

Előzmény: AtthysKA (22982)
AtthysKA Creative Commons License 2013.11.13 0 0 22982

Kedves Fferi50!

 

Nagyon nagyon köszönöm a segítséged!

Tökéletesen bevált a leírásod, sikerült összefűznöm a két táblázatot. Kezdtem a számformátummá konvertálással, majd az első képlettel a hét oszlop átvitele után is az eredmény oszlopokat át kellett konvertálnom számformátumúvá, ugyanis szövegként össze-vissza kutyulta az eredményeket.

 

A nevek átvitelénél két kis gubanc volt, a képletben az utolsó 3-ast ki kellett javítanom 2-esre, mert a 3-ik oszlopot hozta a nevek helyett, ami ugye a második oszlop. Szerencsére magamtól rájöttem a megoldásra. A másik gond, hogy egyszerre nem sikerült a művelet a 10K tételnél. Sok cellába hibás (üres) eredményt írt, így megpróbáltam 6-700 cellánként lehúzni fokozatosan, így tökéletes lett a végeredmény!

 

Nagyon köszönöm mégegyszer, borzasztó nagy segítség volt, több órát mentettél meg az életemből!

Isten vagy!

 

Üdv:

AtthysKA

Előzmény: Fferi50 (22973)
tbando Creative Commons License 2013.11.11 0 0 22981

Kösz. Most már értem mire gondoltál. Azt hittem van valami rafináltabb bug is.

Előzmény: Fferi50 (22980)
Fferi50 Creative Commons License 2013.11.11 0 0 22980

Szia!

 

Ha számok vannak az első oszlopban, de nem számként, hanem szövegként vannak tárolva, akkor az fkeres csak akkor találja meg azokat, ha a keresendő érték is szöveges formában van. Tehát ilyenkor a keresendő értéket is szöveggé kell alakítani a kereséshez (pl. szöveg(A1;"#"))

 

Ha az első oszlop számként van tárolva, akkor viszont a keresendő értéket is számértékként kell keresni (pl. érték(A1)).

 

A dolog szépsége, hogy (ha nincs bekapcsolva a hibafigyelés) első ránézésre nem látszik meg, hogy milyen típusu a cella formája és ezek akár keveredhetnek is. Aztán törheted a fejed, hogy az egyik "számot" miért találta meg, a másikat pedig miért nem. (Emlékezz a szöveges dátum problémára.)

 

Üdv. 

Előzmény: tbando (22979)
tbando Creative Commons License 2013.11.11 0 0 22979

Ferikém! Még mindig buta vagyok. Talán ha írnál 1-2 esetet, hogy mikor és hogyan kell trükközni.

Előzmény: Fferi50 (22977)
Fferi50 Creative Commons License 2013.11.11 0 0 22978

Kiegészítésként: érdekes lehet még az Excel számábrázolási képessége is.

 

 

 

 

Előzmény: Fferi50 (22977)
Fferi50 Creative Commons License 2013.11.11 0 0 22977

Szia!

 

Idézet az fkeres súgójából:

Szám vagy dátumértékek keresése alkalmával ügyeljen arra, hogy a tábla első oszlopában az adatok ne szöveges értékként legyenek tárolva. Ebben az esetben az FKERES hibás vagy váratlan eredményt adhat.

 

Üdv.

 

Előzmény: tbando (22976)
tbando Creative Commons License 2013.11.11 0 0 22976

Szia!

 

írod: "Ha csak számok vannak a cikkszám mezőben, előfordulhat, hogy az fkeres nem jól teljesít, ilyen esetben trükközni kell."

 

Milyen esetekben nem teljesít jól az fkeres?  Én nem ismerek ilyeneket, már pedig ha vannak, nem árt felkészülni rájuk.

 

Előzmény: Fferi50 (22973)
Eredő Vektor Creative Commons License 2013.11.11 0 0 22975

Szívesen.

Előzmény: NeomatiK (22974)
NeomatiK Creative Commons License 2013.11.11 0 0 22974

Szia. Köszi a leírást. Elteszem későbbre!

Előzmény: Eredő Vektor (22955)
Fferi50 Creative Commons License 2013.11.11 0 0 22973

Szia!

 

Esetedben az fkeres függvény használható.

Feltételezéseim:

A két táblázat egy munkafüzetben van, két külön munkalapon. Ha nem így lenne, azt gondolom meg tudod csinálni.

Az 5000 cikkszámos táblázatban levő minden cikkszám előfordul a 10000-es táblában.

Javaslat:

Az 5000 cikkszámos táblázatot nevezd el pl. jocikk -nek. (2010-ben képletek - név megadása, munkafüzet szintű, korábban név hozzáadása vagy valami ilyesmi.)

C-I oszlopok adatainak áthozatala

Ezután a 10000-es táblázatban a J1 cellába (mivel az I oszlopban még van adat) írd be a következő képletet

=ha(hibás(fkeres(A1;jocikk;3;0));"";fkeres(A1;jocikk;3;0))

Ezt a képletet másodld/húzd el egészen a P1 celláig.

A K1 cellában javítsd ki a következőre:

=ha(hibás(fkeres(A1;jocikk;4;0));"";fkeres(A1;jocikk;4;0))

és így tovább, egészen a P1 celláig, minden oszlopban növeld a számot 1-el.

Ha megvan, akkor az egész első sorban (J-P oszlopok) levő képleteket húzd le a 10000 sor végéig.

 

Eredmény: azokban a cellákban, ahol "jocikk" táblában van adat, az ide belekerül, egyébként látszólag üres marad a cella (de a képletet látod benne!)

A képletek "eltüntetése": kijelölöd a J-P oszlopokat, másolás, kijelölöd a J1 cellát, irányított beillesztés értéket.

 

A nevek áthozása:

Itt is az fkeres függvényt használjuk, de nem a B oszlopba írjuk a képletet (mert akkor az eredeti neveket "hazavágnánk"), hanem a sorok következő, Q1 cellába:

=ha(hibás(fkeres(A1;jocikk;3;0));B1;fkeres(A1;jocikk;3;0))

Majd a képletet lehúzod a 10000 sorra.

Ennek az lesz az eredménye, hogy minden olyan cikknél, ami szerepel a "jocikk" táblában, az új név lesz itt, amelyik nem szerepel, a régi neve a B oszlopból.

 

A Q oszlop adatait kijelölöd, másol. B1 cellát kijelölöd, irányított beillesztés értéket.

 

Ezután a Q oszlopot kitörölheted.

 

Ha csak számok vannak a cikkszám mezőben, előfordulhat, hogy az fkeres nem jól teljesít, ilyen esetben trükközni kell.

 

Remélem, minden érthető, de kérdezz bátran.

 

Üdv.

Előzmény: AtthysKA (22972)
AtthysKA Creative Commons License 2013.11.11 0 0 22972

Sziasztok!

Segítséget szeretnék kérni, sajnos csak alapszinten értek az Excelhez, viszont van egy nagyobb feladatom, ami bőven meghaladja a tudásom:

 

Van két táblázatom:
1. táblázat 10000 tételes raktárkészlet
A oszlop: cikkszám
B oszlop: név
C,D,E,F,G,H oszlopok egyéb adatok

2. táblázat 5000 tételes kiegészített és javított raktárkészlet
A oszlop: cikkszám
B oszlop: név
C,D,E,F,G,H,I oszlopok egyéb adatok (teljesen különbözik az 1. táblázat egyéb adataitól)

 

A feladat:

egyesíteni a két táblázatot az alábbiak alapján:
1. A tételek cikkszáma mindkettőben megegyezik, a többi adat nem. Tehát A oszlop fix.
2. Egyező cikkszám esetén a 2. táblázat név oszlop adata felülírja az 1. táblázat név oszlopát
3. A 2. táblázat C,D,E,F,G,H,I oszlopai az egyesített táblázatban I,J,K,L,M,N,O oszlopba kerülnek (tehát a 2. táblázat C,D,E,F,G,H,I oszlopai nem írják felül az 1. táblázat C,D,E,F,G,H és üres I oszlopaitt hanem eltolódnak)

 

Nagyon szájbarágós leírást kérnék szépen, tényleg csak alap szinten kezelem a szoftvert.

Próbálkozásként oda eljutottam, hogy van már egy táblázatom, ahol az oszlopok a helyükön vannak, viszont 5000 tétel kétszer szerepel. Esetleg lehet innen könnyebb kiindulni. Itt már csak az egyező cikkszámú sorok összefűzése lenne a feladat, megtartva minden oszlop adatait, és a sorrendben második tétel neve felülírja az elsőt.

 

Előre is köszönet minden válaszért!

tbando Creative Commons License 2013.11.11 0 0 22971

Én is köszönöm a javítást. Az ilyen banális bakik miatt szoktam órákat szentségelni, míg megvilágosodok :))))))

Előzmény: Fferi50 (22970)
Fferi50 Creative Commons License 2013.11.10 0 0 22970

Szia!

 

ActiveCell.FormulaR1C1 = "=SUMIF(R1C2:R1C156,""valami"",RC2:RC156)"

 

sorból a "valamit" szerintem ki lehet cserélni RC2-re.

 

Hogy egy picit még pontosabb legyen: a ""valamit"' lehet kicserélni RC2-re, mert ha csak az egyik idézőjelet hagyod el, akkor hibás lesz a képlet.

 

Üdv.

Előzmény: tbando (22969)
tbando Creative Commons License 2013.11.10 0 0 22969

Szia! Lenne ötletem és egy kérdésem: 

 

Az ötlet: Az

 

ActiveCell.FormulaR1C1 = "=SUMIF(R1C2:R1C156,""valami"",RC2:RC156)" 

 

sorból a "valamit" szerintem ki lehet cserélni RC2-re. A következőket meg RC3-ra, RC4-re.

 

A kérdésem pedig: Miféle függvénnyé nem tudtad ezt átalakítani?  Meg egyáltalán, mi szükség van rá?

Előzmény: pimre (22967)
Fferi50 Creative Commons License 2013.11.10 0 0 22968

Szia!

 

Egy kicsit belekeveredtél a szövegfelvágottba:

ws.Cells(i, j) = SumIf("C1:" + "CT1", szöveg(j), "B" + Trim(Str(i)) + ":" + "CT" + Trim(Str(i)))

 

E helyett: ws.Cells(i, j).Formula = "=sumif(C1:CT1," & j & ",B" & i & ":CT" & i &")"

 

A formulákban nem kell idézőjelbe tenned az oszlopok betűjeleit, írhatod úgy, mint ahogy a cellában írod a képletet. Viszont a változók értékeit csak hozzáfűzéssel lehet a képlethez hozzáadni. Ezért akárhányszor változó értéket használsz, ott mindig hozzáfűzés kell.

Ha idézőjel kellene valamiért a képletbe, pl. egy szövegdarabot akarsz beletenni, akkor ott dupla idézőjelet kell használni az elején és a végén is ( & ""szöveg"" &).

Továbbá a számértékeket nem kell átalakítani szöveggé, azt "magától" megteszi az összefűzésnél (pláne nem trim(str(i)).

Nem egészen értem a j szerepét a feltétel helyén. ide annak a cellának a címét kell megadni, vagy azt a szöveget, amire az összesítés ki van hegyezve. (Persze, ha a hónapot számmal jelölted és csak annyi a feltétel, akkor nem kérdés a kérdés.)

 

Üdv.

Előzmény: pimre (22967)
pimre Creative Commons License 2013.11.10 0 0 22967

Kösz, tbando képlete segítségével kézből kiadva tökéletesen működött. (Valóban be kellett hozzá illesztenem egy új 1. sort, hogy az eredeti oszlopok végén szereplő dátumot mutató részek kiessenek. Tehát az új első sorba csak az oszopok első néhány karaktere került, amivel így az azonosakat felismerte az Excel.

 

Viszont programba képtelen voltam beírni. Lehet, hogy a 2003-as verzióm volt az oka, és most nincs energiám megnézni ugyanezt 2007 alatt.

Szóval makrórögzítéssel sikerült megtalálni a formulát: 

ActiveCell.FormulaR1C1 = "=SUMIF(R1C2:R1C156,""valami"",RC2:RC156)", és ez természetesen makróban futtatva is működött. De ezt nem tudtam szabályos függvénnyé alakítani:

 

Amig a kódot írtam, a VBA felismerte a sumif-et és szépen átírta SumIf-nek, de amikor ráfutott a vezérlés, akkor azt mondta, hogy Sub or Function not defined, és a SumIf nevét jelöli meg a hiba okaként.

 

ws.Cells(i, j) = SumIf("C1:" + "CT1", szöveg(j), "B" + Trim(Str(i)) + ":" + "CT" + Trim(Str(i)))

 

A gond az, hogy egyelőre nem tudom a fentieket átalakítani a makrórögzítő és az általad is megadott range(cells(1,1),cells(1,utolsóoszlop)).formula="=sum(A3:A22000)" formára.

 

Mára fel is adom, majd a napokban átrágom magam rajta.

 

A későbbi kérdésedre: Az első két oszlopban termékkód és név van, de ez az adott feladat szempontjából most nálam érdektelen

Előzmény: Fferi50 (22965)
Fferi50 Creative Commons License 2013.11.10 0 0 22966

Szia!

 

Még valami, az nem derült ki, hogy az oszlopokban levő hónapok évekkel hogyan vannak megkülönböztetve, illetve van-e az első oszlopban bármi egyedi (pl. termék neve).

Mert akkor termékre, évekre a szumha(több) függvény kiválóan használható.

 

Üdv.

 

Előzmény: pimre (22964)
Fferi50 Creative Commons License 2013.11.10 0 0 22965

Szia!

 

Beszúrsz egy sort a táblázat elejére (a fejlécek elé):

majd beírod a képletet mondjuk az A1 cellába =szum(A3:A22000) (ha itt kezdődnek az adataid).

Ezután végighúzod az utolsó oszlopig a képletet.

 

Persze, ez az árakat is összeadja...

Viszont, ha a képletet makróval írod be: range(cells(1,1),cells(1,utolsóoszlop)).formula="=sum(A3:A22000)", akkor egy ciklussal a felesleges képleteket ki is tudod törölni.

 

Üdv.

Előzmény: pimre (22964)
pimre Creative Commons License 2013.11.10 0 0 22964

Kösz, valami ilyesmit kerestem. Nemsokára kipróbálom.

Előzmény: tbando (22963)
tbando Creative Commons License 2013.11.10 0 0 22963

Elegáns lehet az alábbi képlet végigmásolása is, ha az 1 sor a fejléc és a 2-iktól kezdódnek az adatok

 

=szumha($B$1:$EZ$1;"havioszlop1";$B2:$EZ2)

Előzmény: pimre (22962)
pimre Creative Commons License 2013.11.10 0 0 22962

Kösz. Bírni bírja a 2003. A programsor is egyszerű: 

Application.Sum(Range(ws.Cells(i, 3), ws.Cells(i, utolsóoszl))), ahol ws as adott worksheet, az i pedig az egyes sorok sorszáma.

Az sem gond, hogy a 3-utolsóoszl között ciklusváltozóval végigszaladok és külön változóba gyűjtöm a 3., 6., 9., 12. stb, illetve egy másikba a 4., 7. stb., és egy harmadikba az 5., 8. stb értékek összegeit. 

 

Csak reméltem, hogy van valami elegánsabb megoldás.

 

Előzmény: tbando (22960)
Eredő Vektor Creative Commons License 2013.11.10 0 0 22961

pivot tábla gyanús eléggé...

Előzmény: pimre (22956)
tbando Creative Commons License 2013.11.10 0 0 22960

Ja, az kimaradt, hogy a teszt 20.000 sorral és 155 oszloppal történt.

Előzmény: tbando (22959)
tbando Creative Commons License 2013.11.10 0 0 22959

Én valszeg azt csinálnám, hogy lenne a Munka1 a havi adatokkal, és egy ugyanolyan szerkezetű Munka2 a kumuláltakkal.  Megnéztem egy ősöreg XP-n excel2003-mal, játszva  elbírja. Az automatikus számolást persze érdemes kikapcsolni.

Előzmény: pimre (22956)
pimre Creative Commons License 2013.11.10 0 0 22958

Igen. Eddig nem használtam, és nem ismerem as Accest. Az jövő évi terv. AZ adatok Excelben vannak, a programot még ma szeretném megírni. Még 1-2 óra és meg is lesz. Ha más mód nincs, akkor elviselem, hogy ciklusban kicsit lassan fut le. Végső soron úgysem kell sokszor használni.

 

Szóval inkább elvi céllal érdekel, hogy van-e rá megoldás az Excelben.

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

Van rá bármi okod, hogy ne csinálj belőle adatbázist?

Előzmény: pimre (22956)
pimre Creative Commons License 2013.11.10 0 0 22956

Van egy nagyméretű táblázatom. Benne 3-3 oszlop a eladott darabszám, eladási át és összérték ismétlődik havonként, majd ugyanez több éven át. Szeretném összegezni őket csoportonként, azaz a darabszámok összegét és az összértékek összegét megkapni. Tehát az első oszop után a negyedik, és azt követően mindig 3-al emelve az oszlopszámot. Illetve ugyanezt a 3. oszoptól indítva, szintén hármasával léptetve.

 

Természetesen ciklusban ez nem okoz gondot, de egyrészt nem elegáns, másrészt mintegy húszezer sorral kicsit lassú, és mindezt több mint 30 fájlban kellene. Van erre valamilyen elegáns és gyors megoldás?

Eredő Vektor Creative Commons License 2013.11.09 0 0 22955

A szöveggel számoláshoz excel 4 makrófüggvény kell.

Pl. Az A2 cellában: 5+5

Az eredményt a B2 cellában szeretnéd látni, akkor :

 

Jelöljük ki a B2 es cellát! Ezután kat-
tintsunk aKépletek/Név megadása - majd Név megadása...

Az ablak tetején lévő mezőben ad-
junk meg egy találó elnevezést, pl. "számít"
Ezután aktiváljuk a lenti Hivatko-
zás mezőt, és töröljük ki a tartalmát!
Utána írjuk bele a következő szöveget:
=KIÉRTÉKEL(A2)
Ezek után Hozzáadás, majd OK.
Az A2-es cellában található szöveges
feladat kiértékeléséhez adjuk meg a B2-
es cellában a következő képletet:
=számít
Miután megnyomtuk az
Enter billentyűt, megjelenik a kívánt
eredmény a cellában.
 
Ezt a képletet a már megszokott mó-
don átmásolhatjuk a B2-esből más cel-
lába, vagy használhatjuk az automati-
kus kitöltés lehetőségét, s így akár több
szöveges számolási feladatot is elvégez-
hetünk.

Előzmény: NeomatiK (22948)
NeomatiK Creative Commons License 2013.11.09 0 0 22954

Van olyan cella, ami tele van írva szöveggel. Ha rámegyek arra cellára, elfoglalja a fél képernyőt. Persze más munkafüzetnél visszakapcsolom, ahol nem takarja ki.

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

Erre mondták Lentiben, hogy egyéni szociális probléma. :-) Egyébként mi indít arra valakit, hogy kikapcsoljon egy ilyen alapfunkciót?

Előzmény: NeomatiK (22952)
NeomatiK Creative Commons License 2013.11.09 0 0 22952

Ki van kapcsolva nálam a szerkesztőléc. De amúgy igen, írhattam volna azt is.

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

De miért kell ehhez F2? Ha ráállsz a kurzorral, akkor is látod.

 

Előzmény: NeomatiK (22950)
NeomatiK Creative Commons License 2013.11.09 0 0 22950

:( Akkor inkább nyomkodom az F2-t.

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

Külön cella.

Előzmény: NeomatiK (22948)
NeomatiK Creative Commons License 2013.11.09 0 0 22948

Sziasztok!

 

Egy oszlop néhány cellájába írnék több számot, pl így nézne ki:

pl A2 cellába: 100+300+150

A3 cellába: 400

A4 cellába: 150+200

 

 

Igenám, de így nem tudom SZUM fügvénnyel összeadni. Ha = jelet teszek a cellákban, akkor tudom SZUMmázni. Viszont akkor nem látszik, hogy milyen összetevők vannak.

Szóval  az lenne a lényege, hogy F2 nyomása nélül látszódjanak ezek a tételek "100+300+150" stb. és össze is lehessen adni.

Van erre gyógyír?

tbando Creative Commons License 2013.11.07 0 0 22947

Kösz. A mérőműszeres példáddal megnyugtattál, hogy nem olyan nagy égés, hogy nem  ismertem a 2 bájtos beolvasást. Mivel még csak olyan műszerrel találkoztam, ami helyből felajánlotta az excelbe tölthetőséget, amivel még én is megbírkóztam :))).   

Előzmény: Törölt nick (22946)
Törölt nick Creative Commons License 2013.11.07 0 0 22946

Képzeld el, hogy van egy elektronikus hőmérő, ami fájlban tárolja a mért adatokat. Például másodpercenként egy mért értéket, éspedig előjeles, kétbájtos egész formában. Amikor olyan programot írok, amivel ezt a fájlt akarom feldolgozni, be kell olvasnom a fájlból az adatokat. Van két lehetőségem.

1) Beolvasom bájtonként (High Byte és Low Byte), az eredmény pedig = High Byte * 256 + Low Byte. Csak itt még külön figyelnem kell a High Byte első bitjére, ami az előjelet takarja.

2) Beolvasom Integer változóba, ami két bájtos, előjeles ábrázolási mód, és ha szerencsém van, akkor automatikusan kezeli az előjelet, és nem kell szenvednem vele.

De ez mindig lutri. Ha lekódolod, hogy a program olvasson be két bájtot egy integer vltozóba, akkor melyik lesz elöl: a High Byte, vagy a Low Byte? Pl. Ha ez a két bájt jön a sorban: 11, 65 (hexadecimális számok) akkor azt 4453-nak, vagy 25873-nak fogja venni? Azt hiszem, ez programnyelv-függő, szóval mindig kísérletezni kell vele. Egyszer írtam egy jó kis programot Delphiben, ami egy mérőműszer adatait dolgozta fel, abban használtam ezt a módszert. VBA-ban talán még sosem kellett.

tbando Creative Commons License 2013.11.07 0 0 22945

Jimmy kösz. Így már értem. Az a variáció eszembe se jutott, hogy már maga a szorzás overflow-t eredményez. Az integer negligálás javasoltságáról idáig nem hallottam. Ezentúl nem fogom használni. És végezetül hagy kérdezzem, azon mit kell érteni, hogy bináris file-ból 2 byte-s adatok beolvasása?

Előzmény: Törölt nick (22943)
Törölt nick Creative Commons License 2013.11.07 0 0 22944

Gondolom az integer itt maradt a 8 és 16 bites korszakból, amikor az adat és parancsszélesség a mai gépekhez képest alacsony volt(a belső adat bus szélesség ugyanis ekkora volt), amikor még spórolni kellett a memóriával. Aki ismeri az akkori hardwareket azoknak ez egyértelmű. Tehát ahogy te is használod érdemes a számértékek megjelenítésére long vagy egyéb nagyobb számérték megjenítésére alkalmas numerikus változókat deffiniálni ugyanis ezeknek a lefutását ma már nem korlátozza a belső adat bus szélesség azaz a számértékek 32 vagy 64 bit szélességben egyidejüleg hajtódnak végre azaz nem lassitják a gépet.

Előzmény: Törölt nick (22943)
Törölt nick Creative Commons License 2013.11.07 0 0 22943

A változók típusa nem módosul.

Az első esetben a és b integer, tehát az a*b műveletet integer változókkal akarja elvégezni, és ez már önmagában overflow-t okoz.

A c változóig már el sem jut. Próbáld ki c nélkül:

 

a = 2: b = 20000

MsgBox a*b

 

A második esetben double a és integer b összeszorozható, de az eredmény már nem fér el c-ben.

 

Az okosok azt szokták mondani, hogy felejtsük el az integer típust. Folyton csak a probléma van vele, azon kívül a program futását is lassítja, szóval mi haszna? Én minden egész változót Long típusúként deklarálok már évek óta. Integert kizárólag olyan (ritka) esetekben használok, amikor bináris fájlból kell kétbájtos adatokat beolvasni. Ott sem mindig.

Előzmény: tbando (22942)
tbando Creative Commons License 2013.11.07 0 0 22942

Nem egészen világos elöttem, hogy hogy milyen szabály szerint írja át a vba a változók exlpliciten meghatározott típusát. Az alábbi példában a szorzás mindkét Dim-nél  overflow-t eredményez.  De amíg ehhez az elsőnél át kell írnia  Dim c#-t, addig a másodiknál meg változatlanul kell hagynia a c%-t. A kérdésem tehát, hogy milyen szabály szerint alakul a változók típusa?

 

Sub valttipus()


Dim a%, b%, c#
''Dim a#, b%, c%

 

a = 2: b = 20000

c = a * b

 

End Sub

   

Törölt nick Creative Commons License 2013.11.07 0 0 22941

Szerintem nem zavaró, inkább vicces :) Elképzelem, hogy mi lehet mögötte: egy lelkes ember, aki annyira bír lelkesedni, hogy minden mondat szinte kirobban belőle :))

Mivel olyan kort írunk, amikor az ember már a levelet indító megszólítás után sem meri kitenni a felkiáltójelet, nehogy sértőnek, agresszívnek, stb. tűnjön, a hsz-eid tulajdonképpen üdítő változatosságot jelentenek :)

Előzmény: hunterzsolt (22939)
Eredő Vektor Creative Commons License 2013.11.06 0 0 22940

Most arra inspiráltam, hogy a 22932 előtti hszeket elolvassam. Múltkor nem értettem, most már értem :)

Előzmény: hunterzsolt (22939)
hunterzsolt Creative Commons License 2013.11.06 0 0 22939

Lehet furcsa, de nálam ez már megszokás, beidegződés. Ígérem, ha ennyire zavaró, akkor majd odafigyelek, hogy mi kerüljön a mondat végére. 

Előzmény: Törölt nick (22932)
Delila10 Creative Commons License 2013.11.04 0 0 22938

Ez nem az én napom.:(

A D oszlopban nem az évszámot megadó képletek szerepeltek az előző képen.

 

Előzmény: Delila10 (22937)
Delila10 Creative Commons License 2013.11.04 0 0 22937

A képről lemaradt a képlet vége.

 

A G2 képlete: =DARABHATÖBB($B$2:$B$7;$F2;$D$2:$D$7;G$1)

Előzmény: Delila10 (22936)
Delila10 Creative Commons License 2013.11.04 0 0 22936

A 2007-es verziótól kezdve a darabhatöbb függvénnyel könnyen megoldható.

Előzmény: SvvR (22934)
Retro Image Creative Commons License 2013.11.04 0 0 22935

Pivottáblagyanús...

Előzmény: SvvR (22934)
SvvR Creative Commons License 2013.11.04 0 0 22934

Sziasztok!

 

 

Tudnátok segíteni abban, hogy képlettel meg tudom-e azt csinálni, hogy darabteli függvényt még szűröm dátumra is.

 

Az alaptáblám ez, de van kb. 15 munkalap, s mindegyiken van több adat (van ahol 100 sor is van):

 

Munka1

xxx    AB       2012.08.01

yyy    CD      2013.10.10

zzz    AB       2013.10.22

 

Munka2

xyz    CD      2013.11.02

 

 

 

Azt csináltam eddig, hogy Darabtelivel összeszámoltatttam egy összesítő munkalapra, hogy Munka1 B oszlopában van 2db AB, 1 CD.  De itt, így nem tudom, hogy mikor dátummal.

Így néz ki:              

                          AB            CD         EF 

Munka1               2               1          0

Munka2               0               1          0

Munka3

stb.

 

Azt szeretném kiíratni, hogy 2012-ben hány db AB van. (vagy épp 2013-ban)  Ezért ezt kellene még szűrni úgy, hogy dátumra is be tudjam állítani. Tehát ha azt adom meg, hogy 2012, akkor nem 2 AB lesz, hanem csak 1,mert a többi nem abban az évben volt.

Gyakoraltilag úgy kellene, mint egy Kimutatásnál, hogy ott a dátumra tudok szűrni, s akkro csak azt jeleníti meg. Csak képlettel vagy szűrővel.

 

 

Köszönöm

 

    

Sánta Kutya (SK) Creative Commons License 2013.11.04 0 0 22933

:-)))

Előzmény: Törölt nick (22932)
Törölt nick Creative Commons License 2013.11.04 0 0 22932

Lemaradtak a felkiáltójelek!

 

Private Sub GépINF1_Click()!
sor = Application.Match(Me.Gépszám1, Range("C:C"), 0)!
      If VarType(sor) <> vbError Then!
             ActiveWorkbook.FollowHyperlink Cells(sor, "I").Hyperlinks(1).Address, NewWindow:=True!
      End If!
End Sub!

 

;-)

Előzmény: hunterzsolt (22931)
hunterzsolt Creative Commons License 2013.11.03 0 0 22931

Sikerűlt megoldanom a dolgot a következőképpen! Ha netán valakinek szüksége lenne rá:


Private Sub GépINF1_Click()
sor = Application.Match(Me.Gépszám1, Range("C:C"), 0)
      If VarType(sor) <> vbError Then
             ActiveWorkbook.FollowHyperlink Cells(sor, "I").Hyperlinks(1).Address, NewWindow:=True
      End If
End Sub

Remélem valakinek segítségére válik majd!

Előzmény: hunterzsolt (22930)
hunterzsolt Creative Commons License 2013.11.03 0 0 22930

Sziasztok! Sikerült elkjészíteni a táblázatomat, (hatalmas köszönet Delila10-nek)! Minden funció, amit akartam, működik rajta! Munkatársaim nagy örömére :) ! Volt viszont egy kérésük, hogy az adatok bevitelére egy ablakot lehetne-e használni? Elkezdtem Userformos "önoktatásomat" és sikerült megcsinálnom úgy, hogy az adatokat azon az ablakon keresztül lehessen bevinni! Viszont:

A táblázat fő tulajdonsága az, hogy bizonyos oszlopok sorainak kitöltésekor egy másik oszlopban megjelennek az adatok, a bevitt elemhez! Az adatok persze egy hivatkozás, amire rákattintva egy txt, vagy doc típusú file-t nyit meg! Szóval userformos ablakomon elhelyeztem 3 gombot és szeretném, ha az adatok bevitelekor a megjelent hivatkozások ezekkel a gombokkal megjeleníthetőek legyenek! Mindig az aktuális sor hivatkozásai!
Szóval, a gombhoz milyen parancssort kellene beírnom, hogy az adott oszlop utolsó kitöltött cellájában lévő adatot megnyissa?

 

tbando Creative Commons License 2013.11.03 0 0 22929

Én is köszönöm a korrekciót. Elsősorban azt, hogy a sor/oszlop long és nem integer. Mert az emiatti hiba korrekciójával biztos sokáig eltökölnék :)))). 

Előzmény: Törölt nick (22926)
roley Creative Commons License 2013.11.03 0 0 22928

Köszönöm a segitséget!!!!

Törölt nick Creative Commons License 2013.11.03 0 0 22927

Arra persze figyelni kell, hogy a Munka1 helyére a kívánt munkalap neve kerüljön. És nyilván lehet olyan eset, amikor azt akarjuk, hogy mindig az aktív munkalapon induljon a makró. Ilyenkor akkor a ThisWorkbook.Worksheets("Munka1") rész nem kell, tehát az eredeti megoldás részben jó.

De a "Set itt_van = ...." szerkezet használata továbbra is indokolt.

Előzmény: Törölt nick (22926)
Törölt nick Creative Commons License 2013.11.03 0 0 22926

Ez a megoldás azért nem tökéletes, mert csak az aktív munkalapon működik, és ott is csak akkor, ha van rajta "XY" részértékű cella. Máskülönben hibára fut, és az nem mutat jól egy makróban. Helyette ajánlanám az alábbi megoldást. Kicsit többet kell hozzá gépelni, de cserébe nem fog csütörtököt mondani.

 

Dim itt_van As Range, sor As Long, oszlop As Long

Set itt_van = ThisWorkbook.Worksheets("Munka1").Cells.Find(What:="XY", After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)

If itt_van Is Nothing Then
    'nincs találat
Else
    sor = itt_van.Row
    oszlop = itt_van.Column
End If

Előzmény: roley (22924)
tbando Creative Commons License 2013.11.03 0 0 22925

a$ = ActiveCell.Address
b%= ActiveCell.Row
c %= ActiveCell.Column

 

Előzmény: roley (22924)
roley Creative Commons License 2013.11.03 0 0 22924

Sziasztok!

 

 

Hogyan tudom  makróban egy adott cellát megkeresni, majd az adott cella sorának értékét egy változóban eltárolni? A keresés még ok:

 

Cells.Find(What:="XY", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate

 

utána viszont az aktiv cellának a pozicióját (sor, oszlop) hogyan tudom egy változóba eltárolni.

 

 

Köszönöm a segitséget!!!

 

R

tbando Creative Commons License 2013.11.01 0 0 22923

Bizony így van. És ez nagy hibája az autószűrőnek. Mert azért úgy illene, hogy a 255 karakternél hosszabb stringekből is lássa az első 255 karaktert. De valamiért erre nem készítették fel.  Az írányitott szűrőnek azonban 32 ezer karakterig nincsenek ilyen korlátai. 

Előzmény: NeomatiK (22922)
NeomatiK Creative Commons License 2013.11.01 0 0 22922

Úgy tűnik én tévedtem a múltkor. Nem mindet jeleníti meg a szűrés kiválasztásához. Ezek szerint cellánként a max. 255 karaktereseket jelenti meg.

 

Valahogy többnek tűnhetett felsorolás a szűrőben a 2007-esben mint a 2002-esben, de nem. Pedig nem bántam volna, ha a 2007-esben nincs ez a korlát.

Előzmény: NeomatiK (22921)
NeomatiK Creative Commons License 2013.11.01 0 0 22921

Szia!

Meg fogom csinálni.

Előtte még megérdezem, hogy 1 cellában érvényes a 255 karakter vagy a szűrendő oszlopban az együttesre vonatkozik?

Előzmény: tbando (22899)
Sánta Kutya (SK) Creative Commons License 2013.10.31 0 0 22920

Ja, hogy te az e-mailre gondolsz! Bocsi, privinek a belső üzenőket szokták hívni.

Hát két eset van: vagy megjelenik a "küld" az adatlapon, vagy nem. Ha nem, akkor az illetőnek nem publikus az e-mail címe, meg kell kérni, hogy ő írjon neked. Egyébként ha ide beírod egy kicsit megbontva a címet, nem kockáztatsz sokkal többet, mint ha az adataidnál publikussá teszed a beállításokban.

 

Ha van küld, és mégis hiába kattintasz rá, akkor nincs jól beállítva a levelező azon a gépen, jobb egérgombbal lehet a címet kimásolni.

 

Vagy én nem értelek.

Előzmény: Delila10 (22919)
Delila10 Creative Commons License 2013.10.31 0 0 22919

Működött régebben, azóta is levelezek INNEN néhány fórumtaggal.

 

A hozzászólásban rákattintasz a fórumtárs nevére, feljön az adatlapja, ott egy "küld" szövegre kattintva már írhattad is a levelet. Most kattintgatgatok estig, nem történik semmi.

Előzmény: Sánta Kutya (SK) (22914)
Delila10 Creative Commons License 2013.10.31 0 0 22918

2003-ban csináltam, szépen beteszi, ahova kell.

Előzmény: tbando (22917)

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