Keresés

Részletes keresés

lenolaj23 Creative Commons License 2016.11.17 0 0 29720

kösz, h szóltál! idézőjel kivéve... :)

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

Így érdemes, csinálni, mert megértetted a lényeget. De a nullát szerintem ne tedd idézőjelbe, mert így egy oszlopban vegyesen számokat és szövegeket fogsz kapni. Hacsak nem ez a cél.

Előzmény: lenolaj23 (29718)
lenolaj23 Creative Commons License 2016.11.17 0 0 29718

köszi a gyors választ!

az volt a baj, h maga a szám is függvény eredményeként jött ki, ugyanarra a cellára meg nem hivatkozhattam, mert ezt az excel nem engedi ugyebár... végül is sikerült, ez lett belőle: =HA($B$20-A5+1>0; $B$20-A5+1; "0")

 

Eddig is vmi hasonló képlettel próbálkoztam egyébként, de sztem túlbonyolítottam, de most végre sikerült. Köszi a rávezetést!

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

Ha A2-ben van a számod, akkor

HA(A2>0;A2;0)

Előzmény: lenolaj23 (29716)
lenolaj23 Creative Commons License 2016.11.17 0 0 29716

Sziasztok!

Az Excelhez értők számára biztos nagyon könnyű lesz a kérdésem, de én sajnos nem tudom megoldani.

 

Olyan függvényre lenne szükségem, ami csak a pozitív eredményeket írja ki, ha az eredmény 0 v. negatív akkor 0-t ír.

 

Egyébként ez az a függvény, aminek az eredményeként csak pozitív számot v nullát szeretnék látni.:)

=$B$20-A5+1

 

Előre is köszönöm a segítséget! :)

Delila10 Creative Commons License 2016.11.15 0 0 29715

Köszi, ez tényleg jó, csak a hosszú sorokat nem szereti.

Előzmény: pimre (29713)
Delila10 Creative Commons License 2016.11.15 0 0 29714

Egy próba.

 

Function Szam_kiiras(szam As Long) As String

    Dim j1, j10, j10a, j100

    j1 = Array("", "egy", "kettő", "három", "négy", "öt", "hat", "hét", "nyolc", "kilenc")

    j10 = Array("", "tíz", "húsz", "harminc", "negyven", "ötven", "hatvan", "hetven",     "nyolcvan", "kilencven")

    j10a = Array("", "tizen", "huszon", "harminc", "negyven", "ötven", "hatvan", "hetven", "nyolcvan", "kilencven")

    j100 = Array("száz", "", "ezer", "millió", "milliárd")

    betu = ""

    If szam = 0 Then

        Szam_kiiras = "Nulla"

        Exit Function

    End If

    s = Format(szam, "0")

    j = 1

    While s <> ""

        i = Len(s) - 2

        If i < 1 Then i = 1

        s2 = Mid(s, i, 3)

        s = Left(s, i - 1)

        s3 = ""

        If Len(s2) = 3 Then

            s3 = s3 + j1(Asc(Mid(s2, 1, 1)) - 48)

            If Mid(s2, 1, 1) <> "0" Then s3 = s3 + j100(0)

            s2 = Right(s2, Len(s2) - 1)

        End If

        If Len(s2) = 2 Then

            If Mid(s2, 2, 1) = "0" Then

                s3 = s3 + j10(Asc(Mid(s2, 1, 1)) - 48)

            Else

                s3 = s3 + j10a(Asc(Mid(s2, 1, 1)) - 48)

            End If

            s2 = Right(s2, Len(s2) - 1)

        End If

        s3 = s3 + j1(Asc(Mid(s2, 1, 1)) - 48)

        If s3 <> "" Then s3 = s3 + j100(j)

        If (betu <> "") And (szam > 2000) And (s3 <> "") Then kot = "-" Else kot = ""

        betu = s3 + kot + betu

        j = j + 1

    Wend

    betu = UCase(Left(betu, 1)) & Right(betu, Len(betu) - 1)

    Szam_kiiras = betu

End Function

Előzmény: pimre (29713)
pimre Creative Commons License 2016.11.15 0 0 29713

Én úgy szoktam makrókat másolni, hogy először WORD-be másolom. Ott megmarad a tagolás szóközök formájában. És onnan másolom ki ide a fórumba.

Előzmény: Delila10 (29712)
Delila10 Creative Commons License 2016.11.15 0 0 29712

Visszakerestem, miféle függvényeket írtam régebben. Amelyek "csodásak", azoknál ott van a megjegyzés, hogy nem én írtam. :)

 

Az egyik legjobb az, ami a hivatkozott cellában lévő számot szövegesen adja vissza. De a kutya ugassa meg ezt a fórummotort, mert rusnya, olvashatatlan a formában jeleníti meg a makrókat! Egy nagyobb lélegzetű makrót sorait nem merem egyenként szóközökkel beljebb taszigálni, félek, hogy a hosszú beviteli idő miatt a felénél kidob. Volt már rá példa.  :((

Előzmény: Fferi50 (29711)
Fferi50 Creative Commons License 2016.11.15 0 0 29711

Szia!

 

Azért képletekben és saját alkotású függvényekben "Veled sem könnyű a versenyt felvenni" - nem mintha bármiben is versenyezni kellene :). Amióta elkezdtem ide járogatni, mindig megcsodálom a képletes megoldásaidat.

 

Üdv.

Előzmény: Delila10 (29708)
Fferi50 Creative Commons License 2016.11.15 0 1 29710

Szia!

 

"Most például újdonság nekem egy egycellás tömbképlet, mert a mitől tömb?"

Ebben az esetben (és általában is) attól tömbképlet, hogy a bemenő adatai cella tartományban találhatók. A képlet úgy viselkedik, mint egy for-next ciklus. Az adott tartomány minden cellájára sorban végrehajtja a műveleteket és egy tömb lesz az eredménye. Ha megnézed a képletet az Fx szerkesztőt használva a szerkesztőlécen (ahol látható a bemeneti tartomány), azt látod, hogy a SZUM bemenete egy 1 és 0 értékekből álló tömb. Viszont a SZUM eredménye egy konkrét szám, ezért az eredmény egy db cellába kiíratható.

Szerintem minden olyan esetben érdemes végiggondolni a tömbképletet, ahol segédoszlop alkalmazása jut először eszünkbe, mert a bemenő cellákon még valamilyen műveletet kell végrehajtani. Természetesen egyáltalán nem állítom azt, hogy minden esetben működik ez a megoldás.

Akár makró helyett is működhet a tömbképlet.

Egyébként én is egy olyan fórumtárstól kaptam kedvet a tömbképletekkel való kísérletezésre (azt hiszem a PC Fórumon - de akár itt is lehetett, erre már nem emlékszem pontosan), aki a vállalati -makrómentes- környezetből adódó kényszer hatására mutatott be pár igen jó tömbképletet.

 

Üdv. 

Előzmény: Sánta Kutya (SK) (29707)
steinmann, a jó tanuló Creative Commons License 2016.11.15 0 0 29709

Köszi Zs:) -nek is meg neked is! :-)

Előzmény: Fferi50 (29706)
Delila10 Creative Commons License 2016.11.15 0 0 29708

Fferi a tömbképlet nagymestere.

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

Tudtam, hogy valaki elő fog állni egy tömbképlettel, csak azt nem, hogy te vagy Delila. Ezeket még mindig csak bámulom... Most például újdonság nekem egy egycellás tömbképlet, mert a mitől tömb? Egyáltalán, hogy lehet egy mondatban elmondani, hogy mikor gondoljunk tömbképletre?

Előzmény: Fferi50 (29706)
Fferi50 Creative Commons License 2016.11.15 0 0 29706

Szia!

 

Az alábbi tömbképletet írd be abba a cellába, amelyikben az eredményt szeretnéd megkapni:

=SZUM((HOSSZ(A:A)>HOSSZ(HELYETTE(A:A;"q";"")))*1)

A tömbképletet a Shift+Ctrl+Enter billentyűkombinációval tudod bevinni. A képletet az Excel kapcsos zárójelbe teszi (ez jelzi azt, hogy tömbképlet).

 

Üdv.

Előzmény: steinmann, a jó tanuló (29704)
Zs:) Creative Commons License 2016.11.15 0 0 29705

Fapados módszer:

B1-be: =SZÖVEG.KERES($C$1;A1) ez lehúz, ameddig kell

C1-be: keresett karakter, vagy az előző képletbe fixen beleteszed

D1-be: =DARAB(B:B) (eredmény)

Előzmény: steinmann, a jó tanuló (29704)
steinmann, a jó tanuló Creative Commons License 2016.11.15 0 0 29704

A táblázatom A oszlopában hosszú, 15-18 karakteres alfanumerikus kódok vannak, teljesen rendszertelenül (>3000 adat). Hogyan tudom megszámolni, hogy hányban szerepel a speciálisnak mondott "q" betű, a kód akárhányadik helyén?

Hiába próbálkozom, csak nem akar összejönni, segítsetek legalább elindulni!

Delila10 Creative Commons License 2016.11.14 0 0 29703

Mindenkinek szívesen, bár a köszönet nem engem illet.

_Nyuszi Creative Commons License 2016.11.14 0 0 29702

Letöltöttem én is, köszönöm szépen! :)

Előzmény: Delila10 (29699)
pimre Creative Commons License 2016.11.14 0 0 29701

Ez valóban nagyon jó. Az esetleges kezdők számára engedtessék meg egy kis eligazítás: A kezdő nehogy a 01. fejezet, 02. fejezet stb. tanulmányozásával kezdje, mert ezek az eredeti CD mellékletek anyagai, és mint ilyenek, nem önmagukban olvasandók.

Az xlMacro.pdf olvasásával érdemes elkezdeni. És ott az egyes fejezetek mellett a lap jobb oldalán olvasható, hogy melyik CD mellékletet nézze hozzá s szöveghez.

Előzmény: Delila10 (29699)
Sánta Kutya (SK) Creative Commons License 2016.11.14 0 0 29700

Ez tényleg jó hír! Már le is töltöttem, köszi!

Előzmény: Delila10 (29699)
Delila10 Creative Commons License 2016.11.14 0 1 29699

Jó hír!

 

Kovalcsik Géza feltette az Excel programozása c. könyvét a netre, mivel már nem lehet kapni, és a kiadója is megszűnt. Az új kiadáshoz jelentősen át kellene dolgoznia.

 

A leveléből:

 

"... a pdf változatát nyilvános mappába mentettem.Ebben megvannak a könyvhöz tartozó minta munkafüzetek is, még xls formátumban. Benne van két tömörített mappa is. Ebben egy jól használható menüszalag szerkesztő program próba változatai vannak benne. Az egyik a 32 bites a másik a 64 bites változat. A link ahol eléred : https://1drv.ms/f/s!AmsKK5RFf64JgZAdgJi6Oc6pUONCQg . Használjátok egészséggel."

Delila10 Creative Commons License 2016.11.14 0 0 29698

A DARABTELI függvény erre való.

 

=DARABTELI(C:C;"Landshut")

 

Ha a K és S oszlopban is előfordulhat ez a modell, akkor add hozzá ezeknek a darabszámát is.

 

=DARABTELI(C:C;"Landshut")+DARABTELI(K:K;"Landshut")+DARABTELI(S:S;"Landshut")

Előzmény: Slient (29697)
Slient Creative Commons License 2016.11.14 0 0 29697

 

sziasztok! Egy olyan megoldásra lenne szükségem, ami nektek valószínűleg egy pillanat alatt menni fog. A besárgított mezőkben szereplő modellek számát kellene meghatározni. Sűrűn ismétlődnek a modellek, szoval egy modellt csak egyszer kellene számolni. Köszönöm!

 

 

Sánta Kutya (SK) Creative Commons License 2016.11.14 0 0 29696

Ezt én se tudtam, ráeresztettem volna egy külső függvényt.

Előzmény: pimre (29693)
thomas5000 Creative Commons License 2016.11.14 0 0 29695

És tényleg.

 

Nagyon szépen köszönöm! :)

Előzmény: pimre (29693)
thomas5000 Creative Commons License 2016.11.14 0 0 29694

Igen. Ezt én is próbáltam már, de sajnos ettől nem változik számformátummá a cella, és ugyanúgy nem tudja használni a függvényem.

Előzmény: Sánta Kutya (SK) (29692)
pimre Creative Commons License 2016.11.14 0 0 29693

De ha a HELYETTE függvény után egy műveletet végzünk, például: =HELYETTE(A1;",";".")+0, vagy ==HELYETTE(A1;",";".")*1, akkor már számmá alakítja.

 

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

Legegyszerűbb a HELYETTE függvény, persze attól még nem fogja számként értelmezni a szöveget az Excel, ahhoz kell egy másik is. Az ilyen feladatokat én úgy oldom meg, hogy kinyitom a függvénybeszúrót, és megnézem a kategóriákat. Általában lehet tudni egy kis rutinnal, hogy melyik kategóriába esik a feladatod, pl. a karaktercsere klasszikus szövegmanipulációs eljárás, tehát a szöveg kategóriát kell végigpörgetni, és amelyik függvénynek a neve ígéretes, annak a röpsúgóját ott megnézni.

Előzmény: thomas5000 (29691)
thomas5000 Creative Commons License 2016.11.14 0 0 29691

Sziasztok!

 

Az excelben átállítottam, hogy a tizedesvessző helyett, a tizedespontot vegye alapul. (úgy, mint minden országban szinte, Magyarországon kívül)

 

Az lenne a problémám, hogy egy olyan helyről másolok be adatot, ahol nem pont, hanem "," (tizedesvessző) van, viszont így az excelben levő függvényem nem tudja értelmezni, hiszen így nem számként kezeli a cellában levő értéket.

 

Azt szeretném kérdezni, hogy erre esetleg van-e függvény, hogy a tizedesvesszőt, átírja tizedesponttá (ponttá).

 

Persze nem kell közvetlenül a bemásolt cellát átírni, úgy is jó, ha arra a cellára hivatkozott cellát írja át.

 

Pl.:

 

Tehát mondjuk A1 cellába bemásolok 1,96 értéket. Azt szeretném, ha mondjuk a B1-be ő 1.96 értéket írna.

 

Nem tudom mennyire volt érhető, amit próbáltam kérni, de ha valaki esetleg tudna segíteni, nagyon örülnék.

 

Előre is köszönöm!

 

ODOBRENO Creative Commons License 2016.11.10 0 0 29690

Koszonom mindkettotoknek a segitseget.  Egyelore atmasolgattam kezzel, aztan majd ha lesz egy kis idom keresek egy hatasosabb megoldast a felvazolt iranyokban. 

Előzmény: Fferi50 (29689)
Fferi50 Creative Commons License 2016.11.10 0 0 29689

Szia!

 

"hogyan lehetne automatizáltan megoldani ezt a problémát, tehát nem kézzel átmásolgatni és vissza az eredményeket"

Erre találták ki a makrót:

Alt+F11 megjelenik a VBA nézet

Insert - module - bemásolod az alábbi makrót, indítása - nézet - makrók - nevet kiválasztod.

 

Sub szamolo()
'feltételezzük, hogy meg van nyitva mindkét munkafüzet
Dim sh1 As Worksheet, sh2 As Worksheet, cl As Range
Set sh1 = Workbooks(1).Sheets("T1") ' ide helyettesítsd be azt a munkalapot, amelyik számol - teljes módon, munkafüzet, munkalap
Set sh2 = Workbooks(2).Sheets("T2") ' ez a forrás-eredmény munkalap
' a bemeneti adatok a T2 A oszlopában vannak
For Each cl In sh2.UsedRange.Columns(1).Cells
    If Not IsEmpty(cl) Then ' ha van adat a cellában
        sh1.Range("B1").Value = cl.Value 'a bemenő adat a T1 munkalapra a B1 cellába
        'ha több bemenő adat van, akkor a cl cella helyzetéhez viszonyítva az offset tulajdonsággal lehet elérni,
        'pl. ha a B oszlopban is van adat, akkor sh1.range("C1").value=cl.offset(0,1).value  a T1 munkalap C1 cellájába írja be
        'T2 munkalap B oszlopában levő adatot
        cl.Offset(0, 4).Value = sh1.Range("C3").Value ' az eredményt a T2 D oszlopába írjuk be
    End If
Next
End Sub

 

Üdv.

Előzmény: ODOBRENO (29684)
ODOBRENO Creative Commons License 2016.11.09 0 0 29688

>>Van egy kevésbé elegáns megoldás, ha nagyon gyors akarsz lenni: T1-ből az illetékes munkalapot vagy lapokat egyszerűen átmásolod T2-be, és akkor helyben állnak rendelkezésre a képletek.

Sajnos ez nem megy, T1 9 lapból áll és kb 18 különböző verziót kellene kiszámolni, azaz 18x9 = 162 lapot kellene hozzámásolni és a 9 lapokat egymást közt összekötni.

Előzmény: Sánta Kutya (SK) (29686)
ODOBRENO Creative Commons License 2016.11.09 0 0 29687

>>Az megvan, hogy egy táblázatba lehet olyan képletet írni, amely egy másik munkafüzet celláira hivatkozik? Ez így nem oldja meg a problémádat?

Ez lehet még egy megoldás, bár átírni a T1 és T2 ben cellahivatkozásokat kb akkora munka mint átmásolgatni kézzel az adatokat. 

 

>>Egyébként nekem ilyen feladatoknál már kezd viszketni a tenyerem, hogy átrakjam adatbázisba az egészet. Ez még az az eset, amit meg lehet oldani Excelben is, ha direkt mazochista hajlamú valaki, de >>valószínűleg sokkal természetesebb és elegánsabb lenne adatbázisban. Ami pedig azt is jelenti, hogy karbantarthatóbb.

Elvileg igen, gyakorlatilag a méretetőtáblázat egy fekete doboz és nincs időm / kedvem átalakítani valami használhatóbb formátumba.

Előzmény: Sánta Kutya (SK) (29685)
Sánta Kutya (SK) Creative Commons License 2016.11.09 0 0 29686

Van egy kevésbé elegáns megoldás, ha nagyon gyors akarsz lenni: T1-ből az illetékes munkalapot vagy lapokat egyszerűen átmásolod T2-be, és akkor helyben állnak rendelkezésre a képletek.

Előzmény: ODOBRENO (29684)
Sánta Kutya (SK) Creative Commons License 2016.11.09 0 0 29685

Az megvan, hogy egy táblázatba lehet olyan képletet írni, amely egy másik munkafüzet celláira hivatkozik? Ez így nem oldja meg a problémádat?

Egyébként nekem ilyen feladatoknál már kezd viszketni a tenyerem, hogy átrakjam adatbázisba az egészet. Ez még az az eset, amit meg lehet oldani Excelben is, ha direkt mazochista hajlamú valaki, de valószínűleg sokkal természetesebb és elegánsabb lenne adatbázisban. Ami pedig azt is jelenti, hogy karbantarthatóbb.

Előzmény: ODOBRENO (29684)
ODOBRENO Creative Commons License 2016.11.09 0 0 29684

A következő problémára keresek segítséget: 

Adott egy T1 excel táblázat, ami egy gép bizonyos elemeihez terhelésfüggően szükséges HW-t számolja ki. Ennek a táblázatnak a bemenete pár szám (ami leírja a terhelést) amit a megfelelő mezőkbe kell írni, illetve a kimenete is hasonlóan pár szám amit a megfelelő mezőkben jelenik meg (ez HW komponensek száma).  Ezek a mezők konstansak (tehát a bevitel mindig pl a B1 mezőbe történik és mindig pl a C3ban jelenik meg az eredmény).   

Adott egy másik táblázat T2, ami különböző évekre / helyzetekre mutatja a terhelési értékeket.

A feladat az lenne, hogy T2 ben felsorol bemeneti adatokat behelyettesítsük a T1be és a T1 adott eredményeket átvigyük a T2be. 

A T2 ben megadott és T1ből visszaadott adatokról feltételezzük h helyesek, tehát semmiféle ellenőrzésre nincs szükség.

A T1 logikája meglehetősen bonyolult (több oldal, table lookup stb), ezért nem lehet a T1 formuláit csak átmásolni a T2be.   

 

Van valakinek ötlete hogyan lehetne automatizáltan megoldani ezt a problémát, tehát nem kézzel átmásolgatni és vissza az eredményeket? 

 

brannings Creative Commons License 2016.11.07 0 0 29683

Király vagy, köszi!!

Előzmény: Sánta Kutya (SK) (29681)
Sánta Kutya (SK) Creative Commons License 2016.11.07 0 0 29682

Értelemszerűen <=, >=, ha zárt intervallumot akarsz.

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

A százalék ugyebár egy tizedes tört, a százalék csak egy számformázás, ahogy megjelenik. Valami ilyesmi lesz, de most tesztelni nincs időm, csak gépelek:

 

HA(VAGY(ÉS(A1>0,1001;A1<0,15); ÉS(A1>0,4501;A1<0,7)); "3"; "")

 

A szóközök csak az olvashatóságot segítik, és a 3 ilyenformán szöveg lesz, nem szám, ha idézőjelbe teszed. Remélem, jól zárójeleztem.

Előzmény: brannings (29680)
brannings Creative Commons License 2016.11.07 0 0 29680

Sziasztok!

Hogy lehet azt megoldani, hogy ha egy adott cella értéke két tartomány közé esik, akkor egy másik cella egy adott értéket vegyen fel?

Egy sereg HA függvénnyel próbálkoztam már, egyelőre sikertelenül.

A konkrét dolog:
Ha egy cella értéke "10,01%-15% vagy 45,01%-70%" közé esik, akkor legyen a másik cella értéke "3".

Köszi!

Z

pimre Creative Commons License 2016.11.06 0 0 29679

Szerintem is megoldhatatlan a D oszlop adatainak létrehozása az általad megadott példák alapján, ha nem tudsz megadni keresési szabályt arra, hogy milyen módon kell megkeresni a kódot a hosszú névben. De azért egy lehetőség még akkor is van, ami talán megoldja amit szeretnél. Ehhez meg kell adnod azt a másik táblázatot, vagy legalább egy mintát rá.

És akkor el tudom képzelni, hogy egy program (mert szerintem ez így már függvénnyel nem lesz megoldható) az utóbbin végigszaladjon, és megnézze, hogy az itteni A oszlopod valamelyik adata belsejében előfordul-e az adott karaktersorozat. Ha igen, akkor átmásolja D-be. Ha többen is, akkor mindegyiket. De még itt is lesz egy bibi: A 82034X keresésével soha nem lehet megtalálni a 82034-X kódrészletet. Ha csak annyi a különbség, hogy az összes ilyen kódon belüli kötőjelet törölni kell, akkor előzőleg célszerű lesz egy segédoszlopba átmásolni az A oszlopot kötőjelek nélkül, és abban keresni.

Előzmény: Törölt nick (29676)
Fferi50 Creative Commons License 2016.11.06 0 1 29678

Szia!

 

Az Fkeres függvénnyel lehet keresni a "*" (csillag) karaktert használva. Pl. Fkeres("*" & D2 & "*";A:A;1;0) keresi a D2 cellában levő érték előfordulását az A oszlopban, a keresett érték lehet a keresendő oszlopban bárhol. Ha a csillagot csak az elejére teszed, akkor azt keresi, aminek a végződése, ha a végére teszed, akkor aminek az eleje szerepel a keresendő oszlopban.

Én fordítanék a keresésen a jobb működés érdekében:

Abban a táblában, amelyikben a rövidebb elnevezések vannak onnan keresnék a hosszabb neveket tartalmazó táblában egy segédoszlopba a fentiek szerint (nyilván ott nehezebb, ahol az egyik helyen kötőjel is van ott, ahol a másikban nem, de ott lehetne alkalmazni esetleg a keresett érték "csonkítását", pl. bal(D2;szöveg.keres("-";D2)-1)).

Majd az így kapott - már kompatibilis - hosszú nevekben keresném az első táblázathoz az értékeket a másodikban.

Lehet kicsit bonyolult, leírom egyszerűbben:

1. Második táblában segédoszlop - Fkeres a rövid azonosítót csillagokkal megtoldva, esetleg csonkítva az első táblázat A oszlopában keresve. Nyilván adódhat pár hibás érték, de gondolom ez már vizsgálható nagyságrend lesz.

2. Első táblában az A oszlop alapján keresni a második tábla segédoszlopában (itt az INDEX függvényt érdemes bevetni, mivel ott nem csak az első oszlop alapján lehet keresni, hanem bármelyik szerint).

 

Üdv.

Előzmény: Törölt nick (29676)
Sánta Kutya (SK) Creative Commons License 2016.11.06 0 0 29677

Valószínű, hogy a hiba ott keletkezett, hogy két táblázat jött létre.

De ha csak annyit tudunk, hogy nincs egységes képzési szabály, de azt nem tudjuk rendesen, hogy akkor mégis mi az algoritmus, akkor az isten se tudja megcsinálni a konverziót.

Hány kód van?

Valahol csak van egy olyan táblázat, ami a hivatalosokat és a rövideket is tartalmazza...

Vagy van legalább egy rendes szabály, hogy mit hogyan kell átalakítani? Mert akkor szövegkezelő függvényekkel meg lehetne oldani.

 

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

Van két táblázatom, amelyből adatokat szedek le egy 3. táblázatba. Mindkét táblázatban ugyanazon dologra vonatkozó elemek szerepelnek, csak az egyikben egy hosszú hivatalos típus elnevezés van(A oszlop), a másikban ugyanezeknek a típusoknak egy rövidített elnevezése(D oszlop) + a hozzájuk tartozó adat. Az első táblázatból az A oszlopba fog jönni adat, bizonyos feltételek alapján HA függvénnyel, a második táblázatból, pedig több adat is jönne Fkeres-sel, az A oszlop megfelelő elemei mellé, de abban a táblában a D oszlop szerinti rövidített elnevezés van. Azt kellene megoldani, hogy a két táblában az elnevezéseket lehessen egymáshoz viszonyítani. Vagyis ha az A oszlopba bejön egy adat, akkor ahhoz ki tudjam íratni a rövid elnevezését a D oszlopba, így az alapján tudnék bekérni adatokat a második táblázatból. Én itt a példába beraktam 3 elemet, de ezekből több ezer van... Amint a példában láthatod, nem egyforma szempont alapján szerepelnek a hosszú szövegben a rövid, kiemelendő részek. Az elsőben kellene a 6,7,8,9,10 és 12. karakter, de a többinél már nem ezek kellenek. Ehhez így nem találtam függvényt.. Esetleg makro-val megoldható? 

 

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

Segíts, mi alapján emelted ki ezeket a részeket?

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

Sziasztok!

Az A oszlop celláiban lévő adatokból szeretnék kinyerni egy rövidített verziót(ami ki van emelve, és alá van húzva), olyat, mint amit a D oszlopba írtam be. 

Várom a segítségeteket a megoldáshoz!

 

bficsor Creative Commons License 2016.11.04 0 0 29673

Szia!

 

 

Rájöttem a bibire. Pár számot szöveggé alakítottam...

 

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

 

 

Balázs

Előzmény: bficsor (29672)
bficsor Creative Commons License 2016.11.04 0 0 29672

Szia Feri!

 

 

Már majdnem jó, de még valami nem stimmel.

Meglátásom szerint a képletnek működnie kellene, de valamiért nem veszi figyelembe az egyik (vagy a másik) tartományt.

 

Köszönöm a tegnapi gyors reagálást is!

 

 

Balázs

Előzmény: Fferi50 (29671)
Fferi50 Creative Commons License 2016.11.03 0 0 29671

Szia!

 

=Szumha(C:C;C2;B:B)+Szumha(D:D;C2;B:B)

 

Vagy a végpontokat kigyűjtöd egy új oszlopba (átmásolás, utána adatok- ismétlődések eltávolítása) és a Szumha függvényt ezen oszlop alapján használod.

 

Üdv.

Előzmény: bficsor (29670)
bficsor Creative Commons License 2016.11.03 0 0 29670

Sziasztok!

 

 

A csatolmányban látható egy feladat, amelyet szeretnék elegánsan megoldani, de nem megy.

Két oszlopból kellene kinyerni az azonos pontokhoz tartozó értékeket...

 

Esetlegesen van valakinek ötlete, hogyan lehet megoldani?

 

 

Előre is köszönöm!

bficsor Creative Commons License 2016.11.03 0 0 29669

Sziasztok!

 

 

A csatolmányban látható egy feladat, amelyet szeretnék elegánsan megoldani, de nem megy.

Két oszlopból kellene kinyerni az azonos pontokhoz tartozó értékeket...

 

Esetlegesen van valakinek ötlete, hogyan lehet megoldani?

 

 

Előre is köszönöm!

 

 

 

Eredő Vektor Creative Commons License 2016.11.03 0 0 29668

Netre vagy lokális helyre mutat a link?

Előzmény: tchristian (29663)
tchristian Creative Commons License 2016.10.29 0 0 29667

igen, úgy a képnézegető nyitja meg.

 

Előzmény: pimre (29666)
pimre Creative Commons License 2016.10.29 0 0 29666

És az Exceltől függetlenül Intézőben rákattintva a képnézegető nyitja meg? Mert akkor passz. Nem tudok róla, hogy az Excel saját fájltársítót használna.

Előzmény: tchristian (29665)
tchristian Creative Commons License 2016.10.29 0 0 29665

ezen már túl vagyok, de továbbra is az IE nyitja meg :(

Előzmény: pimre (29664)
pimre Creative Commons License 2016.10.28 0 0 29664

Ne az Excelben keresd a megoldást! Ezt a Windows-al tudod beállítani.

 

Ha win7-est használsz, akkor Start->Alapértelmezett programok->Fájltípus vagy protokoll társítása programmal, majd ezután kapsz egy listát az egyes fájlkiterjesztésekről. Itt megkeresed a .jpg-t, ami mellett most az Internet Explorert látod és rákattintasz. A lista felett kiválasztod a Program módosítása gombot, majd a megjelenő listából kiválasztod a Fényképnézegetőt.

 

Előzmény: tchristian (29663)
tchristian Creative Commons License 2016.10.28 0 0 29663

Sziasztok,

 

Segítségetek szeretném kérni, adott egy Excel (Office 2007), benne hivatkozások (kép - .jpg) és mindig az Internet Explorerrel nyitja meg.

Hogy tudnám átállítani, hogy a képnézegető nyissa meg?

 

Segítségetek előre is köszönöm.

 

 

Törölt nick Creative Commons License 2016.10.28 0 0 29662

És mi volt a megoldás? Hadd okuljunk belőle mi is.

Előzmény: exxit (29661)
exxit Creative Commons License 2016.10.28 0 0 29661

Sziasztok

 

koszi mindenkinek a segítséget, megoldódott a helyzet, de nem az én jóvoltomból.

thomas5000 Creative Commons License 2016.10.27 0 0 29660

Köszönöm! Sikerült.

Előzmény: Eredő Vektor (29659)
Eredő Vektor Creative Commons License 2016.10.27 0 0 29659

kapcsold be a makrórögzítőt változtasd meg a szegélyt. Nézd meg mit rögzített.

Előzmény: thomas5000 (29658)
thomas5000 Creative Commons License 2016.10.27 0 0 29658

Sziasztok!

 

Van egy makróm. Azt szeretném kérdezni, hogy itt mit kell hozzáadni, ahhoz, hogy a szegélyek ne feketék legyenek, hanem más színűek?

 

 

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
With Range(Cells(Target.Row, 1), Cells(Target.Row, 11))
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlInsideVertical).LineStyle = xlContinuous
End With
If Cells(Target.Row, 10) = "" Then
With Range(Cells(Target.Row, 1), Cells(Target.Row, 11))
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeBottom).Weight = xlThin

End With
Else
With Range(Cells(Target.Row, 1), Cells(Target.Row, 13))
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeBottom).Weight = xlMedium
End With
End If
End If
End Sub

 

A segítséget előre is köszönöm!

wawabagus Creative Commons License 2016.10.27 0 0 29657

Köszi szépen...

Áh, közben az is felmerült hogy nekik azért is jó a spreadsheet, mert nem kell hozzá excel a gépen...istenem, de utálom ezt.

Elvileg lehetne publikálni ezeket a spreadsheeteket és be lehet "elméletben" linkelni sima excelbe...viszont gyakorlatilag ez nekem nem sikerült még 1x se...

Előzmény: Törölt nick (29655)
wawabagus Creative Commons License 2016.10.27 0 0 29656

Nem olyan vészes amúgy...összesen 10 ügynök dolgozna, párhuzamosan max 2-4 és évente generálnak 80000 sort.

És chat ügynökről van szó, szóval párhuzamosan is visznek ügyeket....szóval egyszerre kéne létniuk a sorokat, hogy írogathassanak ide-oda...

Az a baj, access formokban nem vagyok penge. Enyhén szólva.

A legjobb egy megosztott SIMA excel lenne...nem lenne semmi gondom a világon, ha az megoldható lenne. De nem tudom, hogy lehet azt úgy megosztani, hogy bárhonnan elérhető legyen normál excelben...

 

Előzmény: Fferi50 (29651)
Törölt nick Creative Commons License 2016.10.27 0 1 29655

Nincs ez irányú tapasztalatom, de ha valami, akkor szerintem leginkább a Microsoft felhőalapú tárhelyszolgáltatása (OneDrive) fogja támogatni az Excel fájlok megosztását...

Előzmény: wawabagus (29654)
wawabagus Creative Commons License 2016.10.27 0 0 29654

És sima mezei excelt nem lehet valahogy megosztani online, hogy egyszerre sokan dolgozhassanak benne?

De úgy, hogy az ne egy nyomorék google spreadsheet legyen? :-/

pimre Creative Commons License 2016.10.27 0 0 29653

A témához én sem értek, de érdemes a prog.hu oldalon  a tudástár fórumon megkérdezni. A korábbi kérdések egy része itt látható: http://prog.hu/kereses/?expr=commandbar&oc=23

 

És ahogy nézem, commandbar témában van ott egy szakértő (Micu), aki szinte minden commandbarral kapcsolatos kérdésre azonnal próbál válaszolni. Utoljára 1 hónapja volt aktív, remélhetőleg most is elérhető. Esetleg kérhetnél tőle privátban segítséget, vagy inkább áthívhatnád ide.

 

 

Előzmény: exxit (29649)
wawabagus Creative Commons License 2016.10.27 0 0 29652

Köszi!!

Előzmény: Fferi50 (29651)
Fferi50 Creative Commons License 2016.10.27 0 1 29651

Szia!

 

Én inkább Access-ben gondolkodnék. Már lehet Webes alkalmazásként is megcsinálni, de az asztali adatbázist is meg lehet osztani. Sok ügynök, sok adat, szerintem ehhez már adatbázis kezelő kell, nem elég az Excel.

 

Üdv.

Előzmény: wawabagus (29650)
wawabagus Creative Commons License 2016.10.27 0 0 29650

Sziasztok!

Ti dolgoztok google spreadsheet-tel?

Most ezzel szívok :-(...sima excel tök jó lenne, de ez a google spreadsheet nekem tök sok nehézséget okoz.

Csomó dolog nem működik, ami sima excelben tök jó megoldás :-/...

 

Az online excelemben emberenként vannak füleim....és ezekre építve kéne kimutatást csinálnom.

Sima excelben írnék rá egy makrót, ami összeolvassa a dolgokat, majd arra építenék egy pivotot.

De itt basszus...utálom ezt.

 

Eleve korlátozottak a sorok számai. VBA makrót itt nem lehet futtatni, csak java scriptet írni, ha jól értem...

 

Ti használjátok? 

 

Van valami jó tippetek, ami működhetne?

 

Arról van szó, hogy sok "ügynök" használna egy megosztott doksit...minden ügynöknek saját füle van, ahova rendezetten beviszi az adatokat. Majd ezekből az adatokból kell kimutatást csinálnom.

 

Sima excelben semmi gondom nem lenne ezzel, de ebben spreadsheet-ben..meg vagyok lőve.

Filóztam, hogy nem lehet-e sima excelt fellőni...megosztva...

 

Nincs valami ötletetek?

 

exxit Creative Commons License 2016.10.27 0 0 29649

ja, ez sa gond nem latni az uj gepen ezeket a command bar-okat

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

Ja és rögtön a következő lépésben van egy "Listy" nevű commandbar is...

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

Hát ez aszongya, hogy egy Commandbar-t (magyarul talán "eszköztár"?), mégpedig az "Obdobie" nevűt szeretné megjeleníteni.

Valószínűleg ez az eszköztár nincs meg azokon a gépeken, ahol a program nem fut. Rémlik nekem, hogy lehetett régen az eszköztárat munkafüzetbe beágyazni, és akkor ahová vitted az xls-t, oda ment az eszköztár is, de ezt a részt sosem tudtam igazán. Szóval ha jól sejtem, két lehetőség van: 1) beágyazni az eszköztárat, vagy 2) létrehozni őket a célgépeken.

 

Ha esetleg valaki jobban tudja, javítson ki bátran...

Előzmény: exxit (29646)
exxit Creative Commons License 2016.10.27 0 0 29646

ja, elkudhettem volna elobb is , bocs

 

 

 

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

Amikor az első képen látott hibaüzenethez ér, kattints a Debug gombra, és mondd el, mit látsz. Pontosabban: sárgával kiemelve fogod látni, hogy melyik programsornál akad ki a futás. Na erről csinálj egy screenshot-ot, és töltsd fel.

Előzmény: exxit (29644)
exxit Creative Commons License 2016.10.27 0 0 29644

koszi az eddigi hozzaszolast, szeretnem kibővíteni a problémát pár fotóval kiegészítve.

Tehát az indításnál ez jelenik meg

Amit kertel a referenciákat a működő verzió a regi win xp-n ez van:

 

a win 7 en , meg a tobbi mas pc-n pedig ez jelenik meg:

 

 

köszönöm a bármilyen segítséget e ügyben

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

Ebből a leírásból nem sok minden derül ki, de esetleg érdemes lenne összehasonlítani a működő és nem működő gépeken, hogy milyen referenciák vannak beállítva a munkafüzethez.

 

ALT+F11-gyel eljutsz a Visual Basic Editorhoz, azon belül Tools menü, References menüpont. Ha a nem működő gépeken a listában "Missing" tétel van, akkor ott a gond.

Előzmény: exxit (29642)
exxit Creative Commons License 2016.10.26 0 0 29642

Sziasztok

 

Nem tudom jó helyen járok-e a problémámmal de megpróbálom , mert mar néhány napja böngészve a netet nem találok megoldást.

Adva van egy Excel füzet amelyben makrók vannak , ami win xp futva , Office 2003-on használandó. A probléma ott kezdődött hogy új PC-t kapott az adott személy , átraktam a szóban forgó fájlt  reá amin Win 7 és Office 2007 van telepítve, de  nem indul el, ezt írja ki: Run-time error "5" Invalid procedure call or argument.  A legrosszabb az hogy egy másik gépen is próbáltam futtatni a fájlt, amin ugyanúgy win XP és Office 2003 van telepítve , és csodák csodájára ott is ugyanaz a hibaüzenet jelenik meg :-(((((

Remélem tud valaki segíteni nekem

pimre Creative Commons License 2016.10.26 0 0 29641

Bocs, az első mondat kérdés akart lenni: Aktuális még a dolog? Az interpunkcióval állandó gondom van levelezéskor és fórumozáskor:-(((

 

Előzmény: pimre (29640)
pimre Creative Commons License 2016.10.26 0 0 29640

Szia, aktuális még a dolog. Az elmúlt időben kissé el voltam havazva, de most megnézhetjük, mit lehet kezdeni a fájljaiddal.

Előzmény: Arno88 (29554)
thomas5000 Creative Commons License 2016.10.25 0 0 29639

Igazából gyorsbillentyűre raktam már, szóval azzal nincs baj. Csak azt hittem, hogy lehet valahogy automatizálni, de akkor úgy tűnik nem.

 

Azért köszi.

Előzmény: Delila10 (29638)
Delila10 Creative Commons License 2016.10.25 0 0 29638

Azt hittem egy előző szűrést akarsz újra megadni.

 

Tedd ki a gyorselérési eszköztárra. Ikonon jobb klikk, Felvétel a gyorselérési eszköztárra.

Előzmény: thomas5000 (29637)
thomas5000 Creative Commons License 2016.10.25 0 0 29637

Az a baj, hogy a szűrő nincs meg makróban, csak simán.

 

Ezt a funkciót szeretném valahogy automatikusra tenni.

 

Ezt így nem lehet?

 

 

 

Előzmény: Delila10 (29636)
Delila10 Creative Commons License 2016.10.25 0 0 29636

Rögzítsd a szűrést makróban.

 

Lapfülön jobb klikk, Kód megjelenítése. Jobb oldalon a kép szerint válassz a 2 legördülőből.

 

 

Másold a rögzített makró tartalmát a Private Sub és az End Sub közé.

 

Előzmény: thomas5000 (29635)
thomas5000 Creative Commons License 2016.10.25 0 0 29635

Sziasztok!

 

Egy olyan makróra lenne szükségem, ha megoldható, hogy a szűrő munkalap kattintásra újra "elvégeződjön". (szép magyarosan :D)

 

Tehát ne kelljen nekem rámenni, hogy "újra alkalmaz", hanem ő ezt magától csinálja meg, ha rákattintok a munkalapra.

 

Ha ez lehetséges.

 

A segítséget előre is köszönöm!

Delila10 Creative Commons License 2016.10.25 0 0 29634

Belépek én is a csirkegyárba.

 

Veled ellentétben nem az átlagból indulnék ki, hanem az "aktuális"-hoz hasonló tömegű jószág adatait venném alapul, lásd a csatolt füzetet.

 

Az eredeti Sheet2-t átneveztem, az újon kihagytam a %-számítást, az A oszlop szerint emelkedőbe rendeztem a táblázatot.

A Sheet3 lap B2 cellájába kell beírni az aktuális csirke tömegét. A további (C:...) oszlopokba be lehet majd vinni a különféle műveletek árait, vagy ami szükséges.

 

A Sheet2 lapon kell a mért értékeket bővíteni.

Jeleztem a Sheet3 lapon, hogy komoly hiba van a mérési adatokkal.

 

http://data.hu/get/10059655/Kalkulacio.xlsx

Előzmény: Törölt nick (29631)
Törölt nick Creative Commons License 2016.10.25 0 0 29633

Jaja. Én pl. az összeszerelő üzem vezetője vagyok. Bedleg meg a központi szerviz és ügyfélszolgálaton van. Csak nálunk úgy megy, hogy az alkatrész-utánpótlást a késztermék szétszedésével biztosítjuk.

Előzmény: Eredő Vektor (29632)
Eredő Vektor Creative Commons License 2016.10.25 0 1 29632

LOL

Mindenki egy csirkegyárban dolgozik?

Törölt nick Creative Commons License 2016.10.25 0 0 29631

Hát, ha az elvi problémák nem érdekelnek, akkor itt egy lehetséges megoldás.

A "MELL CSONTTAL" nevű alkatrész %-os arányát az alábbi képlettel lehet megadni:

 

=HAHIBA(FKERES(cellahivatkozás az egész csirke tömegére;Sheet2!$A$21:$L$36;2;HAMIS);ÁTLAG(Sheet2!$B$22:$B$36))

 

ahol a piros részt értelemszerűen helyettesíteni kell valamivel.

A kék színű paraméterek pedig az alkatrésztől függően változnak. Pl.

Alkatrész                  2 helyett                $B$22:$B$36 helyett

COMB CSONTTAL          3                                  $C$22:$C$36

HÁT                              4                                  $D$22:$D$36

stb.

 

Első közelítésben ennyi.

Nyilván, ha az adatbázis bővül, ez a $A$22:$L$36 tartomány már nem lesz jó. Ha rám hallgatsz, a %-os értékeket külön oszlopokba rakod, pl. Sheet2-n M oszloptól kezdődően, és akkor nem kell sorindexekkel foglalkozni.

Előzmény: bedleg (29630)
bedleg Creative Commons License 2016.10.24 0 0 29630

Pontosan ez lenne a cél, ahogyan azt megfogalmaztad. A csatolt fájl, ez az egész árkalkuláció eddig csak egy nagyon kezdetleges dolog. Tehát az elvi problémáktól adatok hiányában eltekintenék (ebbe nem is szándékoztam belemenni), mivel tény, hogy ez ennyi adattal még nem támaszthatja alá a valóságot. Viszont az adatbázist folyamatosan bővítve, figyelembe véve a befolyásoló tényezőket, előbb vagy utóbb ezek mind pontosítva lesznek.

Tehát én ez az elképzelés szerinti számolásra, algoritmusra, beképletezésre lennék kíváncsi, mivel ezt nem tudom nem, hogy összeállítani, hanem elkezdeni sem. Ha nem is a pontos számolást, csak valami útbaigazítás szeretnék kérni, hogy miként tudom a két munkalapot ilyen módon "összekötni.

Köszönöm türelmeteket, és csak sikerül rájönnünk mi is kell nekem pontosan!


Előzmény: Törölt nick (29628)
pimre Creative Commons License 2016.10.24 0 0 29629

Az utolsó betűig egyetértek veled. Csak szándékosan el akartam kerülni, hogy a szakmai részletekbe belebonyolódjak. Az az érzésem, hogy bedleg barátunknak az a problémája, hogy nem tudja a saját maga által elképzelt feladatot algoritmus formájában megfogalmazni. És attól tartottam, hogy ha belebonyolódok a szakmájába, akkor félreviszem a beszélgetést, ráadásul olyan területre (csirke fel(!)pucolás), amihez magam nem értek. 

Sőt abba sem akartam ismét belebonyolódni, amit már korábban futólag megemlítettem, hogy nem szabadna tizedgramm pontosságig megadni az adatokat. (Ez az átka annak, ha az embernek a legmodernebb digitális Sartorius mérleg, vagy hasonló áll a rendelkezésére)

 

A tényleges különbségek bizonytalanságának igazolására egymás mellé tettem bedleg mérései közül az 1.475 és a 2.36 kg-os csirke részadatait, és mivel az utóbbi pontosan 1.6-szerese az előbbinek, annak a részadatait felszorozgattam a fenti táblázatban. És egymás alá téve szerintem nincs érdemi különbség a kettő között. Az a néhány deka különbség az egyes részek között bőven a hibahatáron belül van. Az eredeti táblázat százalékos adataiból látszik, hogy általában 1-2%-nál nagyobb különbség nincs köztük.

 

Szóval szerintem is aggályos a szakmai koncepció, csak első közelítésben nem akartam erre kitérni.

 

És nyuszinak is igaza van, a kérdés nem Excel kérdés, ahogy korábban már magam is jeleztem, hanem algoritmus megfogalmazási.

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

Ha jól értem az a cél, hogy egyetlen bemenő adatból (az egész csirke tömege) előálljon több kimenő adat (az alkatrészek tömegei). Na már most, kísérleti tények igazolják, hogy különböző csirkék esetében más és más az alkatrészek tömegének %-os aránya, és éppen ezért nem tűnik jogosnak minden csirke esetében ugyanazokat az arányokat használni. A kérdező azt feltételezi, hogy az arányok az egész csirke tömegével vannak összefüggésben, és - ha jól értem - azt szeretné, hogy:

1) néhány kiválasztott csirke esetében elvégzi a bonclást, leméri az alkatrészek tömegét, ebből létrejön egy kisebb "adatbázis", kb. ilyen oszlopokkal: "csirke neve", "csirke tömege", "szárny tömege", "comb tömege", stb..

2) minden további vágás esetében csak az egész csirke tömegét akarja lemérni, és az adatbázisból szeretne választ kapni arról, hogy mi az alkatrészek tömege: ha van az adatbázisban pontosan olyan tömegű csirke rögzítve, mint az ismeretlen "minta", akkor annak arányait felhasználni, ha pedig nincs, akkor az összes mérés átlagát alapul véve.

 

Ez a megközelítés akár algoritmusként is megfogalmazható, beképletezhető (legalábbis elsőre annak tűnik), de van itt néhány elvi probléma.

A) Honnan tudjuk, hogy a csirke tömege valóban összefüggést mutat az alkatrészek arányaival? Más szóval, biztos, hogy egy 5000 g-os csirke melle minden esetben 1300 g lesz? Vagy esetleg van olyan csirke, akinél 1800, meg van olyan, akinél csak 900? Baromfira nem mindegy.

B) Ha van is kimutatható korreláció, honnan tudjuk, hogy nincs más tényező, ami az eloszlást befolyásolja? Például

    - a csirke fajtája (szerintem mondjuk elég ésszerű ezt feltételezni, ha már modern korunkban mindent a genetikából próbálunk levezetni) 

    - a csirke neveltetésének körülményei (pl. tanyasi legeltetett, avagy napfényt sosem látott tápolt csirke)

    - a csirke életkora vágáskor (emberből is tudjuk, hogy az életkor előrehaladtával jelentősen megváltoznak a testrészek arányai, ráadásul ez nem mindenkinél ugyanabban az életkorban következik be)

 

Szóval ahhoz, hogy itt egy tudományosan alátámasztott megoldás legyen, először is fel kellene deríteni az összefüggéseket, mi függ mitől és hogyan, és ehhez rengeteg mérés, plusz nem kevés statisztikai kiértékelés lenne szükséges.

 

Vagy éppenséggel meg lehet csinálni a kérdező elképzelése szerint a számolást (már ha jól értettem, mit szeretne), csak azt nem lehet garantálni, hogy az ezzel a számolással kapott, becsült alkatrésztömegek köszönő viszonyban lesznek a valósággal.

Előzmény: pimre (29626)
_Nyuszi Creative Commons License 2016.10.24 0 0 29627

Az egyik ötletem az, hogy feldarabolsz mondjuk 10000 csirkét, és ezen csirkék alkatrészeinek tömegét elmented.

Aztán amikor egy következő csirkét csak úgy lemérsz egyben, akkor meg fogod tudni tippelni(!) az alkatrészek arányát. De ez még mindig olyan általános megállapítás lesz, mint pl. az a kijelentés, hogy "az emberi láb 35 kg". Kié? A 210 kilós obes férfiemberé vagy a 40 kilós, 90 éves, rákos nagymamáé?

Igazából ez a probléma nem is Excel, hanem simán bármilyen mérhető értékű sokaság problémája (emberi testmagasságtól elkezdve akármi).

Ha viszont azt mondod kellően sok mérésből, hogy a mell az a teljes csirke 27%-a, akkor meg csak annyi a dolgot, hogy az egész csirkét leméred, és a mért értéket beszorzod 0,27-tel és nem kell nagymintaszámú kísérletet végezned. - de gondolom felmerült benned is.

Előzmény: bedleg (29624)
pimre Creative Commons License 2016.10.24 0 0 29626

Akkor tisztázzunk valamit! Sem az Excel, sem egyetlen más számítógépes program nem fogja tudni megoldani a Te szakmai feladatodat. A program arra alkalmas, hogy amit az ember fárasztó munkával, esetenként kisebb-nagyobb hibákkal ki tudna számolni, azt a program segítségével a számítógép nagyságrendekkel gyorsabban elvégzi. És nincs rossz napja, nem fáj a feje, nem kell másra figyelnie, ezért nem is hibázik.

 

Azt viszont, hogy mit szeretnél elvégezni azt neked kell szájbarágós pontossággal megadni. Ezt nevezik algoritmusnak. Ennek alapján aztán gyerekjáték megírni a programot, ami a munkát majd elvégzi.

 

A korábban csatolt táblázatod mintája alapján légy szíves, mondd meg, mit kell tennie a gépnek, ha mondjuk van egy 1.790 kg-os csirkéd!

Ennek a táblázatod szerint a melle csonttal 0.67 kg, a combja csonttal 0.545 kg stb. kell, hogy legyen. Ha jól értelmezem, akkor ezeket most nem méred le újra, hanem a megtalált súlya alapján kiszámolod belőle az árát, amennyiért így egészben szeretnéd eladni. 

És ha jól értem, akkor ezek alapján szeretnéd kitölteni a sheet1-ben szereplő táblázatot. Azt ugyan még nem sikerült megfejtenem, hogy honnan kerülte ide a 2.5 kg-os csirke esetén a 37.20% meg 30.23%-os stb. adatok és ezek nyomán a 0.78, meg 0.64 kg-os stb. értékek mert ilyeneket az egész sheet2-ben nem találtam, 

De ha jól értem, akkor Te ezek alapján egy árat szeretnél kérni a számítógéptől.

 

Szóval magyarázd el légyszíves a feladatot úgy, mintha egy hülyegyereknek magyaráznál, tehát semmi magától értetődő fogalmat nem használhatsz. Csak olyat, hogy melyik sor, melyik oszlopban mit keressen a program. Onnan mit vegyen át, hova tegye, és ha mindez megvan, akkor hogyan számolja ki az eredményt. És végül a kiszámított eredménnyel mit kezdjen. Hova írja, milyen formában.

Előzmény: bedleg (29624)
NeomatiK Creative Commons License 2016.10.24 0 0 29625

Köszönöm. De ez így bonyolultabb (nekem). Inkább akkor mégis cellaegyesítéssel csinálom.

 

Előzmény: Eredő Vektor (29623)
bedleg Creative Commons License 2016.10.24 0 0 29624

Lényeg a költségek eloszlása, amennyiben felszeletejük a csirkét. Az eloszlás viszont függ a felpucolt egész csirke súlyától. Erre azért van szükség, hogy amennyire lehet pontosan kitudjam számiolni az önköltségleti árait egyes testrészeknek.

Lényeg, hogy azt szeretném elérni, majd folyamatosan bővítve az adatbázist, hogy ha egy adott felpucolt egész csírke átlagsúlyát kicserélem, akkor az adatbázisból automatikusan kicserélje az eloszlást (Sheet1). A megoszlások átlaga pedig abban az esetben lennének hasznosak, amennyiben a felpucolt egész csirke átlagának értéke pont nem szerepel az adatbázisban.

Remélem így világosabb a problémám. 

Előre köszönöm a válaszokat! 

Előzmény: pimre (29618)
Eredő Vektor Creative Commons License 2016.10.24 0 0 29623

Szövegdobozban, rácshoz illesztve. Áthelyezés / átméretezés a cellákal együtt bejelölve.

Előzmény: NeomatiK (29622)
NeomatiK Creative Commons License 2016.10.24 0 0 29622

Sziasztok!
Egymás alatt lévő cellkákban szeretnék írni úgy, hogy több cellát átér egy cella szöveges tartalma. Annak a módjára, ahogy a vízszintes irányban a "kijelölés közepére" módon lehet. Függőlegesre ott nincs ilyen lehetőség sajna. De van-e valami megoldás erre? A cellaegyesítéssel nem akarom viszont.

Delila10 Creative Commons License 2016.10.21 0 0 29621

A több tartományban való kereséshez nézd meg Kovalcsik Géza nagyszerű videóját, cím http://excelbacsi.hu/index.php/excel-forum/kereses-tobb-tartomanybol.

Előzmény: Madidam (29620)
Madidam Creative Commons License 2016.10.21 0 0 29620

Sziasztok!

 

Szeretnék segítséget kérni egy exceles projektemhez. Egy kereskedelemben munkálkodó cégnél dolgozok, rengeteg terméket forgalmazunk, az azonosítás cikkszámok alapján működik. A mi területünk a kiegészítő termékekkel foglalkozik, egyik terméket ajánljuk a másikhoz.

 

A problémám a következő lenne:

Van egy adattábla, ahol cikkszám alapján a "keres" függvénnyel behozunk bizonyos adatokat. Ezzel egy olyan probléma merült fel, hogy mivel nagy méretű az excel és sokan akarnak belépni több területről, ezért sokszor lefagy. ( A gépek nem a legmodernebbek)

Egy olyan megoldást keresek, ahol ezt az excel fáljt, több kisebb részre szétbontom, viszont, hogy ne legyen továbbra is órisái az adattábla, ezért keres függvénnyel hoznám be a szükséges infókat.

A gond az, hogy egy adott cikkszámú terméket, több területre is kitudunk helyezni, viszont a sima "keres" függvénnyel csak az első helyen szereplő cikkszámhoz tartozó érték kerül át. Van egy másik azonosításra szolgáló oszlop is mindkét táblázatban, ahova a területek elnevezései vannak megadva, itt is egy területre több különböző termék kerülhet.

A "ha" és a "keres" függvény összemosásával próbálkoztam, próbálkoztunk.

 

A logikai menetem, hogy "ha" a két excelben megegyezik a kihelyezés oszlopba írt szöveg, akkor az ott lévő cikkszámhoz tartozó értéket vigye át.

Ezt próbáltam a következő képlettel:

=IF(A3='\saját mappa név[HFB 1,2,3,4,5.xlsx]HFB 1,2,3,4,5'!A3;VLOOKUP(C3;'\saját mappa név[HFB 1,2,3,4,5.xlsx]HFB 1,2,3,4,5'!$C:$F;4;FALSE);0)

Ezzel próbálkozom, viszont ezek után is csak néhány adat jelenik meg a célhelyen.

Angol nyelvű 2007-es excellel dolgozunk.

Amit még tudni érdemes, hogy nem vagyok egy excel guru, csak hobbi szinten foglalkozom vele és saját project keretében indultam el ezen a vonalon.

 

Előre is Köszi szépen a segítséget!

 

Gergő

Törölt nick Creative Commons License 2016.10.21 0 1 29619

Érdekes kísérlet lenne megvizsgálni, hogy mitől függ az "alkatrészek" tömegaránya. Pl.

- ahol a baromfiudvarban macska is van ott sokat kell szaladni, tehát a comb jobban megerősödik,

- ahol a tyúkól emelt szinten van, ott többet kell repülni, tehát a mellizom erősödik meg jobban,

- a csirkefarmon, ahol a csirkék dobozban állnak egymás mellett, és csak annyi mozgásterük van, hogy kidugják a fejüket a dobozból a kajáért, ott a nyakizom lesz relatíve erősebb, stb.

De ez már sztem meghaladja egy vágóhíd dimenzióit.

Előzmény: pimre (29618)
pimre Creative Commons License 2016.10.21 0 0 29618

Nekem az a gyanúm, hogy itt nem Excel problémáról van szó. Az más kérdés, hogy ha sikerül megtalálni egy elvi megoldást a kérdésre, akkor annak konkrét alkalmazása Excel segítségével megoldható lesz.

 

Előrebocsátom, hogy soha életemben nem foglalkoztam sem baromfiak, sem más élőlények feltrancsírozásával és a testrészeik belső arányainak megállapításával, de azért teszek egy kísérletet a feladat megértésére (és talán a megoldására). Szóval: 

 

A táblázatokból (Sheet2) nekem az derül ki, hogy nem nagyon látszik összefüggés a csirke súlya és az egyes testrészek súlyának arányai között. Sőt az a gyanúm, hogy ha több azonos súlyú állatot trancsíroztál volna fel, akkor is egész különböző arányok adódtak volna. Mert még csak olyan tendenciát sem látok, hogy mondjuk a kisebb csirkék combfilé aránya kisebb lenne. Mondjuk a mellfilénél látszik valami nagyon enyhe trend, de nem igazán meggyőző.

 

Szóval én igazán az átlag használatában keresném a megoldást, amire egyébként magad is teszel utalást:

 

"...lehetséges-e  valamiféle középértéket venni, amennyiben az adatbázisban nem található meg pont az az egész csírke súlya és annak eloszlása?"

 

Én is ebből indulnék ki, csak a kérdésed második felétől tekintenék el. Tehát úgy tenném fel a kérdést, hogy "...lehetséges-e  valamiféle középértéket venni?"

 

Megnéztem az átlagokat (szigorúan egészre kerekítve, mert szerintem itt nemhogy a 4 tizedes, de még az egy tizedes pontosság is felesleges és félrevezető), és azt találtam, hogy a mellfilé 27%, a combfilé 24% stb.

 

Mi az akadálya annak, hogy mindenféle adatbázis nélkül ezeket a számokat használd az árkalkulációnál (Sheet1). Azt nem tudom, hogy találtál ott 37, illetve 30 %-ot, de nem is az én dolgom. A lényeg, hogy az átlagokból számolnék minden csirke esetén, függetlenül a felbontás eredményétől. 

 

A vevőt nem zavarná, mert vagy jobban jár egy kicsit, vagy rosszabbul, de nem hinném, hogy ezért reklamálna, és az eladó is a pénzénél lenne.

 

Persze nem tudom, milyen célra kell a számítás, de meglepne, ha lenne olyan cél, ahol csirkénként szükséges az állat szétbontása alapján elvégezni az árkalkulációt.

 

 

Előzmény: bedleg (29608)
Törölt nick Creative Commons License 2016.10.20 0 0 29617

Hát, én megpróbáltam rájönni, hogy mit szeretnél, de nem sikerült. Igaz, csak 10 percet szántam rá...

A melléklet meg inkább összezavar. Anélkül még azt gondoltam, sejtem a kérdés lényegét, de a melléklet számomra tök másról szól.

Előzmény: bedleg (29608)
pimre Creative Commons License 2016.10.20 0 0 29616

Igen, értem. Az imént Jimmynek válaszolva lényegében ugyanerre jutottam, azzal a különbséggel, hogy a forrás táblázat tényleges kezdősorát adtam meg első paraméterként, így azzal már nem kell korrigálni az eltolás mértékét, a második paraméternél pedig a léptetéssel való szorzást nem 1-ről, hanem 0-ról indítom, így azt sem kell már korrigálni.

 

Nem volt könnyű, de nagy nehezen megértettem az ofszet/eltolás függvény működését. Köszönöm a segítséget.

Előzmény: Delila10 (29613)
pimre Creative Commons License 2016.10.20 0 0 29615

Na igen, ezt egy kicsit túlbonyolítottam. Tehát a helyes képlet, ha a cél munkafüzet 1. sorától akarom írni az eredmény táblázatot:

 

=ELTOLÁS(Munka1!$A$5;(SOR()-1)*15;0)

 

Ha nem az első sortól, hanem mondjuk a 7. sortól kezdem az eredmény táblázatot:

 

=ELTOLÁS(Munka1!$A$5;(SOR()-7)*15;0)

 

Általánosítva:

 

=ELTOLÁS(Munka1!(Forrás kezdő cella);(célsor-céltáblázat 1. sorának száma)*léptetés;0)

 

És ahogy a képletet másoljuk lefelé, úgy egyedül a célsor értéke (a SOR()) változik, és ezzel léptetődik a függvény a megfelelő léptékkel.

Előzmény: Törölt nick (29611)
Delila10 Creative Commons License 2016.10.20 0 0 29614

A Munka2 3. sorában az eltolás 3*15-11=34, A$1-hez képest a 19 sor lefelé =A35

 

A 19 a sor másolásából maradt ott hibásan, helyesen 34 lett volna. :(

Előzmény: Delila10 (29613)
Delila10 Creative Commons License 2016.10.20 0 0 29613

=ELTOLÁS(Munka1!A$1;SOR()*15-11;0)

 

A Munka2 1. sorában az eltolás 1*15-11=4, A$1-hez képest a 4 sor lefelé =A5

A Munka2 2. sorában az eltolás 2*15-11=19, A$1-hez képest a 19 sor lefelé =A20

A Munka2 3. sorában az eltolás 3*15-11=34, A$1-hez képest a 19 sor lefelé =A35, és így tovább.

 

Előzmény: pimre (29609)
Delila10 Creative Commons License 2016.10.20 0 0 29612

:D :D

Előzmény: Törölt nick (29607)
Törölt nick Creative Commons License 2016.10.20 0 0 29611

"Persze a SOR(A$5) helyett írhattam volna egyszerűen 5-öt."

 

Vagy egyszerűen ki is hagyhattad volna, mer nekem úgy tűnik, a piros meg a kék éppen kinullázza egymást...

 

=ELTOLÁS(Munka1!$A$5;SOR(A$5)+(SOR()-1)*15-SOR(A$5);0)

Előzmény: pimre (29609)
Delila10 Creative Commons License 2016.10.20 0 0 29610

Ha a Munka1-en az első sor 4, a továbbiak 19; 34; 49; 64, akkor a másik lap első cellája

=OFSZET(Munka1!A$1;SOR()*15-12;0)

 

Itt mindig a Munka1!A$1-ből indulunk ki, ami a hivatkozásban az első sor.

 

Első esetben a sor()=1, ez szorozva 15-tel=15. 15-12=3. Ennyivel toljuk el a Munka1!A$1-et, vagyis Munka1!A4-re hivatkozunk.

Második esetben a sor()=2. 2*15=30, 30-12=18, A$1+18=19, és így tovább.

 

Az F9 segít a levonandó érték meghatározásában. A szerkesztőlécen kijelölöd a sor()*15-12 -t, F9-et nyomva kapcsos zárójelek között látod az értékét. Addig variálsz a levonandóval, míg jó eredményt nem kapsz. :) Ha javítani kell, Esc billentyűvel lépj ki a képletből, mert ha Enterrel tennéd, a mutatott érték marad a képletben, első esetben {3}.

 

 

Előzmény: pimre (29609)
pimre Creative Commons License 2016.10.19 0 0 29609

Nem volt könnyű, de megvan. Szóval, kezdődjenek a forrás munkalapon a nekem szükséges cellák mondjuk az A5-ön, és minden további 15. sorban van a következő.

 

Ekkor, ha a cél munkalap 1. sorától kezdve akarom beírni a forrás adatokat, akkor a képlet:

 

=ELTOLÁS(Munka1!$A$5;SOR(A$5)+(SOR()-1)*15-SOR(A$5);0)

 

Ha viszont a cél munkalapon van cím, fejléc, meg egyebek, és ezért  mondjuk a 4. sortól kezdem a bemásolást, akkor a képlet a következő lesz:

 

=ELTOLÁS(Munka1!$A$5;SOR(A$5)+(sor()-xx)*15-SOR(A$5);0), ahol xx annak a sornak a száma, ahol a cél munkalapon a bemásolást kezdem.

 

Persze a SOR(A$5) helyett írhattam volna egyszerűen 5-öt.

 

Mindenesetre köszönöm a rávezető segítséget.

 

 

Előzmény: Delila10 (29606)
bedleg Creative Commons License 2016.10.19 0 0 29608

Sziasztok!

Egy felpucolt baromfi árkalkuláción dolgozok, és az a "problémám", hogy a felpucolás utáni súly függvényében a baromfi úgymond főbb "alkatrészeinek" (mell, comb, szárny, hát) súlyeloszlása változik, tehát nem tudok egységes eloszlást beírni a táblázatba.

Készítettem pár mérést(nagyjából minden lehetséges súlyra találtam példányt), amelyben lemértem az egész csirke súlyát, aztán ugyanazt felszeleteltem, és "alkatrészenként" is lemértem, hogy megtudjam a megoszlást (%).

A kérdésem először is az lenne, hogy hogyan tudom "adatbázisként" használni a méréseket, és lehetséges-e  valamiféle középértéket venni, amennyiben az adatbázisban nem található meg pont az az egész csírke súlya és annak eloszlása?!

Nem tudom mennyire sikerült elmagyaráznom a problémámat, de remélem a mellékletből sikerül rájönni.

2016-os Excelt használok.

Előre köszönöm akármilyen segítségeteket!

Üdvözlettel, Bedleg



http://data.hu/get/10048177/Kalkulacio.xlsx

Törölt nick Creative Commons License 2016.10.19 0 0 29607

De az is lehet, hogy az én képletem rossz, mert nem gondoltam át, csak az elvig jutottam. Már én sem értem... :-)

Előzmény: Delila10 (29606)
Delila10 Creative Commons License 2016.10.19 0 0 29606

Jimmy a hivatkozások eltolását minden esetben az első sorhoz viszonyította – sor(a1)=1 –, én az aktuális sorhoz – A2-ben sor()=2, A5-ben sor()=5.

Előzmény: pimre (29605)
pimre Creative Commons License 2016.10.18 0 0 29605

Jimmy, meg kell, hogy kövesselek. Amit írtál az alapjában működik. Csúnyán elnéztem. Mert az tény, hogy a mintában Munka1 hivatkozást írtam ez egyszerűség kedvéért, de a valódi feladatomban más volt a forrás munkalap neve. Csak amikor kipróbáltam, akkor erről megfeledkeztem, és Munka1-re hivatkoztam, ami nem is volt az Excel táblámban, persze, hogy nem tudott mit kezdeni a függvény a nem létező munkalappal.

 

Így történt, hogy a 29595-ös válaszomban hülyeségeket írtam. Bocs.

 

Most látom, hogy az alapgondolat működik. Ahogy működik Delila 29598-as válaszában levő minta is. Azt ugyan még nem tudom, hogy miért a SOR(A1)*15-9 nálad, illetve SOR()*15-6 Delila képletében a 15 sorral későbbi hivatkozás. Azt már látom, hogy a saját próbálkozásom a sor értékéhez a 15 hozzáadása szintén nem jó. De ha majd holnap lesz egy kis időm, akkor tanulmányozni fogom, és valószínűleg rájövök.

 

Köszönöm a segítséget mindkettőtöknek.

Előzmény: Törölt nick (29588)
Delila10 Creative Commons License 2016.10.18 0 0 29604

Szívesen. :)

Előzmény: Sliderke (29603)
Sliderke Creative Commons License 2016.10.18 0 0 29603

Köszönöm szépen. Elképesztő vagy! Tényleg nagyon, nagyon köszönöm szépen.

Előzmény: Delila10 (29602)
Delila10 Creative Commons License 2016.10.18 0 0 29602

A vezetéknévhez:

 

Function Vezetéknév(cella As Range)
   Dim b As Integer, f As Boolean
   f = False

   For b = Len(cella.Value) To 1 Step -1
      If Mid(cella.Value, b, 1) = " " Then
         Vezetéknév = Left(cella.Value, b - 1)
         f = True
         Exit Function
      End If
   Next

   If Not f Then Vezetéknév = cella.Value
End Function

 

Módosítottam a Keresztnév makrón. A kék adatokat írd át arra, amelyik munkalapon, amelyik oszlopba írtad fel az elfogadható keresztneveket.

 

Function Keresztnév(cella As Range)
   Dim b As Integer, f As Boolean, nev As String
   f = False

   For b = Len(cella.Value) To 1 Step -1
      If Mid(cella.Value, b, 1) = " " Then
         nev = Mid(cella.Value, b + 1, 50)
         If Application.CountIf(Sheets("Munka2").Range("A:A"), nev) > 0 Then
            Keresztnév = nev
            f = True
            Exit Function
         End If
      End If
   Next

   If Not f Then Keresztnév = "Hiba"
End Function

 

 

Előzmény: Sliderke (29599)
Sliderke Creative Commons License 2016.10.18 0 0 29599

Kedves Delila10!

 

Már megvan a vezeték és a keresztnév is külön-külön. Ezt nagyon köszönöm neked, mert ezzel is nagyon sokat nyertem. Egy apróbb baj van amiben szeretnék még segítséget kérni, hogy tökéletes legyen ez a szét választás. 

A Hahiba függvény abban az esetben tökéletes ha csak két szóból áll a név. A keresztnevet leválasztotta a saját függvény a vezetéknevet pedig képezte a hahiba függvény.

 

Viszont sajnos előfordul olyan név is ami összesen 3 vagy extrém esetben 4 szóból áll.

pl: Dr. Kiss Balázsné Nagy Evelin

 

Ebben az esetben A "Dr." szót veszi alapnak a függvény és csak ezt hagyja meg. Hogyan lehetne azt megadni neki, hogy figyelje a szavak számát és mindig csak az utolsó szót húzza le a vezetéknév képzésénél. Ha lehet ezt támpontnak nevezni.

 

Keresztnévhez kiegészítésnek:

 

A VB scriptnél mennyire lenne bonyolult úgy módosítani, hogy csak azoknál a keresztneveknél válassza le és tegye át a másik cellába melyek a scriptben el vannak tárolva mondjuk egy tömbben? Ezeket én tudnám megadni neki.

pl.: László, Gábor, Etelka, János meg lenne adva ezt leválasztaná, de Ilona nem akkor ezt érintetlenül hagyná.

 

Ahol egy név van csak azt a vezetéknév oszlopban hagynám.

 

Előre is köszönöm a segítségedet.

Előzmény: Delila10 (29597)
Delila10 Creative Commons License 2016.10.18 0 0 29598

Munka2!A1  -> =Munka1!A10

Munka2!A2  -> =OFSZET(Munka1!A$1;SOR()*15-6;0)

 

Az utóbbit másolhatod lefelé.

Előzmény: pimre (29595)
Delila10 Creative Commons License 2016.10.18 0 0 29597

Kijelölöd a 2 oszlopot, ahova szétválasztottad a vezeték- és keresztnevet, másolod, marad a kijelölés, jobb klikk, irányított beillesztés, értéket.

 

Ezután törölheted az oszlopot, ahol az eredeti adatok vannak.

Előzmény: Sliderke (29594)
Fferi50 Creative Commons License 2016.10.17 0 0 29596

Szia!

 

A kimutatás táblába felveszed sor mezőnek a vevőkód mellé a vevőneveket tartalmazó oszlopot is. Igaz, ezzel az történik, hogy a vevőkód alá lesz bontva vevőnevenként, de ezt a bontást be is csukhatod (vagy az alapján a vevőneveket átírathatod az eredeti tábládban keres-cserél funkcióval a megfelelő - jó - értékekre).

 

Üdv.

Előzmény: mmuukkiiv2 (29589)
pimre Creative Commons License 2016.10.17 0 0 29595

Kösz, de sajnos nem jött össze. Ha beírom a munkalap hivatkozás nélkül, akkor megy: 

=ELTOLÁS($A$1;SOR(A1)*15-9;0) (igaz, hogy a *15-9 részt egyelőre nem értem, de lényegében működik. Viszont ha a $A$1 elé írom a Munka1!-et, akkor nekiáll fájlt keresni. Ha aposztrof, vagy idézőjelpár közé teszem akkor meg hibát ad.

 

Azt hiszem feladom. Azt fogom csinálni, hogy összegyűjtöm az adatokat a forrás munkalapon, és ha már egy táblázatban vannak, akkor könnyű lesz átrakni őket egy tiszta munkalapra.

 

Így már csak elméletileg érdekel, hogy vajon miért nem akar összejönni a munkalap hivatkozás, sem az INDIREKT függvénynél, sem az ELTOLÁS-nál. Hogy én tolok el valamit, vagy az Excel?

 

Előzmény: Törölt nick (29588)
Sliderke Creative Commons License 2016.10.17 0 0 29594

Nagyon szépen köszönöm neked, hogy megírtad ezt a VB scriptet.

Annyiban tudnál nekem segíteni még, hogy ha az A cellában lévő nevet, szót leválasztja és átteszi a B cellába akkor az A cellában lévő leválasztott szó törlődik onnan? Ezzel teljes lenne az örömöm. Ezer hálám előre is. Mégegyszer köszönöm.

Előzmény: Delila10 (29592)
Delila10 Creative Commons License 2016.10.17 0 0 29593

A helyedben készítenék egy segédtáblát (akár másik lapon is lehet, mint az említett táblázatod), ami tartalmazná az összes vevő kódját, mellette a nevét.

 

A kód beírásakor az FKERES függvény behozhatná a megfelelő helyre a nevet. Nem kell külön gépelgetni, nincs elírás.

 

A táblázat végén egy új oszlopban összefűzném a kódot a névvel (=A2 & " " & B2), és ezt vinném be a kimutatásba.

Előzmény: mmuukkiiv2 (29589)
Delila10 Creative Commons License 2016.10.17 0 0 29592

Lemaradt a vezetéknév előállítása. Ahhoz nem kell saját függvény.

 

=HAHIBA(BAL(A1;SZÖVEG.KERES(" ";A1)-1);A1) 

 

A HAHIBA azért kell, mert másképp #ÉRTÉK hibát hozna, ha csak 1 szót tartalmazna a hivatkozott cella.

Előzmény: Delila10 (29591)
Delila10 Creative Commons License 2016.10.17 0 0 29591

Egy saját függvénnyel megoldható.

A füzetedben Alt+F11-re előjön a VBA szerkesztő. Bal oldalon látod a füzeted nevét, ráállsz.

Insert menü, Module. Jobb oldalon kaptál egy nagy üres felületet, oda másolt be a lenti pár sort.

 

Function Keresztnév(cella As Range)
   Dim b As Integer, f As Boolean
   f = False

   For b = Len(cella.Value) To 1 Step -1
      If Mid(cella.Value, b, 1) = " " Then
         Keresztnév = Mid(cella.Value, b + 1, 50)
         f = True
         Exit Function
      End If
   Next

   If Not f Then Keresztnév = "1 szóból áll a(z) " & cella.Address & " cella tartalma"
End Function

 

Visszalépsz a füzetbe, a B oszlopba beírod az új függvényt: =keresztnév(A1) 

Ugyanúgy másolhatod, mint az Excel függvényeket.

 

Előfordulhat, hogy hibát jelez, és a szerkesztőben pirosak lesznek a sorok. Ez azért van, mert itt nincs lehetőség a VBA kód rendes bemásolására, a fórummotor nem készült fel rá. Semmi gond, az egyes piros sorok elején törlöd a szóközöket, és a Tab billentyűvel "lököd" jobbra a szöveget, míg olyan lesz a formája, mint ahogy itt látható. Ezután már működni fog.

Előzmény: Sliderke (29590)
Sliderke Creative Commons License 2016.10.17 0 0 29590

Sziasztok!

 

Lenne egy nagy kérdésem hozzátok. (Nekem nagy) :)

Sajnos a táblázat felosztó algoritmussal ez nem oldható meg amit szeretnék mert van olyan szó a cellában ami több szóból tevődik össze.

 

Arra lenne szükségem, hogy a képlet csak az utolsó szót válassza le és tegye át a szomszédos üres cellába. Erre van valami jó kis frappáns képlet?
Köszönöm a segítséget.

 

példa:

 

Ez van most

A oszlop

Kiss István

Kovács Pista

János Vitéz

Propeller Aranka

Majomkopé Harapós Erzsébet

 

Aminek lennie kellene:

A oszlop,                    B oszlop

Kiss                            István

Kovács                        Pista

János                          Vitéz

Propeller                     Aranka

Majomkopé Harapós  Erzsébet

 

Tehát mindig csak a legvégéről venné le az utolsó szót és azt tenné át egy új cellába a régi mellé. Sajnos a szó hossz változik, ez a para. Gondolom ezt csak makróval lehetne megcsinálni. Tudna ebben valaki segíteni?

 

mmuukkiiv2 Creative Commons License 2016.10.17 0 0 29589

Üdvözlet Mindenkinek!

 

Adott egy Office 2010, ebben egy többezer soros tábla, amelyből szeretnék kimutatást készíteni. Alapvető kimutatáskészítési ismereteim vannak. A táblában vannak vevőkódok, vevőnevek és vevőforgalmak, illetve egyéb oszlopok. Azt szeretném, hogy bár a csoportosítás vevőkód alapon menjen, de a kimutatásban a vevőkódok mellett jelenjen meg a vevő neve is. Amelyet persze néha elgépelnek, de az első találat már jó lenne névnek, csak segítség. Hiszen mindegy is, hogy egy vevőnévben a kft után oda van e biggyesztve a pont vagy se.

Hiába barátom a Google, nem dob ki megfejtést erre a problémára. Bár lehet, rosszul kérdezem.

 

mmuukkiiv2

Törölt nick Creative Commons License 2016.10.17 0 0 29588

=OFSZET(Munka1!$A$1;SOR(A1)*15-9;0)

 

(ill. ELTOLÁS)

?

Előzmény: pimre (29587)
pimre Creative Commons License 2016.10.17 0 0 29587

Addig már eljutottam, hogy az indirekt függvény egy munkalapon belül működik:

 

=INDIREKT(CÍM(SOR($A$1)+15;OSZLOP($A$1)))

 

Már csak a forrás munkalap nevét vagyok képtelen beletenni.

Előzmény: pimre (29586)
pimre Creative Commons License 2016.10.17 0 0 29586

És természetesen nem akarok ágyúval lőni verébre, ezért makró nélküli megoldást keresek.

Előzmény: pimre (29585)
pimre Creative Commons License 2016.10.17 0 0 29585

Sziasztok, most egy olyan alapszintű dologgal vagyok elakadva, hogy szinte szégyellem megkérdezni.

 

Egy munkafüzetbe veszek át adatokat egy munkalapról, mégpedig úgy, hogy a táblázat minden sorába a felette lévő sorban hivatkozott cellától valahány sorral lejjebb lévőből vegyem az adatot. Mondjuk 15 soronként lépjen, valahogy így:

 

A1: ='Munka1'!A10

A2: ='Munka1'!A25

A3: ='Munka1'!A40

 

Egyszerűen nem tudom megadni a folytatást. Ha kijelölök két, vagy 3 sort, és a jobb alsó sarokban megjelenő fekete kockánál fogva lejjebb húzom (ahogy számsorozatokkal szoktam), akkor majdnem jó, csak az első új sort elrontja, mert egyesével számolja, a következőknél már jól léptet, aztán megint ront és így tovább. 

 

Azt hiszem, valami nagyon egyszerű megoldásra vagyok képtelen rájönni.

 

Delila10 Creative Commons License 2016.10.16 0 0 29584

Inkább =HÉT.NAPJA(G5;2)<6 legyen a képlet. A függvény 2. paramétere határozza meg, hogy hétfővel kezdődik a hét, anélkül vasárnap az első nap.

 

Előzmény: nikolettapaletta (29583)
nikolettapaletta Creative Commons License 2016.10.15 0 0 29583

Közben a C)-re is találtam megfelelő képletet, ha valakit esetleg érdekelné:

=VAGY(HÉT.NAPJA(G5)=2;HÉT.NAPJA(G5)=3;HÉT.NAPJA(G5)=4;HÉT.NAPJA(G5)=5;HÉT.NAPJA(G5)=6)

Köszönöm mindenkinek a segítséget! :)

Előzmény: nikolettapaletta (29580)
Eredő Vektor Creative Commons License 2016.10.15 0 0 29582

Rakosgattam bele mentéseket... Írás előtt és után.

Az egyikben módosítok, a másik meg visszamenti a régi értékeket... értem, hogy miért, de számomra követhetetlen.

Előzmény: Eredő Vektor (29581)
Eredő Vektor Creative Commons License 2016.10.15 0 0 29581

Kösznöm, épp most próbálom amiket írtál.

Elviekben az utolsó mentett értékek elfogadhatóak az én esetemben.

De lehet, hogy bedobom a törölközőt...

Nem erre való az excel, ezt inkább acces-el vag egyéb vmilyen sql alapú adatbáziskezelővel kéne csinálni.

Előzmény: Fferi50 (29572)
nikolettapaletta Creative Commons License 2016.10.15 0 0 29580

Ó tényleg, erre nem figyeltem, köszönöm :) Közben a D feladat is meglett, esetleg a C-t nem tudod véletlenül?
Hálásan köszönöm az eddigi segítséget! 

Előzmény: Törölt nick (29578)
Hoter Creative Commons License 2016.10.15 0 0 29579

Tudnátok nekem is segíteni? (Kérésem lejjebb.)

Törölt nick Creative Commons License 2016.10.15 0 0 29578

Szerintem a B képlet jó, csak elé kell tenni egy egyenlőségjelet.

Előzmény: nikolettapaletta (29576)
Delila10 Creative Commons License 2016.10.15 0 0 29577

Az érvényesítésnél a Megengedve kategóriában nézz körül. Találsz ott Egész szám opciót, ahol megadhatod a min. és max. értéket. Van mód a Szöveghossz meghatározására is.

 

Érdemes körülnézni a lehetőségek között.

Előzmény: nikolettapaletta (29576)
nikolettapaletta Creative Commons License 2016.10.15 0 0 29576

Nagyon szépen köszönöm a gyors választ, ez alapján az elsőt meg is tudtam oldani. A többivel még kicsit bajban vagyok, van egy sejtésem, hogy rosszul adtam meg a képletet.

Eddig erre jutottam:

B) ÉS(SZÁM(F5);HOSSZ(F5)=9;DARABTELI(F:F;F5)=1)
C) erről sejtésem sincsen
D) (SZUM(H5)>500000)

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

Az érvényesítési opciók között van olyan, hogy "Egyéni". A legtöbb esetben erre lesz szükséged. Ha kiválasztod az egyéni érvényesítést, akkor egy képletet kell megadnod.

A képlet egyenlőségjellel kezdődik, és utána van egy logikai feltétel, amelyre azt akarod, hogy a beírt értékek ezt a feltételt teljesítsék.

Ha pl. azt akarom, hogy az A1 cella ne kezdődhessen alulvonással, akkor az A1 adatérvényesítési képlete ez lesz:

 

=BAL(A1;1)<>"_"

 

A feltételek kombinálhatók egymással. Ha több feltétel teljesülését akarod kikényszeríteni, akkor használhatod az ÉS függvényt. Pl. ha azt akarom, hogy az A1 cella ne kezdődhessen alulvonással, és a vége ne lehessen felkiáltójel, akkor az A1 adatérvényesítési képlete ez lesz:

 

=ÉS(BAL(A1;1)<>"_";JOBB(A1;1)<>"!")

 

Amikor a felhasználó beír egy értéket, akkor az Excel kiszámolja az adatérvényesítés képletének eredményét, és ha az IGAZ, akkor mehet ha HAMIS, akkor kiabál.

Ez alapján szerintem el tudsz indulni, szólj ha mégsem, vagy elakadsz.

Előzmény: nikolettapaletta (29574)
nikolettapaletta Creative Commons License 2016.10.15 0 0 29574

Sziasztok! 

Egy házi feladatomban kéne segítség, adatérvényesítést kell csinálni. Az alapokat tudom, de egy ilyen szintűt már nem annyira. A tanár meg is jegyezte, hogy nehéz, gondolkozzunk rajta. Sajnos nem jutottam semmire, és hozzátok fordulnék.

"Végezd el a következő adatérvényesítési beállításokat: 
A) Beteg neve: nem lehetnek benne kezdő és záró szóköz karakterek 
B) TAJ szám: 9 számjegy és nem fordulhat elő 2x ugyanaz a TAJ szám 
C) Utolsó vizit dátuma: a dátum nem eshet hétvégére 
D) Költség: a teljes költség nem haladhatja meg az 500.000 Ft-ot" 

Gondolkoztam a HA függvényeken pl. a név esetében =HA(VAGY(BAL(A21;1)=" ";JOBB(A21;1)=" ");"A név két szélén nem lehet szóköz";"Név Rendben"), de szerintem a táblázatba kell beírni az adatokat, és nem pedig egy másik táblázatból kiválogatni. Az érvényesítésben pedig egyáltalán nem találtam ilyen beállítási lehetőséget. 

Minden tippnek örülnék! 

 

Hoter Creative Commons License 2016.10.15 0 0 29573

Az alábbiakhoz szeretnék makró segítséget kérni:

B oszlopban hatosával növekvő sorszám van. (pl. 1,1,1,1,1,1,2,...)
=HA(DARABTELI($B$3:B3;B3)=6;HA(ÜRES(R3);B3+1;R3+1);B3)
Előfordul, hogy egy-egy sorszámot ki kell hagyni. (pl. 1,1,1,1,1,1,3,...)
A B oszlopban állva átírom a következő sorszámra.
Abban szeretném a segítségeteket kérni, hogy amikor átírom pl. 2-es sorszámot 3-ra, automatikusan az R oszlopban az 1-es sorokkal egy vonalba beírja a kimaradó 2-es sorszámot. Most csak ez a makróm van,

ActiveSheet.Cells(Selection.Row, "R").Value = Selection.Value + 1

ez csak egyesével és nem az átírással egyszerre írja be a kimaradó sorszámot.

Így nézne ki:
B oszlop          R oszlop
1                 2
1                 2
1                 2
1                 2
1                 2
1                 2
3
3
3
3
3
3
4
...

Segítségeteket előre is köszönöm.

Fferi50 Creative Commons License 2016.10.13 0 0 29572

Szia!

 

Bocs, de egész nap el voltam foglalva - délben is csak benéztem... Megpróbálok a két kérdésedre egy hsz-ben válaszolni.

1. Tudomásom szerint a közös munkafüzet mások által történt változtatásairól csak és kizárólag a mentés során lehet értesülni. Tehát ahhoz, hogy megtudd a munkafüzet legutolsó (pillanatnyi) állapotát, menteni kell a munkafüzetet. Ezután meg tudod nézni, hogy a korábban feltöltött értékek jók-e még.

2. A változtatások elfogadása ill. az ütközések feloldása igazából két külön "világ" és tulajdonképpen nehezen automatizálható szerintem - hiszen el kell dönteni, ha 3 felhasználó is módosította ugyanazt az adatot (cellaértéket), akkor abból melyik érvényes most. Jó, persze lehet mondani, hogy a legutolsónak bevitt érték, vagy csak a "jános" által bevitt érték fogadható el, de azért egy kicsit valahol ez mégis rizikós egy kicsit.

Én ezt úgy oldottam meg (mármint, hogy ne kelljen foglalkozni ütközésekkel), hogy minden felhasználónak van "saját területe", ahova csak ő írhat (tkp. a program csak oda ír), ezáltal más nem tudja a területet módosítani. Nem mondom, hogy ez mindig és minden helyzetben használható, de nálam működőképes volt. Hogy jobban értsd, a terület az nem egész munkalap volt, hanem pl. az adatok tárolására szolgáló lapon egy sor, aminek a "kulcsában" benne van az adott felhasználó azonosítója, a makró mindig ebbe a sorba írja az általa bevitt ill. hozzá tartozó adatot.

Azokat a funkciókat pedig, ahol sok-sok sorba kell adatot bevinni, vagy pl. kimutatást, diagramot kell készíteni, meghatározott jogosultsággal lehet végrehajtani, ha szükséges, akkor a közös felhasználás átmeneti megszüntetésével majd a feladat elvégzése után az ismételt megengedésével.

 

Ha ütközéseket megengedünk, akkor szerintem kell egy olyan felhasználó, aki eldönti, hogy melyik adatot használja  tovább a rendszer - ez nagyon ciki lehet pl. egy raktárkezelésnél, amikor már nem létező mennyiséget szeretnének kiadni, vagy nullás készletet látnak, holott már van bevételezve, csak még nem látja az új értéket.

Én ebben az esetben azt javaslom, hogy ki kell kapcsolni a változások követését és következetesen alkalmazni a mentés minden írás-olvasás előtt.

 

Üdv.

Előzmény: Eredő Vektor (29571)
Eredő Vektor Creative Commons License 2016.10.13 0 0 29571

Még egy kérdés felmerül:

Ellenőrizhető e az, hogy a közös munkafüzetben történt e változás a megnyitotthoz képest? Azért, hogy a másik felhasználónál megnyitott userform képes legyen frissülni magától - ugyanis a kontrollokat egyszeri inicializálással töltöm fel egy tömbből - és ezt a tömböt frissíteni kellene ha változik a tartalom.

Előzmény: Fferi50 (29569)
Eredő Vektor Creative Commons License 2016.10.13 0 0 29570

Szia,

Köszönöm a válaszodat, ez nekem nem jutott volna eszembe. (Írás előtti mentés) Hamarosan kipróbálom így.

 

Egy kérdés:

Szerinted kell használni a 

ActiveWorkbook.AcceptAllChanges

a frissítés során valahol a  kódban. V. szerinted ez hasznos lehet?

 

(Ez a változások követése / módosítások elfogadása )

Előzmény: Fferi50 (29569)
Fferi50 Creative Commons License 2016.10.13 0 1 29569

Szia!

 

Közös fájlban akkor frissülnek a mások által bevitt adatok, ha mentést hajtanak végre, ehhez nem kell - nem is szabad - bezárni a fájlt. Arról kell gondoskodni, hogy adatbeírás előtt és után is legyen mentés. Más kérdés, hogy amíg a mentés folyik, addig másik felhasználó nem tud beleírni a fájlba, az ő számára addig elérhetetlen a fájl - és persze fordítva is így van. Azaz ezt az elérhetetlenséget, ami egyébként hibajelzés alapján detektálható, kezelni kell, addig kell ismételni, amíg végre nem lehet hajtani a mentést.

A beírás előtti mentés azért kell, hogy értesüljön a program az időközbeni változásokról, majd a mentés után ellenőrizni érdemes, hogy sikerült-e (ez persze nem kötelező).

Előzmény: Eredő Vektor (29567)
Eredő Vektor Creative Commons License 2016.10.13 0 0 29568

Igen, ezzel egyetértek.

Előzmény: ypolito (29565)
Eredő Vektor Creative Commons License 2016.10.13 0 0 29567

Van valakinek tapasztalata közös használatból eredő problémákkal?

 

Userformon lévő kontrollokal írok/olvasok egy közössé tett fájlba/ból. 

Ezt az userformot több felhasználó használja és azonos időben is írnak / olvasnak a közössé tett fájlba/ból.

Illetve... tennék ezt - ugyanis nem működik. Érthető okok miatt.

 

1.

Az userform megjeleníti a közös fájl tartalmait a rajta lévő kontrollokon keresztül. A különböző felhasználóknál nyitva lévő formok csak újraindítás után látnak aktuális adatot. (Az ok érthető, de nem elfogadható) Ez még megoldható egy "Frissítés" típusú kódsorral egy gombhoz rendelve - ha máshogy nem megy. De ez vajon csak úgy lehetséges, ha ez a frissítés kódsor bezárja/újra nyitja a háttérben a közös munkafüzetet?

 

2.

A többfelhasználós adatbeírás sem az elvártak szerint működik. Nem a megfelelő helyre történik a bejegyzés (Ez egy application.match –al megtalált sorban történik). Valószínűleg ez kívülálló számára most nem értelmezhető – de ennek szintén az az oka, hogy a két felhasználó által megnyitott userform csak azt látja, ami a megnyitáskor fizikailag a megosztott munkafüzetben benne van. Így az egymásra(egyszerre)  írt azonos sorban lévő adatok elválnak egymástól és nem fednek

Eredő Vektor Creative Commons License 2016.10.13 0 0 29566

szóval, csak bizonyos feltételek megléte esetén működik...

Előzmény: ypolito (29562)
ypolito Creative Commons License 2016.10.13 0 1 29565

Így van. Kicsit suta megoldás, nem is mindig kivitelezhető de vannak esetek amikor jól jöhet.

Előzmény: Eredő Vektor (29564)
Eredő Vektor Creative Commons License 2016.10.13 0 0 29564

Ez szerintem csak akkor egészíti ki automatikusan begépeléskor, ha az adatérvényesítés oszlopában van annak validációs listája is.

 

Előzmény: ypolito (29562)
Törölt nick Creative Commons License 2016.10.13 0 0 29563

Köszönöm szépen!

Előzmény: ypolito (29562)
ypolito Creative Commons License 2016.10.12 0 0 29562

Szia!

 

Van rá megoldás, működik is.

 

http://www.ozgrid.com/Excel/autocomplete-validation.htm

 

Üdv.:

P.

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

Köszönöm. Igen, azt tudom, ismerem, de erre kellene valami jó kis megoldást találnom.

Sajnos, már a gugli sem a barátom...

Előzmény: Delila10 (29560)
Delila10 Creative Commons License 2016.10.12 0 0 29560

Érvényesítésnél sajnos nem lehet, de ha az ActiveX vezérlők közük teszel ki ComboBoxot, annál működik.

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

Sziasztok!

 

Excel 2010: Adatok -> Érvényesítés -> Lista beállítás.

Azt szeretném megkérdezni, hogy lehet beállítani azt, hogy a listából ne csak a legördülő elemek végigböngészésével lehessen választani, hanem, ha elkezdik begépelni és ha van olyan listaelem, akkor szépen ráálljon arra és így kiválasztható legyen.  

 

Előre is köszönöm. 

Törölt nick Creative Commons License 2016.10.11 0 0 29558

Ahogy elnézem, nem kerülhető el, hogy bármelyik ComboBox változásakor az összes többinek a listáját újra kelljen építeni, ráadásul úgy, hogy az egyes ComboBox-ok aktuális értéke is megmaradjon. Ha mondjuk létezne olyan objektum - legyen az Collection, Dictionary vagy bármi - amelynek az elemeihez flag-eket lehet társítani, és a flag-ekre szűréssel le lehet kérdezni egy tömbbe, akkor talán elegánsabb módon is meg lehetne oldani a feladatot.

 

Hacsak nincs a ComboBox-ok között hierarchia, mert az teljesen más megközelítés. (Értsd: ComboBox#1 bármilyen értéket felvehet, #2 csak a még nem foglaltakat, és csak akkor, ha #1 már ki lett választva, #3 csak a még nem foglaltakat, és csak akkor, ha #1 és #2 már ki lett választva, stb. #1 megváltoztatásakor #2, #3 és #4 értéke törlődik, stb.)

Előzmény: Eredő Vektor (29555)
Törölt nick Creative Commons License 2016.10.11 0 0 29557

Tetszik a link.Bár van a blogban olyan, hogy egy állítás alátámasztására hozott példa pont az állítás ellenkezőjét igazolja...

Viszont érdekes amit a VBA Compiler-ről meg a Multithreading-ről ír. Eccer kipróbálom.

Előzmény: Eredő Vektor (29556)
Eredő Vektor Creative Commons License 2016.10.11 0 0 29556

Illetve még az itt olvasható kódok is használhatóak, valamilyen hogy tömbben rendezgessem ezeket:

http://analystcave.com/excel-vba-dictionary-arrays-and-other-data-structures/

Előzmény: Eredő Vektor (29555)
Eredő Vektor Creative Commons License 2016.10.11 0 0 29555

Köszönöm, kipróbálom.

Pórbáltam Collection-ban adni/elvenni az elemeket de még nem sikerült.

Jelen pillanatban még kísérletezem ezzel:

 

 

Dim dict as Object

Set dict = CreateObject("Scripting.Dictionary")

Előzmény: Törölt nick (29553)
Arno88 Creative Commons License 2016.10.11 0 0 29554

Szia,

 

Köszi szépen a segítséget!

 

A formalapok külön munkafüzetben érkeznek be hozzám, azért is vannak külön kiértékelve.

Természetesen nem probléma, hogyha egy munkafüzetbe összevonnánk öket, és mellette megmaradna az eredeti is. A munkalapok neve az az alapértelmezett.

 

A mintákban lévö eltérésekért elnézést kérek!

 

Köszi szépen mégegyszer!

 

 

 

Gábor

Előzmény: pimre (29549)
Törölt nick Creative Commons License 2016.10.11 0 1 29553

Próbáld ki ezt. Az egész kód a userform-ra megy. Kicsit favágós, de szerintem műxik.

A piros részek környezettől függően módosítandók. A Separator lehet akár egy alulvonás is, de mindenképpek olyan karakter(sorozat) legyen, ami biztosan nem fordul elő a listaelemekben.

 

Dim Skip As Boolean

Private Sub UserForm_Initialize()
   RebuildLists
End Sub

Private Sub ComboBox1_Change()
   If Not Skip Then RebuildLists
End Sub

Private Sub ComboBox2_Change()
   If Not Skip Then RebuildLists
End Sub

Private Sub ComboBox3_Change()
   If Not Skip Then RebuildLists
End Sub

Private Sub ComboBox4_Change()
   If Not Skip Then RebuildLists
End Sub

Private Sub RebuildLists()
   Const Separator = "#@-{}"
   Dim Arr, i As Long, j As Long
   Dim Reserved As String, Current As String
   
   Skip = True
   Arr = Application.Transpose(Worksheets("Munka1").Range("A1:A10"))
   For i = 1 To 4
      If Me.Controls("ComboBox" & i).Value <> "" Then Reserved = Reserved & Separator & Me.Controls("ComboBox" & i).Value & Separator
   Next
   For i = 1 To 4
      With Me.Controls("ComboBox" & i)
         Current = .Value
         .Value = ""
         While .ListCount > 0
            .RemoveItem 0
         Wend
         For j = LBound(Arr) To UBound(Arr)
            If (Arr(j) = Current) Or (InStr(Reserved, Separator & Arr(j) & Separator) = 0) Then .AddItem Arr(j)
         Next
         If Current <> "" Then .Value = Current
      End With
   Next
   Skip = False
End Sub


Előzmény: Eredő Vektor (29550)
Fferi50 Creative Commons License 2016.10.10 0 1 29552

Szia!

 

Szerintem makró kell hozzá. Az eredeti tartományodat elmented valahova. Majd egy-egy listaelem kiválasztásakor törlöd azt a cellát, amiben a listaelem van.

Valamikor csináltam egy olyan makrót, amelyik visszatenni is képes volt listaelemet (ha az egyszer már kiválasztottat mégis átírták másra), vagy itt, vagy az ITCafe, vagy a Prog.hu, már nem emlékszem rá - a fájlt meg nem őriztem meg :(.

Nick ugyanaz.

 

Üdv.

Előzmény: Eredő Vektor (29550)
JozsBiker Creative Commons License 2016.10.10 0 0 29551

Értem. Nagyon köszönöm a segítséged !

 

Előzmény: Delila10 (29547)
Eredő Vektor Creative Commons License 2016.10.10 0 0 29550

Helló,

Van 4 combobox:

UserForm1.combobox1.List = ws.Range("tartomanyneve").value

UserForm1.combobox2.List = ws.Range("tartomanyneve").value

UserForm1.combobox3.List = ws.Range("tartomanyneve").value

UserForm1.combobox4.List = ws.Range("tartomanyneve").value

 

A cél: Ha egyikben egy elemet kiválasztok, a többinél ez az elem már ne szerepeljen a lenyílólistában.

Merre érdemes elindulnom?

 

pimre Creative Commons License 2016.10.10 0 0 29549

A feladat elvileg nem okozna nehézséget, de van néhány nehezen áthidalható gond.

 

1. Nem tudom, miért kell az egyes szereplők adatait önálló fájlban tárolni. (ne hívjuk őket külön excelnek, hanem külön munkafüzetnek, mert ez az általánosan elfogadott neve ezeknek az Excel fájloknak)

Ez szerintem akadálya is annak, hogy program (makró) nélkül függvénnyel meg lehessen oldani a feladatot. Az én ismereteim szerint legalábbis ehhez az INDIREKT() függvényt kellene használni, ehhez viszont a munkafüzetnek nyitva kell lennie (https://support.office.com/hu-hu/article/INDIREKT-f%C3%BCggv%C3%A9ny-474b3a3a-8a26-4f44-b491-92b6306fa261)

 

2. Nem adtad meg az egyes munkafüzeteken belül a munkalap nevét, amelyben az adataid találhatók. Feltételezem, hogy meghagytad az Excel által automatikusan adott „Munka1” munkalap nevét, de ezt azért jó lenne tisztázni.

 

3. Nem derült ki a leírásodból, hogy minden egyes munkafüzetben ugyanazokban a cellákban vannak-e az adatok. Eredetileg azt írtad, hogy az A1-B4 cellákban, a mostani mintád szerint a C5-D11-ben vannak, minden második sor üresen hagyásával.

 

4. Az sem világos, hogy a kiértékelő táblázatban miért Tóth Gábor neve mellé kerülnek a Nagy Zoltán adatait tartalmazó munkafüzet elérhetőségei.

 

Javaslatom: Ha még nincsenek kőbe vésve az eddigiek, akkor át kellene gondolni a feladatot az elejétől. A teljes adat- és fájlszerkezettel. Elsőként azt mondd meg, hogy mit szeretnél megoldani? Aztán utána gondoljuk át az adatszerkezetet. Mondjuk a következők szerint:

 

1. Azzal kezdeném, hogy meg kellene próbálni az összes Excel fájlodat (a munkafüzeteidet) egyetlen munkafüzetbe összegyűjteni úgy, hogy a jelenlegi munkafüzeteid aktív lapjai egy-egy munkalapot képezzenek az új munkafüzetben. Ezek neve lehetne az érintett személy neve. Ezzel nem lenne szükség arra, hogy a kiértékelő táblázat nyitogassa meg őket.

 

Ez kézzel túl nagy munka, de ezen könnyű segíteni. Egy makró kell hozzá, ami a munkafüzeteket egyenként megnyitja, és az általad megadott munkalapok tartalmát összehozza egy munkafüzetbe. Ezt megírom neked, és egyszer lefuttatva elkészítheted vele a közös munkafüzetet.

 

2. Aztán, ha megmondod, hogyan képződnek az egyes Excel fájlok (munkafüzetek) akkor talán tudnék segíteni abban, hogy a későbbiek is a közös munkafüzetbe kerüljenek.

 

3. Az is kérdés persze, hogy szükséges-e egyáltalán külön munkalapon tárolni az egyes személyek adatait. Nem lenne megoldható, hogy eleve a kiértékelő táblázatba kerüljenek be az adatok?

 

Előzmény: Arno88 (29548)
Arno88 Creative Commons License 2016.10.10 0 0 29548

Sziasztok,

 

köszönöm szépen a gyors segítséget, és elnézést az érthetetlen magyarázatért!

 

Megpróbálom mégegyszer:

 

Vannak beérkezö formalapok egy minta alapján:

 

 

 

Ezekböl az adatok átkerülnek egy kiértékelésbe:

 

 

A kiértékelésben a hiperhivatkozás szerepel, de mellé lehet írni szövegesen az elérési útvonalat is ha szükséges.

 

 

A célom az lenne, hogy az adatok hiperhivatkozás illetve az elérési út megadása után valamilyen szinten automatizálva kerüljenek át a kiértékelésbe. A rengeteg excel és a bennük lévö adatok miatt lenne erre szükség.

 

 

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

 

 

Gábor

Előzmény: pimre (29543)
Delila10 Creative Commons License 2016.10.10 0 0 29547

Meg lehet oldani, de akkor az 50 vonaladhoz 50 makró kell. Ezt akartad elkerülni.

Most duplán kattintasz valamelyik vonalra, és kész.

Előzmény: JozsBiker (29546)
JozsBiker Creative Commons License 2016.10.09 0 0 29546

Ez így már tényleg szuper, köszi!

Az jutott még eszembe :-), hogy azt nagyon bonyi volna megoldani, hogy egy-egy adattábla csak a saját alakzatára klikkelve tűnjön el ? Tehát ha pl. kint van a négyzet táblázata, ne tűnjön el ha a rombuszra vagy másra klikkentünk, csak ha a négyzetre. Vagyis több táblázat is kint lehessen párhuzamosan.

 

Előzmény: Delila10 (29545)
Delila10 Creative Commons License 2016.10.09 0 0 29545

Ez az átalakítás sokkal egyszerűbb volt, mint ahogy kinéz.

Bármelyik alakzatra kattintva eltűnik, ill. megjelenik a Tabla objektum. 

 

http://data.hu/get/10026042/JozsBiker.xlsm

Előzmény: JozsBiker (29542)
JozsBiker Creative Commons License 2016.10.08 0 0 29544

Az Adatok táblázat jó volna ha nem a fő lapon lenne, hanem a Munka2 -n. Próbáltam átmásolni a Munka2 -be és a makróban átírni Munka2!Adatok -ra, de nem örült neki :-)

 

Ezt közben összehoztam :-)

 

Előzmény: JozsBiker (29542)
pimre Creative Commons License 2016.10.08 0 0 29543

Szerintem ez sem lett érthetőbb. Kezdjük azzal, hogy mit nevezel a formalapok linkjének? Biztos vagyok benne, hogy nem linkre (azaz hiperhivatkozásra) gondolsz, mert azzal az Excel táblázatban nem lehetne mit kezdeni. Lehet, hogy munkafüzet nevére gondolsz az elérési úttal együtt (mert azzal lehet dolgozni)

 

Nem tudnál inkább egy mintát feltenni egy formalapról, és egy másikat a kiértékelési táblázatról? És egy picit pontosabban elmondani, hogy a kiértékelési táblázatod egyes celláiban mit szeretnél látni. azaz a kiértékelő munkafüzetben az N oszlop egyes soraiba mi kerül, és ezeket a forma munkalapokról mely cellák összegzésével szeretnéd előállítani.

 

Például így: /de még jobb, ha valahova (Google drive, vagy data.hu) felteszel egy-egye munkafüzetet mintának, és csak annak a linkjét küldöd el/

 

 

Ami persze rögtön felvet egy kérdést, nem lenne-e célszerűbb az 1. sorba írni a megnevezéseket, és alá az adatokat, így sok munkafüzet helyett (amit külön .xls-nek nevezel) egyetlen munkalapon kerülhetnének egymás alá a nevek, és talán könnyebben is lehetne dolgozni velük)

Előzmény: Arno88 (29538)
JozsBiker Creative Commons License 2016.10.08 0 0 29542

Ez így mostmár majdnem olyan, mint amit szeretnék :-)

 

Tudnád úgy módosítani, hogy ha a téglalapra ráklikkelek akkor jelenjenek meg a hozzá tartozó mezők, ha újra ráklikkelek akkor pedig tűnjenek el ? Ugyanígy ha a rombuszra klikkelek akkor az ahhoz tartozó mezők legyenek láthatók, a következő ráklikkelésig. Stb.

 

Nagyjából hasonlítana a Megjegyzés beszúrása funkcióra, csak itt nem akkor jelennének meg az adatok ha a mező fölé viszem az egeret hanem ha ráklikkelek az obketumra, és a következő klikkelésre tűnne el. A megjegyzésbe írt dolgokat nem lehet olyan rugalmasan módosítani és áttekinteni, ezért lennének az adatok a Munka2 -n.

 

Az Adatok táblázat jó volna ha nem a fő lapon lenne, hanem a Munka2 -n. Próbáltam átmásolni a Munka2 -be és a makróban átírni Munka2!Adatok -ra, de nem örült neki :-)

 

Várhatóan a "rajzom" nagyobb lesz mint egy képernyő, ezért a megjelenő adatoknak mindig annak a közelében kellene megjelenni, ahol klikkelek. Vagy tulajdonképpen fix helyen is megjelenhet, pl. a bal felső sarokban.

 

Bocs ha telhetetlen vagyok :-)

 

Előzmény: Delila10 (29541)
Delila10 Creative Commons License 2016.10.08 0 0 29541

Kicifráztam. Kibővítettem az Adatok táblát úgy, hogy a megjelenő "fénykép" mérete igazodjon a benne lévő adatokhoz. A szorzókat írd át úgy, hogy a saját monitorodon jó kép jelenjen meg.

 

http://data.hu/get/10024223/JozsBiker.xlsm

Előzmény: Delila10 (29540)
Delila10 Creative Commons License 2016.10.08 0 0 29540

Szia!

 

Letöltheted a mintát innen: http://data.hu/get/10024201/JozsBiker.xlsm

 

Sajnos az 50 vonaladhoz tartozó tartományokat be kell vinned az Adatok (vagy ahogy elnevezed) táblázatba.

Előzmény: JozsBiker (29539)
JozsBiker Creative Commons License 2016.10.07 0 0 29539

Kérdeznék még, hamár ilyen segítőkész vagy :-)

 

Tulajdonképpen azt szeretném megoldani, hogy az egyik lapon van egy rajz ami négyzetekből és az azokat összekötő vonalakból áll ( kb. 50 db vonal ), a másik lapon pedig táblázatos formában vannak a vonalakhoz tartozó adatok. A feladat az volna, hogy ha az egyik lapon ráklikkelek egy vonalra, az ahhoz tartozó adatokat jelenítse meg a másik lapról. A segítségeddel mostmár egy vonalra vonatkozóan megvan a megoldás, csak nem tudom a többit úgy célszerű-e megoldani, hogy annyiszor annyi makrót hozok létre és rendelgetek hozzá a vonalakhoz, vagy esetleg van egyszerűbb/hatékonyabb/gyorsabb megoldás is ?

 

 

Előzmény: Delila10 (29524)
Arno88 Creative Commons License 2016.10.07 0 0 29538

Sziasztok,

 

bocsánat, hogy nem voltam egyértelmű.

A formalapok és a kiértékelés azok külön .xls -ek. A több tucat formalapból szeretném a szükséges adatokat kiszedni a kiértékelésbe, ahol most csak a formalapok linkjei vannak egymás alatt egy oszlopban. Azt szeretném, hogy ezek mellé a linkek mellé kerüljenek az előre meghatározott adatok a linkre mutató .xls-ből.

 

köszönöm szépen a gyors reakciót!

 

 

Gábor

Törölt nick Creative Commons License 2016.10.07 0 0 29537

Szerintem valami INDIREKT cucc lesz, de én is várnék picit az észosztással, hátha tisztul a kép...

Előzmény: Eredő Vektor (29536)
Eredő Vektor Creative Commons License 2016.10.07 0 0 29536

és mi a kérdés?

eléggé szubjektíven fogalmazol...

de mintha csak egy sima fkeres függvény kéne csak Neked.

Előzmény: Arno88 (29535)
Arno88 Creative Commons License 2016.10.07 0 0 29535

Sziasztok,

 

segítséget szeretnék kérni töletek!

 

A  következö excel táblázatot szeretném létrehozni:

 

"Formalapoknak a kiértékelése"

 

A formalapok mindíg úgyanúgy néznek ki, csak egyes cellák változnak. (PL A1:Név,B1:Nagy Zoltán vagy A2: Kor,B2:86, A3:Szemüveg szín, B3:fekete, A4:unokák száma B4:5)

 

A formalapok linkjét bemásoltam a kiértékelésre szolgáló táblázat N oszopába, és szeretném, hogy a többi információ, Név, kor, stb... ugyanabban a sorban legyen a link mellett.

Egyenlöség jellel próbáltam, hogy formalap adott cellájával egyenlö a kiértékelésen megfelö cella, és ami változna az a formalap elér´si útvonala lenne. A linkek mellett pedig szövegesen is lehetne a link, ha úgy könnyebb használni.

 

Remélem nem túl bonyolult, köszi szépen a segítséget, és bocsi, hogy csak úgy idetolakodtam!

 

Gábor

 

Törölt nick Creative Commons License 2016.10.07 0 0 29534

Nincs mit. Igazából kellenek az ilyenek, mert kezdenek berozsdásodni az agyizmaim.

Előzmény: Delila10 (29533)
Delila10 Creative Commons License 2016.10.07 0 0 29533

Nem csodálom, nem egy egyszerű megoldás.

Remélem, azért megbocsátasz nekem. :)

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

Eegen. Kicsit nehezemre is esett újra felvenni a fonalat :-)

Előzmény: Delila10 (29527)
Delila10 Creative Commons License 2016.10.07 0 0 29531

Szívesen. :)

Előzmény: eMPet (29530)
eMPet Creative Commons License 2016.10.07 0 0 29530

Óh, csak simán beszoroztam eggyel a kiszedett, számokat tartalmazó szövegrészt ( =közép(A1;3;4)*1  ) és lőn a csoda: szám lett belőle.

 

Köszönöm szépen! :-)

Előzmény: Delila10 (29528)
djuice Creative Commons License 2016.10.06 0 0 29529

Sziasztok!

 

Van egy html-ből wordben megnyitott fájlom, a szöv.szerk. felismeri a táblázatot, de az a gondom, hogy átviszi fattyúsorként bizonyos cellák sorait új oldalra és nekem valahogy meg kéne szakítani az egybefüggő táblát, hogy egy előbbi sornál tehessek pl. oldaltörést (natúr így most nem engedi).

Ha értitek a problémát és tudtok rá megoldást, légyszi...

Kösz! :)

Delila10 Creative Commons License 2016.10.06 0 0 29528

Írj egy üres cellába 1-et. Másold Ctrl+c-vel. Jelöld ki a nullákat tartalmazó tartományt. Jobb klikk, Irányított beillesztés, Szorzás, OK.

Ez számokká alakítja a szövegként szereplő, de számjegyeket tartalmazó adataidat.

Előzmény: eMPet (29526)
Delila10 Creative Commons License 2016.10.06 0 0 29527

Te jó ég! Bő 6 éve írtad az első változatot!

Előzmény: Törölt nick (29525)
eMPet Creative Commons License 2016.10.06 0 0 29526

Sziasztok!

 

Egy táblázatban ügyiratszámok szerepelnek (K-0032/2016). Sikeresen kiszedtem belőle a sorszámot (0032) egy másik cellába. Az adatra számként lenne szükségem (32), tehát az elöl lévő nullá(ka)t el kellene belőle távolítani. Van 0004, 0032,  0124, 1230 is (1-től párezerig).

 

Simán "keresés és csere"-módon ugyan eltávolíthatók, de ez kiszedi az összes nullát.

 

Összegezve, makró használata nélkül egy olyan képletet keresnék, amely a szövegben fix helyről kiszedett adatrészből egy másik cellába számot csinál.

Törölt nick Creative Commons License 2016.10.06 0 0 29525

Javítottam egy korábbi kódomon, mert privát érdeklődés jött (köszönöm Delila), gondoltam megosztom.

Az eredeti a 12402 hsz-ben volt (és a kontextus is arrafelé van), az új meg itt:

 

Sub kombi2()
    Dim Rng As Range, Hit As Range
    Dim ix As Long, Lvl As Long, Cnt As Long, iter As Long
    Dim LvlAct, LvlSel
    Dim BaseSum As Double, TestSum As Double
    Dim Dest As Double, small_ix As Double

    Dest = Range("c3")
    Set Rng = Range("A3:A29")
    Cnt = Rng.Cells.Count
    ReDim LvlAct(1 To Cnt)
    ReDim LvlSel(1 To Cnt)
    
    For ix = 1 To Cnt
        LvlAct(ix) = ix
        LvlSel(ix) = 0
    Next
    
    Lvl = 1
    Do
        iter = iter + 1
        Application.StatusBar = iter
        small_ix = Application.WorksheetFunction.Small(Rng, LvlAct(Lvl))
        TestSum = BaseSum + small_ix
        If (Round(TestSum, 5) < Round(Dest, 5)) Then
            If LvlAct(Lvl) < Cnt Then
                LvlSel(Lvl) = small_ix
                BaseSum = BaseSum + LvlSel(Lvl)
                Lvl = Lvl + 1
                LvlAct(Lvl) = LvlAct(Lvl - 1) + 1
            ElseIf LvlAct(Lvl) = Cnt Then
                Lvl = Lvl - 1
                BaseSum = BaseSum - LvlSel(Lvl)
                LvlAct(Lvl) = LvlAct(Lvl) + 1
                LvlSel(Lvl) = 0
            End If
        ElseIf (Round(TestSum, 5) > Round(Dest, 5)) Then
            Lvl = Lvl - 1
            BaseSum = BaseSum - LvlSel(Lvl)
            LvlAct(Lvl) = LvlAct(Lvl) + 1
            LvlSel(Lvl) = 0
        ElseIf (Round(TestSum, 5) = Round(Dest, 5)) Then
            MsgBox "heuréka"
            'Stop
            For ix = 1 To Cnt
                If LvlSel(ix) = 0 Then Exit For
                If PaintNextFinding(Base:=Rng, FindValue:=LvlSel(ix)) = False Then
                    MsgBox "bibi van: nem találok egy számot, amit egyszer már megtaláltam..."
                    Stop
                End If
            Next
            If PaintNextFinding(Base:=Rng, FindValue:=small_ix) = False Then
                MsgBox "bibi van"
                Stop
            End If
            Application.StatusBar = False
            Exit Sub
        End If
        If Int(iter / 500) = iter Then DoEvents
    Loop
End Sub


Function PaintNextFinding(Base As Range, FindValue As Variant) As Boolean
    Dim Hit As Range, FirstAddress As String, CIndex As Long

    With Base
        Set Hit = .Find(what:=FindValue, lookat:=xlWhole, LookIn:=xlValues)
        If Not Hit Is Nothing Then
            FirstAddress = Hit.Address
            Do
                If Hit.Interior.ColorIndex = xlNone Then Exit Do
                Set Hit = .FindNext(Hit)
            Loop While (Not Hit Is Nothing) And (Hit.Address <> FirstAddress)
            If (Hit Is Nothing) Then
                PaintNextFinding = False
            ElseIf (Hit.Address = FirstAddress) And (Hit.Interior.ColorIndex <> xlNone) Then
                PaintNextFinding = False
            Else
                PaintNextFinding = True
                Do
                    CIndex = Int(Rnd() * 50) + 3
                Loop While (CIndex = xlNone) Or (CIndex = 2)
                Hit.Interior.ColorIndex = CIndex
            End If
        Else
            PaintNextFinding = False
        End If
    End With
End Function

Delila10 Creative Commons License 2016.10.05 0 0 29524

Szivi. :)

Előzmény: JozsBiker (29521)
pimre Creative Commons License 2016.10.04 0 0 29523

Egészre kerekítve használom, mert a konkrét feladatnál nincs szükségem nagyobb pontosságra.

 

Amikor a táblázatot összeállítom, akkor a százalék értékét a szazalek =  round(adat/osszeg*100,0) képlettel számítom ki, a százalékjelet meg simán mögébiggyesztem, és így írom ki táblázatosan.

 

A diagramnál pedig a következő képletet adom meg:

 

With ActiveChart.SeriesCollection(1)

    .DataLabels.NumberFormat = "0%"

End With

 

És az önállóskodás ennél történik. És nem is lenne baj ez a kis csalás, csak nem szeretném, hogy a táblázatomban és a diagramon szereplő adatok egymástól eltérjenek. Azt viszont nem tudom megjósolni előre, hogy az Excel melyik adatot fogja a megszokottól eltérő módon kerekíteni. Főleg akkor nem, amikor két azonos adatot kétféleképp kerekít.

 

Most már nagyjából megvagyok vele. Lehet, hogy a százalékos értékeket kellett volna a kész diagramról visszaolvasni, és a táblázatba tenni, vagy pedig magamnak felírni a diagramra a feliratokat, ahogy korábban a segítségeddel a pontdiagramnál sikerült egy hasonló megoldást alkalmazni.

Előzmény: Fferi50 (29522)
Fferi50 Creative Commons License 2016.10.04 0 0 29522

Szia!

 

Szerintem annyit kell "csak" tenned, hogy a számformátumot átállítod %-ra egy vagy két tizedessel.

 

Üdv.

Előzmény: pimre (29520)
JozsBiker Creative Commons License 2016.10.04 0 0 29521

Ja, ott rontottam el, hogy nem léptem át az egyik lapra a szálkereszt rajzolása előtt, csak a legvégén. Köszi!

 

Előzmény: Delila10 (29519)
pimre Creative Commons License 2016.10.04 0 0 29520

Még mindig a diagramoknál tartok. Most éppen az Excelre vagyok kiakadva. Kördiagramokat készítek, amelyeken a darabszámokból %-os értéket kérek feltüntetni. És mivel az eredményeket táblázatosan is meg akarom jeleníteni a diagram mellett, már egy órája azzal kell szórakoznom, hogy javítgatom a diagram százalékos adatait.

 

Az a mániája, hogy a kerekítések eredményeként nem lehet 99, vagy 101 a százalékok összege, hanem pontosan 100. Ezért inkább rosszul kerekít. Például két azonos darabszámnál, ahol az érték 17,57%, képes az egyiket lefelé kerekíteni 17-re, és csak a másikat írja 18%-nak. Amikor én kiszámoltam a táblázatban, akkor természetesen a szokásos kerekítési módszert alkalmaztam. Most javítgathatom át kézzel az adatokat az Excel adatpontjai mellett. Nagyon kellemetlen.

 

Nem hinném, de azért megkérdezem, hogy ugye nincs erre beállítási lehetőség?

Delila10 Creative Commons License 2016.10.04 0 0 29519

Kijelölöd a másik lapon a tartományt, kattintasz a fényképezőgép ikonra, átlépsz az egyik lapra, és rajzolsz a szálkereszttel.

Előzmény: JozsBiker (29518)
JozsBiker Creative Commons License 2016.10.04 0 0 29518

Másik lapról is behozhatod így egy tartomány képét.

 

És azt hogy is ? :-)

 

Előzmény: Delila10 (29513)
Delila10 Creative Commons License 2016.10.04 0 0 29517

A szerkesztőlécen látható hivatkozás akkor jön létre, mikor a szálkereszttel megrajzolod a négyszöget.

A másik nyíl azt mutatja, hol adj nevet a négyszögednek.

Előzmény: JozsBiker (29516)
JozsBiker Creative Commons License 2016.10.04 0 0 29516

Elagyalgok rajta, köszi szépen!

 

Előzmény: Delila10 (29513)
Delila10 Creative Commons License 2016.10.03 0 0 29514

Szívesen. :)

Előzmény: Slient (29510)
Delila10 Creative Commons License 2016.10.03 0 0 29513

Valami kimaradt.

 

Mikor létrehoztad a négyszöget, adj neki nevet. A küldött füzetben Tabla a név, a makró erre hivatkozik.

Másik lapról is behozhatod így egy tartomány képét.

Előzmény: Delila10 (29512)
Delila10 Creative Commons License 2016.10.03 0 0 29512

A Fényképezőgép ikonnal könnyen létrehozható. A Gyorselérési eszköztárra kell kitenned az ikont. A Gyorselérési jobb oldalán lévő legördülővel behozod a Testreszabást. Ott a Választható parancsoknál a Minden parancsot választod, majd a megjelenő sok parancs közül a Fényképezőgép-et a Felvétel gomb segítségével átmásolod a jobb oldalra, OK.

 

A füzetben kijelölöd a tartományt, amit látni akarsz. Klikk az ikonra, a megjelenő szálkereszttel rajzolsz egy négyszöget. Ebben azonnal látod a kijelölt adataidat.

 

A csatolt minta alapján tegyél ki egy gombot, ami indítja a füzetben lévő makrót.

Egyik kattintásra megjelenik a négyszög, másikra eltűnik.

 

http://data.hu/get/10015146/JozsBiker.xlsm

Előzmény: JozsBiker (29511)
JozsBiker Creative Commons License 2016.10.03 0 0 29511

Sziasztok !

 

Segítséget szeretnék kérni. Azt szeretném megoldani valahogy, hogy ha az excel tábla egy adott elemére ( pl. egy vonal alakzatra ) klikkentek egérrel, akkor jelenjen meg egy másik munkalap adott részlete, pl. a C5 - G10 közötti része. Ne váltson át arra a másik munkalapra, hanem csak egy kis ablakban jelenítse meg, mintha pl. egy felugró help lenne.

Ha csak ennek a funkciónak a nevét vagy néhány támpontot leírtok valószínűleg az is elegendő lesz és onnan már tovább bogarászom, de egyelőre azt sem tudom mit keressek. Köszi.

 

Slient Creative Commons License 2016.10.03 0 0 29510

Köszi, reméltem, h ilyen egyszerű megoldás lesz. :)

Előzmény: Delila10 (29509)
Delila10 Creative Commons License 2016.10.03 0 0 29509

=C2+(B3/60/24)

 

A dátumot az Excel számként kezeli, ahol az alapegység 1 nap. A B3-ban lévő perceket ezét 60-nal kell osztani, hogy óra legyen belőle, majd 24-gyel, hogy nap.

Előzmény: Slient (29508)
Slient Creative Commons License 2016.10.03 0 0 29508

.

Előzmény: Slient (29508)
Slient Creative Commons License 2016.10.03 0 0 29508

 

Sziasztok! A következő problémával állok szemben: Az A oszlopban szerepelnek a modellek nevei, a B oszlopban a gyártási időtartam és a C oszlopban a befejezés ideje. A C oszlopba szeretnék egy képletet, ami nekem automatikusan számolná a befejezés időpontját. Például a C3-as mezőbe a C2-es mezőben szereplő időpont + a B3-as mező értékének az összege kerül. Ez így nem tűnik bonyolultnak, de azért nem sikerült megcsinálnom, mert az egyik formátum az dátum, a másik pedig sima szám(legyártás ideje percekben). Minden segitséget szivesen fogadok. Köszi!

 

 

Fferi50 Creative Commons License 2016.10.02 0 0 29507

Szia!

 

Az szerintem sajnos kevés, mert csak cellaérték változásakor fut le ekkor is a függvény (sajnos a szín megváltozása nem váltja ki az újraszámolást).

 

"This example marks the user-defined function "My_Func" as volatile. The function will be recalculated when any cell in any workbook in the application window changes value."

 

Üdv.

Előzmény: Eredő Vektor (29506)
Eredő Vektor Creative Commons License 2016.10.02 0 0 29506

Kezd ezzel a kód elején: Application.Volatile

Előzmény: thomas5000 (29503)
Fferi50 Creative Commons License 2016.10.02 0 0 29505

Bocs, az előbb fordítva ültem a lóra, Neked más kell nyilván. Jól kezdtem a gondolkodást, aztán gyorsan el is "hajoltam".

 

Ha megváltoztatod az értékét az A1 cellának, akkor automatikusan változni fog az A2 cellába írt szám is - nálam legalább is így viselkedik a függvény.

A színváltozást tudtommal nem figyeli semmilyen eseménykezelő.

Ráadásul, ha feltételes formázás miatt változik a szín, akkor az Interior.Color értéke nem is változik. Az újabb (2010-től) verziókban van egy Displayformat tulajdonság, aminek az Interior.Color értéke adja meg, hogy a cella színe épp milyen.

 

Üdv.

Előzmény: thomas5000 (29503)
Fferi50 Creative Commons License 2016.10.02 0 0 29504

Szia!

 

Mitől változik az A1 cella értéke? Ha ahhoz kötöd az A2 cella színét, akkor szerintem feltételes formázást kellene használnod - pl. formázandó cellák kijelölése képlettel, képlet pedig  =A1=valami  utána kiválasztani a kitöltő színt. De lehet cella formázás érték alapján is, ahol min-max értéket is meg tudsz adni a formázásra.

A feltételes formázást pont erre az esetre találták ki.

 

Üdv.

Előzmény: thomas5000 (29503)
thomas5000 Creative Commons License 2016.10.02 0 0 29503

Sziasztok! Lenne még egy problémám.

 

Van egy makróm.

 

"Function whatsmycolor(melyikcella) As Long
whatsmycolor = [melyikcella].Interior.Color
End Function"

 

Ez annyit csinál, hogy ha pl. az A2 cellába beírom, hogy =whatsmycolor(A1), akkor kiírja, hogy az A1 cella milyen színű (számokkal).

 

Azzal lenne a problémám, hogy sajnos hiába változik meg a A1 cella színe, az A2 cella értéke változatlan marad, amíg rá nem frissítek. (belekattintok)

 

Erre szeretnék valami megoldást kérni, hogy ez automatikusan változzon.

 

A legjobb lenne, ha a szín változásra csinálná, de gondolom azt nem lehet megoldani, szóval akár érték változásra való változás is jó lenne.

 

Köszönöm. 

 

thomas5000 Creative Commons License 2016.10.01 0 0 29502

Köszönöm szépen!

 

Bocsánat a hülye kérdésekért, csak sajnos tényleg nem értek ehhez, viszont szeretem használni ezeket a segítségeket, amiket adtok.

 

Még egyszer köszönöm!

Előzmény: Fferi50 (29501)
Fferi50 Creative Commons License 2016.10.01 0 0 29501

Szia!

 

"Összeolvasztod" a két makrót: az első végéről kitörlöd az End Sub, a második elejéről a Private Sub Worksheet_Activate()  sort és már kész is van. A sorrend pont megfelel a kívánalmaidnak.

 

Üdv.

Előzmény: thomas5000 (29500)
thomas5000 Creative Commons License 2016.10.01 0 0 29500

Igen. Ezt próbáltam én is, de sajnos azt írja, hogy ambiguous name detected.

 

Valószínűleg az a baja, hogy nekem előtte már van egy ilyen makróm. Tehát így néz ki egészében.

 

Ezt valahogy át lehetne úgy írni, hogy mindkettő működjön, és először a sorba rendezést végezze el, majd a sorba rendezett adatokhoz rendelje hozzá a képet?

 

"Private Sub Worksheet_Activate()
Dim usor As Long

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

Sort.SortFields.Clear
Sort.SortFields.Add Key:=Range("D1:D" & usor), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With Sort
.SetRange Range("A1:E" & usor)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

 

 

Private Sub Worksheet_Activate()
ActiveSheet.DrawingObjects.Delete
Dim Kepneve As String, utvonal As String, sor As Long

utvonal = "d:valakivalami" '***

For sor = 2 To 23
Kepneve = Cells(sor, "A") & ".png" '*****
With ActiveSheet.Pictures.Insert(utvonal & Kepneve)
.Top = Rows(sor).Top
.Height = Rows(sor).Height
.Left = Columns(1).Left + Columns(1).Width - .Width
End With
Next
End Sub"

 

A segítséget előre is köszönöm!

Előzmény: Delila10 (29499)
Delila10 Creative Commons License 2016.10.01 0 0 29499

A makrót a lapodhoz kell rendelni: lapfülön jobb klikk, kód megjelenítése. A jobb oldalon kapott üres felületre

 

Private Sub Worksheet_Activate()
   'ide jön az eredeti, Sub és End Sub közötti rész
End Sub

Előzmény: thomas5000 (29498)
thomas5000 Creative Commons License 2016.10.01 0 0 29498

Sziasztok!

 

Sub Kepek()
ActiveSheet.DrawingObjects.Delete
Dim Kepneve As String, utvonal As String, sor As Long

utvonal = "d:valakivalami" '***

For sor = 2 To 23
Kepneve = Cells(sor, "A") & ".png" '*****
With ActiveSheet.Pictures.Insert(utvonal & Kepneve)
.Top = Rows(sor).Top
.Height = Rows(sor).Height
.Left = Columns(1).Left + Columns(1).Width - .Width
End With
Next
End Sub

 

 

Ez működik is normálisan, viszont csak akkor ha elindítom.

Az lenne a kérdésem, hogy megoldható-e, hogy ez magától lefusson, ha én a munkalapra ráklikkelek.

 

A válaszokat előre is köszönöm!

Fferi50 Creative Commons License 2016.09.30 0 0 29497

Szia!

 

Örülök, hogy végül megoldottad. A rácsvonalak "eltüntetése" nem jutott eszembe...  pedig én is szoktam alkalmazni.

 

Üdv.

Előzmény: pimre (29496)
pimre Creative Commons License 2016.09.30 0 0 29496

Köszönöm, de ez nem ment volna. Különböző munkalapokra készített diagramokat szerettem volna összehozni. Az egyes munkalapokon viszont más-más szempontok alapján (a rajtuk megjelenő más-más szövegek szélességéhez igazítva) állítottam be az oszlopok szélességét. Ez a képeket nem érintette, tehát azoknál el lehetett volna "rontani" a szélességet.

 

Aztán megtaláltam a megoldást. Az egyes nyomtatandó diagramok, és a hozzá tartozó szövegrészek tartalmát összehoztam (bemásolgattam) egy új munkalapra, és azon már sikerült megoldanom az egységes méretezést vonalzó nélkül. Sőt a végén még a rácsvonalakat is töröltem, így még szebbek lettek az elkészült képek.

 

Nem tudom, érthető-e a leírás alapján a megoldás, mindenesetre sikerült áthidalnom vele az eredeti problémát.

Előzmény: Fferi50 (29495)
Fferi50 Creative Commons License 2016.09.30 0 0 29495

Szia!

 

A diagramokat lehet egyformára méretezni, sőt az oszlopszélességet is. Próbáld meg a két munkalapot ilyen módon "szinkronizálni". Akkor nem kell a vonalzó...

 

Üdv.

Előzmény: pimre (29494)
pimre Creative Commons License 2016.09.29 0 0 29494

Egy újabb gond. Eddig fel sem tűnt, hogy az Excelben alapesetben nincs vonalzó, és nem is állítható be normál, csak a lap elrendezése nézetben. Most kellene, ugyanis hasonló kinézetű munkalapokról szeretnék WORD-be diagramokat másolni, és jó lenne, ha legalább az egy lapra kerülő képek nem csúsznának el egymáshoz képest, mint pl. itt:

 

A képek két külön lapról lettek kivágva és bemásolva. És persze az egyes oszlopok rácsvonalai sem vágnak egybe, sem a diagramok.

 

Nem tud valaki megoldást, például egy segédprogramot, amivel vonalzót tudnék helyezni a kép fölé, hogy egységesítsem a méretezést? A a lap elrendezése nézet erre a célra használhatatlannak tűnik számomra.

Előzmény: pimre (29493)
pimre Creative Commons License 2016.09.29 0 0 29493

Köszönöm. Ezt a pontdiagramnál használtam is, itt nem jutott eszembe, hogy ez ugyanaz lehet.

Előzmény: Fferi50 (29492)
Fferi50 Creative Commons License 2016.09.29 0 0 29492

Szia!

 

A Chart.Plotarea tartalmazza a kördiagram rajzát, ennek a méretét és elhelyezését meg tudod határozni a top,left width, height paraméterekkel.

 

Üdv.

Előzmény: pimre (29491)
pimre Creative Commons License 2016.09.29 0 0 29491

Bocsánat, a kérdést kicsit pontatlanul fogalmaztam meg. Amikor azt kérdeztem, hogy "Hogyan tudnám elérni, hogy a kisebb felbontású gép is valamivel kisebb ábrákat készítsen...", akkor nem magának a diagramnak (a keretben lévő résznek) a méretére gondoltam, mert azt tudom szabályozni, hanem azon belül, magának a kör alakú ábrának a méretére, valamint a távolságára a diagram címétől. Erre nem tudok egyelőre semmilyen lehetőséget, sem kézi úton, sem programból.

Előzmény: pimre (29490)
pimre Creative Commons License 2016.09.29 0 0 29490

Újabb gondom van a diagramjaimmal. Két gépen szerettem volna a diagramrajzoló programomat futtatni, hogy hamarabb kész legyek. Eddig egy 1280 x 1024 felbontású gépen készítettem a rajzokat, most egy 1280 x 800-as felbontású gépen is futtattam. (Utóbbit nagyobbra állítani nem tudom).

 

És a két gépen az Excel táblázaton pontosan ugyanarra a területre állítottam be a diagram méretezését, a belső arányok mégis mások lettek. Az elsőn, a nagyobb felbontásún olyan lett, ahogy szerettem volna, a másikon egymásba csúszott a diagram címe, és a diagram egyes feliratai. Az alábbiak szerint.

Hogyan tudnám elérni, hogy a kisebb felbontású gép is valamivel kisebb ábrákat készítsen, és az távolabb kerüljön a diagram címétől?

 

Delila10 Creative Commons License 2016.09.29 0 0 29489

Szívesen. :)

Előzmény: thomas5000 (29488)
thomas5000 Creative Commons License 2016.09.29 0 0 29488

Köszönöm szépen! 

Előzmény: Delila10 (29487)
Delila10 Creative Commons License 2016.09.29 0 0 29487

   Sort.SortFields.Add Key:=Range("D2:D" & usor), _
      SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
   With Sort
      .SetRange Range("A1:H" & usor)

 

Az "A1:H" helyett a saját oszlopaidat írd be.

Előzmény: thomas5000 (29486)
thomas5000 Creative Commons License 2016.09.29 0 0 29486

Jah, és még annyi, hogy ne csak a D oszlopot rendezze, hanem vele együtt menjen a többi oszlop is. 

 

Előzmény: thomas5000 (29485)
thomas5000 Creative Commons License 2016.09.29 0 0 29485

Köszönöm!

 

Működik. Annyi lenne még a kérdésem, hogy ezt csökkenőbe át lehetne rakni valahogy?

Előzmény: Delila10 (29484)
Delila10 Creative Commons License 2016.09.29 0 0 29484

A lapodhoz rendeld a makrót.

 

Private Sub Worksheet_Activate()
   Dim usor As Long

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

 

   Sort.SortFields.Clear
   Sort.SortFields.Add Key:=Range("D2:D" & usor), _
   SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
   With Sort
      .SetRange Range("D1:D" & usor)
      .Header = xlYes
      .MatchCase = False
      .Orientation = xlTopToBottom
      .SortMethod = xlPinYin
      .Apply
   End With
End Sub

Előzmény: thomas5000 (29483)
thomas5000 Creative Commons License 2016.09.29 0 0 29483

Sziasztok!

 

Van egy munkalapom. Azt szeretném elérni, hogyha erre a munkalapra lépek (kattintok), akkor automatikusan tegye csökkenő sorrendbe a 4. oszlop (D oszlop) alapján az adatokat. 

 

A válaszokat előre is köszönöm!

Fferi50 Creative Commons License 2016.09.27 0 0 29482

Szia!

 

"a Stop előtti utolsó sorod nélkül nem tudtam volna megoldani a feladatomat"

Nem véletlenül tettem be azt a sort. Ezt a fajta megoldást úgy gondolom nem sokan ismerik, ezért gondoltam bemutatni a működését.

Örülök, hogy végül összejött, amit szerettél volna.

 

Üdv.

 

Előzmény: pimre (29481)
pimre Creative Commons License 2016.09.27 0 0 29481

Hát azért így utólag, néhány órai próbálgatás után be kell vallanom, hogy a Stop előtti utolsó sorod nélkül nem tudtam volna megoldani a feladatomat. Még egyszer nagyon köszönöm.

Előzmény: Fferi50 (29479)
pimre Creative Commons License 2016.09.27 0 0 29480

Hálásan köszönöm. Egyik jobb, mint a másik. Ebből már meg fogom tudni oldani a feladatot.

Előzmény: Fferi50 (29479)
Fferi50 Creative Commons License 2016.09.27 0 0 29479

Szia!

 

Ez a makró kiírja az Immediate ablakba az utolsó kirajzolt adatpontokat, amellett, hogy az utolsónak kirajzolt ponthoz illeszti az adatfeliratot:

 

Sub pontok()
Dim ch As Chart, sr As Series, pt As Point, ponthely As New Collection, ptha As String, xx As Integer, pth
Set ch = ActiveSheet.ChartObjects(1).Chart
Set sr = ch.SeriesCollection(1)
sr.HasDataLabels = False
For xx = 1 To sr.Points.Count
       Set pt = sr.Points(xx)
       pt.ApplyDataLabels Type:=xlDataLabelsShowValue, ShowCategoryName:=True
       On Error Resume Next
       ptha = ponthely(pt.DataLabel.Text)
       If Err <> 0 Then
            ponthely.Add pt.DataLabel.Text & "!" & xx, Key:=pt.DataLabel.Text
       Else
            sr.Points(Split(ponthely(pt.DataLabel.Text), "!")(1)).HasDataLabel = False
            ponthely.Remove pt.DataLabel.Text
            ponthely.Add pt.DataLabel.Text & "!" & xx, Key:=pt.DataLabel.Text
       End If
       Err = 0
       On Error GoTo 0
Next
Debug.Print "Legutolsó adatpontok:" & vbLf & "Adatérték   Adatpont száma"
For Each pth In ponthely: Debug.Print Split(pth, "!")(0), Split(pth, "!")(1): Next
'Stop
End Sub

 

Üdv.

Előzmény: pimre (29464)
Eredő Vektor Creative Commons License 2016.09.27 0 0 29478

De ez így logikus is - de a fene gondolt erre. Csak egy napom ment rá :(

 

Előzmény: Eredő Vektor (29477)
Eredő Vektor Creative Commons License 2016.09.27 0 0 29477

Megvan, ne keresd.

 

http://stackoverflow.com/questions/29493854/vba-countif-external-document

 

Így nyitom meg:

wb_k = objApp_k.Workbooks.Open(myfile, , ...

 

és így kell neki a countif:

 

objApp_k.CountIf(rng, "123-45-67")

Előzmény: Fferi50 (29476)
Fferi50 Creative Commons License 2016.09.27 0 0 29476

Lehet, nem szereti az external tartományokat... Majd megnézem én is.

Előzmény: Eredő Vektor (29475)
Eredő Vektor Creative Commons License 2016.09.27 0 0 29475

és a countif nem hajlandó ennek ellenére dolgozni... (13 type mismatch)

Előzmény: Fferi50 (29471)
Eredő Vektor Creative Commons License 2016.09.27 0 0 29474

Debug.Print rng.Address(External:=True)

és azt a munkafüzetet adja, ami kell.

Előzmény: Fferi50 (29471)
Eredő Vektor Creative Commons License 2016.09.27 0 0 29473

munkalap igen, de előtte deklarált a munkafüzet is

wb_k as workbook

set wb_k = ....

wb_k.Sheet("lap") as worksheet

 

megnézem amit írsz.

Előzmény: Fferi50 (29471)
Fferi50 Creative Commons License 2016.09.27 0 0 29472

Szia!

 

Ha a pontnak megadod a feliratát, abból ki tudod olvasni az értékeket. Az alábbi makrórészlet ezt teszi:

For Each pt In sr.Points
    If Not pt.HasDataLabel Then
       pt.ApplyDataLabels Type:=xlDataLabelsShowValue, ShowCategoryName:=True
       On Error Resume Next
       Set ptha = ponthely(pt.DataLabel.Text)
       If Err <> 0 Then
            ponthely.Add pt, Key:=pt.DataLabel.Text
       Else
            pt.HasDataLabel = False
            'pt.HasDataLabel = True
            'pt.DataLabel.Text = Int(pt.Left)
       End If
       Err = 0
       'End If
       On Error GoTo 0
    End If
Next

 

Üdv.

 

Előzmény: pimre (29464)
Fferi50 Creative Commons License 2016.09.27 0 0 29471

Szia!

 

"ws_k egy háttérben nyitott munkafüzet"

Munkalapnak kellene annak lennie (szerintem az is).

Nézd meg lsz. hogy az mg.address external:=true esetén melyik munkafüzet/munkalap értékét adja vissza.

Abból kiderül, hogy melyik tartományban keresel - mert egyébként ilyen esetben mindig teljes módon kell a tartományra hivatkozni.

 

Üdv.

Előzmény: Eredő Vektor (29470)
Eredő Vektor Creative Commons License 2016.09.27 0 0 29470

Viszont most van még valami ami nem megy :(

Pedig tök egyszerűnek tűnik.

 

sorvege = ws_k.Range("A1048576").End(xlUp).Row
Set rng = ws_k.Range("T1:V" & sorvege)

MsgBox Application.WorksheetFunction.CountIf(rng, "123-45-67")

 

a ws_k egy háttérben nyitott munkafüzet publikus változóként deklarálva, a metódusokat is felhozza ws_k. a pont után...

Eredő Vektor Creative Commons License 2016.09.27 0 0 29469

Köszönöm a fáradozásodat, FFeri-ére lecseréltem ez tetszett a legjobban.

Előzmény: Delila10 (29465)
Eredő Vektor Creative Commons License 2016.09.27 0 0 29468

Csekély módosítással lecseréltem erre a sajátomat, logikailag ez a legkerekebb. Köszönöm szépen.

Előzmény: Fferi50 (29462)
Delila10 Creative Commons License 2016.09.27 0 0 29467

Kifejezetten ez az oldal jön be nehezen, és ha bejött, egy darabig nem tudom görgetni a képernyőt. :(

Előzmény: pimre (29466)
pimre Creative Commons License 2016.09.27 0 0 29466

Nálam nincs semmi gond vele.

Előzmény: Delila10 (29465)
Delila10 Creative Commons License 2016.09.27 0 0 29465

Mit szólsz ehhez?

 

Private Sub CommandButton1_Click()
   If ZaroHazszam = "" Then GoTo Hiba
   If KezdoHazszam > "" And Not IsNumeric(KezdoHazszam.Value) Then GoTo Hiba
   If KezdoHazszam = "0" Or ZaroHazszam = "0" Then GoTo Hiba
   If Not IsNumeric(ZaroHazszam.Value) Then GoTo Hiba
   If Val(KezdoHazszam) >= Val(ZaroHazszam) Then GoTo Hiba

   MsgBox "Felírás", vbInformation
   Exit Sub

Hiba:
   MsgBox "Hiányos, vagy hibás házszám", vbCritical
End Sub

 

Más: Nálatok is lelassult a fórum, vagy csak nálam?

Előzmény: Eredő Vektor (29459)
pimre Creative Commons License 2016.09.27 0 0 29464

Nagyon köszönöm. Ez már egész közel van ahhoz, amit szeretnék. Egy teszt erejéig sima sorszámot tettem a feliratba, hogy lássam, milyen sorrendben sorszámozódnak be az egyes pontok. A következőt kaptam:

 

Tehát egy adott példában a 3,3 pontba teszi az első címkét, majd az 5. oszlopban folytatja az 5,3/5,5 és 5,4 sorrendben és így tovább.

Ez nem is lenne feltétlen baj, hiszen az egyes pontok top és left értékeiből ki tudom silabizálgatni az egyes pontok koordinátáit. De azért megkérdezem, hogy azok nem olvashatók-e ki valahogy a pont adataiból? Mégiscsak egzaktabb lenne, és nem függne a diagram terület méretezésétől.

Előzmény: Fferi50 (29463)
Fferi50 Creative Commons License 2016.09.27 0 0 29463

Szia!

 

Az alábbi makró az adott helyen látható egy ponthoz hozzárendeli az általad megadott adatfeliratot. Azt használtam ki, hogy a pontok egymást fedik, tehát a top-left koordinátájuk egyezik. Már csak azt kellett megoldani, hogy az egyszer kirakott felirathoz már ne tegyen újabbat, ezért a ponthely Collection-ban gyűjtöttem a  már feliratozott pontokat, amelynek a kulcsa a top-left koordináta volt. Így minden látható ponthelyre került egy és csak is egy adatfelirat. (Az pedig nyilván mindegy, hogy melyik ponthoz került a felirat, hiszen adott helyen egyforma lenne a leírtak szerint.)

 

Sub pontok()
Dim ch As Chart, sr As Series, pt As Point, ponthely As New Collection, ptha As Point
Set ch = ActiveSheet.ChartObjects(1).Chart
Set sr = ch.SeriesCollection(1)
sr.HasDataLabels = False
For Each pt In sr.Points
    If Not pt.HasDataLabel Then
       On Error Resume Next
       Set ptha = ponthely(pt.Top & pt.Left)
       If Err <> 0 Then
            ponthely.Add pt, Key:=pt.Top & pt.Left
            pt.HasDataLabel = True
            pt.DataLabel.Text = Int(pt.Left) ' ebben a sorban kell megadnod a feliratot
            Err = 0
       End If
       On Error GoTo 0
    End If
Next
End Sub

 

Üdv.

Előzmény: pimre (29460)
Fferi50 Creative Commons License 2016.09.27 0 0 29462

Szia!

 

A relációkat mindenképpen meg kell vizsgálni, viszont az összehasonlítás eredménye maga logikai, tehát lehet változónak értékként adni:

g=not (ZaroHazszam.value=vbNullstring) and (ZaroHazszam.Value<KezdoHazszam.Value or KezdoHazszam.value = vbNullstring or ZarohazSzam.value=0 or KezdoHazszam.value=0)

 

Ez megvizsgálja, amit megadtál feltételeket és még azt is, hogy ne lehessen 0 értéket adni házszámnak.

 

Üdv.

Előzmény: Eredő Vektor (29459)
pimre Creative Commons License 2016.09.27 0 0 29461

Talán így: If (ZaroHazszam.value <> vbNullString and KezdoHazszam.value = vbNullString) or ( Val(ZaroHazszam.value) - Val(KezdoHazszam.value))<=0 then g=True

 

Előzmény: Eredő Vektor (29459)
pimre Creative Commons License 2016.09.27 0 0 29460

Sziasztok, egy pontdiagramot készítek programból. Ezen belül xlXYScatter típusút.

 

Működik is rendesen. A diagram valahogy így néz ki, benne a trendvonallal:

 

 

 

A gondom a következő. Szeretnék saját feliratokat tenni az egyes adatpontokhoz. Viszont az adatpontjaim száma 200 feletti és mivel bonitált adatokról van szó, amelyek mind a vízszintes, mind a függőleges tengelyen csak 1-5 közötti értékeket vehetnek fel, ezért egy-egy látható kék pötty helyén sok tényleges pont is lehet. Emiatt nem tudom elérni őket. Illetve, amikor makrórögzítéssel nézem, hogy mi történik az egyes pontokra ráklikkelve, akkor a következőket kapom:

 

    ActiveChart.SeriesCollection(1).Points(201).DataLabel.Select

    ActiveChart.SeriesCollection(1).Points(177).DataLabel.Select

    ActiveChart.SeriesCollection(1).Points(211).DataLabel.Select

    ActiveChart.SeriesCollection(1).Points(203).DataLabel.Select

 

stb. A számok nekem esetlegesnek tűnnek. Lehet, hogy aszerint változnak, hogy hány tényleges pont került az egyes látható helyekre.

 

Két kérdésem van:

 

1. A képen pillanatnyilag feliratként a látható pontnak a függőleges tengelyen elfoglalt helyét állítottam be. Ehelyett szeretnék pontonként egyedi adatfeliratot megadni. Azt hiszem, erre van lehetőség, csak nem tudom, hogy egy kiválasztott pont esetén ezt hogy tudom programból elérni. Azaz mi a szintaxisa az egyedi adatfelirat megadásának. (Mellesleg adatfeliratnak azt a számot szeretném megadni, ahány tényleges adat van azon a helyen. Ezt a programom kiszámolja)

2. Ha lehetséges a pontokhoz egyedi feliratot rendelni, akkor már csak az lenne a feladat, hogy lecseréljem a meglévő adatfeliratot. Viszont azt nem tudom, hogy programból hogy tudnám megtalálni, hogy hányas sorszámú ponthoz tartozik a pillanatnyi felirat.

Eredő Vektor Creative Commons License 2016.09.27 0 0 29459

Ezt most így csinálom, de azt azt hiszem, túlbonyolítom...

ha g true, akkor hibás a házszám megadás

 

If KezdoHazszam.value = vbNullString Or ZaroHazszam.value = vbNullString Then
h = Val(KezdoHazszam.value) - Val(ZaroHazszam.value)
Else
h = Val(ZaroHazszam.value) - Val(KezdoHazszam.value)
End If
g = h > 0

Előzmény: Eredő Vektor (29458)
Eredő Vektor Creative Commons License 2016.09.26 0 0 29458

kezdő és záró ház számokat kell ellenőriznem.

1-1 textboxban vannak.

A kezdőnek kisebbnek kell lennie, mint a záró.

mindegyik textbox lehet üres (vbnullstring) , de nem lehet üres a kezdő, ha van záró.

hogy lehet erre egy true/false eredményt képezni?

thomas5000 Creative Commons License 2016.09.26 0 0 29457

Köszönöm szépen!

 

Tökéletesen működik. 

Előzmény: Fferi50 (29456)
Fferi50 Creative Commons License 2016.09.26 0 0 29456

Szia!

 

A2 képlete: =BAL(A1;SZÖVEG.KERES(" v ";A1)-1)

A2 képlete: =HELYETTE(A1;A2 &" v ";"")  vagy =KÖZÉP(A1;SZÖVEG.KERES(" v ";A1)+3;HOSSZ(A1))

 

Fontos, hogy az elválasztó az " v " legyen, azaz a v előtt és után is legyen szóköz, mert ellenkező esetben nem működik a képlet (másrészt akkor nem tudsz két olyan értéket szétválasztani, amelyikben van v a szavakban valahol).

 

Üdv.

Előzmény: thomas5000 (29455)
thomas5000 Creative Commons License 2016.09.26 0 0 29455

Sziasztok!

 

Van egy cellám (A1), amiben ez szerepel:    "közel v távol"

 

Az lenne a kérdésem, hogy valahogy megoldható, hogy az A2 cellába a "közel" és A3 cellába a "távol" kerüljön. Tehát a " v " lenne a választó, amire nem is lenne szükségem. Természetesen nem csak a "közel-távol" szó van, de mindig a " v " választja el őket. 

 

A válaszokat előre is köszönöm! 

Delila10 Creative Commons License 2016.09.25 0 0 29454

Nagyon belehúztál a tömbképletekbe. Gratulálok!

Előzmény: Fferi50 (29452)
Fferi50 Creative Commons License 2016.09.25 0 0 29453

Szia!

 

Az előbb elküldött verzióból kimaradt, hogy a Te ötleted gondoltam tovább. Az első hsz elment a levegőbe, mert MS Explorer lenyelte :(

 

Üdv.

Előzmény: Delila10 (29451)
Fferi50 Creative Commons License 2016.09.25 0 0 29452

 

Szia!

 

Igazából a HOL.VAN függvényt kell "kicselezni" ahhoz, hogy különböző neveket írjon az azonos pontszámok mellé. Ez pedig egy nem túl bonyolult tömbképlettel megvalósítható:

 

A tömbképlet:

=INDEX($A$1:$A$14;HOL.VAN(NAGY(($B$1:$B$14)-SOR($A$1:$A$14)*0,0001;SOR());$B$1:$B$14-SOR($A$1:$A$14)*0,0001;0))

Ez a képlet így azt a nevet irja be hamarabb, amelyik előbb van a listában. Ha a képletben szereplő kivonást összeadásra változtatjuk, akkor pont fordítva, a leghátsótól visszafelé kerülnek a nevek a D oszlopba. 

A C oszlopban a képlet a normál NAGY függvény, mivel ott nem számít melyik számot írja be az egyformák közül.

 

Üdv.

Előzmény: Delila10 (29451)
Delila10 Creative Commons License 2016.09.25 0 0 29451

Ki lehet cselezni a NAGY függvényt.

 

 

A C1 képlete: =B1+SOR()*0,00001, a D1-é pedig 

=INDEX($B$1:$C$12;HOL.VAN(NAGY($C$1:$C$12;SOR());$C$1:$C$12;0);1)

 

Előzmény: Kérdezek111 (29450)
Kérdezek111 Creative Commons License 2016.09.25 0 0 29450

Nagyon szépen köszönöm, a függvényes megoldás működik, csak arra kell figyelni hogy ne legyen egyenlő pontszám, ami szerintem nem fog előfordulni.

 

Köszönöm még egyszer, remekül működik!

Előzmény: Fferi50 (29444)
Anne Duffield Creative Commons License 2016.09.25 0 0 29449

Kösz, majd ezt is megnézem.

De emlékeim szerint azon a gépen más (üres) EXCEL táblán sem tudok háttérszínt megadni.

:-((

Egy hét múlva jelentkezem, akkor leszek annál a gépnél.

Előzmény: Fferi50 (29447)
Eredő Vektor Creative Commons License 2016.09.25 0 0 29448

*.xlam-ben nem történik meg az open esemény. 

COM (*.dll) addon kellene excellel együtt induláshoz, de nem tudom hogy kell.

Viszont egy trükkel meg lehet kerülni:

 

Class modulban kell egy saját eseményt létrehozni, ami figyeli ha új munkafüzet nytódik meg.

 

Private WithEvents App As Application

Private Sub App_NewWorkbook(ByVal Wb As Workbook)
If AddIns("*.Xlam").Installed Then
With Application.CommandBars("Formatting").Controls.Add
.Caption = "Név"
.Style = msoButtonCaption
.OnAction = "ThisWorkBook.Module3.Makró"
End With
End If
'MsgBox "New Workbook: " & Wb.Name
End Sub

Private Sub Class_Initialize()
Set App = Application
End Sub

 

ThisWorkBook-ra:

 

Private XLApp As CExcelEvents

Private Sub Workbook_Open()
Set XLApp = New CExcelEvents
End Sub

 

 

ThisWorkBook-ra:

 

Sub Workbook_AddinInstall()
With Application.CommandBars("Formatting").Controls.Add
.Caption = "Név" 'The button caption
.Style = msoButtonCaption
.OnAction = "ThisWorkBook.Module3.Makró"
End With
End Sub

Sub Workbook_AddinUninstall()
On Error Resume Next
Application.CommandBars("Formatting").Controls("Név").Delete
On Error GoTo 0
End Sub

 

Még kell létezés vizsgálat, mert ha van, akkor is létrehozza.

Előzmény: Fferi50 (29445)
Fferi50 Creative Commons License 2016.09.25 0 0 29447

Szia!

 

Nem lehet, hogy feltételes formázás van a cellá(k)ra beállítva és pont érvényes egy feltétel, ami miatt hiába állítod át a háttérszínt, mert a feltételes formázás felülírja?

 

Üdv.

Előzmény: Anne Duffield (29446)
Anne Duffield Creative Commons License 2016.09.25 0 0 29446

Formázásnál nem tudunk háttérszínt beállítani. Minden más funkció működik, csak ez nem.

De legközelebb kipróbálom: minden (betűk színe, elválasztó rácsok színe) színt törlök és úgy próbálok háttérszínt beállítani...

Előzmény: Eredő Vektor (29442)
Fferi50 Creative Commons License 2016.09.24 0 0 29445

Szia!

 

A Thisworkbook kódlap eseménykezelőjébe kellene szerintem betenned:

Private Sub Workbook_Open()
Workbook_AddinInstall
End Sub

valamint

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Workbook_AddinUninstall
End Sub

 

A meghívandó két makrót is beleteheted ebbe a kódlapba.

 

Az OnAction szövegbe pedig elég a sima név, ha standard modulban van a makró, amit indítani szeretnél.

 

Ezt elmented a sablonnal - szerintem utána kellene működnie minden fájlnál, amit a sablonról nyitsz.

 

Üdv.

Előzmény: Eredő Vektor (29443)
Fferi50 Creative Commons License 2016.09.24 0 1 29444

Szia!

 

Van a NAGY függvény, amellyel megadhatod, hogy egy tartomány hányadik legnagyobb elemét listázza. Ezt egy oszlopba beírod az 1-től 10-ig paraméterrel.

Ha mondjuk ezt az F oszlopba írod F1 cella képlete: =NAGY($B$1:$B$100;Sor()) a legmagasabb pont, ezt végighúzod az oszlopon a 10. sorig, akkor megkapod az első 10 helyezett pontszámát.

Az E oszlopba pedig INDEX és HOL.VAN függvény kombinációjával megkapod a nevet hozzá:

E1 cella képlete =INDEX($A$1:$A$100;HOL.VAN(F1;$B$1:$B$100;0))

Ezt is végighúzod az E oszlop első 10 celláján.

Figyelem: Ez akkor működik megfelelően, ha nincsenek azonos pontszámok, azonos pontszámok esetén mindig csak az első nevet fogja megtalálni.

Másik lehetőség:

Feltételes formázás a pontszámot tartalmazó oszlopon - legfelső/legalsó értékek - az első 10 akkor beszínezi a 10 legnagyobb értékű cellát a kívánt színűre az oszlopban. Csinálhatod azt is, hogy az első 1-re, az első 2-re, az első 3-ra stb. állítassz be színezést, bejelölöd, hogy leállítás, ha igaz, majd a sorrendet beállítod, hogy ebben a sorrendben 1-2-3 stb. legyenek érvényesek.

Ebben az esetben mindig látod a színezésből, melyik hanyadik helyen van.

 

Üdv.                                                  

Előzmény: Kérdezek111 (29440)
Eredő Vektor Creative Commons License 2016.09.24 0 0 29443

Sziasztok,

Van ez a kódsor, ami egy addon (xlam)-ben található makróra készít a menüszalagon indító ikont:

 

Sub Workbook_AddinInstall()
With Application.CommandBars("Formatting").Controls.Add
.Caption = "Ingatlan Nyilvántartás" 'The button caption
.Style = msoButtonCaption
.OnAction = "ThisWorkBook.Module3.IngatlanNyilvántartás" 'The Macro name you want to trigger
End With
End Sub

 

Private Sub Workbook_AddinUninstall()
On Error Resume Next
Application.CommandBars("Formatting").Controls("Ingatlan Nyilvántartás").Delete
On Error GoTo 0
End Sub

 

Hogy lehet elérni azt vajon, újabb excel megnyitásával újra és újra megjelenjen?

Eredő Vektor Creative Commons License 2016.09.24 0 0 29442

bővebben mi az, hogy nem működik?

régebbi excel verziókban pl. korlátozott a használható színek száma egy munkafüzeten belül.

Előzmény: Anne Duffield (29439)
_Nyuszi Creative Commons License 2016.09.24 0 1 29441

Vagy makrót írsz rá, vagy megelégszel annyival, hogy a pontok beírása után mindig "emelkedő" sorrendet állítasz be a táblázaton (rendezés A-Z vagy AutoSzűrő).

Előzmény: Kérdezek111 (29440)
Kérdezek111 Creative Commons License 2016.09.24 0 0 29440

Sziasztok! Egy bizonyos táblázatba kéne az alábbi dolgot megoldanom:

 

-A oszlopba nevek

-B oszlopba pontok, egymás mellett a névvel. Pl.

  A       B

Jakab 150

Géza   90

Feri     29

.

.

 

Kéne nekem olyan függvény, ami listázná nekem mondjuk az első 10 legnagyobb, legtöbb pontot, és a hozzá tartozó nevet. Módosulni fog napokon át a pontszám, így mindig tudni szeretném az éppen aktuális sorrendet, névvel együtt.

 

Tudnátok segíteni? Próbáltam már fkeres meg ilyesmi függvénnyel, de ehhez az excel tudásom kevés.

Köszönöm!

Anne Duffield Creative Commons License 2016.09.24 0 0 29439

Sziasztok!

 

Régi gép, régi windows ('97 Sp2), régi excel (2002).

Nem működnek a kitöltőszínek (háttérszínek) Lehet, hogy valamilyen beállítást sikerült elbaltázni, vagy máshol kéne keresni a hibát?

 

Köszi!

KelemenGy Creative Commons License 2016.09.22 0 0 29438

Sziasztok!

 

Sajna nem én voltam, akkor legalább tudnám, hogy mi történt :)

Aposztróf, igen, ezt a szót kerestem, csak sehogy nem jutott eszembe, sorry :)

 

Szóval ez a munkalap beszúrás gyanús, valószínű, hogy ez történhetett. Köszönöm szépen az infókat.

Előzmény: Fferi50 (29437)
Fferi50 Creative Commons License 2016.09.22 0 0 29437

Szia!

 

Közös használatú munkafüzetben más is "ga(rá)zdálkodhatott" a képleteket illetően. Az eredeti érték pedig azért maradhatott meg, mert az automatikus újraszámolás ki lett kapcsolva és még nem mentették a munkafüzetet.

Az a macskaköröm pedig aposztróf és azért nincs, mert az csak akkor kell a névhez, ha különleges karakterek vannak benne vagy nem egy szóból áll - ezt az Excel képes automatikusan felismerni (az egy szavas névhez hiába teszed oda az aposztrófot, eltünteti).

Csatlakozom Eredő Vektorhoz, magától nem képes egy képletet másik munkalapra hivatkoztatni az Excel. (Sor/oszlop/cella beszúrás esetén automatikusan módosul a hivatkozás címe, de munkalaphivatkozást csak akkor módosít, ha átírtad a munkalap nevét.)

 

Üdv.

 

Előzmény: KelemenGy (29435)
Eredő Vektor Creative Commons License 2016.09.22 0 0 29436

nem neveztél át, töröltél / szúrtál be munkalapot?

Csak úgy magától nem történik ilyen te csinálhattál valamit...

Előzmény: KelemenGy (29435)
KelemenGy Creative Commons License 2016.09.22 0 0 29435

Sziasztok!

 

Kérnék egy kis helpet, ha nem gond. Elfogyott az ötletem egy hibát illetően. A javítás egyszerű volt, meg is oldottam már, de nem tudom, hogy a jelenséget mi okozhatta.

 

Adott egy közös használatú, viszonylag nagy méretű munkafüzet, benne jópár olyan függvény, amik szomszédos munkalapokról dolgoznak. Az egyik, ilyen függvényeket tartalmazó tömb képletei másztak el, elég érdekesen és nem jövök rá, hogy mi okozhatta.

 

Ez az alapképlet az eltérés nevü munkalapon:

='részletes adatok'!CN3

Van még belőle három másik oszlopban más cellahivatkozással és ez ismétlődik többszáz sorban. Ezek a képletek csúsztak el, úgy, hogy az összes ilyesmi lett:

=Szerződéstípus!CN3

 

Amit látok: elmaradt a laphivatkozáshoz tartozó macskaköröm, a szöveg az eggyel jobbra lévő munkalap neve, azonban annak a lapnak a hivatkozott területe üres. Ezzel együtt érdekes módon az eredetei, még jó képletek által behúzott adatsor ottmaradt az eltérés lapon, függetlenül attól, hogy az egész tömbben cserélődött a laphivatkozás a rossz verzióra.

 

Van valakinek ötlete, hogy mi tehette ezt? A táblát sajna nem oszthatom meg, még adatok nélkül sem.

Eredő Vektor Creative Commons License 2016.09.20 0 0 29434

Szia,

Köszönöm a választ,

Igen az, UserInterfacOnly ... Emlékeztem hogy van valami ami a  makróban használható a védelem megkerülésére. Akkor ez az.

Viszont a közös használat követelmény sajnos. Többen használják a formot egy időben. A formon lévő controlok beleírnak a közös használatú munkafüzetbe. (Kettőbe is).

 

Tudtam, hogy gond lesz ezzel a közös használattal. Csak a program ír bele, de most úgy van beállítva - hogy amíg a form nyitva, addig a fájl is nyitva.

Esetleg megpróbálhatom a közös használat helyett a nyitottság idejét csökkenteni, ez lehetséges - de így is előfordulhat hogy vkinek visszabeszél, hogy már nyitva van az adott file.

 

Előzmény: Fferi50 (29433)
Fferi50 Creative Commons License 2016.09.20 0 0 29433

Szia!

 

Szerintem a védelem nem a felfedésre vonatkozik...

Viszont az elrejtett ablak nem látszik a nézet - ablakváltás menüben, tehát csak olyan valaki tudja felfedni, aki legalább olyan képzett, mint te.

Egyébként a makrókkal a védelmet - legyen az munkalap vagy munkafüzet védelem - bármikor le tudod venni egy vagy több művelet erejéig, majd utána visszazárni - viszont ez közös használatú munkafüzet esetén nem igaz sajna.

A munkafüzet védelem viszont szerintem lehetővé teszi, hogy munkalapba lehessen írni, csak a munkalapok sorrendjén nem lehet változtatni ha  a struktúrát bejelölöd (egyébként igen).

A védett munkalapra makróval írhatsz adatokat, ha a védelmet a UserInterfacOnly kapcsoló True értékével kapcsolod be - ez viszont csak addig érvényes, amíg egy fájlt be nem zársz, ha újranyitod, akkor ismét be kell kapcsolni ezt a kapcsolót is sajnos, ezért közös használatú munkafüzetben ez sem megy :(

 

Miért kell közös használatú munkafüzet, ha csak a Te beviteli formjaidon keresztül érhetik el? Nem lenne elég, ha csak a Te programod tudná megnyitni, amikor szükséges. (Igen, tudom, a megnyitás időigényes, viszont, ha csak Te férsz hozzá a programjaiddal, akkor nem kell felesleges védelmeket beleiktatni és lehet közös használatú is - a Te programjaid számára.)

 

Az előző felvetések nyilván abból adódnak, hogy nem ismerem az általad megoldandó feladatot, így csak "hangosan" gondolkodom. Ha több segítségre lenne szükséged, térjünk át privire szerintem.

 

Üdv.

Előzmény: Eredő Vektor (29432)
Eredő Vektor Creative Commons License 2016.09.20 0 0 29432

Szia,

Ha így nyitok meg egy workbook-ot és elrejtem, akkor:

Nem akarom hogy fel tudják fedni. Ez jelszóval levédhető (munkafüzet védelme / ablakok).

De ez után hogy írok / olvasok makróval benne?

Szerintem sehogy :(

 

A workbook közös használatra megosztott

Előzmény: Fferi50 (29429)
Eredő Vektor Creative Commons License 2016.09.19 0 0 29431

Viszont lehet, hogy meg kellene szüntetnem, mert ad-hoc szerűen 429-es hibával gondot okoz. Utána olvasva pedig a CreateObject egy bugja okozza...:

https://support.microsoft.com/hu-hu/kb/828550

Előzmény: Eredő Vektor (29430)
Eredő Vektor Creative Commons License 2016.09.19 0 0 29430

Fogalmam sincs, hogy van e rá nyomós okom...

Írok / olvasok bele / belőle. Aszerint, hogy olvasásra, vagy írásra nyitják - még szabályozok 1-2 dolgot benne.

A háttérben megnyitott munkafüzetek közös használatúak - többen is írhatják. Írásra / olvasásra jelszóval védettek.

Előzmény: Fferi50 (29429)
Fferi50 Creative Commons License 2016.09.19 0 0 29429

Szia!

 

Szerintem egyszer sem kell új Excel Applikációt létrehozni.

Elég ha megnyitod a kívánt munkafüzetet és a Visible tulajdonságát False -ra állíítod. 

Kivéve persze, ha van rá valamilyen nyomós okod, hogy külön applikációban kezeld.

Set wb2=Workbooks.Open(név)

wb2.Wndows(1).Visible=False

 

Üdv.

Előzmény: Eredő Vektor (29428)
Eredő Vektor Creative Commons License 2016.09.19 0 0 29428

Ha két munkafüzetet szeretnék megnyitni a háttérben akkor külön-külön kell deklarálni ezt?:

Public objApp_a As Excel.Application

Public objApp_b As Excel.Application

Én azt gondolom, hogy elég egy is:

pl.:

Public objApp As Excel.Application

 

Hogy melyik munkafüzet, azt nyilván külön. De gondolom a fentiből elég egy is.

Eredő Vektor Creative Commons License 2016.09.19 0 0 29427

 

Hasonlóan csináltam én is, köszönöm.

Nálam ... If Err.Number = 91 Then ...

 

Előzmény: pimre (29424)
Fferi50 Creative Commons License 2016.09.19 0 0 29426

Szia!

 

A megrendelés számokat kigyűjtöd egy oszlopba (pl. átmásolod a megrendelés számot egy új oszlopba, majd Adatok - ismétlődések eltávolítása). Adatok A-C oszlop, Kigyűjtés:F oszlop, képlet G oszlop

Ezután a mellette levő cellába a képlet: =SzumhaTöbb( C:C;A:A; F2;B:B;"T")-Szumhatöbb(C:C;A:A;F2;B:B;"K")

 vagy Szum(A:A;F2;C:C)-Szumhatöbb(C:C;A:A;F2;B:B;"K")

Ezt lehúzod az oszlopon, majd a D oszlopba FKeres függvénnyel megkeresed az értéket: =Fkeres(A2;F:G;2;0)

 

Üdv.

Előzmény: Benorca (29425)
Benorca Creative Commons License 2016.09.19 0 0 29425

Sziasztok,

 

az volna a kérdésem, hogy vajon hogyan lehet képlettel kiszámolni ezt az egyenleget.

Van egy több tízezer sorból álló táblázatom, ahol megrendelésszámonként kellene megnéznem hogy T összeg - K összegnek mennyi az egyenlege.

Egy megrendelésszámhoz van hogy 20 sor is tartozik, de van hogy csak 1. 

 

 

 

Megrendelésszám      T/K      Összeg        Egyenleg

2045426                    T        26000                -1

2045426                    K        26001

2042732                    T      150000       150000

2043456                    T        92000           5998

2043456                    T          6000

2043456                    K        92002

 

 

 

Remélem érthetően tettem fel a kérdést.

 

Előre is köszönöm a válaszokat! :)

 

 

 

pimre Creative Commons License 2016.09.19 0 0 29424

Erről a megoldásról mi a véleményed. A 2. pont választása alapján feltételezem, hogy programból készülsz megnyitni a fájlt.

 

Option Explicit

Sub teszt()

Dim munkafuzetnev As String

munkafuzetnev = "Teszt.xls"

If munkafuzetnyitva(munkafuzetnev) Then

   MsgBox "Workbook " & munkafuzetnev & " nyitva van"

Else

   MsgBox "Workbook " & munkafuzetnev & " nincs nyitva"

End If

End Sub

 

Function munkafuzetnyitva(munkafuzetnev As String) As Boolean

munkafuzetnyitva = False

On Error Resume Next

Workbooks(munkafuzetnev).Activate ' Ha nincs nyitva, akkor hibát kapunk: err.code 9 (Subscript out of range)

If Err.Number = 0 Then munkafuzetnyitva = True

On Error GoTo 0

End Function

 

Ezt néhány éve írtam, aztán később még azzal is finomítottam, hogy ha a munkafüzet nyitva van, akkor megvizsgálom a saved tulajdonságát. Ha ez True, azaz a fájl nyitva van, de nem módosult, akkor a biztonság kedvéért egyszerűen lezárom, és újra megnyitom, ha viszont módosult, akkor figyelmeztetem a felhasználót, hogy mentse, vagy zárja le mentés nélkül (Én legalábbis a lezárás felelősségét nem vállalnám a felhasználó helyett), és kilépek a programból.

Előzmény: Eredő Vektor (29423)
Eredő Vektor Creative Commons License 2016.09.18 0 0 29423

Szia,

Köszönöm. 

Túrtam a netet, 2-3 jónak tűnő megoldás vallott kudarcot.

Végül a 2. pontodat használtam. (Ha írni akarok bele és nincs nyitva (Run time error 91) , akkor először megnyitom

Előzmény: Fferi50 (29422)
Fferi50 Creative Commons License 2016.09.17 0 0 29422

Szia!

 

1.Ha a programod nyitotta meg, akkor megnézed, hogy a Workbooks gyűjteményed mely fájlokat tartalmazza. Ha nyitva van, akkor benne lesz a gyűjteménybe - neve alapján azonosíthatod.

2.Hivatkozol a "bezárt fájl" egy adatára, pl. egy változónak onnan próbálsz értéket adni, ha nem lesz hiba, akkor nyitva van még.

3. Ha nem a programod nyitotta meg akkor próbáld megnyitni kizárólagos használatra, ha nem megy (a readonly tulajdonsága true), akkor nyitva van még máshol  - viszont sanszos, hogy nem fogsz tudni bele írni.

 

Üdv.

 

Előzmény: Eredő Vektor (29421)
Eredő Vektor Creative Commons License 2016.09.17 0 0 29421

Szeretnék ismét segítséget kérni Tőletek,

Mi a módja annak, ha szeretném elkerülni, hogy egy háttérben megnyitott excelből biztosan csak egy legyen nyitva.

Nyitás után be is zárom, de sajnos előfordul, hogy ott marad. ( Pl. egy hiba miatt nem jut el a prg a bezárásig) Tehát ha pl egy már nyitva van, akkor ne nyisson rá még egyet ugyanabból.

Hogy szoktak ilyet / vagy hasonlót csinálni?

 

pimre Creative Commons License 2016.09.17 0 0 29420

Előre is köszönöm. Képen túl nagy lenne, ezért privátban küldtem két minta diagramot a hozzá tartozó adatokkal. Hátha abból meg lehet állapítani valamit.

Előzmény: Fferi50 (29419)
Fferi50 Creative Commons License 2016.09.17 0 0 29419

Szia!

 

Elvileg jó, amit csinálsz, lehet, hogy az adatokban van a bibi.

Mutatnád legalább képen, hogy mit művel? Mi az X értékek mértékegysége és milyen nagy a köz, amit kihagysz? Mert a trendszámításnál a közökhöz tartozó tételeket is kalkulálja ám a rendszer interpolációval.

Ma csak késő este tudok majd ránézni.

 

Üdv.

Előzmény: pimre (29418)
pimre Creative Commons License 2016.09.17 0 0 29418

Sziasztok, nem boldogulok egy kétdimenziós lineáris összefüggést ábrázoló diagram programból történő megrajzolásával. Pontosabban szépen elkészül, ha nincs benne olyan adatpár, amit valamiért ki kell hagyni belőle. Mondjuk mert az egyik adatpár hiányos. Régen tökéletesen működött a következő technikák alkalmazásával:

 

ActiveSheet.Shapes.AddChart.Select

ActiveChart.ChartType = xlXYScatter ' pont diagram

With ActiveChart.SeriesCollection.NewSeries ' itt adom meg a tartományt a 113. (R113) sor adatait kihagyva

    .XValues = ('munkalap'!R6C2:R112C2,'munkalap'!R114C2:R230C2) 

   .values =     ('munkalap'!R6C3:R112C3,'munkalap'!R114C3:R230C3)

     .Name = ”munkalap” ' Ezt nem tudom, hogy itt miért kellett még egyszer megadni

End With

 

ActiveChart.SetSourceData Source:=ws.Range(feldws.Cells(kezdosor, xoszlop), ws.Cells(utolsosor, yoszlop))

(ahol ws a „munkalap”-nak megfelelő worksheet) Ebben a sorban már azt hiszem, nem kell érvényesíteni a kihagyást, csak nem értem, miért kell újból megadni a korábbitól eltérő szintaxissal.

 

Majd később a trendvonalat így rajzolom meg:

 

' trendvonal megrajzolása

ActiveChart.SeriesCollection(1).Trendlines.Add Type:=xlLinear, Forward:=0, _

    Backward:=0, DisplayEquation:=0, DisplayRSquared:=0, Name:="Lineáris (Sorozatok1)"

 

' egyenlet és R2 berajzolása (ezt lehetett volna az előző sorban is)

ActiveChart.SeriesCollection(1).Trendlines(1).Select

Selection.DisplayEquation = True

Selection.DisplayRSquared = True

 

És a trendvonal megrajzolásakor, az egyenlet és az R2 beírásakor vagy nem veszi figyelembe a kihagyást, vagy valami egész más hiba történik, de a megrajzolt trendvonalnak, és az egyenletnek, illetve az R2 értéknek semmi köze a valóságoshoz. (Az egyenletet és az R2-et egyébként az adatok páronkénti feldolgozásával kiszámítom, és az így kapott eredmény sokszorosan kipróbált, megbízható)

 

El nem tudom képzelni, hogy miért működött a fenti technika néhány évvel ezelőtt, és miért nem működik most. És sajnos a diagramkészítést generálisan nem látom át. Kénytelen vagyok makrórögzítéssel kiokoskodni a készítés menetét. De az adatkihagyás érvényesítésének módjára még nem igazán jöttem rá. AZ is jó lenne, ha valaki ajánlana megfelelő szakirodalmat a témához.

kelan Creative Commons License 2016.09.16 0 0 29417

Megoldódott, a [p] már úgy marad újbóli megnyitáskor is.

Előzmény: kelan (29415)
NeomatiK Creative Commons License 2016.09.16 0 0 29416

Váááó, és tényleg! Köszönöm szépen!

Előzmény: Eredő Vektor (29413)
kelan Creative Commons License 2016.09.16 0 0 29415

Javítom magamat, a hh nem óra óra, hanem hónap hónap jelző esetemben. (Írtam még egy h-t és "jan" lett... )

Előzmény: kelan (29414)
kelan Creative Commons License 2016.09.16 0 0 29414

Sziasztok!

 

Tudnátok abban segíteni, hogy miért történik az, hogy egy beállított egyéni cella formázás pp  (perc perc)-ről a fájl megnyitása után hh (óra óra)-ra formázásra vált át? Excel 2013, magyar nyelvű. Ha pl. éééé formátumot állítok be, akkor a bezárás és az újbóli megnyitás után megmarad a beállított éééé formátum, csak a fenti esetben vált át a perc formátum órára (és nem óó, hanem hh szerepel ilyenkor a cellaformázás beállításnál) Köszi bármilyen ötletet!

Eredő Vektor Creative Commons License 2016.09.16 0 0 29413

állítsd be az oldalbeállításnál 1 oldal széles és 1 oldal magas -ra

Előzmény: NeomatiK (29412)
NeomatiK Creative Commons License 2016.09.16 0 0 29412

Sziasztok!

 

Excelben a munkalapon vannak ábrák meg szövegek. Amik nem férnek ki egy A4-es oldalra. Hogyan tudom kicsinyíteni az egészet (tehát az ábrák ugyanolyan arányban kisebbedjenek, mint a szöveg) az összes minden egyenkénti átméretezése nélkül, hogy kiférjen egy A4-es oldalra?

 

Próbáltam olyan beállítást, hogy a nyomtatáskor a lapmérethez kicsinyítsen, de nem találtam ilyen opciót sajnos.

Delila10 Creative Commons License 2016.09.15 0 0 29411

Az lehet a hiba, hogy az alsó sort 1000-től felfelé keresed, de pár lap adatainak a bemásolása után az Events lapon már meghaladják a bemásolt sorok ezt a határt.

 

Sub teszt()
   Dim lastRow As Long, i As Long
   Worksheets.Add.Name = "Events"

   For i = 2 To Sheets.Count
      If Sheets(i).Name <> "Events" Then
         lastRow = Sheets("Events").Range("B" & Rows.Count).End(xlUp).Row + 1
         Sheets(i).Range("A52").CurrentRegion.Copy Sheets("Events").Range("B" & lastRow)
      End If
   Next i
End Sub

Előzmény: wawabagus (29409)
pimre Creative Commons License 2016.09.14 0 0 29410

Azért lehetnél kicsit bőbeszédűbb annál, hogy nem működik. Mondjuk elmondhatnád, hogy mi a hiba. Hogy a program hibaüzenettel áll le, vagy lefut, csak éppen rossz helyre teszi az adatokat, vagy kihagy egyeseket stb.

 

Egyébként javasolnám, hogy csinálj egy tesztfájlt. mindössze 2-3 munkalappal, rajtuk csak mondjuk 3-3 sorral, nem az 52-262, hanem a 10-12 sorokban lévő adatokkal. Aztán azon futtasd le, mert az esetleges hibát könnyebb megtalálni, ha tesztüzemben - akár soronként futtatva, és ellenőrizve - futtatod, mintsem több tucat munkalapon egyenként több száz sorral.

 

 

Előzmény: wawabagus (29409)
wawabagus Creative Commons License 2016.09.14 0 0 29409

Igen, igen ebben teljesen igazad van és amúgy ezt észre is vettem, megnéztem már javtva is, de úgy se ment...

de holnap tovább folytatom a kűzdelmet :-D

nagyon köszi!

Előzmény: pimre (29407)
wawabagus Creative Commons License 2016.09.14 0 0 29408

Köszi Delila10 :-)!


Bár mekkmesternél zárójellel is működik :-D :-D :-D...tudom lehetne elegánsabban is, de tudod nekem google a jóbarátom, aztán ott úgy volt valahol :-D

Előzmény: Delila10 (29406)
pimre Creative Commons License 2016.09.14 0 0 29407

Tekintve, hogy az Events munkalap B oszlopától kezdődően másolsz, a lastrow meghatározásánál is a B oszlopot kellene nézned, mert az üres A oszlopban mindig a 2. sortól másolsz.

Tehát 

lastrow = Sheets("Events").Range("B10000").End(xlUp).Row + 1, vagy még szabályosabban: 

lastrow = Sheets("Events").Range("B" & Rows.Count).End(xlUp).Row + 1

 

Mellesleg a biztonság kedvéért betennék még egy feltételt a ciklusba, mégpedig, hogy 

If Sheets(i).Name <> "Events" Then

   sheets(i)...copy

endif

 

Ugyanis az Events munkalapod 52. sorában a B-D oszlop hamar feltöltődik, és el kellene kerülnöd, hogy saját magának megfelelő sorok adatait is bemásolja újra.

Előzmény: wawabagus (29399)
Delila10 Creative Commons License 2016.09.14 0 0 29406

Worksheets.Add.Name = "Events"

 

Nem kellenek a zárójelek.

Előzmény: wawabagus (29399)
wawabagus Creative Commons License 2016.09.14 0 0 29405

Igen az tuti eltolja de az elvileg nem gond, mert a "minta" kódnál is beszúrok és működik...

Előzmény: Eredő Vektor (29404)
Eredő Vektor Creative Commons License 2016.09.14 0 0 29404

Lehet h hülyeség de pl. a Worksheets.Add().Name eltolhatja azokat munkalap számokat.

Előzmény: wawabagus (29402)
Eredő Vektor Creative Commons License 2016.09.14 0 0 29403

Kérdezd le a munkalapok sorszámait debuggal. Én legalábbis ezt nézném meg elsőre.

Előzmény: wawabagus (29402)
wawabagus Creative Commons License 2016.09.14 0 0 29402

De mért :-(?

Munkalapra elvileg lehet név szerint hivatkozni, de van neki egy száma is...a háttérben...

tök fura, mert ez a fajta ciklus tök jól működik más statisztikánál :-(

 

Ez a példa, ami alapján próbálnám a másik részt összerakni és itt remekül működik...

 

Worksheets.Add().Name = "Summary"
Cells(1, 2) = "User Number"
Cells(1, 3) = "Session Number"
Cells(1, 4) = "Pageviews"
Cells(1, 5) = "Page / Session"
Cells(1, 6) = "Avg.Time"
Cells(1, 7) = "BounceRate"
For i = 2 To Sheets.Count
Cells(i, 1) = Sheets(i).Name
Cells(i, 2) = Sheets(i).Cells(8, 4).Value
Cells(i, 3) = Sheets(i).Cells(7, 4).Value
Cells(i, 4) = Sheets(i).Cells(9, 4).Value
Cells(i, 5) = Sheets(i).Cells(10, 2).Value
Cells(i, 6) = Sheets(i).Cells(11, 2).Value
Cells(i, 7) = Sheets(i).Cells(12, 2).Value
Next i

Előzmény: Eredő Vektor (29401)
Eredő Vektor Creative Commons License 2016.09.14 0 0 29401

Hacsak nem 2,3,4,5,6 stb... a munkalapok neve...

Előzmény: wawabagus (29399)
Eredő Vektor Creative Commons License 2016.09.14 0 0 29400

szerintem ezzel lesz a gond:

Sheets(i)

Előzmény: wawabagus (29399)
wawabagus Creative Commons License 2016.09.14 0 0 29399

Sziasztok!

Lenne egy gondom.

Van egy sok munkalapból álló munkafüzetem és szeretnék létrehozni egy summary munkafüzetet.

A makró nagy része kész és szuperül működik, de van egy trükkösebb rész.

 

Minden munkalapon vannak infók, amik mindig az A52 cellától kezdődnek, de változó hány sor van lefelé, amit kopizni kéne.

 

Összemekkmesterkedtem ez ilyet:

 

Sub teszt()
Dim lastRow As Long
Worksheets.Add().Name = "Events"

For i = 2 To Sheets.Count

 

lastRow = Sheets("Events").Range("A10000").End(xlUp).Row + 1 

Sheets(i).Range("A52:D262").copy Destination:=Sheets("Events").Range("B" & lastRow)

Next i

End Sub

 

Nem értem mért nem működik :-(?

Van tippetek?...tehát össze kéne gyűjtenie mint a 100 munkalapról az adatokat egymás alá az adatokat, amik mindig A52-nél kezdődnek, csak nem tudni sose hány sor...ez mindig változik.

Nagyon köszi előre is!!!

 

Eredő Vektor Creative Commons License 2016.09.14 0 0 29398

egyik tény, másik archív.

 

A formból közben készült egy bővítmény, van hozzá egy munkalap is az xlam-ben, viszont nem tudom szerkeszteni az xlam munkalapját közvetlenül - csak ha xlsm-ben megnyitom és újra mentem xlam-ben.

 

Hogy tudom csak a formot megnyitni a bővítményből, tehát a munkalapot ne lehessen látni.

 

Előzmény: Fferi50 (29397)
Fferi50 Creative Commons License 2016.09.13 0 0 29397

Szia!

 

Miért kell 2 munkafüzet amibe a form alapján írnak?  Az szerintem teljesen rendben van, ha a formot tartalmazó munkafüzetet többen is megnyitják - csak olvasásra. A begyűjtött adatokat pedig a háttérben levő akár közös használatú munkafüzetbe lehet írni. Jelszavakat stb. lehet külön text fájlban is tárolni.

 

Üdv.

Előzmény: Eredő Vektor (29396)
Eredő Vektor Creative Commons License 2016.09.13 0 0 29396

Köszönöm, igazán megtisztelsz a segítségeddel.

Most a form activate eseményben állítok a rajta lévő lévő controlokon és én bővítményben gondolkodtam. A sablon nem tudom mi, rákeresek. (Diagramot mentettem sabloként, ilyen formot még nem)

 

Több felhasználó nyitja meg olvasásra, írásra jelszó van. 1-1 munkafüzet nyit háttérben, amibe / ből az userform ír / olvas.

Tehát a két megnyitott munkafüzetnek többfelhasználósnak kell / kéne lennie. Ezt még nem próbáltam ki, hogy viselkedik. Tehát választanom kell, hogy közössé teszem a két munkafüzetet - vagy minden munkafüzetbe íráskor megnyitom / bezárom, mentem (most ez van) a munkafüzetet - de ez lassú... Ha addig tartom nyitva amíg a form is "él", akkor a form életéig fogva van a két munkafüzet, másnál nyitott form nem tud írni bele.

 

Előzmény: Fferi50 (29395)
Fferi50 Creative Commons License 2016.09.13 0 0 29395

Szia!

 

Az a kérdés, mit értesz beélesítésen... és mire szeretnéd használni, hány munkafüzetben szeretnéd elérni?

Ha egy adott munkafüzetben van, akkor a userform.show metódussal tudod megjeleníteni, userform.hide metódussal elrejteni és Unload userform utasítással kivenni a memóriából. A Userformnak van Initialize eseménye, amelyben be lehet állítani a kezdő értékeket, Activate eseménye ahol szintén lehet állítani az értékeken.

Ha a munkafüzet megnyitásakor szeretnéd azonnal megjeleníteni, akkor a Workbook_Open eseményben kell meghívnod a Userform megjelenítő eljárást - azért ezt javaslom és nem azt, hogy oda tedd be a megjelenítő sorokat, mert így a program más helyeiről is meg lehet hívni majd, ha szükséges.

Ha a felhasználó "akarata" dönti el, hogy meghívja a formot (pl. több feladat között lehet választani és a választástól függ, melyik form jelenik meg - vagy milyen adatok jelennek meg a formon), akkor menüpontot vagy gombot alkothatsz a hívásra, megfelelő címmel.

Ha több munkafüzetben is szeretnéd használni, akkor csinálhatsz belőle bővítményt (legalábbis így gondolom) vagy sablonként elmentheted.

DE a tényleges megjelenítés az a Show metódus.

 

Üdv.

Előzmény: Eredő Vektor (29394)
Eredő Vektor Creative Commons License 2016.09.13 0 0 29394

Sziasztok,

Mi a legmegfelelőbb módja annak, hogy egy formot "beélesítsünk"

Bővítményként, excel munkafüzetben open eseményre, gombbal indítani... milyen lehetőségek vannak / melyik a legjobb?

Üdv. EV

gaborci77 Creative Commons License 2016.09.13 0 0 29393

Dehogy vitazunk. A lenyeg h mukodik, hála neked. 🙋👍

Gabor

Előzmény: Fferi50 (29392)
Fferi50 Creative Commons License 2016.09.13 0 0 29392

Szia!

 

A plusz-mínuszon nem kívánok vitatkozni, azt Te tudod, hogyan vannak elszámolva a napok (nyilván egy nap vagy "s" vagy "r"), de a képletedből most lemaradt a záró zárójel  :), illetve a nyitó sem kell.

 

(Szerintem A-(B+C) = A-B-C, csak nem bírtam ki, hogy leírjam (:  )

 

 

Üdv.

Előzmény: gaborci77 (29391)
gaborci77 Creative Commons License 2016.09.13 0 0 29391

Üdv.

=A12-(darabteli(D12:AH12;"s")*12-darabteli(D12:AH12;"r")*8

 

Ez a helyes végül.

 

Nem + , hanem - mert a 12 óra helyett csak 8 órát vesz ki aznap, de a lényeg, hogy hozzásegítettél, hogy könnyebbek legyenek a mindennapjaim. :)

 

Üdv. Gábor

Előzmény: Fferi50 (29389)
gaborci77 Creative Commons License 2016.09.13 0 0 29390

Kedves Fferi50!

 

.... és láss csodát!

 

Hogy ez nem jutott eszembe....

Leköteleztél!!!!!!!!!

Mivel tartozom? (de tényleg!)

 

Köszönöm!

 

Üdv. Gábor

Előzmény: Fferi50 (29389)
Fferi50 Creative Commons License 2016.09.13 0 0 29389

Szia!

 

A DARABHATÖBB a feltételek együttes meglétét követeli meg. Neked a DARABTELI függvény megfelel, csak össze kell adni a két számolás eredményét:

=A12-(darabteli(D12:AH12;"s")*12+darabteli(D12:AH12;"r")*8)

 

Üdv.

Előzmény: gaborci77 (29388)
gaborci77 Creative Commons License 2016.09.13 0 0 29388

Üdv. Tisztelt hozzáértők!

 

Megakadtam és nem tudom hogyan tovább a 2010-es excellben.

Készült egy munkaidő nyilvántartó táblázat, amiben vezetem a kollégák munkaóráit, szabikat stb.

Nem csak számokat, de betűket is használok. S=szabadság 12 órával, R=rekreációs szabi 8 órával stb.

A hó végi összegzésnél darabteli fügvényt használok, de abban csak egy kritériumot lehet megadni.

pl.

=A12-darabteli(D12:AH12;"s")*12

Ebben az esetben az A12-es cellából(az előző havi záró óra) kivonja a D12:AH12 tartományból azokat a cellákat amiben "S" szerpel term. felszorozva 12-vel.

Na most. :)

Nekem más kritérium is szükséges lenne. Ha "R" betűt írok akkor azt a 12 helyett 8-al szorozza.

 

Erre lenne gonolom a DARABHATÖBB fügvény, de nem igazán sikeredik zöldágra vergődni vele.

Kétféle módon is beírtam, de egyik sem jó.

=A14-DARABHATÖBB(D14:AH14;"s"*12;D14:AH14;"r"*8)

=A14-DARABHATÖBB(D14:AH14;"s")*12;(D14:AH14;"r")*8

 

Kaphatok egy kis önzetlen segítséget valakitől? :)

 

Nagyon köszönöm!

 

Üdv. Gábor

Fferi50 Creative Commons License 2016.09.12 0 0 29387

Szia!

 

A Public nem egyenlő a Global-lal. Szerintem Userform General szekciójában Public-ként deklarálva kell, hogy lássa mindenki más a Userform nevére hivatkozva, pl. Userform1.változó=valami  beállítja a formon levő változó értékét. Viszont ez csak addig él, amíg a form a memóriába van (tehát a Hide -dal elrejtéskor megmarad az értéke, Unload esetén elvész, hiszen az objektum sem marad benn a memóriában).

Ha csak simán deklarálod a General szekcióban a változót, akkor csak az adott form eljárásai látják.

Amennyiben egy általános modulban deklarálod a változót, akkor az "élete" nem függ a form memóriában levőségétől.

 

Üdv.

Előzmény: Eredő Vektor (29385)
Törölt nick Creative Commons License 2016.09.12 0 0 29386

Én kiraknám modulra. Attól még a Userform látni fogja.

Előzmény: Eredő Vektor (29385)
Eredő Vektor Creative Commons License 2016.09.12 0 0 29385

Userform-ban van, nem module.

 

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

Standard kódlapon Public-ként deklarált változó megőrzi az értékét eljárások között/fölött is. Akkor törlődik, ha End (tehát nem End If, End Select, stb, hanem sima End) utasítást talál, vagy ha hibaüzenetnél, törésponthoz érve, stb. a Stop gombbal leállítod a makró futtatását.

 

Ha kvázi "mindent túlélő" változóra van szükséged, érdemes a CustomDocumentProperties környékén körülnézni.

Előzmény: Eredő Vektor (29378)
Eredő Vektor Creative Commons License 2016.09.12 0 0 29383

Global = Public?

 

A Sub fölé kell rakni a Public-ot

A Global nem létezik, nálam piros. Akárhová rakom.

 

Előzmény: Fferi50 (29379)
Fferi50 Creative Commons License 2016.09.12 0 0 29382

Szia!

 

Az Excel alap/mintadiagramoknak van alapbeállításuk, amit mindig felhoznak, ha a mintát használod.

Viszont csinálhatsz saját beállításokkal saját mintát és utána használhatod azt kiindulásnak. Makróban nem néztem még meg, hogy a saját mintára hogyan lehet hivatkozni.

A beállításokat makróból szerintem egy rutinnal meg lehet oldani, hogy mindig a "kedvenced" szerint jelenjen meg.

 

Üdv.

Előzmény: pimre (29380)
Zs:) Creative Commons License 2016.09.12 0 0 29381

Nálam a Global működik.

Előzmény: Eredő Vektor (29378)
pimre Creative Commons License 2016.09.12 0 0 29380

Köszönöm. Jól sejtetted, a DataLabels.Numberformat hozta a jó megoldás, mégpedig a "0%" képlettel, mert egészekre akartam kerekíteni.

 

A következő két óra azzal telt, hogy az ActiveChart.SetSourceData sor megfelelő beállítását megtaláljam. mert ugyebár programban nem írhatom be fixen a Range értékét, és szokás szerint elkeveredtem a bonyolult string kifejezésben.

 

Egyet szeretnék még kérdezni. Az a sejtésem, néhány kellemetlen tapasztalat eredményeképpen, hogy az Excel a diagramok beállításainál bizonyos beállításokat megjegyez. Még talán kikapcsolás után is(?). Mert időnként furcsa jelenségekkel találom szemben magam. Ilyen például a "Straight Connector", ami majdnem mindig megjelenik a diagramon, így azt ki kell törölnöm. De van egy halvány emlékem, hogy a vezetővonalak beállítása is időnként váratlanul megjelent. Nincs ezeknek valami alapbeállítása, hogy biztosíthassam az azonos viselkedését más környezetben is? Bár egyelőre csak én fogom használni, de azért nem szeretem az ilyen meglepetéseket.

Előzmény: Fferi50 (29377)
Fferi50 Creative Commons License 2016.09.12 0 0 29379

Szia!

 

A Public  vagy Global deklaráció a modul elején szerintem jónak kell lennie. Viszont elképzelhető, hogy rosszul hivatkozol rá, ha nem az adott modulban van, akkor  a modulnév.változónév a helyes hivatkozás, a sima változónév nullát ad, mert automatikusan mindig az éppen aktuális eljárást/modult nézi az értelmező. A Static szerintem csak az adott eljárásra érvényes.

 

Üdv.

Előzmény: Eredő Vektor (29378)
Eredő Vektor Creative Commons License 2016.09.12 0 0 29378

Hogyan lehet változót deklárni úgy, hogy az értékét megőrizze akkor is, ha kilép az eljárásból?

Public, static próbáltam, de elveszti az értékét amint elhagyja az eljárást és áttér egy másik esemény kezeléséhez.

(Több esemény kezelőn keresztül történik a futás)

Fferi50 Creative Commons License 2016.09.12 0 0 29377

Szia!

 

Szerintem ott valami beállítási rendellenesség lakozik. Próbáld meg, hogy kijelölöd az adatfeliratokat és a formázás - számformázásnál beállítod a százalékot.

Ha így rendben van, akkor DataLabels.Numberformat="0,00%"

 

Egyébként még az a gyanúm, hogy az adataid számformátuma zavarhat be. Próbáld meg, hogy a felirat beállításnál kiveszed a forráshoz csatolva jelölést.

 

Üdv.

Előzmény: pimre (29376)
pimre Creative Commons License 2016.09.12 0 0 29376

Köszönöm, de sajnos ez sem adja azt az eredményt, amit szeretnék.

 

A saját beállításaimmal: 

 

Range("F35:G39").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlPie
ActiveChart.SetSourceData Source:=Range( _
"'osszes atford Kor-7. kerdespar'!$F$35:$G$39")
ActiveChart.SetElement (msoElementDataLabelInsideEnd)
ActiveChart.ApplyDataLabels
ActiveChart.SeriesCollection(1).DataLabels.Select
Selection.ShowPercentage = True
Selection.ShowValue = False
' Selection.AutoText = True

 

ez a kép fogad:

 

 

Az általad javasolt .ApplyLayout (1) esetén pedig ez:

 

 

A százalékos értékek helyén így is, úgy is nullák jönnek.

 

A méretezést kösz, de néhány hete ennél találtam egy kényelmesebbet, ahol nem kell a képpontokat számolgatnom.  A 29223-as kérdés kapcsán sikerült megoldani a képnek egy konkrét cellához való igazítását. Aztán kipróbáltam, és kiderült, hogy ugyanez diagramra is vonatkozik. ezért kényelmi okokból valami ilyesmit használok a pozicionálásra. Nem tökéletes, de nagyon közel van ahhoz, amit szeretnék.

 

With ActiveChart.ChartArea

     .Left = Cells(1, balszeloszl).Columns.Left

     .Top = Cells(felsosor, 1).Rows.Top

     .Width = Cells(1, balszeloszl + xx).Columns.Left - Cells(1, balszeloszl).Columns.Left           

     .Height = Cells(felsosor + yy, 1).Rows.Top - Cells(felsosor, 1).Rows.Top

end with 

 

ahol felsősor és a balszeloszl annak a sornak és oszlopnak a száma amelyiknek a sarkánál kezdődik a diagram, xx = ahány oszlop szélességűnek és yy = ahány sor magasnak szeretném látni a diagramot

 

 

Előzmény: Delila10 (29375)
Delila10 Creative Commons License 2016.09.12 0 0 29375

A százalékot kiszámolják maguknak a diagramok, elég az A:B tartományt megadni a létrehozásukhoz.

Az első makróban egymás után megadjuk az adatok területét ($A1:$B$6, $A$9:$B$14, $A$18:$B$23), majd meghívjuk a másodikat.

A diagramok méretét és helyzetét a saját igényeidnek megfelelően módosíthatod.

 

Public bal As Single, fent As Single

 

Sub Torta()
   Dim terulet As String

   terulet = "$A$1:$B$6": bal = 150: fent = 35
   Diagram terulet, bal, fent

   terulet = "$A$9:$B$14": bal = bal + 210: fent = fent + 30
   Diagram terulet, bal, fent

   terulet = "$A$18:$B$23": bal = bal + 210: fent = fent + 30
   Diagram terulet, bal, fent
End Sub

 

 

Sub Diagram(terulet, bal, fent)
   Range(terulet).Select
   ActiveSheet.Shapes.AddChart.Select
   With ActiveChart
      .SetSourceData Source:=Range(terulet)
      .ChartType = xlPie
      .ApplyLayout (1)
   End With
   Selection.Left = bal
   Selection.Top = fent
   Selection.Height = 200
   Selection.Width = 200
End Sub

Előzmény: pimre (29373)
pimre Creative Commons License 2016.09.12 0 0 29374

És, hogy még teljesebb legyen a bosszúságom, megpróbálkoztam azzal, hogy kihagytam a létszám adatot, csak a százalékot tüntettem fel, hogy két egymás melletti oszlopom legyen. Hát erre ezt művelte:

 

Előzmény: pimre (29373)
pimre Creative Commons License 2016.09.12 0 0 29373

Segítsetek! Egy diagramot szeretnék készíteni. Programból kellene, mert elég sokat szeretnék létrehozni.

 

Egy egyszerű 3 oszlopos táblázatom van: Az életkorok, mellette, hogy egy adott csoportban hányan voltak, és mellette a százalék érték. A tortadiagramon a százalékos adatokat szeretném feltüntetni.

 

 

Makrórögzítéssel kiválasztom az életkor és a százalék oszlopot. A rögzítő a következőt hozza létre:

 

Range("F35:F39,H35:H39").Select
Range("H35").Activate
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlPie
ActiveChart.SetSourceData Source:=Range("Teszt!$F$35:$F$39;Teszt!$H$35:$H$39" _
)
ActiveChart.ApplyDataLabels
ActiveChart.SeriesCollection(1).DataLabels.Select
Selection.ShowValue = False
Selection.ShowPercentage = True

 

Amikor viszont programban akarom elindítani, akkor a 3. soron Application defined or Object defined errort ad.

 

Megpróbáltam a teljes kijelölését az adatoknak, azaz a középső (létszám) oszlopot is belefoglalva. Ekkor a következőt kaptam a rögzítővel: 

 

Range("F35:H39").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlPie
ActiveChart.SetSourceData Source:=Range("Teszt!$F$35:$H$39")
ActiveChart.SetElement (msoElementDataLabelInsideEnd)
ActiveChart.ApplyDataLabels
ActiveChart.SeriesCollection(1).DataLabels.Select
Selection.ShowValue = False
Selection.ShowPercentage = True
ActiveChart.SeriesCollection(1).HasLeaderLines = False

 

Ekkor viszont programból elindítva a ShowPercentage soron mondja azt, hogy Object doesn't support this property or method

 

Tudtok segíteni, hogy milyen módon oldhatnám meg a diagram elkészítését programból?

 

 

 

pimre Creative Commons License 2016.09.11 0 0 29372

Igazad van, valóban nem zavarja az üres cella a keresést. Kipróbáltam Excel 2010 alatt. Az első néhány sorba írtam számokat, a köztük egyet üresen hagytam. Mégis megtalálta a mögötte lévő sorba írt adatot mindegyik verzió. Aztán írtam egy stringet az A111111-be, és azt is simán megtalálta mindegyik módon. Az utolsónál persze nem column(1), hanem columns(1) kellett

 

Ráadásul a Talsor változót szándékosan stringnek deklaráltam, mégis elfogadta a program. Aztán Long-nak, és azzal is működött. Tehát Eredő Vektor programjában valahol máshol kell keresni a hibát. 

 

Előzmény: Fferi50 (29371)
Fferi50 Creative Commons License 2016.09.11 0 0 29371

Szia!

 

Szerintem egy oszlop az összefüggő tartomány, akármekkora is legyen, nem számít, hogy közben van-e üres cella. A követelmény, hogy ne legyen több oszlop, csak egy ill. ne megszakítással - több terület azonos oszlopban - jelöljük ki.

 

Elképzelhető, hogy a problémát a sorok számának nagysága okozza - mint Eredő Vektor kísérletei mutatják - bár nálam ez nem következett be (igaz én 2016-os Excelt használok), lehet, hogy a 2010-es Excelben még él a korábbi verziók sorszáma miatti korlát és ezt csak később javították.

 

Üdv.

Előzmény: pimre (29370)
pimre Creative Commons License 2016.09.11 0 0 29370

A Help szerint a WorksheetFunction.Match Method második paraméterének folyamatos tartománynak kell lennie: 

"Lookup_array - a contiguous range of cells containing possible lookup values. Lookup_array must be an array or an array reference."

 

Nem lehetséges, hogy ezért nem fogadja el a teljes oszlop kijelölést? Ellentétben a Find Method-al, ahol ilyen megkötés nincs.

 

Előzmény: Eredő Vektor (29364)
Eredő Vektor Creative Commons License 2016.09.11 0 0 29369

az excel képlet nálam is megtalálja egyébként. Mindegy, átírtam a teljes oszlopot kisebbre

Előzmény: Fferi50 (29367)
Eredő Vektor Creative Commons License 2016.09.11 0 0 29368

stringet keresek, egyértelműen benne van. Ha teljes oszlopra állítom a keresési tartományát, akkor kiakad, ha behatárolom mondjuk a1:a10000-re, akkor talál.

érdekes, ha a1:a100000-re állítom, ismét kiakad.

Háttérben megnyitott munkafüzetben keresem - úgy tűnik mintha ilyen esetben nem látna el a match, csak bizonyos sorszámig. 2010 excel mindegyik munkafüzet, tehát nem 65536 soros

Előzmény: Fferi50 (29366)
Fferi50 Creative Commons License 2016.09.11 0 0 29367

Kis kiegészítés:

Az ilyen kereséseknél a dátum értékekkel probléma lehet, nálam olyan fordult elő, hogy két azonos dátumot nem talált meg a Match függvény (holott az Excel képlet igen!!!), viszont amikor átalakítottam számmá, akkor megtalálta - szerintem ez már mindennek a teteje...

 

Üdv.

Előzmény: Eredő Vektor (29364)
Fferi50 Creative Commons License 2016.09.11 0 0 29366

Szia!

 

Szerintem az lehet a probléma, hogy a keresett érték nincs az adott tartományban, mivel ebben az esetben a Worksheetfunction.Match ezzel a hibával áll le, így mindenképpen szükséges a hibakezelés programból.

Ezért helyette inkább az Application.Match használatát javaslom, azzal a Delila által írt kiegészítéssel, hogy az eredményt tartalmazó változó legyen variant. Ilyenkor az eredmény maga lesz hiba (ami a variant típusu változóba minden gond nélkül be tud kerülni), így csak azt kell megnézni a keresés után, hogy az eredmény hiba-e vagy sem. Az Error 2042 a nem talált ilyen értéket hibát jelenti (N/A).

 

Tehát vagy hibakezelést írsz bele a makróba, vagy lehetővé teszed, hogy az eredményváltozód hiba értéket is felvehessen.

 

Üdv.

Előzmény: Eredő Vektor (29364)
Delila10 Creative Commons License 2016.09.11 0 0 29365

A helyfoglalásnál a TalSor típusa legyen Variant, vagy semmi, mert ha nem adod meg a típust, akkor variantként kezeli a VBA.

Előzmény: Eredő Vektor (29364)
Eredő Vektor Creative Commons License 2016.09.11 0 0 29364

látott már valaki olyat, hogy

Ez ad találot

 

TalSor = WorksheetFunction.Match(cb1.value, ws_k.Range("A1:A10000"), 0)

Ez meg nem:

TalSor = WorksheetFunction.Match(cb1.value, ws_k.Range("A:A"), 0)

TalSor = WorksheetFunction.Match(cb1.value, ws_k.Column(1), 0)

(Runtime Error 1004 MAtch tul. nem érhető el.)

Lehet, hogy ez a függvény nem bír el ennyi sorral?

 

Eredő Vektor Creative Commons License 2016.09.11 0 0 29363

1. jogos.

2. jogos. Azt hittem, hogy így tudom bele tenni a nem üres sorokat egy oszlopból. Most már átírtam rowsource-ra, ahogy delila írta.

 

Előzmény: Fferi50 (29362)
Fferi50 Creative Commons License 2016.09.10 0 0 29362

Szia!

 

Engedd meg, hogy értetlenkedjek egy kicsit...:-).

1. Miért kell az a tömbváltozódat range-nek definiálni, lehetne sima tömb és csak a tartomány értékét átadni neki, akkor nem kell a formula tulajdonságot használni.

2. Miért kell egyáltalán közbeiktatni egy tömbváltozót, a Range-ből is fel tudod tölteni a RowSource tulajdonsággal, csak a memóriahasználatot növeled vele szerintem.

 

Üdv.

 

 

Előzmény: Eredő Vektor (29360)
Eredő Vektor Creative Commons License 2016.09.10 0 0 29361

Ja, hogy Te "arra" a táblázatra gondolsz.

Jogos, mert ott a névként megadott tartomány is bővül.

Ez jobban tetszik, mint a mostani megoldásom. (Név megadásban tettem képlettel dinamikussá)

Köszi,

Előzmény: Delila10 (29358)
Eredő Vektor Creative Commons License 2016.09.10 0 0 29360

Átírtam rowsource-ra az egészet, egyszerűbb.

 

Tömbváltozóból töltöttem fel  combobox.list-be

így:

 

Private Sub ComboList()
Dim a(1 To 6) As Range
Dim sorvege As Long
i = 1
For i = i To UBound(a)
sorvege = Sheets("control").Cells(60000, i).End(xlUp).row
Set a(i) = Sheets("control").Range(Cells(i), Cells(sorvege, i))
Debug.Print sorvege
Debug.Print Sheets("control").Range(Cells(i), Cells(sorvege, i)).Address
Next
cb12.List = a(4).Formula
cb13.List = a(4).Formula
cb14.List = a(4).Formula
cb15.List = a(4).Formula
cb16.List = a(6).Formula
cb17.List = a(6).Formula
cb18.List = a(6).Formula
cb6.List = a(2).Formula
cb10.List = a(3).Formula
cb4.List = a(1).Formula
cb27.List = Sheets("control").Range("E1:E2").Formula
End Sub

A legutolsónál azért van próbálgatásból átírtam, mert abban a tömb változóban egy darab tétel volt - amit a .list nem szeretett. 

 

Átírtam rowsource-ra, egyszerűbb tényleg. 

Előzmény: Fferi50 (29359)
Fferi50 Creative Commons License 2016.09.10 0 0 29359

Szia!

 

"Nem egyesével teszem bele, hanem tömböt."

Szerintem nem értünk egyformán valamit. A további hozzászólásodból az derül ki, hogy tartományt - aminek változik a tartalma és hossza - szeretnél használni a ComboBox lista forrásaként. Ez nem tömb, legalábbis én úgy gondolom, hogy a tömb az VBA változó, vagy egy Excel tömbképlet tömb eredménye. Amit szerintem azért fontos megkülönböztetni, mert másképp lehet/kell vele bánni.

Ha tartományból veszed a listát, akkor a RowSource tulajdonság a legegyszerűbb, amivel hozzárendelheted a Combohoz.

Ha tömb/változó a forrás, akkor a List tulajdonság az, ami egyszerűen használható.

 

Üdv.

Előzmény: Eredő Vektor (29357)
Delila10 Creative Commons License 2016.09.10 0 0 29358

"Táblázattá alakítod az E oszlopban lévő listádat, majd a címsort kihagyva kijelölöd az adataidat, és nevet adsz a kijelölt tartománynak."

 

Ez dinamikussá teszi a tartományodat.

Majd a 

UserForm1.ComboBox1.ListRows = Range("MegadottNév").Rows.Count

sor megadja a lenyíló sorok számát, ami az aktuális adataid darabszáma. Persze ha sok adatod van, nem érdemes ezt megadni, vacakul nézne ki 100 lenyíló sor. :D

Előzmény: Eredő Vektor (29357)
Eredő Vektor Creative Commons License 2016.09.10 0 0 29357

Ez sem jó. Igaz, hogy megszámolja a nem üres sorokat, de a listrow nem jó, gondolom nem erre való a listrow...

A név megadásánál képlettel dinamikussá tettem, így most jó (bár nem tetszik, de már csak az érdekel, h működik...)

 

Előzmény: Eredő Vektor (29356)
Eredő Vektor Creative Commons License 2016.09.10 0 0 29356

ezzelkiegészítve ok.

.Cells.SpecialCells(xlCellTypeConstants).Count

Előzmény: Eredő Vektor (29354)
Eredő Vektor Creative Commons License 2016.09.10 0 0 29355

Ilyet még nem láttam.

Valószínűleg rosszul/máshogy csinálsz valamit.

Előzmény: Feketeroka (29352)
Eredő Vektor Creative Commons License 2016.09.10 0 0 29354

UserForm1.ComboBox1.ListRows = Range("MegadottNév").Rows.Count

 

Azt hittem ettől annyi sor lesz a comboboxban, ahány kitöltött sor van a névvel ellátott tartományban.

de nem. Teljes oszlop van névvel ellátva, és a comboboxban fentitől függetlenül megjelennek az üres sorok

Előzmény: Delila10 (29350)
Eredő Vektor Creative Commons License 2016.09.10 0 0 29353

Szia,köszi.

A split-es lehetőséget megtaláltam, csak nem tetszett (nem tudom miért)

Tehát azt mondod, hogy ha 2 sornál kisebb, akkor if-el additem.

Nem egyesével teszem bele, hanem tömböt.

Most nézem Delila utolsó hsz-ét, lehet jobb lesz a rowsource metódusa..

Előzmény: Fferi50 (29351)
Feketeroka Creative Commons License 2016.09.10 0 0 29352

Helló!

Egy érdekes hibával szembesültem: egy file munkalapjai jelszóval védettek. Megváltoztattam a jelszót, elmentettem stb. A változtatás után a védelem a régi és az új jelszóval is feloldható.

Ötlet?

Fferi50 Creative Commons License 2016.09.09 0 0 29351

Szia!

 

Egy sor hozzáadásához használd az AddItem metódust.

Viszont, ha tömbbe gyűjtöd az elemeket, akkor ne külön-külön add hozzá a listához, hanem egyben.

ComboBox1.List=tömb

A tömböt létrehozhatod a Split függvénnyel is, ha sima szövegben, határoló jelekkel gyűjtötted a listába való tételeket:

Pl: lista="elem1,elem2,elem3" => ebből  ComboBox1.List=split(lista,",")

 

Üdv.

Előzmény: Eredő Vektor (29347)
Delila10 Creative Commons License 2016.09.09 0 0 29350

A lenyíló sorok számát is meghatározhatod.

 

UserForm1.ComboBox1.RowSource = "MegadottNév"
UserForm1.ComboBox1.ListRows = Range("MegadottNév").Rows.Count
UserForm1.Show

Előzmény: Eredő Vektor (29347)
Delila10 Creative Commons License 2016.09.09 0 0 29349

Rugalmasan is kezelheted. Táblázattá alakítod az E oszlopban lévő listádat, majd a címsort kihagyva kijelölöd az adataidat, és nevet adsz a kijelölt tartománynak.

UserForm1.ComboBox1.RowSource = "MegadottNév"

 

Mindig az aktuálisan feltöltött adatokat mutatja majd a ComboBoxod.

Előzmény: Eredő Vektor (29347)
Delila10 Creative Commons License 2016.09.09 0 0 29348

A form indítása előtt megadhatod így:

 

UserForm1.ComboBox1.RowSource = "Munka1!E1"
UserForm1.Show

 

vagy

UserForm1.ComboBox1.RowSource = "Munka1!E1:E10"
UserForm1.Show

 

Előzmény: Eredő Vektor (29347)
Eredő Vektor Creative Commons License 2016.09.09 0 0 29347

Az miért van, hogy ez nem megy:

ComboBox1.List = Sheets("munka1").Range("e1:e1").Formula

ComboBox1.List = Sheets("munka1").Range("e1").Formula

 

Ez pedig megy:

ComboBox1.List = Sheets("munka1").Range("e1:e2").Formula

 

Gondolom egynél több elemet hajlandó csak befogadni.

 

Hogy lehet ezt orvosolni? Én csak egy elemet akarok.

(Egy tömböt töltök fel és abból rakom be a combobox1.list adatait.

Ahol 1 érték van ott kiakad. :(

 

381:

 

Could not set the list property. Invalid property array index. 

Eredő Vektor Creative Commons License 2016.09.09 0 0 29346

Szia Feri,

Köszönöm, többek között a numberformat segítségével sikerült elérnem a célt.

Még küzdenék a regexekkel, ha nem írok a fórumba.

Előzmény: Fferi50 (29342)
Fferi50 Creative Commons License 2016.09.08 0 0 29345

Szia!

 

Mivel Userformról és azon levő Textboxról van szó, a KeyPress/KeyDown/KeyUp eseményekben megnézheted és ellenőrizheted, hogy milyen karaktert vitt be a felhasználó, a mintának megfelelően automatikusan beviheted az elválasztójeleket, ha elérte a megfelelő hosszúságot a bevitel és átteheted egy szám típusú változóba az eredményt. Instruálhatod a felhasználót, ha nem jól csinált valamit.

Igaz, ehhez az ellenőrzési funkciókat meg kell írni  - de lehet, hamarabb megvan, mint a Regex kísérletezés és talán komplettebb is...

 

Üdv.

Előzmény: Eredő Vektor (29344)
Eredő Vektor Creative Commons License 2016.09.08 0 0 29344

igen, de a regex tud validálni. tehát ha az adat megfelel a regex mintának, akkor jó.

pl nézd ezt, most próbáltam összerakni:

Ami alul színes, az megfelel a regex mintának

 

https://regex101.com/r/fP5jQ1/1

Előzmény: Fferi50 (29342)
Eredő Vektor Creative Commons License 2016.09.08 0 0 29343

A numberformat sem tökéletes

ez átalakítja:

[>=200000000]# ##-###-##-##;[>=200000000]# ##-###-###;# ###-##-##

 

 

ez kell                   12-345-678 | 123-45-67 |30-123-45-67

eredeti                  12345678    | 1234567   |3012345678

numberformat       1 234-56-78| 123-45-67 |30-123-45-67

 

 

először is nem sikerül beállítanom a megfelelőre a numberformatot, másodszor megenged a szükségesnél több számot is bevinni. Egyéb karaktert is megenged bevinni, de ez orvoslható ha pl long ra deklarálom az adattípusát és így egy adattípus hibát lehet kezelni.

 

Előzmény: Fferi50 (29340)
Fferi50 Creative Commons License 2016.09.08 0 0 29342

Szia!

 

Szerintem a Regex után is szöveg lesz belőle (vagyis már nem szám :(  akkor sem.)

A  formatnál is ki lehet zárni a betűket, a numberformat is nagyjából ugyanazt a szabályt követi, mint a format, viszont a Numberformat esetén a cellában számként lehet kezelni ami benne van.

 

Üdv.

Előzmény: Eredő Vektor (29341)
Eredő Vektor Creative Commons License 2016.09.08 0 0 29341

Ami nekem kell arra alkalmasabb a regex, csak bonyolult sajnos :(

A format megenged betűt is, nekem csak szám lehet benne. 

Az is baj, ha a format átalakítja, akkor már nem szám.

 

A numberformat-nak utána olvasok

 

Előzmény: Fferi50 (29340)
Fferi50 Creative Commons License 2016.09.08 0 0 29340

Szia!

 

A Format függvény, ill. a Numberformat metódus miért nem felel meg neked? Azzal elég egyszerű a kívánt formátumot megkapni szerintem.

Sőt a formátumstringet constansként meg is adhatod.

 

Üdv.

Előzmény: Eredő Vektor (29339)
Eredő Vektor Creative Commons License 2016.09.08 0 0 29339

a regex kifejezés ez lehet pl:

"bd{2}[-]?d{3}[-]?d{3}"

ami 12345678-at átalakítja erre 12-345-678

Előzmény: Eredő Vektor (29338)
Eredő Vektor Creative Commons License 2016.09.08 0 0 29338

ezzel

http://vbence.web.elte.hu/regex_leiras.html

 

és ezzel próbálkozom:

Sub regex()
Dim objRegExp As Object
Set objRegExp = CreateObject("vbscript.regexp")
objRegExp.Pattern = "'([0-9]{4})[^0-9]*([0-9]+)[^0-9]*([0-9]+)[^0-9]*', '1-2-3', $datum"
objRegExp.IgnoreCase = True
objRegExp.MultiLine = False

If objRegExp.test(Sheets("munka1").Cells(1, 1).value) Then
Set matches = objRegExp.Execute(Sheets("munka1").Cells(1, 1).value)
Sheets("munka1").Cells(2, 1).value = matches(0).value
End If

End Sub

Előzmény: Eredő Vektor (29337)
Eredő Vektor Creative Commons License 2016.09.08 0 0 29337

Sziasztok,

Hogy tudok regex segítségével egy számot módosítani

erről

301234567

erre

06-30-123-45-67

 

egy textbox-ban ami userformon van.

 

A regex mintát én elkészíteném. Amit nem tudok elérni az az, hogy a regex módosítsa a kívánt maszkra a számot. (Az userfromon lévő textboxban)

 

 

DannyX Creative Commons License 2016.09.07 0 0 29336

Szia,

 

nagyon köszönöm a segítséget, tökéletesen működik !!!! :)

 

Dani

Előzmény: pimre (29335)
pimre Creative Commons License 2016.09.07 0 0 29335

Én évekkel ezelőtt csináltam hasonlót. Most átdolgoztam, hogy a te mintádon is használható legyen. Feltöltöttem ide: http://data.hu/get/9964591/Utcanev_szetszedes.xlsm

 

A közterületnevek felsorolásába beletettem az általam ismert rövidítéseket,és az általad is bemutatott hibalehetőséget (utca,) és a program ezeket kijavítja.

 

Nézd meg, hátha segít.

Előzmény: DannyX (29334)
DannyX Creative Commons License 2016.09.07 0 0 29334

Hát igen :S, itt nincs ennyi tétel, de minden nap le kell futtatni ezt, illetve ez egy komplex "makrócsomag" közepén van, és ezért kell kettészedni a makrókat, mert itt bele kell avatkozni kézzel :S

Előzmény: _Nyuszi (29333)
_Nyuszi Creative Commons License 2016.09.07 0 0 29333

Én ezt így csináltam annó, és ott akadtam el, ahol te.

A "szövegből oszlopok" dolog "segített", gyakorlatilag végigkapáltam, és amikor már csak a közterület neve maradt, akkor azt meg összefűztem. Hát, 11000 tétel volt, ráment egy napom (nem akartam makrót írni rá, mert csak egyszer kellett csinálni).

Előzmény: DannyX (29332)
DannyX Creative Commons License 2016.09.07 0 0 29332

Szia,

 

köszi a segítséget.

 

Gondoltam korábban erre, azonban a probléma a következő:

 

Azért gondoltam arra, hogy a meglévő teljes közterület jelleges adatbázisból indulok neki, és ha ennek segítségével kiszedem az utca,út,tér stb. akkor ami onnan jobbra van, az mehet házszámnak, így ez ok lenne.

 

Ez azért is lenne fontos mert a házszám az én esetemben nem mindig szóköz nélküli.

 

pl.

21/ B

12. 3em 3

 

Amúgy az eredeti "cím"sorból így bontom lefele:

 

 6725 Szeged,  Városgazda sor 1

 

 

az irányítószámot: =BAL( ide 5db karakter, mert ahonnan a cím jön adatbázis, van 1db space meg úgy 4db irányítószám karakter... - 6725

a települést: =KÖZÉP(Szöveg.keres( itt megkerestem a vesszőt, mert ahonnan a cím jön, ott minden város végén van egy vessző, és innen az irányítószámig tart a város - Szeged 

a közterület nevét:=JOBB(HOSSZ(Szövegkeres( megszámoltattam, mennyi karakter, majd jobbról a vesszőig, és kivontam az előzőt belőle, így megmaradt a maradék cím - Városgazda sor 1

 

röviden így.

 

Tovább meg azért nem tudom bontani, mert nincs olyan fix dolog (vessző, vagy szóköz egyéb) amihez tudnék valamit kapcsolni :(

 

köszi :)

 

Dani

 

 

 

 

Előzmény: _Nyuszi (29330)
pimre Creative Commons License 2016.09.07 0 0 29331

Off: Korábbi kérdésedre (#29270) szinte rögtön kaptál választ. Arra nem reagáltál? Vagy privátban tetted?

Előzmény: gkollar (29327)
_Nyuszi Creative Commons License 2016.09.07 0 0 29330

Több lépcsőben oldanám meg, ha nem akarsz makrózni.

Felvennék néhány segédoszlopot.

1.: Megszámoltatnám, hány szóköz van a címben összesen.

2.: az utolsó (n-1.) szóköztől jobbra lévő részt eltárolnám, mint házszám.

3.: az eredeti címből a házszámot és az utolsó szóközt levágnám (az utolsó szóközt azért veszem le, hogy ne legyen üres space az közterjelleg végén(.

4.: a házszámos játékot eljátszom a maradékkal: a most utolsó (n-1.) szóköztől lévő részt külön veszem közterjellegnek.

A maradék az utca neve (ami lehet akár sokszóközös is).

 

(Azon gondolkozom, tudsz-e képlettel egy adott karakter utolsó előfordulására keresni. Az elsőre a szöveg.keres-sel lehet, utolsóra passz... - talán a többiek tudják.)

 

Ha ez megvan, akkor amit közterjellegnek talált ez a cucc, azt az FKERES-sel megvizsgálnám, hogy az "aknától a zsilipig" közterjellegek között szerepel-e. Ha szerepel, térjen vissza mondjuk egy sorszámmal, ha nem, adjon hibaüzenetet.

 

Én valahogy így próbálkoznék. Persze ha minden OK, akkor a végén a segédtáblázatokat lehet törölni (persze előtte az értékes adatokat "beilleszt - csak szöveg" módszerrel biztonságba tenni). :)

Előzmény: DannyX (29328)
DannyX Creative Commons License 2016.09.07 0 0 29329

Az előző hozzászóláshoz persze nem csatolta a képeket:

 

DannyX Creative Commons License 2016.09.07 0 0 29328

Sziasztok

Szeretnék egy kis segítséget kérni, hogy miként oldható meg az alábbi probléma:

 

Adott a munkafüzeten egy oszlop (K) melyben egymás alatt helyezkednek el az adatok (címek) 1-1 cellában.(kép1)

A cél az lenne, hogy az L oszlopban, illetve az M oszlopban lebontsa a címet Közterület jellege, illetve házszám adatokra. (kép2)


Rendelkezem az elvileg "összes" használatos közterület jelleggel (út, utca, tér stb.).

Ezért arra gondoltam, talán ezeket egy másik sheetre betölteni külön cellákba, majd ennek segítségével kikeresni valahogy.

De nem igazán tudom miként oldható meg.

Csatolok kettő képet (kép1 ahogy van alapból, kép2 ahogy szeretném)

Köszönöm szépen

Dani

 

gkollar Creative Commons License 2016.09.07 0 0 29327

Abban szeretnék segítséget kérni, hogy valaki VB-ben tudna mutatni egy ciklust ami a vkerest végig viszi a soron, hogy ne álljon le az első találatnál?

Köszönöm!

Johnnyman Creative Commons License 2016.09.05 0 0 29326

Szia!

Köszönöm szépen. Működik. :)

Hol van fejléc, hol nincs. De ezt megoldom. Ezek szerint a kézi másolás helyett esetemben a makró a megoldás.

Üdv.

Előzmény: Fferi50 (29325)
Fferi50 Creative Commons License 2016.09.05 0 0 29325

Szia!

 

"Szeretném egyetlen munkalapon megjeleníteni az összes munkalapon lévő oszlopot."

Szeretnéd egymás alatt látni a munkalapokon levő adatokat minden változtatás nélkül? Mert akkor a Másolás-Beillesztés-nél egyszerűbb megoldás bizony nincs - még akkor sem, ha sok munkalapod van. Makróhoz tudni kell, hogy van-e fejléc a munkalapokon.

Ha az első sor fejléc és az adatok folyamatosak, akkor az alábbi makró összemásolja fejléc nélkül az adatokat az általad megnevezett lapra:

Sub osszemasol()
Dim folap As Worksheet, sh As Worksheet
Set folap = Sheets("Elso")' az Elso helyett írd be annak a munkalapnak a nevét, ahová szeretnéd összemásoltatni az adatokat
For Each sh In Sheets
    If sh.Name <> folap.Name Then sh.Range("A1").CurrentRegion.Offset(1, 0).Copy Destination:=folap.Range("A" & folap.Cells(Rows.Count, 1).End(xlUp).Row + 1)
Next
End Sub

 

Ha egy teljesen új,üres munkalapra szeretnéd a másolást, akkor először hozd létre a munkalapot, tedd rá a fejlécet és utána indítsd el a makrót.

Makró bemásolása - Alt F11 - Insert - Module - bemásolás.

Indítása - Nézet - makrók - név kiválasztás indítás.

 

 

Az összesítés a kijelölt tartományokat az általad kiválasztott függvénnyel összesíti vagy db-számot számol stb. Tudsz fejlécet ill. oldalrovatot adni (alapeseteben az első sor ill. az első oszlop), ami szerint az adott művelet megtörténik. Ez tehát már az adatok feldolgozását jelenti.

 

Üdv.

 

Előzmény: Johnnyman (29324)
Johnnyman Creative Commons License 2016.09.05 0 0 29324

Tehát több munkalapom van a munkafüzetben. Mind azonos oszlopot tartalmaz. Szeretném egyetlen munkalapon megjeleníteni az összes munkalapon lévő oszlopot. Amikor az összesítés menüpontot előhívom, úgy látom, itt másfajta összesítésről van szó. Melyik függvény kell? Az összeg? És a lapszámokat, mint hivatkozást kell betennem? Hogyan?

Előzmény: Fferi50 (29323)
Fferi50 Creative Commons License 2016.09.05 0 0 29323

Látatlanban szerinted mit tudunk még segíteni?

Előzmény: Fferi50 (29322)
Fferi50 Creative Commons License 2016.09.05 0 0 29322

Szia!

 

Látatlanban szerintem mit tudunk még segíteni?

 

Üdv.

Előzmény: Johnnyman (29321)
Johnnyman Creative Commons License 2016.09.05 0 0 29321

Próbálkoztam már vele, de csak úgy vaktában. Nem is sikerült. :(

Előzmény: Fferi50 (29320)
Fferi50 Creative Commons License 2016.09.05 0 0 29320

Szia!

 

Az első ponthoz: Nézd meg az Adatok - Összesítés menüpontot

 

Üdv.

Előzmény: Johnnyman (29319)
Johnnyman Creative Commons License 2016.09.05 0 0 29319

Légy szíves mindkét opcióra áruld el a megoldást. Köszönöm.

Előzmény: Eredő Vektor (29318)
Eredő Vektor Creative Commons License 2016.09.05 0 0 29318

a.) kimutatás tábla több tartomány (összersítés) opcióval.

b.) makróval

 

Előzmény: Johnnyman (29316)
pimre Creative Commons License 2016.09.04 0 0 29317

Ha publikus lenne az email címed, már eleve oda írnék. Így csak azt tudom felajánlani, hogy küldj egy emailt (az enyém nyilvános), vázold benne a konkrét feladatot, és megpróbálok segíteni. Korreláció, regresszió, variancia analízis és ezek statisztikai próbái témájában van némi jártasságom.

Előzmény: Cinkov (29315)
Johnnyman Creative Commons License 2016.09.04 0 0 29316

Sziasztok!

Egy munkafüzeten belül több munkalapot szeretnék egyetlen munkalapra "gyűjteni". A kimásolom - beillesztem módszernél egyszerűbb megoldást szeretnék kérni tőletek. Előre is köszönöm.

Cinkov Creative Commons License 2016.09.04 0 0 29315

Sziasztok!

 

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

Van két hipotézisém, amivel nem tudok mit kezdeni, és nem tudom melyiknél kellene korrelációt és két mintás próbát elvégeznem, szignifikancia vizsgálat mellett. Ha valaki értene ezekhez privátba fel tudná velem venni a kapcsolatot? 

Segítséget előre is köszönőm!

thomas5000 Creative Commons License 2016.09.02 0 0 29314

És tényleg! :)

 

Köszönöm!

Előzmény: pimre (29313)
pimre Creative Commons License 2016.09.02 0 0 29313

Esetleg: 0":"0

 

Előzmény: thomas5000 (29312)
thomas5000 Creative Commons License 2016.09.02 0 0 29312

Sziasztok!

Cellaformázáshoz szeretnék egy kis segítséget kérni. A lényeg, hogy 2 számot írok be a cellába, és közé ő rakjon : (kettőspontot).

pl.:

11 --> 1:1
10---> 1:0
01---> 0:1

Ezekkel nincs is gond. De ha 00-át írok be, akkor csak egy db 0-át érzékel. Szóval ezt írja ki: "0:" ez helyett "0:0".

A formátumkódom: #0":"#

Mit kéne ezen átírnom, hogy a 00 is 0:0 legyen?

Előre is köszönöm!

Hoter Creative Commons License 2016.09.01 0 0 29311

Köszönöm. Küldöm.

Előzmény: Fferi50 (29310)
Fferi50 Creative Commons License 2016.09.01 0 0 29310

Szia!

 

Csak azt tudom tanácsolni, hogy küldd el priviben a mintafájlod. Ez is Excel makró!

Vagy legalább egy képet tegyél fel arról, hogyan néz ki az adatod (nyilván csak mintát) és hova másoltad be a makrót.

 

Üdv.

 

Előzmény: Hoter (29309)
Hoter Creative Commons License 2016.09.01 0 0 29309

Szia!

A hiba biztos bennem van. De sajnos nem történik semmi. Igyekeztem az útmutatásaid szerint eljárni. :(

Üdv.

Előzmény: Fferi50 (29307)
Imu2 Creative Commons License 2016.09.01 0 0 29308

Sziasztok!

 

Épp egy makrót írok és szeretném szűrőfeltételbe beírni a következő karaktert "æ" de sehogy sem veszi be. Ha másolom excel munkalapról a makrómba, akkor csak egy "a" betűt ír be. Próbáltam minden fajta ASCII-os kódot,de azzal se sikerül.

Tudnátok segíteni, hogy tudnám beépíteni valahogy a szűrőfeltételembe ezt a karaktert?

 

Előre is köszi!

Fferi50 Creative Commons License 2016.09.01 0 0 29307

Szia!

 

Az alábbi makrót írd be lsz. az adott munkalap kódlapjára (lapfülön jobb egérgomb - kód megjelenítése).

 

Mivel az idő formátum miatt lehetnek eleinte bajaid a beírással, ezért a makró ellenőrzi, hogy dátum/időként elfogadható-e amit beírtál - azaz szám-e, mert mint írtam, az Excel számként tárolja a dátum-idő értékeket is.

Ha egy cellában a művelet után negatív idő jönne ki, azt a cellát nem változtatja meg a program és azt ki is jelzi, de a többit igen.

Sajnos minden hibát nem lehet kiszűrni előre, ezért benne van egy hibakezelő rész is - elképzelhető, hogy hiba után kicsit "összekuszálódik" az eredeti adatsorod, mivel a műveletek egy része nem hajtható végre, ezért mindig legyen egy másolatod arról a munkalapról, amivel dolgozol.

 

Private Sub Worksheet_Change(ByVal Target As Range)
Dim uj As Date
If Target.Column <> 1 Then Exit Sub 'ha nem az A oszlop változott, akkor kilép
If Target.Row <> 2 Then Exit Sub ' ha nem a 2 sorban (A2 cellában) van az adat, akkor kilép => ha az A1 cellában van, akkor ide 1 kerüljön a 2 helyére.
On Error GoTo kilep
With Application
    .EnableEvents = False
    .ScreenUpdating = False
End With
If TypeName(Target.Value) = "Double" Then
    uj = Target.Value
    Application.Undo
    For Each cl In Range(Target.Offset(1, 0), Cells(Rows.Count, Target.Column).End(xlUp)).Cells
        If Not (IsEmpty(cl)) Then
            If cl.Value + (uj - Target.Value) < 0 Then
                MsgBox "Az " & cl.Address(rowabsolute:=False, columnabsolute:=False) & " cellában negatív idő lenne!", vbCritical, "Időellenőrzés"
            Else
                cl.Value = cl.Value + (uj - Target.Value)
            End If
        End If
    Next
    Target.Value = uj
Else
    MsgBox "Nem időértéket írtál be, a művelet nem hajtható végre!", vbCritical, "Időellenőrzés"
    Application.Undo
End If
vege:
With Application
    .EnableEvents = True
    .ScreenUpdating = True
End With
Exit Sub
kilep:
MsgBox "Hiba keletkezett az " & cl.Address(rowabsolute:=False, columnabsolute:=False) & " cellánál, mivel a cella értéke: " & cl.Value, vbCritical, "Időellenőrzés"
GoTo vege
End Sub

 

 

Üdv.

Előzmény: Hoter (29306)
Hoter Creative Commons License 2016.09.01 0 0 29306

Szia!

A négy kérdésből már csak egy maradt megoldatlan.

2. Amikor változtatok valamit az időn, akár a másodpercen, akár a percen, annak az értéknek megfelelően növekedjen vagy csökkenjen az első oszlop következő kitöltött soraiban lévő idő is (pl. ha a 01 05-öt átírom 02 05-re, a következő idő értéke változzon 05 59-ről 06 59-re, és így tovább az összes további kitöltött sorban). Minden második sor kitöltött, ha ez számít. Erre kérlek szépen küld valamilyen képletet, makrót, ami segíthet.

Előre is köszönöm.

Üdv

Előzmény: Fferi50 (29301)
Fferi50 Creative Commons License 2016.08.31 0 0 29305

Rendben!

Előzmény: zsloti (29304)
zsloti Creative Commons License 2016.08.31 0 0 29304

Köszönöm szépen Ha valamit nem értek vagy kérdés merül fel meg kereslek.. 

Zs

Előzmény: Fferi50 (29302)
Hoter Creative Commons License 2016.08.31 0 0 29303

Szia!

Nagyon Köszönöm. Így már tényleg jó lesz.

Üdv.

Előzmény: Fferi50 (29301)
Fferi50 Creative Commons License 2016.08.30 0 0 29302

Szia!

 

Egy táblázat első sorába beírod a telephelyek távolságát a központtól. Én A-tól F-ig írtam értékeket.

A második sorba a meglátogatott telephelyek alá 1-et írsz, a telephelyek utáni oszlopba beírod az összesen megtett km-t. Ezt én a G oszlopba írtam.

Ezután a harmadik sorba a következő képlet kerül:

Első oszlop (A3 cella):

=A$1/(SZORZATÖSSZEG($A$1:$F$1;$A2:$F2))*$G2*A$2 

A képletet végighúzod a soron a telephelyek végéig.

A következő sorba szintén az 1-esek kerülnek, majd az 5. sorba ismét a képlet.

 

De megteheted azt is, hogy a telephelyeket követően írod a képletet, ebben az esetben az első képlet a H3 cellába kerül, maga a képlet ugyanaz.

Ebben az esetben az A-F oszlopokban sorfolytonosan írhatod az 1-es értékeket, G oszlopba a napi km-t, H oszloptól a képletet húzod le.

 

Remélem érthető.

 

Üdv.

Előzmény: zsloti (29300)
Fferi50 Creative Commons License 2016.08.30 0 0 29301

Szia!

 

Akkor próbáld meg a harmadik cellában kezdeni a következő képletet:

=HA(B3=B1;"";B3)

Ez az üres cellák összehasonlításakor üres cellát eredményez, továbbá a kettővel megelőző cellához hasonlítja az értéket.

Remélem, jó lesz.

 

Üdv.

Előzmény: Hoter (29299)
zsloti Creative Commons License 2016.08.30 0 0 29300

Sziasztok felmerult egy probléma és ha lehetséges egy Excel táblában látom a megoldást
Próbálok érthetően fogalmazni, ha valami nem tiszta nézzétek el nekem és bátran kérdezzetek... Xd
Adott egy intézmény több telephellyel ezen telephelyek közt kellene elosztani arányosan az üzemanyag költséget
Arra gondoltam hogy megnezem a telephelyek távolságát a központtól majd az adott napon látogatott telephelyek közt arányosan elosztom a napra jutó költségeket
Pl:A telephely 10km re van B 20km C 30km ezek összes távolsága 60 km ellenben én aznap 40 kilométert mentem csak mert sorban látogattam meg a telephelyeket
Ezt a 40 kilométert kellene arányosan elosztani a 3 hely között.
Gondolom valahogy úgy hogy az A a 40 km 10/60 ad, a B a 20/60ad és a C a 30/60ad része
Ez valahogy megoldható egy táblázatban?
Ja és a lényeg hogy 17 telephelyről van szó...
Köszönöm előre is
Zs

Hoter Creative Commons License 2016.08.30 0 0 29299

Szia!

Elnézést. Az eredeti kérésben helyesen volt benne, most kimaradt. Minden második sor kitöltött. Így már nem jó. Amit hirtelen kipróbáltam, abban minden sor kitöltött volt. Azért sikerült.   :(

Előzmény: Fferi50 (29297)
Hoter Creative Commons License 2016.08.30 0 0 29298

Szia!

Köszönöm szépen. Működik.

Üdv.

Előzmény: Fferi50 (29297)
Fferi50 Creative Commons License 2016.08.30 0 0 29297

Szia!

 

Egy segédoszlopban a 2. cellától a következő képletet vedd fel:

=HA(B2=B1;"";B2), ezt végighúzod, valamennyi olyan tétel helyett üres cella marad, amelyben az előző cellával azonos érték van (tehát többes ismétlődés esetén is múködik).

Utána a segédoszlopot másolod - irányított beillesztés saját magára értékként - ezután az eredeti 2. oszlopra beillesztés értékként. A segédoszlop törölhető.

 

Üdv.

Előzmény: Hoter (29296)
Hoter Creative Commons License 2016.08.30 0 0 29296

Megoldódott a szétszakadt sor rejtélye. Enter volt ott is, ahol nem kell. Azért szakadt szét.

A 3. kérdésre volna még valami javaslatod? Amennyiben egymás követő sorokban többször előfordul ugyanaz a név, szeretném az egymást követő ismétlődéseket kitörölni.

Erre gondolok:     Ebből

1. oszlop     2. oszlop      3. oszlop

01 05            Ádám         Szöveg1 

05 59            Ádám         Szöveg2 

07 25            Éva            Szöveg3

09 41            Lucifer       Szöveg4 

10 15            Ádám        Szöveg5

.....

 

Ez kellene:

1. oszlop     2. oszlop      3. oszlop

01 05            Ádám         Szöveg1 

05 59                             Szöveg2 

07 25            Éva            Szöveg3

09 41            Lucifer        Szöveg4 

10 15            Ádám         Szöveg5

....

Előzmény: Fferi50 (29295)
Fferi50 Creative Commons License 2016.08.30 0 0 29295

Szerintem az Excelbe másolásnál a forrásformátum megőrzése opció nem szakítja szét a sorokat.

 

Üdv.

Előzmény: Fferi50 (29294)
Fferi50 Creative Commons License 2016.08.30 0 0 29294

Szia!

 

Azt javaslom, próbáld ki az irányított beillesztés lehetőségeit először normál számokkal. Utána lehet, menni fog az idővel is.

 

Üdv.

Előzmény: Hoter (29293)
Hoter Creative Commons License 2016.08.30 0 0 29293

Köszönöm a tippet. Az 1. és 4. kérdést ezzel sikerült megoldanom. (A 4. kérdést a 3. megoldásod adja.)

A többi sajnos problémás. Az Excelbe másolás sem tökéletes, mert a 3. oszlopban hosszabb szöveg van, amit az átmásoláskor külön-külön sorba illeszt. Az "időátírás követés" , hát... :(

Előzmény: Fferi50 (29292)
Fferi50 Creative Commons License 2016.08.30 0 0 29292

Szia!

 

Átmásolod Excelbe a táblázatodat, megoldod a feladatokat, majd az eredmény(eke)t visszamásolod Wordbe. :-)

 

Üdv.

Előzmény: Hoter (29291)
Hoter Creative Commons License 2016.08.30 0 0 29291

Most vettem észre, hogy egy nagyon lényeges információ lemaradt. Ez nem Excel, hanem Word táblázat.

Előzmény: Fferi50 (29290)
Fferi50 Creative Commons License 2016.08.30 0 0 29290

Szia!

Minden megy makró nélkül is:

1. Ehhez  csupán a cellaformátumot kell módosítani: jobb egérgomb cellaformázás Szám fül - egyéni [pp] mm;@

2. Vigyázz, mert az Excel az időt és a dátumot is szám formátumban tárolja, az idő a törtrészt jelenti, ahol az egész nap 1, egy óra 1/24, 1 perc 1/24*60 azaz 1/1440 1 másodperc pedig 1/86400. 

A változtatás legegyszerűbben a következőképpen működik: beírod egy cellába azt a különbséget, amit változtatnál - mondjuk 1/1440. Ezután ezt a cellát másolod - utána kijelölöd az oszlopot amiben az idők vannak,

jobb egérgomb - irányított beillesztés - értéket + összeadás 

3. Adatok - ismétlődések eltávolítása  menüpont

4. Adatok - speciális - csak az egyedi értékek  - a párbeszédpanelt megfelelően kitöltve

 

Üdv.

Előzmény: Hoter (29287)
Hoter Creative Commons License 2016.08.30 0 0 29289

Sajnos nem sikerül. Remélem nélkülük is érthető a kérésem. Segítségeteket előre is nagyon köszönöm.

Előzmény: Hoter (29288)
Hoter Creative Commons License 2016.08.30 0 0 29288

Mellékelem a lemaradt képeket:

1. pont elé:

 

Előzmény: Hoter (29287)
Hoter Creative Commons License 2016.08.30 0 0 29287

Olyan négyoszlopos, több oldalas táblázathoz szeretnék négy különböző makrót kérni, amelynek minden második sora van kitöltve:

1. Az első oszlopban óra:perc:másodperc formátumban idő van beírva (pl. 10:01:05), ezt szeretném perc másodperc formátumúra változtatni (pl. 01 05), ehhez az órát szeretném eltüntetni, a kettőspont elválasztót pedig szünetre cserélni.

 

2. Amikor változtatok valamit az időn, akár a másodpercen, akár a percen, annak az értéknek megfelelően növekedjen vagy csökkenjen az első oszlop következő kitöltött soraiban lévő idő is (pl. ha a 01 05-öt átírom 02 05-re, a következő idő értéke változzon 05 59-ről 06 59-re, és így tovább az összes sorban).

 

3. A második oszlopban nevek szerepelnek. Amennyiben egymás követő sorokban többször előfordul ugyanaz a név, szeretném az egymást követő ismétlődéseket kitörölni.

 

Változás után:

4. A táblázat második oszlopában előforduló összes nevet egy külön táblázatba kellene kigyűjteni, természetesen csak egyszer, az ismétlődéseket figyelmen kívül hagyva.

 Kigyűjtött nevek:

thomas5000 Creative Commons License 2016.08.30 0 0 29286

Én is erre gondoltam, de nem. Csak 1 kép van ott, de az összeset megduplázza... :

Előzmény: Fferi50 (29285)
Fferi50 Creative Commons License 2016.08.30 0 0 29285

Szia!

 

Nem lehetséges, hogy az Excel munkalapon is duplán van a kép, csak mivel fedi egymást, nem vehető észre? Próbáld elmozdítani a képet másik helyre, ha duplán van fenn, akkor alatta ott fogod látni a másikat.

 

Üdv.

Előzmény: thomas5000 (29284)
thomas5000 Creative Commons License 2016.08.29 0 0 29284

Sziasztok!

 

Ha egy excelt munkalapot exportálok html-be, és képet is tartalmaz, akkor a mappába mindig duplán rakja a képeket, két méretben. Ez miért van, és valahogy lehetne úgy, hogy csak egy kép legyen?

 

A válaszokat előre is köszönöm!

 

Fferi50 Creative Commons License 2016.08.29 0 0 29283

Szia!

 

Én nem látok erre most más lehetőséget, mint makróval végigmenni azokon a cellákon, amelyeknek a részletezését szeretnéd - egyébként bizonyára észrevetted, egy dupla kattintás a cellán és létrejön a részletező munkalap -, utána lehet esetleg egy munkalapra összemásolni, ami "összetartozna".

Van még olyan "elvetemült" ötletem, hogy az eredeti adathalmazt (már amennyiben hozzáférhető), szűrném le azokra a feltételekre, amelyek a pivot tábla cellaértékeit létrehozták, speciális szűréssel - makróban advancedfilter metódus.

 

Üdv.

Előzmény: seven update sorbi (29282)
seven update sorbi Creative Commons License 2016.08.29 0 0 29282

"Ha viszont  arra gondolsz, hogy a pivot táblában az értékek táblarészben levő tételek részletezése kellene, az sajnos csak cellánként működik (és mindig új munkalapra teszi ki a részletezést)."

 

Igen, erre gondolok. Sokat segítene, ha erre a kérdésre valaki tudná a választ.

Előzmény: Fferi50 (29275)
bolygohollandi Creative Commons License 2016.08.29 0 0 29281

OK, kösz még egyszer....tulajdonképpen még keresem e pillanatban az okos kompromisszumot a "mindent levédek a francba a felhasználó elől" és a "megszívatom magamat az eseményvezérlők kombinációjával" két véglet között...:))

Előzmény: Fferi50 (29280)
Fferi50 Creative Commons License 2016.08.29 0 0 29280

Szia!

 

"ezért tudniuk kell bármit csinálni, amit az excel alapértelmezetten megenged, ugyanakkor meg kell akadályozni, hogy rosszul építsék fel a tábla adatait"

Pontosan erre szolgál a lapvédelem, hogy ne tudják elrontani, ami már jó...

A sor/oszlop kezelő makrókat egy saját menüpont alatt a menüszalagra is ki tudod tenni, azaz "menütételként" lehet használni azokat.

Viszont úgy gondolom, ha szervezeti struktúra van, akkor én nem oszlopot,sort manipulálnék, hanem szervezeti egységet és munkakört stb. szúratnék be és töröltetnék - lehet, így érthetőbb lenne a felhasználóknak. Aztán, hogy mögötte mi történik az Excelben, az már nem tartozik rájuk igazán.

(Pl. van szervezeti struktúra ábra beszúrási /kezelési lehetőség is az Excelben...)

 

Üdv.

Előzmény: bolygohollandi (29279)
bolygohollandi Creative Commons License 2016.08.29 0 0 29279

"...Levéded a munkalapot, kiteszel egy-egy gombot..."

 

(Csak zárójelben: olyanoknak kell elkészíteni az alkalmazást, akik feltételezhetően csak hozzávetőlegesen értenek az excel használatához, ezért tudniuk kell bármit csinálni, amit az excel alapértelmezetten megenged, ugyanakkor meg kell akadályozni, hogy rosszul építsék fel a tábla adatait. Itt nevezetesen egy szervezeti struktúra van a munkalapon - szervezeti egységekkel és munkakörökkel amolyan fa-struktúraként megjelenítve - és ezt a fát módosíthatják tetszésük szerint és ebből kell egy integrált vállalati irányítási rendszernek egy bemenő táblát készíteni úgy, hogy azonosíthatók legyenek az új/törölt/módosított objektumok az eredetihez képest)

 

Szóval jobb lenne egy célprogram, de ebben KELL megcsinálni

Előzmény: Fferi50 (29277)
bolygohollandi Creative Commons License 2016.08.29 0 0 29278

Kösz szélpen, nagyon hálás vagyok a gyors válaszért.

Ki fogom tapasztalni, amit tanácsoltál

(persze gondoltam arra is, hogy egyszerűre veszem a figurát és két globális változóval azt figyelem, nőttek-e vagy csökkentek a tábla sorai/oszlopai, csak valahogy nem tudtam elképzelni, hogy nem lehet azonosítani egyértelműen és könnyen a megszakítás (esemény) okát

 

Szóval kösz, most kipróbálom, amit mondtál

Előzmény: Fferi50 (29277)
Fferi50 Creative Commons License 2016.08.29 0 0 29277

Szia!

 

Szerintem a Target paraméter címéből lehet következtetni az egész soros/oszlopos eseményre. Ha a cím egész sor és a selection sora egyezik a Target sorával, akkor sor beszúrás történhetett, ha kisebb eggyel a Target sora, akkor sor törlés történt.

Ugyanez igaz az oszlopra is (legalábbis gyors vizsgálódásom szerint).

A sor/oszlop törlésnél még a Selection_Change esemény is lefut a Change esemény után.

Esetleg meg lehet nézni a UsedRange változását, kombinálva az Application.Undo metódussal:

Megnézed a UsedRange címét/cella számát, utána Application.Undo, ismét megnézve a UsedRange adatait, kiderülhet az ok.

Ez utóbbi esetben feltétlenül az eredeti használt területen belül kell lennie a változásnak.

 

Tipp:

Levéded a munkalapot, kiteszel egy-egy gombot a sor, oszlop beszúrásra, törlésre és így Te vezényeled ezeket az eseményeket, nem kell találgatnod.

 

Üdv.

Előzmény: bolygohollandi (29276)
bolygohollandi Creative Commons License 2016.08.29 0 0 29276

Sziasztok!

 

Keresem azt a hozzáértőt, akinek lenne ötlete arra, hogy tudnék olyan eseményvezérlőt írni, ahol az esemény elindulásakor elinduló makróban azonosítani tudnám, mi történt; pontosabban a következő események esetében kellene valamit csinálnom:

 

- új sort/oszlopot szúrt be a felhasználó

- sort/oszlopot törölt a felhasználó

 

Nem tudom, hogy lehet "lekérdezni" pl. a Worksheet changed esemény okát

Előre is kösz, ha valaki tudja!

 

Fferi50 Creative Commons License 2016.08.29 0 0 29275

Szia!

 

A help szerint:

 

"If the specified range is in a PivotTable report, it’s possible to set this property for more than one cell at a time if the range is contiguous."

 

Vagyis elvileg összefüggő tartományon működik pivot táblában, a csoportosításokon. (Feltételezem a nevek alapján, hogy az adott tartomány pivot táblában van.)

 

Nekem viszont Excel2016-ban működött az általad másodikként mutatott formula is, azzal a megkötéssel, hogy a B5:C5 mezőkben levő összecsukott értékeket nyitotta ki csak, azaz egy szintet, az alatta levő szintet nem.

 

Ha viszont  arra gondolsz, hogy a pivot táblában az értékek táblarészben levő tételek részletezése kellene, az sajnos csak cellánként működik (és mindig új munkalapra teszi ki a részletezést).

 

Üdv.

Előzmény: seven update sorbi (29274)
seven update sorbi Creative Commons License 2016.08.29 0 0 29274

Sziasztok!

 

Jelentem, betartottam a szolgálati utat...) És nem sikerült kigugliznom a netről...:-(

 

Szóval, az a (látszólag egyszerű) kérdésem, hogy a pivottáblához vba-ban, a showdetail=true parancsnál meg lehet-e egy olyan

opciót adni, amivel két, vagy több cella tartalmát is meg lehet jeleníteni?

 

Most a mindenki által haszált parancsos a következő : sheets("pivot_table").range("B5").showdetail=true

 

Ezt szeretném a következő, elméleti lekérdezéssé tenni: sheets("pivot_table").range("B5","C6").showdetail=true

 

Ez persze így nem működik, de a kérdésem az, hogy vagy más range megadással, vagy valamilyen opció beállításával el lehet-e érni,

hogy a egyetlen parancssorban egynél több cella tartalmát is le lehessen kérdezni.

Delila10 Creative Commons License 2016.08.28 0 0 29273

A másik fórumon, ahol ugyanezt a kérdést feltetted, válaszoltam. :)

Előzmény: v.pety (29272)
v.pety Creative Commons License 2016.08.28 0 0 29272

Van két excel tábla: az egyik egy n sorból álló táblázat (tab.xls), a másik egy A/4-es oldalon megjelenítendő sablon fájl, amiből éppen n db. lesz (sab_1.xls …. sab_n.xls). A cél a tab.xls egyes soraiból az n db sablon fájl generálása (ami aztán nyomtatásra kerül).

 

Kérdéseim:

1./ A sablon fájl adott cellájának, a tab fájlból való kitöltéséhez beírandó képlet:

path[tab.xls]Munka1’!P3  (pl.: a tab fájl P oszlopának 3 sorában lévő adatot vegye át,

igen ám, de a 3 helyett egy változót kellene beírni, hiszen ez minden sab_x fájlnál más és más lesz (a tab fájl x. sorának megfelelően), ráadásul e változó értéke a saját sab fájlból veendő, ugyanis ez a sab fájl sorszáma, ami a sab fájl egyik cellájának értéke is egyben,  s amit kézzel is beírhetó (egyébként a sab_x fájl nevében is ez a szám szerepel). Röviden: a cellába beírandó képletbe mit írjak a 3-as helyére?

 

2./ A cella képletben szereplő paraméterekre is lehet keresni (illetve cserélni), mint a cella értékekre? Hogyan?

 

Köszönöm előre is a válaszokat: V. Péter

Fferi50 Creative Commons License 2016.08.27 0 0 29271

Szia!

 

Vázold a problémád lsz., aztán meglátjuk, tudunk-e segíteni.

 

Üdv.

Előzmény: gkollar (29270)
gkollar Creative Commons License 2016.08.27 0 0 29270

Valaki aki nagyon profi adna privát elérhetőséget?

magyarpityu Creative Commons License 2016.08.25 0 0 29269

Ennél is egyszerűbb, ha kiválasztod, mint a törlésnél, de törlés helyett a jó szövegnek ugyanazt adod meg. Aztán, ha nem kell, visszajavítod.

 

Ez tetszik :)) köszönöm!

Előzmény: pimre (29268)
pimre Creative Commons License 2016.08.25 0 0 29268

"...egy-egy automatikus javítási funkciót csak ideiglenesen kapcsolnék ki (még csak nem is dokumentum szinten, hanem, ha szükséges, egy-egy kivételes esetben)..."

 

Erre két lehetőséged is van?

 

1. Miután törölted, és éltél a nemjavítás lehetőségével, akkor vissza is tudod írni. ugyanúgy, ahogy törölted. Beírod a módosítandóhoz, hogy ay, a jó szöveghez, hogy az, és a hozzáadás gombot választod.

 

2. Ennél is egyszerűbb, ha kiválasztod, mint a törlésnél, de törlés helyett a jó szövegnek ugyanazt adod meg. Aztán, ha nem kell, visszajavítod.

Előzmény: magyarpityu (29267)
magyarpityu Creative Commons License 2016.08.25 0 0 29267

Köszönöm!

 

Arra gondoltam, hogy egy-egy automatikus javítási funkciót csak ideiglenesen kapcsolnék ki (még csak nem is dokumentum szinten, hanem, ha szükséges, egy-egy kivételes esetben), mert általában jó ez és kell is, de olykor mégis zavaró. Régebben, ha jól emlékszek, az automatikus javítás külön művelet volt, tehát ha visszavontam az utolsó műveletet, akkor az Excel az automatikus javítást vonta vissza, ám most nem kezeli külön műveletként, ezért ha automatikus javítás után vonom vissza az utolsó műveletet, akkor nem az automatikus javítás vonódik vissza, hanem az én legutolsó bevitelem (pedig ennek automatikus módosulása kellene legyen az utolsó művelet). De persze, lehet, ilyen sosem volt, rosszul emlékszek, vagy keverem valamivel (LO-t is használok, így néha keverem az Excel és a Calc dolgait).

 

Mindenesetre köszönöm a segítséget, hasznos volt!

Előzmény: pimre (29266)
pimre Creative Commons License 2016.08.25 0 0 29266

Van. Beállítások->Nyelvi ellenőrzés->Automatikus javítási beállítások, majd itt kikeresed az ay-az cserét, és törlöd:

 

Előzmény: magyarpityu (29265)
magyarpityu Creative Commons License 2016.08.25 0 0 29265

Sziasztok!


Magyar Win7 (SP1) alatt magyar nyelvű MS Excel 2010-et használok. Beírom a cellába, hogy 'ay', erre az Excel kijavítja 'az'-re. Értem én, nem tételezi fel rólam az Excel, hogy a függőleges irányú gyorsulást éppen ay-nal szeretném jelölni, és bizonyos okból nem formázom alsó indexnek az y-t, meg hát többnyire tényleg az 'az'-nak van értelme, de most éppen így szeretném jelölni a függőleges gyorsulást... Azért csak megpróbáltam az ay-t beírni a cellába, és meglepő módon, eléggé ellenállt a kísérleteimnek! Sem az aposztróffal kezdés, sem a cella szöveggé formázása, sem a kettő együtt nem segített, és az sem számított, hogy közvetlenül a cellába, vagy a szerkesztőlécbe írok. Végül, csak úgy kíváncsiságból átállítottam a billentyűzetet a Win7 alatt angol nyelvűre, és lám, máris be tudom írni az ay-t. Fura...


Van arra valami (a billentyűzet nyelvének átállításától) elegánsabb módszer, hogy ezt az automatikus javítást kikerüljem, ha akarom, és ha 'ay'-t szeretnék beírni a cellába, akkor azt megtehessem? Köszönöm előre is!

Fferi50 Creative Commons License 2016.08.22 0 0 29264

Szia!

 

Egy ötlet csak:

 

Rakd össze a két táblát egy munkalapra (úgy, hogy az azonos tartalmú oszlopok egymás alá kerüljenek - sorszám-sorszám alá stb.).

Ezután adatok - ismétlődések eltávolítása - kijelölöd a 3 szempontot tartalmazó oszlopot, fejléc bejelölés, majd enter.

Így  csak azok az adatok maradnak benn, amelyek mind3 szempontban különböznek.

 

Szerintem ez a leggyorsabb, ha jól értelmeztem a feladatot.

 

Másik lehetőség - macerásabb, de szintén működik:

Mindkét táblázatban FKERES függvénnyel rákeresel a másik táblában levő adatokra - ehhez mindkét táblában kell egy segédoszlop, ahol összefűzöd a 3 szempontodat, majd ezen az oszlopon keresed az összefűzött értékekkel. Ahol hiba van, az az érték nem szerepel a másik táblában.

 

Üdv.

Előzmény: ExcelSOS (29263)
ExcelSOS Creative Commons License 2016.08.22 0 0 29263

Sziasztok,

 

a segítségeteket szeretném kérni 2 excel tábla összehasonlításában. Lényegében a 2 táblázat tartalma ugyanaz, de formailag különböznek. Mindkét tábla több oszlopos, számomra legalább 3 szempont lenne fontos az összehasonlításhoz:

1. A dokumentum sorszáma

2. A dokumentumban található adatok típusai (mivel több típusról van szó dokumentum sorszámonként, az 1. pontban olvasható sorszám ismétlődik)

3. A típusok mennyiségei

 

A cél az alábbi lenne: A dokumentum sorszáma alapján hasonlítsa össze a két táblát, emelje ki, amelyik csak az egyik táblában van, majd a "közös" sorszámúakat hasonlítsa össze az adatok típusai ill. mennyiségek alapján.

 

A lényeg ebben az számomra, hogy mivel ez rendszeresen fordul elő, és nagy mennyiségben, egyértelműen kizárja az ismétlődő, majd a 2. és 3. pontban leírtak alapján egyezőeket és az eltéréseket adja ki, hogy csak azokat kelljen manuálisan vizsgálni.

 

Várom segítségeteket, már régebb óta olvasgatok itt a fórumban, de sajnos még nem találtam megoldást a problémámra. Ha valaki esetleg felvenné velem a kapcsolatot, tudnék küldeni példát is.

 

Nagyon szépen köszönöm!

 

Üdv,

ExcelSOS

Fferi50 Creative Commons License 2016.08.22 0 0 29262

Szia!

 

A Piros ünnepnapokat vedd fel egy függőleges segédtáblába, ezután ebben a táblában megkeresheted, hogy ünnepnap volt-e amikor dolgozott valaki. Képlet kb. így néz ki:

=HA(ÉS(HA(HIBÁS(FKERES(nap;ünnepnaptábla;1;0));HAMIS();IGAZ());VAGY(mnap="N";mnap="É"));12;0)

 

Nap=az a cella, amely a konkrét dátumot tartalmazza, ünnepnaptábla= segédtábla az ünnepnapokkal, mnap pedig a dolgozó ahova írja a jelenlétet.

 

Üdv.

Előzmény: gkollar (29261)
gkollar Creative Commons License 2016.08.22 0 0 29261

Nem egészen erre gondoltam!  Tehát a sorokban vannak a nevek az oszlopokban a napok. Ha egy adott hónapban van ünnep nap akkor azt pirossal kitöltöm. Aki azon a napon dolgozik annak jár pótlék, amit egy másik táblázatba kell beírni. Tehát ha valakinek a beosztás tálában a piros ünnepnapon van  egy "N" (Nappal) vagy egy É (éjszaka) betűje, annak a másik táblázatban az ünnepi szolgálatnál jelenjen meg "12" ledolgozott óraszám.

Előzmény: Delila10 (29260)
Delila10 Creative Commons License 2016.08.22 0 0 29260

Például úgy, hogy szűröd az oszlopot színre, és a részösszeg függvénnyel összegzed a látható cellák tartalmát, vagy darabszámát, vagy amit akarsz. A függvényszám határozza meg az eredményt, erről a súgóban találsz felvilágosítást.

Előzmény: gkollar (29259)
gkollar Creative Commons License 2016.08.22 0 0 29259

Segíséget szeretnék kérni!

 

Hogy lehetne megoldani, hogy például a pirossal kitöltött cellák értékét kapjam. 

Konkrétan ünnep napon dolgozott, vagy nem.

 

Előrre is köszönöm a segítséget!

Delila10 Creative Commons License 2016.08.21 0 0 29258

Szívesen. :)

Előzmény: Johnnyman (29257)
Johnnyman Creative Commons License 2016.08.21 0 0 29257

Hurrá! Köszönöm. :)

 

Előzmény: Delila10 (29256)
Delila10 Creative Commons License 2016.08.21 0 0 29256

Töröld ki a szóközöknek látszó karaktereket a sorok elől, és a Tab billentyűvel lökd beljebb a sorokat az olvashatóság kedvéért.

Előzmény: Johnnyman (29255)
Johnnyman Creative Commons License 2016.08.21 0 0 29255

A Sub End között végig pirossal jelzi. Azon felül lehet, hogy nem jól csinálom, de nem történik semmi.

Előzmény: Delila10 (29253)
Delila10 Creative Commons License 2016.08.21 0 0 29254

Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Column = 1 Then
      Application.EnableEvents = False
      Range("C" & Range("C" & Target.Row).End(xlUp).Row).Copy Cells(Target.Row, 3)

      Rendez
      Application.EnableEvents = True
   End If
End Sub

 

Bemásoltam a régebbi hsz makróját, mert lusta voltam újra írni.

Előzmény: Delila10 (29253)
Delila10 Creative Commons License 2016.08.21 0 0 29253

Ezt tedd egy modulba.

 

Sub Rendez()

   Range("A2:O2000").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _

             xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _

             DataOption1:=xlSortTextAsNumbers

End Sub

 

A laphoz rendelt makróban a már említett sor fölött hívd meg ezt a makrót. Csak ennyit kell beírnod:

 

Rendez

Előzmény: Johnnyman (29252)
Johnnyman Creative Commons License 2016.08.21 0 0 29252

Private Sub Worksheet_Change(ByVal Target As Range)

     Select Case Target.Column

     Case 1          Range("A2:O2000").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _

             xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _

             DataOption1:=xlSortTextAsNumbers

     End Select

Előzmény: Delila10 (29251)
Delila10 Creative Commons License 2016.08.21 0 0 29251

Másold be ide a sorbarendezős makrót.

Előzmény: Johnnyman (29250)
Johnnyman Creative Commons License 2016.08.21 0 0 29250

A sorbarendezés makróm már megvan. Be is van írva. De az általad adott makró esetében nem viszi feljebb a C oszlop adatát.

Előzmény: Delila10 (29249)
Delila10 Creative Commons License 2016.08.21 0 0 29249

Makrórögzítéssel felveszed a sorbarendezést, majd az 

Application.EnableEvents=True sor fölé bemásolod a Sub és End Sub közötti részét.

Előzmény: Johnnyman (29248)
Johnnyman Creative Commons License 2016.08.21 0 0 29248

Köszönöm szépen. Tökéletes. Annyi módosítást lehetne kérni, hogy van egy makróm, ami az Excelt automatikusan sorba rendezi beírás közben, és azzal is működjön, mert így a C sort nem viszi automatikusan vele feljebb, ahogy rendeződik a sorszám, pedig a sorbarendezőben az be van állítva.

Előzmény: Delila10 (29247)
Delila10 Creative Commons License 2016.08.21 0 0 29247

Talán így:

 

Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Column = 1 Then
      Application.EnableEvents = False
      Range("C" & Range("C" & Target.Row).End(xlUp).Row).Copy Cells(Target.Row, 3)
      Application.EnableEvents = True
   End If
End Sub

Előzmény: Johnnyman (29246)
Johnnyman Creative Commons License 2016.08.21 0 0 29246

Bocsi. :( Pl. A1 és C1 kitöltött. C1-ben képhivatkozás van. A2 kitöltésre kerül, akkor C2-be másolja a C1 képszámot és a hozzá tartozó hivatkozást. Ezt csinálja most. Sorban egymás után.

De amit most nem tud és szeretnék  kérni, hogy ha pl. A3 nem kitöltött, az A4 kerül először kitöltésre, akkor a C4-be másolja a C2 értékeket, mint az C oszlopban szereplő utolsó kép és hivatkozás. Majd ha az A10 lesz kitöltött, akkor a C10-be másolja a C oszlop utolsó kitöltött értékét, esetünkben a C4-et.

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

nekem ez a kérdésfeltevés nem egyértelmű...

Előzmény: Johnnyman (29244)
Johnnyman Creative Commons License 2016.08.21 0 0 29244

Sziasztok! Az alábbi makrórészletben változtatásához szeretnék segítséget kérni. Jelenleg sorban egymást követő beírásra érvényes a makró, helyette azt szeretném, hogy ha bármennyi sor kimarad az A oszlopban, a C oszlop másolása akkor is működjön.

If Target.Column = 1 Then

        If Target.Value = "" Then

            Range("C" & Target.Row) = ""

        Else

            Range("C" & Target.Row - 1).Copy

            Range("C" & Target.Row).PasteSpecial xlPasteAll

        End If

        Application.CutCopyMode = False

    End If

Köszönöm.

 

Delila10 Creative Commons License 2016.08.20 0 0 29243

Szívesen. :)

Előzmény: Vax (29242)
Vax Creative Commons License 2016.08.19 0 0 29242

Köszönöm. :)

Előzmény: Delila10 (29241)
Delila10 Creative Commons License 2016.08.19 0 0 29241

Sub teszt()
   Dim AF As AutoFilter, F As Filter, i As Long

   Set AF = ActiveSheet.AutoFilter
   For i = 1 To AF.Filters.Count
      Set F = AF.Filters(i)
      If F.On Then MsgBox "Az AutoFilter " & i & ". oszlopában bekapcsolt szűrő, feltétel: '" & F.Criteria1 & "'"
   Next
End Sub

 

Msgbox helyett kiírathatod a füzetedbe is.

Előzmény: Vax (29240)
Vax Creative Commons License 2016.08.19 0 0 29240

Üdv.,

Hogy lehetne lekérdezni, hogy egy munkalapon az AutoSzűrőkben milyen kritérium van beállítva?

Köszönöm.

pimre Creative Commons License 2016.08.19 0 0 29239

Igen, ezért figyeli a program azt, hogy az AG oszlopban történt-e a módosítás (persze lehetne szűkíteni az 1-23. sorokra, de ezzel nem akartam pepecselni). És abból a feltételezésből indul ki, hogy ha abban az oszlopban módosítás történik, az befolyásolhatja az AG24-et. És mivel az AG24-ben megjelenő tartalom változását nem tudja vizsgálni, biztos, ami biztos, törli, és újra rajzolja a képet. Ha volt változás, akkor az újat, ha nem, akkor ugyanazt, ami eddig volt.

Előzmény: thomas5000 (29238)
thomas5000 Creative Commons License 2016.08.19 0 0 29238

Értem. AG1-től AJ23-ig kézzel töltöm ki a cellák tartalmát, szóval ott a változást érzékelné. (Függvény csak a 24. sorban van.)

A 24. sorban levő pedig tökéletesen működik, az általad írt makróval. 

Előzmény: pimre (29237)
pimre Creative Commons License 2016.08.19 0 0 29237

A 29230. hozzászólásban leírtam, hogy ez lehetetlen. Ha a cella képletet tartalmaz, akkor az Excel nem tekinti módosulásnak azt, hogy a képlet mást jelenít meg, mint előzőleg. Más szavakkal válaszd külön gondolatban a cella tartamát (a függvényt) és a cellában megjelenített látszólagos tartalmat.

 

Ha viszont a cella tartalmát írod át, az módosulás lenne, de akkor csak egyetlen lehetőség lenne a cella tartalma alakján a képet megjeleníteni, ha a hozzátartozó fénykép nevét írnád a cellába. De nyilván nem akarod.

Előzmény: thomas5000 (29235)
thomas5000 Creative Commons License 2016.08.19 0 0 29236

De mindegyik cella, csak saját magát figyelné, az teljesen mindegy, hogy  a többiben mi történik.

Előzmény: thomas5000 (29235)
thomas5000 Creative Commons License 2016.08.19 0 0 29235

Igazából arra gondoltam, hogy ha az AG1 cella érték változik, akkor az AG1 cellába beszúr egy képet. Ha az AG2 cella változik, akkor az AG2-be szúr be egy képet. Tehát ezek tök függetlenül működnének egymástól.

És ez egészen AG1-től AJ24-ig lenne érvényes minden egyes cellára mondjuk. Hogy ezt hogy lehetne megcsinálni? Erre gondoltam. 

 

Előzmény: pimre (29234)
pimre Creative Commons License 2016.08.18 0 0 29234

Az igazat megvallva nem igazán értem a kérdést. Inkább elmondom, melyik sor, mit csinál.

 

A három konstans sor az elején megadja a kép helyét, az oszlopot, amelyiket piszkálunk, és azt a cellát (célcella), amelyiknek a tartalmától függ a megjelenített kép, és amelyiknek a felső bal sarkához igazítjuk a képet.

 

Az If Target.Column = Range(celcella).Column Then sor arról gondoskodik, hogy csak a megadott oszlopban (AG ) történő változásokkal foglalkozzunk.

Most látom, hogy el is szúrtam, mert a céloszlop helyett a célcella oszlopát vizsgáltam. A kettő most egybeesik, így nem okoz hibát, de elvileg lehetne más. Ez a sor helyesen úgy nézne ki, hogy 

If Target.Column = Range(celoszlop & 1).Column Then

 

 

A következő néhány sor értelmét kommentben beírtam

 

A kép nevét megadó sor értelemszerű. Összefűzi a kép helyét a célcellában lévő névvel.

 

Ezután a with-el kezdődő rész beszúrja képet a helyére, és egyben megadja a kép tulajdonságait.  A bal sarkának meg a tetejének a helyét, valamint a magasságát és a szélességét,

 

De ha csak annyi a cél, hogy ne az AG24 legyen a célcella, akkor az elején lévő konstansot írd át.

 

Ha azt szeretnéd, hogy az AG1 is célcella legyen, akkor a programban az if és az End if közötti sorokat megduplázod, és a benne szereplő neveket (celcella és Kep) újra (pl. celcella2 és Kep2) cseréled. Az elején létrehozol még egy celcella2 nevű konstansot AG1-tartalommal. A kepneve változónév maradhat.

Előzmény: thomas5000 (29233)
thomas5000 Creative Commons License 2016.08.18 0 0 29233

Még egy olyan kérdésem lenne, hogyha ezt nem csak az AG24-es cellára szeretném, hanem mondjuk AG1-AG24-ig, tehát ha A1 változik, és olyan érték kerül oda, amilyen kép szerepel a mappába, akkor oda beillesztené. Ha pedig már volt ott kép, akkor ugyanígy törölné az előzőt. AG2-re szintén. Persze ezek tök függetlenek lennének egymástól. Mit kéne változtatnom? Ez csak az érdekesség kedvéért kérdezem, ami kellett nekem az már működik. 

Előzmény: pimre (29231)
thomas5000 Creative Commons License 2016.08.18 0 0 29232

Nagyon szépen köszönöm! Egy backslash hiányzott a végéről. Ne haragudj, hogy fárasztottalak.

 

Tökéletesen működik! Nem először húztál ki a bajból, örök hála. :)

Előzmény: pimre (29231)
pimre Creative Commons License 2016.08.18 0 0 29231

Időközben megnéztem, feltehetőleg mégsem a bővítmény hiánya okozza a bajt. Töröltem mindkettőt, mégis működik nálam a program.

Viszont  azt találtam, hogy ha hibásan adom meg a fájl nevét (vagy az elérési útját), akkor jelentkezik a hiba.

 

Próbáld meg a következőt: Amikor a program megáll a hibajelzéssel, akkor válaszd a debug-ot. (A hibás sort sárgán látod.)

 

Ekkor a VBA képernyőn menj be az immediate ablakba! (ha nem látható, akkor a fenti View menüpont alatt előzőleg jelöld be.)

 

Itt írd be a következőt: ?dir(kepneve), majd ha az Enter után nem jelenik meg semmi, akkor nem találta az adott helyen. Mert, ha megtalálta, akkor kiírja a nevet.

Ebben az esetben írd be, hogy ?kepneve, majd az Enter után megjelenő szöveget nézd meg, és keresd meg benne a hibát. Ha nem fér el a képernyőn, akkor a cursorral végig tudsz sétálni rajta. Lehet, hogy csak a könyvtár és a kép neve között hiányzik a backslash, vagy valami más apróság.

 

(Ha nem látod a hibát, akkor másold ki a sort ide, hátha tud valaki segíteni.)

 

 

Előzmény: pimre (29230)
pimre Creative Commons License 2016.08.18 0 0 29230

"...gyakorlatilag annyi kéne, hogy ha az AG24-es cella értéke változik..."

 

Ez is történik a programban, azzal a kis eltéréssel, hogy magának az AG24-nek a változását nem tudom érzékelni. Ugyanis ott egy képlet van, ami nem változik attól, hogy a képlet mást jelenít meg a cellában.

 

Worksheet_Change esemény alapesetben annak a cellának a változását vizsgálja, amelyikben az Enter-t lenyomva változást idéztél elő. A leírás szerint ez egy külső függvénnyel is megvalósítható, de ez itt nem jön szóba.

 

Ezért - mivel a leírásod szerint az AG3-AG23 cellákat töltöd fel, és ez okoz változást némi áttételeken keresztül az AG24-ben - azt vizsgálja a program, hogy változtattál-e valamit az AG oszlop bármelyik cellájában. Ha igen, akkor törli, majd újra kiteszi a képet, csak éppen ezt nem érzékeled, hiszen a másodperc egész kis törtrésze alatt következik be a törlés és az újrarakás.

 

A kép formátuma nem hinném, hogy gondot okozna.

 

Delilának meg köszönöm a segítséget. Ez magamtól nem ugrott volna be, és eltartott volna egy darabig, míg megtalálom a hiba okát. Ha egyáltalán:-)

Előzmény: thomas5000 (29228)
Delila10 Creative Commons License 2016.08.18 0 0 29229

Az Excel beállításainál, ott is a Bővítményeknél jelöld be a két Analysis kezdetű bővítményt.

Előzmény: thomas5000 (29228)
thomas5000 Creative Commons License 2016.08.18 0 0 29228

Köszönöm a választ!

 

Igen gyakorlatilag annyi kéne, hogy ha az AG24-es cella értéke változik, akkor az ehhez tartozó képet rakja oda, úgy, hogy az előzőt törölje.

 

Run-time-error '1004'-et ír. Valamit nem írtam át gondolom.

 

Azt írja: "Pictures osztály Insert tulajdonsága nem érhető le"

 

A .jpg-t átírtam .png-re , mert nekem az van. De gondolom nem ez a gond. 

 

Válaszod előre is köszönöm!

Előzmény: pimre (29227)
pimre Creative Commons License 2016.08.18 0 0 29227

A képhely megadásánál nálam is lemaradt a backslash. Lenyelte a fórummotor. A programban természetesen "C:\Képek" kell.

 

Előzmény: pimre (29226)
pimre Creative Commons License 2016.08.18 0 0 29226

A következő makrót szúrd be az adataidat tartalmazó munkalap kódterületére:

 

Option Explicit

Const kephelye As String = "C:Képek"

Const celoszlop = "AG"

Const celcella As String = "$AG$24"

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Kepneve As String

    If Target.Column = Range(celcella).Column Then ' Ha az AG oszlopot módosítjuk

        On Error Resume Next ' Ha nincs még kép, akkor átugorja a hibajelzést

        ActiveSheet.Shapes("Kep").Delete ' Az esetleg meglévő képet töröljük

        On Error GoTo 0

        Kepneve = kephelye & "" & Range(celcella).Value & ".jpg"

        With ActiveSheet.Pictures.Insert(Kepneve).ShapeRange

            .Name = "Kep"

            .Left = Range(celcella).Columns.Left

            .Top = Range(celcella).Rows.Top

            .Height = 13 ' A kép magassága

            .Width = 15 ' A kép szélessége

        End With

    End If

End Sub

 

- A három konstans sort módosíthatod a feladatnak megfelelően.

- A képek meglehetősen kicsik, ha mégis növelni szeretnéd a méretüket, akkor a magasság és a szélesség értéket tudod módosítani.

 Azt nem tudom pontosan, hogy mik a feltételei annak, hogy a képet megfelelőre kicsinyítse. Azt tapasztaltam saját képeimen, hogy a fekvő képeket jól tudja méretezni, állóképnél ez nem mindig sikerült

 

Egy-két dolgot nem tudom, hogy jól értelmeztem-e.

 

Az egyik, hogy az AG oszlopba írogatsz/módosítgatsz/feltöltesz adatokat, és ezek változásának függvényében módosul az AG24 cella tartalma. Ezért a program az AG oszlopban történő változásokat figyeli, egyéb oszlopokban történt változásokra nem reagál.

 

A másik, hogy a képnek a neve az AG24 cellában lévő adattól függ. Ha nem így van, akkor a kép nevének összeállítását végző sort kell javítanod.

A Kepneve = kephelye & "" & Range(celcella).Value & ".jpg" sorban a Range(celcella).Value & ".jpg" helyére írd azt a képletet, ami a kép nevét megadja.

Előzmény: thomas5000 (29225)
thomas5000 Creative Commons License 2016.08.18 0 0 29225

Azok egy mappában vannak. Mondjuk c:képek. Egy helyen van mind. 

Előzmény: pimre (29224)
pimre Creative Commons License 2016.08.17 0 0 29224

A beszúrandó kép helyét honnan tudjuk meg?

Előzmény: thomas5000 (29223)
thomas5000 Creative Commons License 2016.08.17 0 0 29223

Sziasztok! 

 

Van egy munkafüzetem. Azt szeretném elérni, hogy ha egy bizonyos szó kerül egy cellába, akkor rendeljen hozzá egy képet. Tehát abba a cellába szúrjon be egy 0.4 cm magas , és 0.5 cm széles képet.

 

Inkább leírom pontosan, hogy is néz ki. 

 

AG3-AG23-ig töltöm fel bizonyos nevekkel a cellákat. Csináltam egy segédtáblát. AM cellában van a név, AN cellában van hogy ez  a név hányszor szerepel AG3-AG23 tartományban. (sima darabteli függvény)

 

AG24-es cellában csináltam egy ilyen függvényt: =INDEX(AM5:AN6;HOL.VAN(MAX(AN5:AN6);AN5:AN6;0);1)

 

Tehát, ahogy töltöm fel a AG3-AG23-as tartományt, mindig változik, hogy ki a leggyakoribb. Azt szeretném elérni, hogy, amint változik ez a név, akkor az előzőhöz tartozó képet törölje, és az új névhez tartozó képet szúrja be.

 

Egy ilyen makróra lenne szükségem.  

 

Előre is köszönöm, ha tud valaki segíteni!

 

Vigh Tamás

Delila10 Creative Commons License 2016.08.17 0 0 29222

Hol sikerült visszaállítanod a kompatibilis üzemmódot? Vagy csak a másképp mentés hozott eredményt?

Előzmény: hohom (29218)
Johnnyman Creative Commons License 2016.08.17 0 0 29221

Működik. Köszönöm. :)

 

Egy más jellegű kérdés. Az F billentyűkhöz szeretnék makrót rögzíteni. Lehetséges valamennyinél, vagy nem? Mert eddig csak az F1 és az F12 billentyűhöz sikerült. Vagy az én készülékemben van a zavar?

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

Sub ugrás ()
   Range("M" & Rows.Count).End(xlUp).Activate

End Sub

(asszem)

Előzmény: Johnnyman (29219)
Johnnyman Creative Commons License 2016.08.17 0 0 29219

Sziasztok!

Segítséget kérnék, hogy az alábbi makróban az M oszlop utolsó kitöltött cellájára ugorjon, ne az M oszlop aktív sor cellájára.

Sub ugrás ()
Cells(ActiveCell.Row, "M").Activate

End Sub

Köszönöm.

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