Keresés

Részletes keresés

tbando Creative Commons License 2013.11.07 0 0 22942

Nem egészen világos elöttem, hogy hogy milyen szabály szerint írja át a vba a változók exlpliciten meghatározott típusát. Az alábbi példában a szorzás mindkét Dim-nél  overflow-t eredményez.  De amíg ehhez az elsőnél át kell írnia  Dim c#-t, addig a másodiknál meg változatlanul kell hagynia a c%-t. A kérdésem tehát, hogy milyen szabály szerint alakul a változók típusa?

 

Sub valttipus()


Dim a%, b%, c#
''Dim a#, b%, c%

 

a = 2: b = 20000

c = a * b

 

End Sub

   

Törölt nick Creative Commons License 2013.11.07 0 0 22941

Szerintem nem zavaró, inkább vicces :) Elképzelem, hogy mi lehet mögötte: egy lelkes ember, aki annyira bír lelkesedni, hogy minden mondat szinte kirobban belőle :))

Mivel olyan kort írunk, amikor az ember már a levelet indító megszólítás után sem meri kitenni a felkiáltójelet, nehogy sértőnek, agresszívnek, stb. tűnjön, a hsz-eid tulajdonképpen üdítő változatosságot jelentenek :)

Előzmény: hunterzsolt (22939)
Eredő Vektor Creative Commons License 2013.11.06 0 0 22940

Most arra inspiráltam, hogy a 22932 előtti hszeket elolvassam. Múltkor nem értettem, most már értem :)

Előzmény: hunterzsolt (22939)
hunterzsolt Creative Commons License 2013.11.06 0 0 22939

Lehet furcsa, de nálam ez már megszokás, beidegződés. Ígérem, ha ennyire zavaró, akkor majd odafigyelek, hogy mi kerüljön a mondat végére. 

Előzmény: Törölt nick (22932)
Delila10 Creative Commons License 2013.11.04 0 0 22938

Ez nem az én napom.:(

A D oszlopban nem az évszámot megadó képletek szerepeltek az előző képen.

 

Előzmény: Delila10 (22937)
Delila10 Creative Commons License 2013.11.04 0 0 22937

A képről lemaradt a képlet vége.

 

A G2 képlete: =DARABHATÖBB($B$2:$B$7;$F2;$D$2:$D$7;G$1)

Előzmény: Delila10 (22936)
Delila10 Creative Commons License 2013.11.04 0 0 22936

A 2007-es verziótól kezdve a darabhatöbb függvénnyel könnyen megoldható.

Előzmény: SvvR (22934)
Retro Image Creative Commons License 2013.11.04 0 0 22935

Pivottáblagyanús...

Előzmény: SvvR (22934)
SvvR Creative Commons License 2013.11.04 0 0 22934

Sziasztok!

 

 

Tudnátok segíteni abban, hogy képlettel meg tudom-e azt csinálni, hogy darabteli függvényt még szűröm dátumra is.

 

Az alaptáblám ez, de van kb. 15 munkalap, s mindegyiken van több adat (van ahol 100 sor is van):

 

Munka1

xxx    AB       2012.08.01

yyy    CD      2013.10.10

zzz    AB       2013.10.22

 

Munka2

xyz    CD      2013.11.02

 

 

 

Azt csináltam eddig, hogy Darabtelivel összeszámoltatttam egy összesítő munkalapra, hogy Munka1 B oszlopában van 2db AB, 1 CD.  De itt, így nem tudom, hogy mikor dátummal.

Így néz ki:              

                          AB            CD         EF 

Munka1               2               1          0

Munka2               0               1          0

Munka3

stb.

 

Azt szeretném kiíratni, hogy 2012-ben hány db AB van. (vagy épp 2013-ban)  Ezért ezt kellene még szűrni úgy, hogy dátumra is be tudjam állítani. Tehát ha azt adom meg, hogy 2012, akkor nem 2 AB lesz, hanem csak 1,mert a többi nem abban az évben volt.

Gyakoraltilag úgy kellene, mint egy Kimutatásnál, hogy ott a dátumra tudok szűrni, s akkro csak azt jeleníti meg. Csak képlettel vagy szűrővel.

 

 

Köszönöm

 

    

Sánta Kutya (SK) Creative Commons License 2013.11.04 0 0 22933

:-)))

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

Lemaradtak a felkiáltójelek!

 

Private Sub GépINF1_Click()!
sor = Application.Match(Me.Gépszám1, Range("C:C"), 0)!
      If VarType(sor) <> vbError Then!
             ActiveWorkbook.FollowHyperlink Cells(sor, "I").Hyperlinks(1).Address, NewWindow:=True!
      End If!
End Sub!

 

;-)

Előzmény: hunterzsolt (22931)
hunterzsolt Creative Commons License 2013.11.03 0 0 22931

Sikerűlt megoldanom a dolgot a következőképpen! Ha netán valakinek szüksége lenne rá:


Private Sub GépINF1_Click()
sor = Application.Match(Me.Gépszám1, Range("C:C"), 0)
      If VarType(sor) <> vbError Then
             ActiveWorkbook.FollowHyperlink Cells(sor, "I").Hyperlinks(1).Address, NewWindow:=True
      End If
End Sub

Remélem valakinek segítségére válik majd!

Előzmény: hunterzsolt (22930)
hunterzsolt Creative Commons License 2013.11.03 0 0 22930

Sziasztok! Sikerült elkjészíteni a táblázatomat, (hatalmas köszönet Delila10-nek)! Minden funció, amit akartam, működik rajta! Munkatársaim nagy örömére :) ! Volt viszont egy kérésük, hogy az adatok bevitelére egy ablakot lehetne-e használni? Elkezdtem Userformos "önoktatásomat" és sikerült megcsinálnom úgy, hogy az adatokat azon az ablakon keresztül lehessen bevinni! Viszont:

A táblázat fő tulajdonsága az, hogy bizonyos oszlopok sorainak kitöltésekor egy másik oszlopban megjelennek az adatok, a bevitt elemhez! Az adatok persze egy hivatkozás, amire rákattintva egy txt, vagy doc típusú file-t nyit meg! Szóval userformos ablakomon elhelyeztem 3 gombot és szeretném, ha az adatok bevitelekor a megjelent hivatkozások ezekkel a gombokkal megjeleníthetőek legyenek! Mindig az aktuális sor hivatkozásai!
Szóval, a gombhoz milyen parancssort kellene beírnom, hogy az adott oszlop utolsó kitöltött cellájában lévő adatot megnyissa?

 

tbando Creative Commons License 2013.11.03 0 0 22929

Én is köszönöm a korrekciót. Elsősorban azt, hogy a sor/oszlop long és nem integer. Mert az emiatti hiba korrekciójával biztos sokáig eltökölnék :)))). 

Előzmény: Törölt nick (22926)
roley Creative Commons License 2013.11.03 0 0 22928

Köszönöm a segitséget!!!!

Törölt nick Creative Commons License 2013.11.03 0 0 22927

Arra persze figyelni kell, hogy a Munka1 helyére a kívánt munkalap neve kerüljön. És nyilván lehet olyan eset, amikor azt akarjuk, hogy mindig az aktív munkalapon induljon a makró. Ilyenkor akkor a ThisWorkbook.Worksheets("Munka1") rész nem kell, tehát az eredeti megoldás részben jó.

De a "Set itt_van = ...." szerkezet használata továbbra is indokolt.

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

Ez a megoldás azért nem tökéletes, mert csak az aktív munkalapon működik, és ott is csak akkor, ha van rajta "XY" részértékű cella. Máskülönben hibára fut, és az nem mutat jól egy makróban. Helyette ajánlanám az alábbi megoldást. Kicsit többet kell hozzá gépelni, de cserébe nem fog csütörtököt mondani.

 

Dim itt_van As Range, sor As Long, oszlop As Long

Set itt_van = ThisWorkbook.Worksheets("Munka1").Cells.Find(What:="XY", After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)

If itt_van Is Nothing Then
    'nincs találat
Else
    sor = itt_van.Row
    oszlop = itt_van.Column
End If

Előzmény: roley (22924)
tbando Creative Commons License 2013.11.03 0 0 22925

a$ = ActiveCell.Address
b%= ActiveCell.Row
c %= ActiveCell.Column

 

Előzmény: roley (22924)
roley Creative Commons License 2013.11.03 0 0 22924

Sziasztok!

 

 

Hogyan tudom  makróban egy adott cellát megkeresni, majd az adott cella sorának értékét egy változóban eltárolni? A keresés még ok:

 

Cells.Find(What:="XY", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate

 

utána viszont az aktiv cellának a pozicióját (sor, oszlop) hogyan tudom egy változóba eltárolni.

 

 

Köszönöm a segitséget!!!

 

R

tbando Creative Commons License 2013.11.01 0 0 22923

Bizony így van. És ez nagy hibája az autószűrőnek. Mert azért úgy illene, hogy a 255 karakternél hosszabb stringekből is lássa az első 255 karaktert. De valamiért erre nem készítették fel.  Az írányitott szűrőnek azonban 32 ezer karakterig nincsenek ilyen korlátai. 

Előzmény: NeomatiK (22922)
NeomatiK Creative Commons License 2013.11.01 0 0 22922

Úgy tűnik én tévedtem a múltkor. Nem mindet jeleníti meg a szűrés kiválasztásához. Ezek szerint cellánként a max. 255 karaktereseket jelenti meg.

 

Valahogy többnek tűnhetett felsorolás a szűrőben a 2007-esben mint a 2002-esben, de nem. Pedig nem bántam volna, ha a 2007-esben nincs ez a korlát.

Előzmény: NeomatiK (22921)
NeomatiK Creative Commons License 2013.11.01 0 0 22921

Szia!

Meg fogom csinálni.

Előtte még megérdezem, hogy 1 cellában érvényes a 255 karakter vagy a szűrendő oszlopban az együttesre vonatkozik?

Előzmény: tbando (22899)
Sánta Kutya (SK) Creative Commons License 2013.10.31 0 0 22920

Ja, hogy te az e-mailre gondolsz! Bocsi, privinek a belső üzenőket szokták hívni.

Hát két eset van: vagy megjelenik a "küld" az adatlapon, vagy nem. Ha nem, akkor az illetőnek nem publikus az e-mail címe, meg kell kérni, hogy ő írjon neked. Egyébként ha ide beírod egy kicsit megbontva a címet, nem kockáztatsz sokkal többet, mint ha az adataidnál publikussá teszed a beállításokban.

 

Ha van küld, és mégis hiába kattintasz rá, akkor nincs jól beállítva a levelező azon a gépen, jobb egérgombbal lehet a címet kimásolni.

 

Vagy én nem értelek.

Előzmény: Delila10 (22919)
Delila10 Creative Commons License 2013.10.31 0 0 22919

Működött régebben, azóta is levelezek INNEN néhány fórumtaggal.

 

A hozzászólásban rákattintasz a fórumtárs nevére, feljön az adatlapja, ott egy "küld" szövegre kattintva már írhattad is a levelet. Most kattintgatgatok estig, nem történik semmi.

Előzmény: Sánta Kutya (SK) (22914)
Delila10 Creative Commons License 2013.10.31 0 0 22918

2003-ban csináltam, szépen beteszi, ahova kell.

Előzmény: tbando (22917)
tbando Creative Commons License 2013.10.31 0 0 22917

Ha nem is azonos vele, attól még transzponál. Illetve ami nagyobb baj: CSAK transzponál. Nálam legalábbis. Te hogy csinálod, hogy nálad ne transzponáljon a munkalapra kííratáskor? Mert fordítva, tehát a munkalapról vba tömbbe íratáshoz írt makródban nálam sem okozott gondot. 

 

 

Előzmény: Delila10 (22910)
tbando Creative Commons License 2013.10.31 0 0 22916

Szia!

 

Írod, hogy egyelőre még maradsz  az excel 2003-nál.  Ezért felteszem neked ide a 2003-asra írt HAHIB nevű HAHIBA analalógomat.  Jól jöhet a 2003-ban a különböző keresőfüggvények #HIÁNYZIK! stb hibáinak lekezeléséhez.  Használata   megegyezik a HAHIBA-éval.

 

A modult bővítményként célszerű telepíteni.

 

Function hahib(parancs, hibanal)

'Lekezeli a hibát; excel 2003-ra írt hahiba

 

On Error GoTo cimke

    If IsError(parancs) Then

        hahib = hibanal

    Else

         hahib = parancs

    End If

    Exit Function

cimke:

    Resume 0

 

End Function

Előzmény: pimre (22895)
hunterzsolt Creative Commons License 2013.10.31 0 0 22915

Feltöltöttem a datára és mellé egy txt file-ban azt, hogy mi lenne a 

célom! Remélem lehet valamit kezdeni vele!

 

http://data.hu/get/7082616/Desktop.rar

Előzmény: Delila10 (22911)
Sánta Kutya (SK) Creative Commons License 2013.10.31 0 0 22914

Szerintem ne jelezd, mert egy másik fórumra gondolhatsz. 13 és fél év fórumozáshoz és lassan 216 hozzászóláshoz közeledve én még nem találkoztam ilyesmivel.

Előzmény: Delila10 (22913)
Delila10 Creative Commons License 2013.10.31 0 0 22913

Eddig lehetett privátot küldeni. Most azt sem találom, hol kellene jelezni, hogy nem működik.

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

Miért, volt itt valaha ilyen szolgáltatás? :-O

Előzmény: Delila10 (22911)
Delila10 Creative Commons License 2013.10.31 0 0 22911

Adnék, ha működne a privi küldése. Itt nem akarom megadni nyilvánosan a címemet, így is nyakra-főre le kell tiltanom a beérkező reklámokat.

 

Később megint megpróbálom, hátha helyreáll ez a szolgáltatás.

Előzmény: hunterzsolt (22906)
Delila10 Creative Commons License 2013.10.31 0 0 22910

A transpose utasítás nem azonos a transzponálással.

Előzmény: tbando (22901)
tbando Creative Commons License 2013.10.31 0 0 22909

Korrigálom ezt az állitásomat:

 

Ha ennél hosszabb szövegeket akarsz szűrni, használd a special (írányított) szűrőt. Annak is van korlátja, de lényegesen magasabb.

 

Utána néztem. A 2007-es excel special szűrésének már nincs stringhosszúsági korlátja. Ahány karakter befér a cellába (max 32 ezervalamennyi), azokat mind látja a szűrésnél. A 2003-as excelben ehhez még trükközni kellett

Előzmény: tbando (22873)
pimre Creative Commons License 2013.10.30 0 0 22908

Igazad van, Delila tanácsát sikeresen félreértettem:-( Amit írsz, azzal tényleg működik.

Előzmény: tbando (22900)
pimre Creative Commons License 2013.10.30 0 0 22907

???

Előzmény: Sánta Kutya (SK) (22898)
hunterzsolt Creative Commons License 2013.10.30 0 0 22906

Inkább privátban küldeném! Adsz egy címet, vagy megtalálom valahol itt az oldalon?

Előzmény: Delila10 (22897)
hunterzsolt Creative Commons License 2013.10.30 0 0 22905

Rendben! Akkor holnap reggel átküldöm, és leírom, hogy mi is lenne a terv! Nem gondoltam, hogy ennyire bonyolult lesz az elkészítése ne haragudj! És köszönöm!

Előzmény: Delila10 (22897)
tbando Creative Commons License 2013.10.30 0 0 22904

Nagyon fincsi. Köszi.

 

 

Előzmény: Fferi50 (22903)
Fferi50 Creative Commons License 2013.10.30 0 0 22903

Szia!

 

Ha a tömb egy dimenziós és 9 elemű, akkor simán a következő az értékadás:

Range("M11:M19").value=tmb

 

Ez akkor működik, ha a tartomány sorainak és oszlopainak száma megegyezik a tömb dimenziójával.

 

Üdv.

Előzmény: tbando (22901)
Fferi50 Creative Commons License 2013.10.30 0 0 22902

Szia!

 

Neked és mindenkinek aki a tömbképlettel foglalkozott eddig:

 

A 2003-as azért nem tudja kezelni a teljes oszlopra vonatkozóan megadott 2007-es tömbképletet, mert a 2007-esben a sorok száma már nem 64 ezer x, 2010-ben több, mint 1 millió.

Ezt nem veszi be a 2003-as "gyenge gyomra".

 

Üdv.

Előzmény: pimre (22896)
tbando Creative Commons License 2013.10.30 0 0 22901

Megismételném 22867-es kérdésem.  Nem csak Delilának.   Ebben a sorban:   

 

Range("M11:M19")=Application.Transpose(tmb)

 

mire kéne kicserélni a transpose-t, hogy a tmb() tomb adatait ne transzponáltként vigye az m11:m19 cellákba?

tbando Creative Commons License 2013.10.30 0 0 22900

Szia! 

 

A magasabb verzióra bár érdemes áttérni, de a tömképletbeli problémád miatt felesleges. Ha Delila tanácsát nem értetted volna félre, akkor ezt már te is látnád. Delila nem az javasolta, hogy csak az első 7 sorba írd a tömbfüggvényt, hanem hogy a tömbfüggvényben vizsgálandó tartományokat precízen add meg. Tehát a 2003-as excelben  ez a képlet működik az 1-7 sorokra:

 

{=Max(HA(F1:F7=”aktív”;A1:A7))}

 

Éni is megnéztem a feltöltésedet  2007-tel.  Már az is konvertálta a #SZÁM! hibát. Amit a 2003-ban az okozhatott, hogy a 2003-as a tömbképleted az A:A, F:F hivatkozásokat nem tudta kezelni.

 

Előzmény: pimre (22895)
tbando Creative Commons License 2013.10.30 0 0 22899

Szia. Örülök, hogy át tudtad hidalni a stringhosszbeli problémát. Az viszont meglepett, hogy a 2007 füzetben nem tapasztaltad a 255 karakteres határt. Ugyanis 2007-es füzetben mértem ki a 255-t. Ezek szerint rosszul. Megcsinálnád a kedvemért, hogy csinálsz egy garantáltan hosszabb stringet, és megnézed, hogy listázza-e a 2007-es autószűrő? Aztán írd meg légyszí, hogy mit tapasztaltál.

Előzmény: NeomatiK (22884)
Sánta Kutya (SK) Creative Commons License 2013.10.30 0 0 22898

Nálam szépen muzsikál a 2000-es, nem kér támogatást. :-)

Előzmény: pimre (22895)
Delila10 Creative Commons License 2013.10.30 0 0 22897

Olyan sűrűn változtatsz a lap felépítésén, hogy nem tudlak követni.

 

Legjobb lenne, ha kitennéd a füzetet egy elérhető helyre publikus adatokkal, vagy elküldenéd priviben, de előbb goldold jól át, mit hol szeretnél megjeleníteni.

 

Előzmény: hunterzsolt (22893)
pimre Creative Commons License 2013.10.30 0 0 22896

Meg is van a hiba oka. A két verzió közti különbség okozta. Amikor a 2007-es alatt kompatibilis üzemmódban akarom menteni a fájlt, akkor a program figyelmeztető üzenetet küld: "A munkafüzetben lévő tömbképletek némelyike egy teljes oszlopra hivatkozik. Az Excel régebbi verziói ezeket a képleteket várhatóan #SZÁM! hibává fogják alakítani újraszámításkor."

 

Sajnos kénytelen leszek hamarosan áttérni, pedig nagyon nem szeretem a 2003 utáni verziókat:-(

Előzmény: pimre (22895)
pimre Creative Commons License 2013.10.30 0 0 22895

Ebben nagyon konzervatív vagyok. Még mindig a 2003-assal dolgozom. (Csak végső esetben, ha majd jövőre beszűntetik ennek is a támogatását az XP-vel együtt - ha jól tudom - akkor fogok áttérni). De hát a tömbfüggvényt a 2003-as is ismeri.

 

Viszont a kérdésed után kipróbáltam egy masik gépemen 2007-es változat alatt, és ott működik. Akkor most már csak azt kell tisztáznom magammal, hogy a két verzió közti különbség okozza-e a hibát, vagy az asztali gépemen a 2003-as valamelyik beállítása okoz gondot.

Előzmény: Fferi50 (22894)
Fferi50 Creative Commons License 2013.10.30 0 0 22894

Szia!

 

Milyen excel verziód van? Nálam 2010-en a kompatibilis üzemmódban megnyitva a #Szám!-ot azonnal átírja számra, amit dátumformátumosíthatok.

 

Üdv.

Előzmény: pimre (22892)
hunterzsolt Creative Commons License 2013.10.30 0 0 22893

Azt hittem így már egyszerűbb lesz, de ahogy az lenni szokott, tévedtem! A makró amit küldtél tökéletesen működik le a kalappal!
Úgy gondoltam, hogy ha mégegyszer bemásolom a makrót, de módosítom a célokat, úgy frankón működni fog ugyanazon a lapon! Hát nem! Szóval az amire kellett, hogy az adatokat egy másik munkalapról áthozza hivatkozással együtt, az működik, de én ugyanezen a lapon szeretném ezt még egyszer alkalmazni, csak más célterületre! 

Jelenleg: A D oszlopban változtatok, és a hozzá tartozó dokumentum megjelenik a H oszlopban!

Viszont nekem szükségem lenne arra, hogy a C oszlopban amit kiválasztok, az ahhoz tartozó dokumentumot ugyanúgy áthozza a másik "ADAT" munkalapról a G oszlopba! 

Ha a makrót bemásolom, akkor a keres kifejezésre hibát dob ki, de valószínűleg, ha ezt orvosolnám, akkor jönnének a többi hibák is! Van megoldása ennek! Ha igen, akkor milyen infora lenne szükség a segítségben?

Köszi előre is!

Előzmény: Delila10 (22887)
pimre Creative Commons License 2013.10.30 0 0 22892

De valami egyéb hiba kell, hogy legyen nálam. Ha az A és F oszlopokba számokat írok, és ehhez kötöm a tömbfüggvényt pl.: =MAX(HA(F:F=2;A:A)), akkor is #SZÁM! az egyes cellák értéke.

Előzmény: pimre (22891)
pimre Creative Commons License 2013.10.30 0 0 22891

Köszönöm. Ha jól értem, arra gondolsz, hogy - tekintettel arra, hogy az F oszlopnak csak az első 7 sorát töltöttem ki - csak az első 7 sorba írjam a tömbfüggvényt?

 

Kipróbáltam így is, sajnos változatlan eredménnyel. Kipróbáltam úgy is, hogy egy munkalapon csak az első néhány sort töltöttem ki, a tömbfüggvény nekem így sem működik a mintapéldámban megadott szerkezetű adatokkal:-(

 

Előzmény: Delila10 (22888)
hunterzsolt Creative Commons License 2013.10.30 0 0 22890

Oké, meglett a hiba és javítva! Most már minden ok! Köszönöm mindenkinek a sok segítséget! :)

Előzmény: hunterzsolt (22889)
hunterzsolt Creative Commons License 2013.10.30 0 0 22889

Köszi, működik, még pluszba kért egy End If sort,  de végül is összejött! A baj az, hogy így az előző dátumbeíráshoz használt makró csak akkor írja ki a dátumot, ha a cél mezőbe szerkesztek! Eddig úgy zajlott, hogy a soron belül bárhol változtatok, a dátum azonnal beíródik! Ahhoz is használok modul-t és thisworkbook-ot

Ez a munka1 makrója:

Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
Dim sorBeir As Integer, nev 'helyfoglalás a változókhoz
If Target.Column = 4 Then 'ha a bevitel oszlopa a B, akkor
nev = Target.Value 'a nev válztozó vegye fel a kiválasztott értéket
sorBeir = Target.Row 'a sorBeir változó vegye fel a beírás sorának a számát
Keres nev, sorBeir 'Meghívjuk a Keres makrót, átadva a nev és sorBeir változók aktuális értékét
If Target.Count > 1 Then _
MsgBox "Ha több cellát szerkesztesz egyszerre, nem működik.": Exit Sub
If Target.Column > 1 Then
Call AddDate_sh(Target.Row)
With ActiveSheet
If Application.WorksheetFunction.CountA(.Range(.Cells(Target.Row, "B"), _
.Cells(Target.Row, "G"))) = 0 Then Call RemoveDate_sh(Target.Row)
End With

End If

End If

End Sub

 

Ez a ThisWorkbook:

Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Call LockCells_sh

End Sub

Private Sub Workbook_Open()

Call LockCells_sh

End Sub

Ez a modul1 (az első makrómhoz):

Option Explicit

'made by RHCPgergo
'nagy.gergely1888@gmail.com

Sub LockCells_sh()

Dim Rng As Range

With Munka1
.Unprotect "jelszavam"
.Cells.Locked = False
For Each Rng In .Range("A1:A30")
If Rng.Value <> "" Then Rng.EntireRow.Locked = True
Next Rng
.EnableSelection = xlUnlockedCells
.Protect "jelszavam", UserInterfaceOnly:=True
End With

End Sub

Sub UnProtect_sh()
ActiveSheet.Unprotect "jelszavam"
End Sub

Sub AddDate_sh(MyRow As Long)
Munka1.Range("A" & MyRow).Value = Now
Columns(1).AutoFit
End Sub

Sub RemoveDate_sh(MyRow As Long)
Munka1.Range("A" & MyRow).Value = ""
End Sub

És ez, amit Te küldtél:

Sub Keres(nev, sorBeir)
Dim sor As Integer
sor = Application.WorksheetFunction.Match(nev, Sheets("Adatok").Columns(5), 0) 'Az Adat lap G oszlopában (6) meghatározza a nev változó sorát (a HOL.VAN függvény VBA-s megfelelője a Match)
Sheets("Adatok").Range("E" & sor).Copy Sheets("Munka1").Range("H" & sorBeir) 'másolás
End Sub

Ezeket használom jelenleg!

Előzmény: Delila10 (22887)
Delila10 Creative Commons License 2013.10.30 0 0 22888

NE teljes oszlopokra írd meg a tömbfüggvényt, hanem csak a kitöltött területekre. Akkor működik.

Előzmény: pimre (22886)
Delila10 Creative Commons License 2013.10.30 0 0 22887

Olyan aprók a karakterek, hogy nem sokat tudok kivenni belőlük, pl. nem látszik, hogy a feltételek melyik oszlopokra vonatkoznak.

 

Azért próbáld meg, hogy a 2. makróból az összes sort átteszed az első elejére, a másodikat pedig megszünteted.

Előzmény: hunterzsolt (22885)
pimre Creative Commons License 2013.10.30 0 0 22886

Hát akkor jobb híján megadom a tesztfájlt, hátha abból kiderítite, hogy mit bénázok el: http://data.hu/get/7079712/tombfuggveny_teszt.xls

 

Előzmény: tbando (22882)
hunterzsolt Creative Commons License 2013.10.30 0 0 22885

Sajnos nem tudom futtatni a makrót, mert már azonos "nevű" függvény van a szerkesztőben, ami megadja a sorbeírás dátumát!

Adok egy képet! Össze tudom rakni a 2 makrót, hogy egy "néven" szerepeljenek?

Előzmény: Delila10 (22866)
NeomatiK Creative Commons License 2013.10.30 0 0 22884

Köszi. Annyira nem érdekes, mert egy külön oszlopban van egy sorszám azonosítója, az alapján tudok szűrni. Csak ugyebár a sorszámból nem látom, hogy az mit takar. Emiatt lenne jobb a szöveg szerinti szűrés.

2007-es excelben megnyitva ugyenezt a munkafüzetet viszont nincs ilyen hiányosság. Nem tapasztalom, hogy 255 karakter lenne a korlát.

Előzmény: tbando (22873)
Fferi50 Creative Commons License 2013.10.29 0 0 22883

Szia!

 

Próbáld így beírni az F oszlopot:  ="Aktív" és ="Inaktív"

Szerintem akkor működik a képlet.

(Az A oszlopban valódi dátumértékek legyenek a beíráskor.)

 

Üdv.

Előzmény: pimre (22881)
tbando Creative Commons License 2013.10.29 0 0 22882

Szia!

 

Elképzelni sem tudom mi a probléma nálad. Most újra teszteltem a képletet dátumokkal, normál számokkal, és működik. A dátumokat beírtam stringnek is, de akkor 0-t ad eredményül és nem #SZÁM! hibát. A képlettel mindenféle hibát (#érték!, #név!), elő tudtam idézni, de #szám!-ot azt nem. Tehát elképzelni sem tudom, hogy nálad mi okozhatta. Talán a dátumok számformátuma nem megfelelő. Próbáld ki a képletetet normál számokkal is, ha azokkal működik, akkor nagy valószínűséggel a dátumfomádat nem szereti. Ha nem, akkor valami excelbeállítási probléma lehet. Nálam a Lotus kompatibilitás szokott időnként nem várt eredményhez vezetni. Lehet hogy nálad is van valami extremítás. Ha nem boldogulsz, küldd el priviben, hagy nézzem meg én is.

 

És végül: Van egy olyan gyanúm, hogy valamit egészen másképp csinálsz mint kéne. Ezt abból gondolom, hogy ezt írod:  "de valamennyi cellában #SZÁM! az érték, akár aktív, akár inaktív szó áll az F mezőben". Hol vannak ezek a valamennyi cellák? Amikor összesen  csak 1 cella értéke fűgg az F mezőbeli beírásoktól. A max képleté.

 

Előzmény: pimre (22880)
pimre Creative Commons License 2013.10.29 0 0 22881

Nem hosszú 1-re, hanem hosszú í-re. És nem megoldásogra, hanem megoldásodra (és nem osztogatnak, hanem fosztogatnak:-)))

Előzmény: pimre (22880)
pimre Creative Commons License 2013.10.29 0 0 22880

Akkor most egy pillanatra visszatérnék egy több mint 3 hete elhangzott megoldásogra, a tömbképletre.  Djmorphy 22505-ös kérdésére az =Max(ha(F:F=äktiv";A:A)) képletet javasoltad megoldásnak tömbképletként beírva.

Érdekelt a dolog, kipróbáltam, és nekem semmiképp sem akar összejönni. A tömbképlet rendben megjelenik {=MAX(HA(F:F="aktív";A:A))}, de valamennyi cellában #SZÁM! az érték, akár aktív, akár inaktív szó áll az F mezőben. Az A oszlopban dátumok vannak 2013.01.01, 2013.01.02 stb. formában, az F oszopban aktív, vagy inaktív, ügyelve a hosszú 1-re.

Ha a függvényből a MAX() részt elhagyom, akkor is ugyanez az eredmény.

 

Vajon ez miért nem működött nálam. Akkor nem akartam rögtön megzavarni a dolog megoldását a kérdésemmel, de azért továbbra is érdekel.

 

 

 

Előzmény: tbando (22507)
Sánta Kutya (SK) Creative Commons License 2013.10.29 0 0 22879

Ezt hívja Dale Carnegie mesterelmének, ezért érdemes ilyen fórumokban tagnak lenni.

Előzmény: tbando (22878)
tbando Creative Commons License 2013.10.29 0 0 22878

Pont jókor. A probléma a tripletek munkafűzeti és vba sorbarendezési különbsége  volt. 

 

A legszebb ebben a történetben, ahogy egymásra épültek a fejlemények. Ahogy tisztázódott. 

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

És én még el sem olvastam, mi volt a feladat, csak a tripletek rendezésénél kapcsolódtam be. :-)

Előzmény: tbando (22874)
tbando Creative Commons License 2013.10.29 0 0 22876

Valamit azonban nem értek ennél az autoszűrőnél. A 255 karakternél hosszabb stringeket is illene szűrnie az 1-255 karakter alapján. De nem teszi. Miért? Úgy dereng az írányított szűrőnél nem volt ilyen probléma.

Előzmény: tbando (22873)
Fferi50 Creative Commons License 2013.10.29 0 0 22875

Szia!

 

Benne van a VBA elején az Option utasítások között. Ugyanott van az Option Base is. Valamint a szöveghasonlító strcomp függvény magyarázata is hivatkozik rá.

Én sokkal izgalmasabbnak és újdonságnak találtam a magyar kettősbetűk ügyét.

 

Üdv.

Előzmény: Sánta Kutya (SK) (22871)
tbando Creative Commons License 2013.10.29 0 0 22874

Klassz! Máris megérte feltenni ide a problémát. 

Előzmény: pimre (22870)
tbando Creative Commons License 2013.10.29 0 0 22873

Az autószűrőnek van korlátja. 255 karaktert képes szűrni. (excel 2007)

 

Ha ennél hosszabb szövegeket akarsz szűrni, használd a special (írányított) szűrőt. Annak is van korlátja, de lényegesen magasabb. Hogy mennyi, arra nem emlékszem, de sok, több mint ezer. Arra viszont emlékszem, hogy nekem még annak a korlátját is túl lépve kellett szűrnöm (excel 2003-mal). meg is oldottam. De József feltett ide a fórumra  egy az enyéménél elegánsabb megoldást, ami szintén többezres stringeket volt képes szűrni. De megtalálni...... Talán ha olvassa, kedve lesz újra ismertetni. Ha nem és szűkséges lesz, megírhatom az én módszeremet. 

Előzmény: NeomatiK (22869)
pimre Creative Commons License 2013.10.29 0 0 22872

Ja és elfelejtettem itt a táblázatba betenni az összetett magyar betűket, de kipróbáltam, és az opció alkalmazásával azokat is a magyar ABC szerint rendezi, ahogy ezt megírtad.

Előzmény: Sánta Kutya (SK) (22868)
Sánta Kutya (SK) Creative Commons License 2013.10.29 0 0 22871

Ezt valahová fel kéne írni a topikkincstárba...

Előzmény: pimre (22870)
pimre Creative Commons License 2013.10.29 0 0 22870

Megtaláltam a megoldást a VBA-ban. Ha a modul elején elhelyezzük az Option Compare Text utasítást, akkor az adott nyelvi beállításokat veszi figyelembe. Ki is próbáltam ezt, és az alábbi táblázatban szedtem össze az eredmények közti különbséget:

 

Option Compare Text

nélkül rendezve            Option Compare Text használatával rendezve

Az                                      Az

Er                                       az

Iz                                        Áz

Ok                                      áz

Ut                                       Er

az                                       er

er                                        Ér

iz                                        ér

ok                                       Iz

ut                                        iz

Áz                                      Íz

Ér                                       íz

Íz                                        Ok

Ók                                      ok

Ön                                      Ók

Út                                       ók

Üt                                       Ön

áz                                       ön

ér                                        Őn

íz                                        őn

ók                                       Ut

ön                                       ut

út                                        Út

üt                                        út

Őn                                      Üt

őn                                       üt

Űt                                       Űt

űt                                        űt

 

Ez kicsit csúnyácska lett, de a lényeg látszik. Tehát az opció nélkül lefuttatva a nagybetűk előre kerültek, az á, é, í ó, ö, ú és ü utánuk, ezen belül is a nagy-, majd a kisbetűk, aztán az Ő és ő végül az ű és Ű. Az opció használatával csak a nagybetűk kerülnek a saját kisbetűs párjuk elé. 

Előzmény: Sánta Kutya (SK) (22868)
NeomatiK Creative Commons License 2013.10.29 0 0 22869

Sziasztok!

2002-es Excelben autószűrőt használok a mukalap oszlopaira. Az egyik oszlop celláiban (20 cella kb) elég sok szöveg van, van közte egyforma is és van különböző tartalmú is, kb 14 fajta van. A fönti szűrő gomb lenyílásakor azonban csak 6 szűrési lehetőség jelenik meg. Létezik, hogy van valami karakterbeli korlát? És emiatt nem listázza a többit?

Sánta Kutya (SK) Creative Commons License 2013.10.29 0 0 22868

:-)

 

Nem is olyan meglepő, hogy ezeket hátrébb sorolja, hisz így már másik betű. Ez az alapja az Excel sorbarendezésének.

 

Czanyik Katalin

Csabai Gyula

Pátzai Pál

Pátyi Lajos

 

Ezek Excellel ábécébe rendezett nevek. Tehát általában így előnyös. Néha meg nem. :-)

Előzmény: tbando (22865)
tbando Creative Commons License 2013.10.29 0 0 22867

Kösz. De a transpose mellé kérnék egy másik kíírási utasítást is. Olyat, amelyik nem transzponal. 

Előzmény: Delila10 (22859)
Delila10 Creative Commons License 2013.10.29 0 0 22866

Két makró szükséges hozzá. Az elsőt a Munka1 lapodhoz kell rendelned (ahogy az előzőnél).

 

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim sorBeir As Integer, nev  'helyfoglalás a változókhoz
    If Target.Column = 2 Then  'ha a bevitel oszlopa a B, akkor
        nev = Target.Value   'a nev válztozó vegye fel a kiválasztott értéket
        sorBeir = Target.Row  'a sorBeir változó vegye fel a beírás sorának a számát
        Keres nev, sorBeir  'Meghívjuk a Keres makrót, átadva a nev és sorBeir változók aktuális értékét
    End If
End Sub

A másodikat modulba tedd. VB szerkesztőben Insert | Module. A kapott üres lapra másold be:

 

Sub Keres(nev, sorBeir)
    Dim sor As Integer
    sor = Application.WorksheetFunction.Match(nev, Sheets("Adat").Columns(6), 0)  'Az Adat lap G oszlopában (6) meghatározza a nev változó sorát (a HOL.VAN függvény VBA-s megfelelője a Match)
    Sheets("Adat").Range("G" & sor).Copy Sheets("Munka1").Range("G" & sorBeir) 'másolás
End Sub

Az első figyeli a Munka1 lapon történt változásokat. Mikor a B oszlopban kiválasztasz egy adatot az érvényesítésből, akkor a változás értékét (a megadott adatot), és a változtatás sorát átadja a modulba írt makrónak. Erre azért van szükség, mert az egyes lapokhoz rendelt makrók csk a saját lapjukon tudnak dolgozni.

 

Előzmény: hunterzsolt (22863)
tbando Creative Commons License 2013.10.29 0 0 22865

SK! Megemelem elötted a kalapom. A munkafüzeten alkalmazott < reláció a magyar abc szerinti müködik, míg a vba-é az angol szerint.  Amint az a berakott táblázaton is látható, csak a magyar kettős betüknél borult a reláció. Nagy meglátás volt! Elismerésem.

 

(A táblázat elég nagy, ha a fórummotor nem fogadná felteszem egy elérhető tárhelyre)

 

Előzmény: Sánta Kutya (SK) (22857)
pimre Creative Commons License 2013.10.29 0 0 22864

A függvényként való működtetésnél egyszerűen a tömb nevét adom át paraméterként:

 

Dim tömb(elemszám) ' vagy ReDim tömb(elemszám)

 

' tömb feltöltés

 

Call quicksort(tömb) 

 

A stringgel kapcsolatos hiba okára nincs ötletem. Én is megnéztem, és nálam is jó volt a sorrend, de ellenőrzéskor hibásnak jelezte az Excel az általad megadott párokat.

 

Viszont, amikor kipróbáltam ezek rendezését, és találtam egy hibát a programban. Ugyanis az elmúlt évtizedekben eddig kizárólag számokkal használtam az algoritmust, így két változót hibásan numerikusnak (Double) deklaráltam Variant helyett. Az érintett sor helyesen: Dim aktelem As Variant, segédvált As Variant. De ezt Te nyilván korrigáltad, hiszen lefutott nálad a program a stringekkel.

 

 

Előzmény: tbando (22851)
hunterzsolt Creative Commons License 2013.10.29 0 0 22863

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim sor As Integer
If Target.Column = 4 Then
sor = Application.WorksheetFunction.Match(Target, Columns(8), 0)
Cells(sor, 9).Copy Cells(Target.Row, 4)
End If
End Sub

Megpróbáltam, töröltem a Selection-t, beírtam a lapnevet, de nem történik semmi! 
A Munka1 fülön a G oszlopba kellene, hogy betegye a másolatot az Adat fül G oszlopából! Egyébként a Munka1 fül C oszlopában listázom ki az Adat fül F oszlop adatait, amiből választok! 

Egy részletes magyarázatot tudnál adni a kód sorairól, hogy ha itt és itt változtatok, akkor mi történik, csak, hogy több helyen is tudjam ezt alkalmazni, és a jelenlegi funkciójára is rá tudjam bírni?

Előzmény: Delila10 (22862)
Delila10 Creative Commons License 2013.10.29 0 0 22862

A makró címéből vedd ki a Selection-t.

Add meg a füzet nevét, és a lapnevet, ahonnan másolni akarsz.

Előzmény: hunterzsolt (22860)
hunterzsolt Creative Commons License 2013.10.29 0 0 22861

 Ez lemaradt! :)

Előzmény: hunterzsolt (22860)
hunterzsolt Creative Commons License 2013.10.29 0 0 22860

Köszönöm Delila10 a kódot! Működik bár nem teljesen úgy, ahogy szeretném mert a B oszlopba, ha üres mezőre kattintok, hogy kilistázza választási lehetőséget, hibát ír ki! Ezt ki lehet valahogy küszöbölni? 
Úgy működik az egész, hogy a B oszlopban kilistázza a tételt én kiválasztom az egyiket és a D sorban a hozzá rendelt ajánlat megjelenik.
Jelenleg a hibánál, ha a stopra kattintok, majd újra a cellára, úgy már megjelenik az amire szükségem van!
Még egy kérdés: Mivel ez a táblázat, amikről a képeket készítem csak szemléltetésnek van így a valós táblázatom nem teljesen így nézne ki! Meg lehet ezzel a kóddal (valamelyik sor/sorok módosításával) azt oldani, hogy a cellákat egy másik munkafüzet lapjáról másolja be?

Előzmény: Delila10 (22846)
Delila10 Creative Commons License 2013.10.29 0 0 22859

Range("M11:M19")=Application.Transpose(tmb)

Előzmény: tbando (22852)
Sánta Kutya (SK) Creative Commons License 2013.10.29 0 0 22858

Bocsánat, ez valószínűleg nem az Excel verziójától függ ilyenkor (főleg makróban), hanem a locale beállításaitól. Mi van, ha a vezérlőpultban full angolra állítasz minden nyelvi-területi beállítást?

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

Próbáld ki angol Excellel is. Az a vakmerő elképzelésem támadt, hogy esetleg a te verziód felismeri a mindegyik párban látható kétjegyű magyar mássalhangzókat, de valamiért az ábécé végére sorolja.

Előzmény: tbando (22855)
tbando Creative Commons License 2013.10.29 0 0 22856

Na persze a data.hu link lemaradt. Természetesen :((((

 

Letöltőlink : http://data.hu/get/7076944/kisebb.xlsx 

Előzmény: tbando (22855)
tbando Creative Commons License 2013.10.29 0 0 22855

Szia!

 

Úgy néz ki igazad van. Az 5000 tripletpárból 35-nél a bináris és a szöveges összehasonlítás valószinűleg eltérő eredményt ad.  De most mennyivel vagyunk előbbre azzal, hogy ezt megállapítottuk?  Gyakorlatilag semmivel. Mert ettől még teljesen érthetetlen, hogy ezeknél a textuális miért ad más eredményt mint a normális bináris? A többi meg a helyes relációt mutatja, mind textuálisan, mind binárisan.

 

Egyáltalán: mi az hogy bináris és mi az hogy szöveges összehasonlítás. A vbUse CompareOption-ról már nem is beszélve, mert azt meg nem is volt hajlandó végrehajtani.

 

A CSX-CTA triplet párt  vizsgálva az derült ki, hogy a CS párosítás gázos. Ugyanis a CS nem csak a CT-nél nagyobb, de T utáni többi betűs párosításnál is  (lásd az ábrát).  És ilyen gázos stringpárból még 34 akadt, de a résztvevő karakterek gyakoriságából semmi féle tendencia nem rajzolódik ki.

 

A gázos tripletpárokat felraktam a data.hu-ra. Hátha valakinek mondanak valamit.  

 

 

Előzmény: Fferi50 (22854)
Fferi50 Creative Commons License 2013.10.28 0 0 22854

Szia!

 

Szerintem az összehasonlítási módtól függ, hogy melyiket látja nagyobbnak. Nézd meg az strcomp függvénnyel és látni fogod a különbséget.

Hogy miért van így azt "Redmondtól" kellene megkérdezni....

 

Üdv.

Előzmény: tbando (22851)
Sánta Kutya (SK) Creative Commons License 2013.10.28 0 0 22853

2000-ben jó a sorrend.

Előzmény: tbando (22851)
tbando Creative Commons License 2013.10.28 0 0 22852

Kösz ezt a makrót!

 

Sub tmbinput1()
'Dim tmb(8)
tmb = Application.transpose(Range("h11:h19"))

End Sub

 

 

A kérdésem most az, hogy van-e ennek inverze? Tehát hogy tmb tömböt másolja be munkafüzet range-be ciklus nélkül?

Előzmény: Delila10 (22782)
tbando Creative Commons License 2013.10.28 0 0 22851

Hát gratulálok!

 

Ott kezdeném, hogy már a buborékkal is nagyon meg voltam elégedve, mert még az 1000 elemű tömböt is 1 mp alatt sorbarendezte. A 10.000 elemü tesztömböt már észrevehetően lassabban, 14 mp alatt. (Megjegyzem, sok esetben még ez is elfogadható.)

 

A quicksortod azonban itt már mellbevágóan gyorsabb volt. 1 mp-n belül abszolválta a 10.000 string sorbarendezését.  Szóval ismételten gratulálok. Majd tanulmányozom, hogy miként és hogyan müködik.

 

Annyiban azonban segítsél  légyszí, hogy hogyan kell függvényként müködtetni. Mert úgy nem tudtam. Ezért a teszthez átírtam subrutinnak. De érdekelne, hogyan használod függvényként. Honnan töltödik fel az adattömb, melyik parancs írja ki a munkalapra, ha egyáltalán vmi kiírja???

 

És végül egy rejtély. Lecsekkoltam a sorbarendezést, hogy hibamentes-e. ÉS a legnagyobb meglepetésemre 35 esetben Hamis-nak jelezte a következő>előző relációt.  Megnéztem egy párat, de azok mind megfeleltek az abc szerinti sorbarendezésnek. Az excel azonban valamiért kisebbnek látta a következőt mint az előzőt. Ide teszek pár ilyet:

 

CSX-CTA, CZS-CZV, DDZ-DEK

 

Ezeknél miért látja az excel  a másodikat kisebbnek? Van valakinek vmi ötlete? 

 

Az excellel lehet valami gubanc, és nem az ÉN excelemmel, mert megnéztem egy másik gépen is, excel 2003-mal. De az is hibásnak jelezte a nagyobb relációt ezeknél triplet pároknál. Nagybetűsen is, kisbetűsen is.

 

Előzmény: pimre (22849)
tbando Creative Commons License 2013.10.28 0 0 22850

Nagyon köszönöm. Majd beszámolok, hogy nálam hogy szerepelt.

Előzmény: pimre (22849)
pimre Creative Commons License 2013.10.28 0 0 22849

Azért csak elküldöm a saját quicksort változatomat, hátha megkönnyíti a dolgodat:

 

Function quicksort(adattömb)  ' Quicksort egydimenziós tömbbel

Dim i As Integer, sp As Integer, s1 As Integer, s2 As Integer, l1 As Integer, l2 As Integer

Dim aktelem As Double, segédvált As Double

Dim st1(15) As Integer, st2(15) As Integer

sp = 1

st1(sp) = 1

st2(sp) = UBound(adattömb)

Do While sp > 0 ' 1. ciklus

    s1 = st1(sp)

    s2 = st2(sp)

    sp = sp - 1

    Do While s2 > s1 ' 2. ciklus (Ha egy elemű a tömb, akkor el sem kezdi)

        l1 = s1

        l2 = s2

        i = (s1 + s2) / 2

        aktelem = adattömb(i) ' ez azért kell, mert elmozdulhat a helyéről ez az elem

        Do While l1 <= l2

            Do While adattömb(l1) < aktelem And l1 < s2

                l1 = l1 + 1

            Loop

            Do While adattömb(l2) > aktelem And l2 > s1

                l2 = l2 - 1

            Loop

            If l1 <= l2 Then

                segédvált = adattömb(l1)

                adattömb(l1) = adattömb(l2)

                adattömb(l2) = segédvált

                l1 = l1 + 1

                l2 = l2 - 1

            End If

        Loop

        If s2 - l1 <= l2 - s1 Then

            If s1 < l2 Then

                sp = sp + 1

                st1(sp) = s1

                st2(sp) = l2

            End If

            s1 = l1

        Else

            If l1 < s2 Then

                sp = sp + 1

                st1(sp) = l1

                st2(sp) = s2

            End If

            s2 = l2

        End If

    Loop

Loop

End Function

Előzmény: tbando (22847)
tbando Creative Commons License 2013.10.28 0 0 22848

Ha jól értem, hogy mit akarsz, akkor az A oszloppal nem kell törődnőd. A B-oszlopra meg jó lehet egy DARABTELI.

Előzmény: djmorphy (22840)
tbando Creative Commons License 2013.10.28 0 0 22847

Szia!

 

Kösz a buborék ötletet. Kipróbálom. Quicksort algoritmust is találtam a neten. Azt is megnézzem. Ha elakadok, jelentkezem.

Előzmény: pimre (22842)
Delila10 Creative Commons License 2013.10.28 0 0 22846

A lapodhoz kell rendelned a makrót. Lapfülön jobb klikk, kód megjelenítése. Bejutottál a VB szerkesztőbe. A jobb oldali üres mezőbe másold be.

 

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim sor As Integer
    If Target.Column = 2 Then
        sor = Application.WorksheetFunction.Match(Target, Columns(8), 0)
        Cells(sor, 9).Copy Cells(Target.Row, 4)
    End If
End Sub

Mikor a B oszlopban rákattintasz egy termékre, a D oszlopba beírja a hivatkozását.

Előzmény: hunterzsolt (22845)
hunterzsolt Creative Commons License 2013.10.28 0 0 22845

A terméket listázva érvényesítéssel a H oszlopból veszem, az I oszlopban pedig a .doc file-ok hivatkozásai vannak, amiket szeretnék megjeleníteni a termék kiválasztásakor a D oszlopban

Előzmény: hunterzsolt (22844)
hunterzsolt Creative Commons License 2013.10.28 0 0 22844

A merevlemez egyik mappájából! Mindegyiknek van egy-egy .doc kiterjesztésű fájlja.

Előzmény: Delila10 (22843)
Delila10 Creative Commons License 2013.10.28 0 0 22843

Ehhez tudni kellene, honnan "hivatkozod be" a terméket.

Előzmény: hunterzsolt (22839)
pimre Creative Commons License 2013.10.28 0 0 22842

Szerintem van megoldás. A rendezésre a létező legegyszerűbb algoritmus a buborék rendezés: http://hu.wikipedia.org/wiki/Bubor%C3%A9krendez%C3%A9s

 

Az algoritmus szerintem pár perces munkával megírható excel makróban. 

 

Ha az eredmény nem lenne elegendően gyors, akkor esetleg meg tudok írni egy programot a quicksort algoritmussal, amelyik nagyságrendekkel kevesebb lépésből rendez. Csak az kicsit összetettebb.

Előzmény: tbando (22816)
Delila10 Creative Commons License 2013.10.28 0 0 22841

Számomra nem derül ki, hogy a termékeknek az árát, vagy darabszámát kell összegezned. Ettől a feltételtől függően a darabhatöbb, vagy a szumhatöbb függvényeket nézd meg.

Előzmény: djmorphy (22840)
djmorphy Creative Commons License 2013.10.28 0 0 22840

Sziasztok!Megint segítséget szeretnék kérni. Azt hittem most menni fog de mégis feladta a leckét :D
A oszlopban 201300001-től sorfolytonosan növekvő számok vannak. B oszlopban pedig van egy dátum(mikor scannelték be).Az a lényeg hogy kapok egy papírt hogy 201300001-től 201300020-ig A termék 20 és 50 között B termék 51 és 78 között A termék stb. Ezt kellene szummáznom termékenként.Hogy lehetne ezt megvalósítani? Valami olyasmibe gondolkozok hogy a C oszlopba írja, hogy "A termék", "B termék" mert azt már tudom szummázni. Fkeressel akartam de az nem jó erre szerintem. Milyen irányba kellene keresgélnem?

hunterzsolt Creative Commons License 2013.10.28 0 0 22839

Szóval azt szeretném elérni, hogy a "B" oszlopban a termék kiválasztásakor a "D" oszlopban megjelenjen a hozzá tartozó hivatkozás! Ebben kérném a segítséget! FKERES megoldást használok jelenleg! Köszi a segítséget!

Törölt nick Creative Commons License 2013.10.28 0 0 22838

Amúgy melékesen nekiálltam kigyomlálni a select utasításokat. Ugrásszerüen megnőtt a program sebessége.

Előzmény: Fferi50 (22835)
hunterzsolt Creative Commons License 2013.10.28 0 0 22837

Sziasztok! Felvettem egy másik munkalapra, 2 egymás melletti oszlobba tettem az értékeket, de az egyik oszlopban hivatkozások vannak, amiket szeretnék kiválasztani /.doc/! FKERES fügvénnyel viszont csak a hivatkozás nevét tudom megjeleníteni ami így nekem nem jó! Hogyan tudnám megtenni azt, hogy a hivatkozással együtt beillessze az adott cellába?

Előzmény: Sánta Kutya (SK) (22830)
Törölt nick Creative Commons License 2013.10.28 0 0 22836

Szia!

 

A select azért nem segített, mert nem volt képernyő fissítés előtte.

Persze, hogy segítséged hasznos volt. Elkezdtem gondolkodni a probléma megoldásán.

Köszi.

 

Gavriel.

Előzmény: Fferi50 (22835)
Fferi50 Creative Commons License 2013.10.28 0 0 22835

Szia!

 

Az excel mindig megjegyzi az utolsó select celláját/celláit és oda pozicionál, ha a lapra lépsz. Ez nem változóban van, az excel sajátossága. Úgy tudod megváltoztatni, hogy újabb cellát jelölsz ki, amire a select utasítás szolgál. Nem azt írtuk, hogy soha nem lehet a selectet használni, csak azt, hogy feleslegesen nem szabad.

A munkalap utolsó sorát többféleképpen is megtalálhatod. Én többnyire ezt szoktam használni az utolsó üres cella megtalálására:

range("A65000").end(xlup).select az aktív munkalap A oszlopának utolsó nem üres cellájára viszi a cursort és az látszik az ablakban.

A select utasítás csak az aktív munkalapon működik.

 

Remélem, tudtam segíteni.

 

Üdv.

 

Előzmény: Törölt nick (22833)
Törölt nick Creative Commons License 2013.10.28 0 0 22834

Közben megtaláltam a megoldást. Megfelelő helyen bekapcsoltam a képernyő frissitést és a kivánt cellába pozicionáltam. Ezután minden tábla betöltesekor a tábla vége látható a képernyő közepén.

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

A probléma okát megtaláltam, csak a kiküszöbölését nem.

Egy korábbi fázisban kiadtam a következő parancsot:

 

Selection.SpecialCells(xlCellTypeLastCell).Select

 

Ez rendben is van csak, hogy a megtalált sort valamilyen VBA változóban megjegyzi ezért minden egyes áttöltés után a lapot oda pozicionálja. Na ezt az előttem ismeretlen változók kellene átírni egy általam definiált sorszámra.

Előzmény: Fferi50 (22819)
Sánta Kutya (SK) Creative Commons License 2013.10.28 0 0 22832

Azt írtam, hogy én kevésbé szeretem, nem azt, hogy baj van vele. Nekem az indexholvan rugalmasabb, és egyáltalán nem kell a rendezettséggel törődni.

Előzmény: Eredő Vektor (22831)
Eredő Vektor Creative Commons License 2013.10.27 0 0 22831
Mi a baj az fkeressel? Tökéletes.
nem kell sorbarendezettnek lenni - ez csak bizonyos esetekben igaz
Előzmény: Sánta Kutya (SK) (22830)
Sánta Kutya (SK) Creative Commons License 2013.10.27 0 0 22830

Egy másik munkalapon vedd el a termékeket és az árakat, és utána vagy az INDEX(HOL.VAN()) összetett függvény megoldja a munkát.

FKERES függvényt is szoktak ajánlani ilyesmire, amit én kevésbé szeretek, ott csak arra kell figyelni, hogy az árlista ábécében legyen.

Előzmény: hunterzsolt (22829)
hunterzsolt Creative Commons License 2013.10.27 0 0 22829

 Melléklet :)

 

Előzmény: hunterzsolt (22828)
hunterzsolt Creative Commons License 2013.10.27 0 0 22828

Újra itt! Remélem túlzottan nem fárasztalak le titeket, de a segítségre szükségem van! Melléletben szereplő dolgot szeretném úgy megcsinálni, hogy az "A" oszlopban egy listából kiválasztom mondjuk az "almá"-t, és ahogy ezt megtettem, a "D" oszlopban egyből megjelenjen az ára! Szóval valahogy összerendelni a két dolgot! Hogyan tudnám ezt elérni? 

Fferi50 Creative Commons License 2013.10.27 0 0 22827

Szia!

 

Nekem azt hiszem, elég lesz, ha csak a beágyazott makrót küldöd el, illetve a meghívás előtti és a meghívás utáni sort. A konkrétumokat maszkold ki benne (pl. amit keresel, csak jelezd).

Ha problémám lesz, megbeszéljük priviben.

 

Üdv.

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

Húha. Ezen el kell gondolkodnom mert be van ágyazva más makrók közé.

Előzmény: Fferi50 (22819)
hunterzsolt Creative Commons License 2013.10.27 0 0 22825

Köszi! Nem tudtam, hogy hol kell, de már megvan! Elkezdtem újra csinálni az egészet, de be is fejeztem, mert így sikerült szerkeszthetővé tennem! Köszi!

Előzmény: tbando (22824)
tbando Creative Commons License 2013.10.27 0 0 22824

Szerintem a továbbfejlesztés idejére fel kéne oldani a Lapvédelmet.  

Előzmény: hunterzsolt (22823)
hunterzsolt Creative Commons License 2013.10.27 0 0 22823

bocsánat, igazad van! Nem xlsx, hanem xlsm a kiterjesztése, de sajnos nem tudom újra szerkeszteni, vagyis tovább folytatni benne a munkát! Csak az eddig beállított dolgokat tudom elvégezni benne

 

Előzmény: tbando (22821)
tbando Creative Commons License 2013.10.27 0 0 22822

Igazad van. Az rhcp link gazdája csinált is rá egy makrót. De nem hinném, hogy használja.

Előzmény: Delila10 (22818)
tbando Creative Commons License 2013.10.27 0 0 22821

Ha valóban xlsx, akkor az sajnos nem makróbarát :(((.

Előzmény: hunterzsolt (22820)
hunterzsolt Creative Commons License 2013.10.27 0 0 22820

Sziasztok!

Sikerültek a műveletek, pl: csak választani lehet a listából és beírni nem, és makróval megoldani a dátumkiírást! El is mentettem egy xlsx formátumba, ami makróbarát, de most hogy megnyitnám és szerkeszteném tovább, nem enged semmit se csinálni! Vagyis csak nagyon kevés funkciót! Ez miért van? Pedig még nincs levédve sem! Jó lenne, mert nem szeretném, hogy elvesszenek a dolgok! Please, somebody help meeee! :)

Fferi50 Creative Commons License 2013.10.27 0 0 22819

Szia!

 

Ha elküldöd priviben a kódodnak azt a részét, ami után a táblázat végére kell állnia, szívesen segítek.

 

Üdv.

Előzmény: Törölt nick (22800)
Delila10 Creative Commons License 2013.10.27 0 0 22818

"a stringek abc-be rendezése nem oldható meg a munkafüzet használata nélkül"

Ezt nem mondtam. Attól, hogy én nem ismerem, más még megoldhatja. :)

Előzmény: tbando (22816)
tbando Creative Commons License 2013.10.27 0 0 22817

:))))))

 

Ennél azért lehetne valamivel egyszerübben is: az első 8 karakter ascii kódjaival....

 

Maradok a munkalapos megoldásnál.

Előzmény: Törölt nick (22812)
tbando Creative Commons License 2013.10.27 0 0 22816

Kösz a választ! Amiből számomra igazolódott, hogy sajnos a stringek abc-be rendezése nem oldható meg a munkafüzet használata nélkül. Pedig reméltem, hogy lesz valamiféle munkafüzet nélküli  megoldás a Novekvo és a Csokkeno tömbök létrehozására,  hasonlatosan a numerikus adatokhoz, amelyeknél ez elérhető a large és small parancsokkal.  

Előzmény: Delila10 (22815)
Delila10 Creative Commons License 2013.10.27 0 0 22815

Lehet, hogy nem erre a megoldásra számítasz. A makrót régebben Micu írta a Prog.hu-n.

 

 

Az A1:A10 tartományt beviszi az eredeti tömbbe. Rendezéssel előállít egy novekvo, és egy csokkeno tömböt, amiknek az egyes tagjait le lehet kérdezni, ki lehet íratni. A tartományba az eredeti tömböt írja vissza.

 

Sub tömb_rendez()
    eredeti = Application.Transpose(Range("A1:A10"))
    
    Range("A1:A10").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    novekvo = Application.Transpose(Range("A1:A10"))
    Range("M1:M10") = Application.Transpose(novekvo)
    
    'Összefőzés kiíráshoz
    For i = 1 To 10
        kiiras = Join(novekvo, vbCrLf)
    Next
    MsgBox kiiras
    MsgBox "A 'novekvo' tömb 6. értéke: " & novekvo(6)
    
    Range("A1:A10").Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    csokkeno = Application.Transpose(Range("A1:A10"))

    Range("A1:A10") = Application.Transpose(eredeti)
    Range("N1:N10") = Application.Transpose(csokkeno)
End Sub

Előzmény: tbando (22808)
hunterzsolt Creative Commons License 2013.10.27 0 0 22814

Na most olvasgatok a kapott linkről és pár oldalt a makrók használatáról! Úgyhogy egy kicsit lépek! Köszönöm a segítséget, adtál sok kiindulópontot, hogy miket is keressek, hogyan is álljon össze a dolog! Ha megakadnék, jelentkezni fogok! Sokat kell még tanulnom asszem :D Köszi mégegyszer!

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

[quote]Valahogyan át lehet másolni a dátumos oszlopot a makróiddal együtt az én munkafüzetembe, hogy működjön is?[/quote]

 

Mentsd el más néven.

 

[quote]Nálam engedi a választást és az írást is, míg nálad csak választani lehet![/quote]

 

Nem tudom miért lehet ez. Esetleg amiatt, hogy az adatérvényesítésnél a hibejelzés fülön kikszelted, hogy hibaüzenet jelenjen meg?

Előzmény: hunterzsolt (22811)
Törölt nick Creative Commons License 2013.10.27 0 0 22812

http://www.cpearson.com/excel/SortingArrays.aspx

 

Elég nagy falat lehetett egy ilyen makrót megírni...

Előzmény: tbando (22808)
hunterzsolt Creative Commons License 2013.10.27 0 0 22811

Megcsináltam egy új munkafüzeten, de ugyanaz a probléma! Valahogy levédted? Mert ugyan azt megpróbáltam, amit Te. Nálam engedi a választást és az írást is, míg nálad csak választani lehet! Valahogyan át lehet másolni a dátumos oszlopot a makróiddal együtt az én munkafüzetembe, hogy működjön is?

 

Előzmény: Törölt nick (22807)
Törölt nick Creative Commons License 2013.10.27 0 0 22810

Alt + F11-gyel meg tudod nézni, hogy milyen kód (makrók) van mögötte. (Ez megnyitja a kódszerkesztő ablakot.)

 

Hogy érted, hogy "nincs táblázatnak formázva"?

 

Elméletileg a B oszlopba csak azt írhatod, ami a Munka2 munkalapon az A1:A3 részen található.

 

Apró hiba: csak ha egyszer rámentesz a fájlra, akkor gátolja meg az első oszlop meg az első sor szerkesztését.

Előzmény: hunterzsolt (22809)
hunterzsolt Creative Commons License 2013.10.27 0 0 22809

Júj ez nagyon BABAr :) Köszi, de lenne egy gondom ezzel! Nem tudom megnézni ebből, hogy hogyan hoztad össze!

Látom, hogy nincs táblázatnak formázva , úgyhogy lehet, hogy emiatt enged mást is beírni, mert én formázztam!

Megpróbálom nem megformázni az oszlopokat és hátha úgy csak a lista elemeit használhatom, de a dátumot, ahogy megcsináltad, úgy szeretném én is!

Előzmény: Törölt nick (22807)
tbando Creative Commons License 2013.10.27 0 0 22808

Sziasztok!

 

Az lenne a kérdésem, hogy lehet-e egy egydimenziós vba-tömbben levő stringeket abc sorrendbe rendezni?  Ha igen, hogyan? Nekem az is jó lenne, ha a sorbarendezés egy másik tömbbe történne.

Törölt nick Creative Commons License 2013.10.27 0 0 22807

Ehun van. Makrókkal tudtam csak megoldani (excel 2007 btw), können lehet hogy a másik táblázat más módszerrel készült.

 

http://data.hu/get/7072147/Zsoltinak_gmod1.xlsm

 

Azt még mindig nem értem, hogy listából való adatérvényesítésnél neked miért enged más értékeket is beírni.

Előzmény: hunterzsolt (22805)
_matteo_ Creative Commons License 2013.10.27 0 0 22806

Köszönöm!

Előzmény: Törölt nick (22804)
hunterzsolt Creative Commons License 2013.10.27 0 0 22805

Köszönöm a választ!

Az első sikerült.
Sajnos a 2.-nál listából tudok választani, de ha akarok, akár beírni is tudok bármit!
A 3. : Igen, azt a dátumot akarom, amikor a sort szerkesztették és utána már, ha mentve van, ne lehessen szerkeszteni!

Találkoztam hasonló táblázattal, ami korlátozta a felhasználók jogait! PL: én csak egy adott listából tudtam választani, ki is töltöttem a sorokat, majd el is mentettem! Miután újra beléptem az általam kitöltött sort már nem tudtam szerkeszteni, de az, aki csinálta a táblázatot, tudta! Szóval az én hozzáférésem korlátozva volt! Szeretném valami ilyesformán megcsinálni és ki is próbálni! 

Előzmény: Törölt nick (22803)
Törölt nick Creative Commons License 2013.10.27 0 0 22804
Előzmény: _matteo_ (22802)
Törölt nick Creative Commons License 2013.10.27 0 0 22803

1. Teljes oszlopok kijelölésével el tudod rejteni őket. Ha mondjuk csak 10 oszlopot akarsz hagyni, akkor:

i) jelöld ki a 11. oszlopot (katt a fejlécre)

ii) ctrl+shift+jobbra (ezzel kijelöli az oszlopokat egészen az utolsóig)

iii) jobbklikk --> elrejtés

 

2. Ha a listából való adatérvényesítést megcisnáltad, akkor elméletileg nem lehet mást beírni. (legalábbis 2003-as excelnél biztos)

 

3. Makróval meg lehet csinálni. Azt a dátumot akarod, amikor utoljára írtak valamit az adott sorba?

 

(Ahhoz egyébként, hogy egy cellát ne lehessen változtatni, le kell védeni jelszóval a munkalapot és a cellának zároltnak (locked) kell lennie.)

 

Előzmény: hunterzsolt (22801)
_matteo_ Creative Commons License 2013.10.27 0 0 22802

Helló,

 

Két függvény által közbezárt terület szertnék kiszinezni. Erre milyen megoldások vannak? 2013as verzió. Előre is köszönöm.

hunterzsolt Creative Commons License 2013.10.27 0 0 22801

Sziasztok!

Ismét kérdésekkel bombázlak titeket!

1: Hogyan tudom azt megcsinálni, hogy csak egy adott mennyiségű oszlop legyen látható?
2: Tegnap sikerült RHCPgergo segítségével listázni az adatérvényesítéssel, de szeretném azt is megcsinálni, hogy csakis a listából lehessen választani, mást beírni ne lehessen! Próbáltam ilyen-olyan védelemmel ellátni az adott oszlopokat, de nem sikerült!
3: Az egyik oszlopot dátum mutatására szeretném használni! Szóval azt ne lehessen módosítani, szeretném, hogy a sor kitöltésével automatikusan kitöltse az adott dátummal! Szóval, ha a sort elkezdem kitölteni, a dátum oszlop azonos sorában megjelenjen a dátum! Bár ezt nem hiszem hogy meg lehet csinálni, de hátha! 

Remélem jól leírtam a kérdéseket, amúgy 2007-es verzsönt használok, ha számít!

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

 

Törölt nick Creative Commons License 2013.10.27 0 0 22800

Áttöltés után kézzel dolgozik az illető ezért kell a tábla végére menni vagy kézzel, vagy automatikusan. Ez csak egy kényelmi ok és nem funkcionális azaz a program működését nme érinti. A megirt programjaimnál mindig ügyelek arra, hogy minél kevesebbet kelljen klikkelni, keresgélni azaz a program kínálja magát. Manapság ezt kicsit bombasztikusan felhasználói élménynek nevezik. Mindig abból indulok ki, hogy a számítógépet nem ismerőknek is tudnia kell kezelni.

Előzmény: Fferi50 (22786)
roley Creative Commons License 2013.10.26 0 0 22799

Köszönöm!

 

Köszönöm!!!!

Előzmény: Fferi50 (22797)
Törölt nick Creative Commons License 2013.10.26 0 0 22798

Szerkeszteni akarok. :(

Előzmény: Törölt nick (22796)
Fferi50 Creative Commons License 2013.10.26 0 0 22797

Szia!

 

Íme a makro:

 

Sub torlo()
Dim c As Range
With Columns(1)
    Set c = .Find(what:="xy", LookIn:=xlValues, lookat:=xlWhole/xlPart)
    If Not c Is Nothing Then
        Do
            c.EntireRow.Delete
            Set c = .FindNext
        Loop While Not c Is Nothing
    End If
End With
End Sub

 

Egy kis magyarázat hozzá:  lookat paraméter azt mondja meg, hogy teljesen egyeznie kell a cellában a szövegnek, vagy csak részben. Ha csak részben, akkor xlPart. Ekkor minden olyan sort kitöröl, ahol xy előfordul a cellában valahol.

 

Üdv.

Előzmény: roley (22795)
Törölt nick Creative Commons License 2013.10.26 0 0 22796

Fontos, hogy makró legyen? Egszerű szűréssel is egjelenítheted azokat a sorokat, ahol egy oszlop cellái bizonyos szöveget tartalmaznak, majd az egészet kijelölve törölheted.

 

1. autofilter bekapcsolása
2. az A oszlopnál custom szűrés (contains "xy")
3. sorok kijelölése, egész sor törlése

 

Makrót se lenne olyan nehéz írni, de így egyszerűbb, ha csak egyszer kell megcsinálánod.

Előzmény: roley (22795)
roley Creative Commons License 2013.10.26 0 0 22795

Sziasztok!

 

Egy olyan makróra lenne szükségem, ami megkeresne egy adott szöveget "xy" az első oszlopban, és miután megtalálta annak a sorát kitörölné, majd tovább keresne az A oszlopban ugyanarra a kifejezésre, addig amig az összes sort ki nem törölte azzal a szöveggel.

 

Tudtok ere vmilyen megoldást?

 

 

Köszönöm a segitségeteket!

 

üdv, Roley

Törölt nick Creative Commons License 2013.10.26 0 0 22794

Köszönöm mindenkinek a segítségét.

hunterzsolt Creative Commons License 2013.10.26 0 0 22793

Köszönöm a választ! Összejött és így is akartam! Legördülő menüsen, úgyhogy ez sikerült is! Hálás vagyok, köszi mégegyszer!

 

Előzmény: Törölt nick (22790)
tbando Creative Commons License 2013.10.26 0 0 22792

Kösz a választ.  Meg a linkeket hozzá. 

Előzmény: Törölt nick (22787)
tbando Creative Commons License 2013.10.26 0 0 22791

Kösz! Múködik. De lenne 2 kérdésem: Miért kell a transpose? Ugyanis ha kiiktatom az Option Explicitet ami szükséges a makródhoz, akkor beolvassa a ranget anélkül is.  Másrészt meg itt mit transzponál? 

Előzmény: Delila10 (22782)
Törölt nick Creative Commons License 2013.10.26 0 0 22790

Üdv! :)

Ami neked kell az a "Data Validation" avagy adatérvényesítés. Ha ezt használod, be lehet állítani, hogy egy adott cella (vagy tartomány) csak egy lista értékeit vehesse fel. Nem ablakban ugrik fel, hanem lenyíló listából lehet választani.

 

1. jelöld ki azt a cellát/tartományt, ahol be akarod kapcsolni az adatérvényesítést

2. data / data validation (valami ilyesmi, csak angol 2003-as excelben tudom)

3. válaszd ki, hogy listából akarod, itt meg lehet adni, hogy az a lista hol van

4. OK

 

Kb. ennyi, itt van egy részletesebb magyar leírás:

http://office.microsoft.com/hu-hu/excel-help/legordulo-lista-letrehozasa-cellatartomanybol-HP010072599.aspx?CTT=5&origin=HP010072600

 

Ha ablakban akarod felugrasztani, azt szerintem csak VBA-ban lehet megoldani. (Az excel mögötti programnyelv.)

Előzmény: hunterzsolt (22788)
Fferi50 Creative Commons License 2013.10.26 0 0 22789

Szia!

 

A beírás korlátozását az Adatok->Érvényesítés menüpontban tudod elvégezni. Itt beállítod, hogy megengedve lista. Forrásnak csak azonos munkafüzetben levő adatokra hivatkozhatsz, de az adatok lehetnek másik munkalapon. A listát elnevezed, pl gyümölcsök.

Akkor a forrásban hivatkozhatsz így: =gyümölcsök.

Akár az egész oszlopot is kijelölheted érvényesítésre, akkor minden egyes cellára igaz lesz az, hogy csak a megadott értékek közül lehet választani.

 

Üdv.

Előzmény: hunterzsolt (22788)
hunterzsolt Creative Commons License 2013.10.26 0 0 22788

Megpróbálom egy kicsit átfogalmazni a kérdésem, bár lehet hogy a válasz egyszerű, de mint mondtam, még kezdő vagyok! :)

Adott egy munkafüzet melyben az A oszlop soraiban ezek szerepelnek:

Alma
Körte
Banán
Narancs

...és adott egy másik munkafüzet, ahol ha rákattintok az A oszlop bármelyik sorára, egy lista jelenik meg (Alma, Körte, Banán, Narancs) és csak ezek közül tudok választani, szóval mást beírni nem rudok!

Hogyan tudnám ezt megcsinálni? Ismétlem kezdő vagyok ezért kicsit a szájbarágósság segítene! Ha valakinek van erre kis ideje és segítene, annak nagyon hálás lennék!

Köszönöm!

Törölt nick Creative Commons License 2013.10.26 0 0 22787

Az első azért akad ki, mert egy statikus tömböt hozol létre, amihez egy lépésben nem lehet hozzárendelni egy Range objektumot - ha jól tudom. Amikor egy dinamikus tömbhöz rendelsz Range-et, akkor egy kétdimenziós tömb jön létre. Még akkor is, ha egy egy oszlopot vagy sort (ekkor az egyik dimenzió értéke mindig 1 lesz).

A második makróban dinamikus tömbként deklarálod a H() változót. Hiába a Redim, ez akkor is fel fogja venni bármilyen Range tartomány értékét.

A harmadik makróban egyenként adsz értéket egy egydimenziós statikus tömb elemeinek, ez működik.

Innen vagyok okos:
http://www.cpearson.com/excel/ArraysAndRanges.aspx
http://www.cpearson.com/excel/vbaarrays.htm

@ Delila 22782
Ha kikommenteled azt a sort, ahol a változót hozod létre, akkor a következő sor:

tmb = Application.transpose(Range("h11:h19"))

fogja létrehozni a tmb változót Variantként - ami ugye bármi lehet - és ehhez is lehet bármilyen Range-et hozzárendelni. A transpose-ra nem is lenne szükség, ez is simán működne:

 

Sub tmbinput1()
'Dim tmb(8)
tmb = Application.Range("h11:h19")
End Sub

Előzmény: tbando (22781)
Fferi50 Creative Commons License 2013.10.26 0 0 22786

Szia!

 

Ha tudnánk egy kicsit többet a feladatról, nyilván könnyebben segíthetnénk, ahogy Jimmy is megjegyezte.

Az áttöltés után kézzel kell tovább dolgoznia a felhasználónak, vagy makro dolgozik tovább is? Miért kell a végére menned?

 

Üdv.

Előzmény: Törölt nick (22780)
Fferi50 Creative Commons License 2013.10.26 0 0 22785

Szia!

 

Ok, persze, ha végignézed a történetet, én is ezt javasoltam neki (scrollrow). A magyarázat is alapvetően nem neked szólt, csak kifejtettem a "tömörebb" megjegyzésedet.

 

Üdv.

Előzmény: Delila10 (22783)
hunterzsolt Creative Commons License 2013.10.26 0 0 22784

Sziasztok!

Még nagyon kezdő vagyok az excel-ben és érdekel, ezért itthon próbálkozom! Lehet többször is teszek majd fel kérdéseket, persze csak akkor, ha nem gond!

Szóval a mai napi: Van egy munkalapom ahol szeretnék egy oszlopot úgy kialakítani, hogy a sorait ne szerkeszteni lehessen hanem rákattintva egy adott listát dob ki, amit egy másik munkalapon készítek el és csak ebből lehet kiválasztani az adott sor tartalmát!

PL: Munkalap1 / A3 ra katt és ott a választási lehetőségem 1, 5, 15, 55, stb... ! Munkalap2-őn az a oszlop számai ezek! Szóval semmi mást ne lehessen bevinni, csak az adott számokat!
Van ilyenre lehetőségem?

Delila10 Creative Commons License 2013.10.26 0 0 22783

Igen, mást csinál, de a cél az, hogy a táblázat alsó sorai látsszanak a képernyőn.

Be lehet vinni egy feltételt. Ha az utolsó sor >26, akkor az utolsó sor= utolsó sor-25.

Előzmény: Fferi50 (22775)
Delila10 Creative Commons License 2013.10.26 0 0 22782

Sub tmbinput1()
'Dim tmb(8)
tmb = Application.transpose(Range("h11:h19"))

End Sub

Előzmény: tbando (22781)
tbando Creative Commons License 2013.10.26 0 0 22781

Sziasztok!

 

Lenne egy fogós kérdésem: Az alábbi 3 makró közül a tmbinput1 miért akad ki "Can't assign to array" hibaüzenettel, amikor a többi meg tök normálisan lefut?

 

Sub tmbinput1()    'KIAKAD
Dim tmb(8)
tmb = Application.Range("h11:h19")

End Sub

 

Sub tmbinput2()    'OK
Dim H()
ReDim H(8)
H = Application.Range("h11:h19")
End Sub

 

Sub tmbinput3()   'OK

Dim H(8), k

For k = 0 To 8
H(k) = Range("h11").Offset(k, 0)
Next k

End Sub

Törölt nick Creative Commons License 2013.10.26 0 0 22780

Azt jelenti, hogy most az áttöltést után a tábla elsősorától látszik a táblázat már pedig normál szituációban a tábla végén folytatódik a munka ezért a betöltés után manuálisan scrollozni kell. Apró, bosszantó kényelmetlenség.

 

A tábla vége megtalálására a Te módszered jó.

 

Most a javitás után egy kicsit megbolondult és nem mindig pozicionál a tábla végére. Majd holnap végig bogarászom miért tesz ezt.

Előzmény: Fferi50 (22779)
Fferi50 Creative Commons License 2013.10.26 0 0 22779

Szia!

 

Mit értesz a tábla végére való pozicionálás alatt?

 

Legyen az aktív cella a tábla utolsó sorában (azaz legyen az utolsó sor első/vagy valamelyik cellája kiválasztva)? - ez a select.

Látszódjon a tábla vége, de ne legyen benne a cursor?

A tábla vége megtalálására a Te módszered jó. A megmutatására - hogy ne az eleje látsszon -  Veled együtt legalább 3 féle módot is találtunk.

 

Üdv.

 

 

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

Elegánsabb amit írtál, működik. A tábla végére való pozicionálás azonban még nem megoldott.

Előzmény: Törölt nick (22776)
Törölt nick Creative Commons License 2013.10.26 0 0 22777

Megnézem amit írtál.

 

Megjegyzem a helpből szedtem ezt a makrót, csak a változúkat írtma át a szükségleteim szerint.

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

 Elöljáróban annyit, hogy:

- Azt mondod, ez egy leegyszerűsített kód, ami nyilván azt jelenti, hogy nem látjuk a lényegi funkciót. Ha látnánk, akkor talán tudnánk egyszerűbb, jobb módszert javasolni, így azonban csak az eredetileg megkezdett irányba tartó utat tudjuk kiegyenesíteni. Ha az eleve rossz, úgy is marad, hiába igyekszünk.

- Elhangzott itt már több megoldásféle, amiket én nem próbáltam, de a beküldők bizonyára igen, és valószínűleg működnek. Ezért nekem most nem az a célom, hogy elmondjam a tuti módszert, hanem csak két hibás gyakorlatra hívnám fel a figyelmed.

 

Az egyik ez:

Range(c.Address).Select

 

Helyette így kellene (ha már szelektálni akarsz):

c.Select

 

Mert ugye a Select ebben az esetben a Range típusú objektum metódusa, tehát direktben ki lehet adni. A Te verziód először előállítja a c tartomány címét, aztán azt konvertálja vissza tartománnyá. Olyan, mintha egy számot először megszoroznál 6-tal, aztán elosztanád 2-vel, aztán elosztanád 3-mal, hogy elvégezhesd rajta a tulajdonképpeni műveletet.

 

 

A másik a Select használata, ami az esetek döntő többségében tök fölösleges, csak mindenki azért használja, mert a makrórögzítőből ez jön ki. (Ahogy Fferi is mondta.)

Valójában a Select használata pont olyan redundáns, mint a *6/2/3 a fenti példában. Aktiválsz egy cellát pusztán azért, hogy aztán az aktív cellán hajthass végre egy műveletet. Nem lenne egyszerűbb eleve az adott cellán végrehajtani azt a műveletet?

 

Range(c.Address).Select
arrIndex(arrIndexAdress) = ActiveCell.Row

 

helyett

 

arrIndex(arrIndexAdress) = Range(c.Address).Row

 

volna helyesebb, és beépítve az első észrevételemet, így volna a legjobb:

 

arrIndex(arrIndexAdress) = c.Row

 

Ismétlem, ez nem válasz a kérdésedre, hanem két kódolási típushibának a kijavítása.

 

A kérdésedre azt mondanám, hogy van a kódodban egy algoritmushiba is. A FindNext utasításnak közvetlenül a Loop While előtt kellene lennie. A jelenlegi formában az első találat feldolgozása kimarad, ehelyett rögtön ugrik a második találatra, és az elsőt csak akkor dolgozza fel, amikor újra megtalálta. Pedig akkor már nem kellene.

Előzmény: Törölt nick (22769)
Fferi50 Creative Commons License 2013.10.26 0 0 22775

Szia!

 

Bocsi a közbekotyogás miatt, de nem tömörebb, hanem egészen mást csinál.

smallscroll (metódus/method) az adott pozíciótól lép le,fel,jobbra,balra x egységet (sort, vagy oszlopot) - relatív a meghatározás, attól függ, honnan indulsz és a lépés nagyságát határozod meg az adott értékkel, ami akár negatív  is lehet.

scrollrow, scrollcolumn (tulajdonság/property) konkrétan az adott sort, oszlopot helyezi az ablak legfelső sorába/bal oldalába, vagyis mindegy, hogy éppen hol van a pozíció az utasítás kiadásakor. (És vigyázni kell rá,hogy 0-nál nagyobb legyen a megadott érték.)

 

Üdv.

Előzmény: Delila10 (22774)
Delila10 Creative Commons License 2013.10.26 0 0 22774

Tömörebb. :)

Előzmény: Törölt nick (22772)
Törölt nick Creative Commons License 2013.10.26 0 0 22773

Szipmatikus. Megpróbálom.

 

Kérdés: kipróbáltad amit a find-re javasoltam korábban (22765-ös hozzászólás)?

 

A ciklus azért kell mert egy sorozatot kell megtalálnia és az transzportálnia a főtáblába.

Előzmény: Fferi50 (22771)
Törölt nick Creative Commons License 2013.10.26 0 0 22772

Ez miért jobb mint a SmallScroll ?

Előzmény: Delila10 (22770)
Fferi50 Creative Commons License 2013.10.26 0 0 22771

Szia!

 

Van még egy olyan metódus is, hogy show.

Range("A3500").show hatása, hogy a 3500-as sor lesz az ablak közepén, ha addig nem látszott a sor.

Range("U200'").show hatása, hogy az U200-as cella lesz az ablak közepén, ha addig nem látszott volna.

 

Figyelem, arra itt is vigyáznod kell, hogy a sor ne legyen 1-nél kisebb!

Pl. range("A" & tablazatveg).show a táblázat végét az ablak közepére pozicionálja.

 

Természetesen, ha az adott cellát ki is akarod jelölni, akkor a select utasítás használandó.

 

Kérdés: kipróbáltad amit a find-re javasoltam korábban (22765-ös hozzászólás)?

 

Üdv.

Előzmény: Törölt nick (22769)
Delila10 Creative Commons License 2013.10.26 0 0 22770

Sub valami()
    Dim usor As Integer
    usor = ActiveSheet.UsedRange.Rows.Count
    
    With ActiveWindow.Panes(1)
        .ScrollRow = usor
        .ScrollColumn = 2
    End With
End Sub

Ez a B oszlop – .ScrollColumn = 2 – utolsó sorát mutatja a bal felső sarokban.

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

Jó. Akkor mond meg,hogy tudom ráveni, hogy a tábla végére álljon és ne az elejére.

Előzmény: Törölt nick (22767)
Fferi50 Creative Commons License 2013.10.26 0 0 22768

Szia!

 

Hát igen, minden excell makróval foglalkozónak legelőször azt kellene megtanulni, hogyan távolítsa el a makrórögzítő select-jeit, mivel azok csak azért vannak benne, mert úgy van a természete megfogalmazva, hogy az objektumot először kijelöli selecttel.(Na meg a sok scroll is remek szokott lenni benne...)

De minden objektumra lehet közvetlenül hivatkozni, ráadásul az biztosan be is talál (már persze, ha nem írtam el a nevét...). Ezért én még az "activecell, activesheet, stb." hivatkozásokat is csak nagyon-nagyon módjával használom.

 

Üdv.

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

Már megint egy fölösleges Select. Sőt, itt nem pusztán fölösleges, de még kárt is tesz...

Előzmény: Törölt nick (22764)
roley Creative Commons License 2013.10.25 0 0 22766

Köszönöm, bevált:)

Előzmény: tbando (22746)
Fferi50 Creative Commons License 2013.10.25 0 0 22765

Szia!

 

Próbáld a keresést így:

 

 Set c = .Find("keresett string", LookIn:=xlValues,lookat:=xlwhole,searchdirection:=xlprevious)

 

Ez szerintem a legutolsó előfordulást fogja adni, és nem kell hozzá ciklus sem - ha nem akarod megszámolni, hányszor fordul elő.

 

(A lookat paramétert azért érdemes megadni mindig, mert egyébként megőrzi az előző értékét. Tehát, ha csak szövegrészletet keresel akkor =xlpart, egyébként =xlwhole.)

 

Üdv.

 

 

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

Szia.

A probléma miatt a cursor mindig az elsősorban van ezért van az, hogy smallscroll igy paraméterezve hibátlanul működik. Ez a megoldás azonban a jelenség megkerülését jelenti. A probléma okát már kezdem sejteni.

 

Leegyszerűsítve a következő folyamat után van ez a gond:

 

With Sheets("sheet").Range("A1:A65000")
       Set c = .Find("keresett string", LookIn:=xlValues)
       If Not c Is Nothing Then                'elso sor keresese
           firstAddress = c.Address
           Range(c.Address).Select
           Do                                         'tovabbi sorkereses
              Set c = .FindNext(c)
              Range(c.Address).Select
              arrIndex(arrIndexAdress) = ActiveCell.Row
           Loop While Not c Is Nothing And c.Address <> firstAddress
       End If

 

A "do" ciklusban az utolsó találat ujra az első sor ezért a pozicionálás is ide történik. Ha ezt megtudnám akadályozni akkor nem lenne szükség erre a hókusz pókuszra és azonnal az utolsó sorra pozicionálna

Előzmény: Fferi50 (22763)
Fferi50 Creative Commons License 2013.10.25 0 0 22763

Szia!

 

Mivel az excel sorainak száma 1-től kezdődik, így természetesen negatív számú sorra nem tud rápozicionálni a scrollrow. Ez komoly hibája, ezért nekünk kell erre figyelni, pl. így:

Activewindow.scrollrow=iif(arrIndexMax - 25<1,activewindow.scrollrow  de ide írhatod ezt is: 1,arrIndexMax - 25)

Ebben az esetben vagy marad az ablak tetején az a sor, ami eredetileg is volt, vagy az első sor kerül oda, attól függően, mit írtál középre.

 

A smallscroll ezek szerint "intelligensebb", tudja kezelni, hogy negatívba nem viszi a sorszámot, hanem marad az első sorban.

Kipróbáltad amit azzal kapcsolatban írtam? (Nyilván a 25 sor az elméleti, az a kérdés, mennyi látszik az ablakodban.) De nézd meg nagyított nézetnél is lsz (amikor az ablakban pl. 10-12 sor látszik csak).

Valószínű, hogy amikor behívod a táblázatot, akkor az első sor kerül az ablak legfelső részébe, ezért múködik a smallscroll jónak tűnően.

Mégegyszer hangsúlyozom, a fontos különbség, hogy a smallscroll relatív - az aktuális helytől számol, a scrollrow pedig abszolut, konkrétan megadott sort ugratja az ablak tetejére.

 

Üdv.

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

Szia!

 

A te javaslatod 25-nél kevesebbsorszámnál hibáz hoz:

  ActiveWindow.ScrollRow = arrIndexMax - 25

 

Ez a megoldás hiba nélkül fut teszőleges sorszámnál:

  ActiveWindow.SmallScroll Down:=arrIndexMax - 25

Előzmény: Fferi50 (22757)
Törölt nick Creative Commons License 2013.10.25 0 0 22761

Nem pontos ez így. A megadott változó az utolsó sor sorszámáta daja meg amiből visszaszámol 25-öt. Nagyobb táblázatnál mindig a megjelenített sorok közül az utolsó 25-öt mutatja míg 25 sornál kisebbnél csak annyit amennyi van. Hibát nem hoz.

Előzmény: Fferi50 (22758)
Törölt nick Creative Commons License 2013.10.25 0 0 22760

olvastam

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

OK. Buktam. Filgyelmetlenül olvasta a parancsot amit írtál. Mindjárt megnézem a te verziódat is.

Előzmény: Fferi50 (22757)
Fferi50 Creative Commons License 2013.10.25 0 0 22758

Szia!

 

Még annyit az előzőekhez: Te nem 25 sorral a táblázat vége előttre pozicionáltál, hanem a srollozandó sorok számát állapítottad meg a táblázat vége - 25 sorban. Így pl. 100 soros táblázatnál a scroll mértéke 75 sor lesz.

Ez akkor működik úgy, ahogyan szeretnéd, ha max a 25. sorban áll a cursorod. Ha viszont a 25-dik sornál lejjebb vagy, azt fogod tapasztalni, hogy "eltűnik" a táblázat, mert akkorát scrollozik az utasításod.

 

Üdv.

Előzmény: Törölt nick (22756)
Fferi50 Creative Commons License 2013.10.25 0 0 22757

Szia!

 

Igen, csak a smallscroll-nak és a scrollrow-nak más-más a funkciója:

A smallscroll egy metódus és görgeti az ablakot abba az irányba amerre akarod és olyan lépéssel, amekkorával akarod, onnan ahol éppen állsz.

 

A scrollrow (és scrollcolumn) egy tulajdonság, ami megmondja, hogy hányadik sor/oszlop legyen a bal felső szélén az ablaknak. Azaz itt direktben megadhatod, hova "scrollozzon" a képernyő, melyik legyen az első sor, vagy első oszlop amelyik látszik.

 

Üdv.

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

Amit a 22751-ben megadtam az a "arrIndexMax" a táblázat utolsó sora amihez képes 25 sorral vissza pozicionáltam. Igy szépen látszik a táblázat vége és még marad néhány üres sor.

Előzmény: Fferi50 (22755)
Fferi50 Creative Commons License 2013.10.25 0 0 22755

Szia!

 

Próbáld ki az activewindow.scrollrow=táblázatvége sor -x utasítást.

 

A táblázatvége sor  jelenti azt az utolsó sort, ameddig a táblázat tart (ezt neked kell megállapítanod!), az x pedig, ahány sort akarsz még látni a táblázatból. (Mert gondolom, nem csak a legutolsó sort szeretnéd látni.)

 

Üdv.

Előzmény: Törölt nick (22753)
tbando Creative Commons License 2013.10.25 0 0 22754

Megtaláltam az autószűrő VAGY feltételes opcióját. De úgy látom, hogy nem alkalmas több oszlop vagylagos szűrésére. Jól látom? 

Előzmény: tbando (22746)
Törölt nick Creative Commons License 2013.10.25 0 0 22753

Nem tudom de tény, hogy mindig a táblázat elejét mutatta. Elegánsabb lett volna amikor a tábla áttöltődik (ugyanis más lapról érkezik szűrve) azonnal a végére ugrana és azt mutatná. Kistáblázatról van szó tehát a sebességet nem igen befolyásolja ez a módszer.

Előzmény: pimre (22752)
pimre Creative Commons License 2013.10.25 0 0 22752

Ha a cursort ráállítom valamelyik távoli oszlopra, mondjuk BA-ra, majd az alsó gördítősávval visszahúzom a képernyőt a táblázat elejére, miközben a cursor marad a BA oszlopon, és így mentem, akkor pont az történik, amit írsz. Nem lehet, hogy nálad is ez történt?

Előzmény: Törölt nick (22750)
Törölt nick Creative Commons License 2013.10.25 0 0 22751

Kitoltam vele.

ActiveWindow.SmallScroll Down:=arrIndexMax - 25

Gyönyörűen mutatja a tábla végét

Előzmény: Eredő Vektor (22749)
Törölt nick Creative Commons License 2013.10.25 0 0 22750

Erre én is gondoltam már de nem segít.

Előzmény: Eredő Vektor (22749)
Eredő Vektor Creative Commons License 2013.10.25 0 0 22749

nézd meg, nincs e ablaktábla rögzítés alatt a munkalap.

esetleg futtasd le ezt:

application.screenupdating = true

 

Hátha valami kikapcsolva hagyta...

 

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

Megnyitok egy táblázatot annak mindig az elejét látom miközben a végére kellene ugrania és azt látnom. Hiába próbálkozom cella cimzéssel, select utasítással. A cusor oda megy de a tábla nem ezért mindig scrolloznom kell.

Van valami ötlet?

Eredő Vektor Creative Commons License 2013.10.25 0 0 22747

Javaslatom a "kimutatás tábla", vagy másként "pivot tábla" készítése a táblázatodból.

A dimenzókat szabadon mozgathatóak, a szűrést úgy állítod be ahogy akarod.

Előzmény: roley (22745)
tbando Creative Commons License 2013.10.25 0 0 22746

Pedig a szűrés jó ötlet. Úgy emlékszem az autószűrő is tud több oszlopra a VAGY feltétlellel szűrni (azaz egyaránt kiszűrni az otthoni és az idegen oszlopbeli előfordulásokat), de most hogy keresem, nem találom ezt a lehetőséget.  A Speciál szűrő (a 2003-ban Írányitott szűrő) azonban biztosan alkalmas erre. Amit egyaránt használhatsz helyben szűrésre vagy új helyre történőre. A trükkje, hogy kritérium tartomány 3 soros legyen. 1. Fejléc: otthon/idegen 2. A keresett csapat az otthoni oszlopban. 3. A keresett csapat az idegen oszlopban is. Ha ennyi kevés lenne, az excel súgója elég jól elmagyarázza.

 

Még annyit érdemes tudnod, hogy a kritérium cellákba nem muszáj a keresett teljes nevét beírni. Elég belőlük néhány egyedi betűsorozat 2 csillag között. Pl. *Liver*, *city* stb.

 

Mivel a csillagos beírás frankón működik, a belinkelt web táblázatból sem muszáj a otthoni és idegenbeli oszlopokat szekesztened, mert mérközésoszlopra rászűrve a ** közé írt csapatjelöléssel kiszűri neked az összes előfordulást.  Persze ekkor a kritériumtartományt  2 sorosnak kell meghatároznod.

   

Előzmény: roley (22745)
roley Creative Commons License 2013.10.25 0 0 22745

Sziasztok!

 

A segitségeteket szeretném kérni. Adott egy táblázat foci bajnokság meccseredményeivel:

A oszlop=hazai csapat, B oszlop= vendég csapat, C oszlop =hazai gólok, D oszlop= vendég gólok. Pl mint az alábbi oldalon, csak ez excelbe bemásolva: http://www.fogadoportal.hu/foci/anglia/premier-league-2012-2013/eredmenyek/

 

 

 Azt szeretném kérdezni, hogy hogyan tudok egy olyan szűrést megcsinálni, ami kidobná x csapat eredményeit, mind a hazai, mind a vendég meccseket egyszerre, időrendei sorrendben. 

 

Próbálkoztam úgy hogy táblázattá alakitottam és ott szűrés, de ott csak vagy a hazainál, vagy a vendégnél engedi meg a szűrést külön-külön, együtt nem. Esetleg vmilyen kereséses fügvvény alkalmazása, stb, nem tudom mi lehetne a megoldás.

 

 

Bármi ötleteteket nagyon hálásan fogadom!

 

 

Köszönettel,

Roley

tbando Creative Commons License 2013.10.24 0 0 22744

Kösz. Jó helyen kerestem,  és bár majd kibökte a szemem, mégis átsiklottam rajta :((((

Előzmény: Delila10 (22743)
Delila10 Creative Commons License 2013.10.24 0 0 22743

Előzmény: tbando (22741)
tbando Creative Commons License 2013.10.24 0 0 22742

Miután elküldtem a makrót, rájöttem, hogy sokkal praktikusabb lenne a beforesave makrót  open-ként megadni és kiegészíteni  a beirás makro subrutinnal. Így a filemegnyitáskor már rögtön  bekéri a user nevét. Ha rossz nevet ad meg, akkor javíthat  a beirás makró direkt indításával. 

 

A beforesave makró átírva, a változtatások kivastagítva. A beirás makró változatlan.

 

Private Sub Workbook_Open()

 

Cells.Select

Sheets("Munka1").Unprotect ("xxx")

Selection.Locked = True

Selection.FormulaHidden = False

Sheets("Munka1").Protect ("xxx")

beiras

End Sub

 

Sub beiras()

 

Dim ppw, oszlopNo

ppw = InputBox("Mi a titkos neved?")

If ppw = "pali" Then oszlopNo = 3: GoTo cimke

If ppw = "peti" Then oszlopNo = 4: GoTo cimke

If ppw = "poka" Then oszlopNo = 5: GoTo cimke

Exit Sub

cimke:

Sheets("Munka1").Unprotect ("xxx")

Sheets("Munka1").Columns(oszlopNo).Select

Selection.Locked = False

Sheets("Munka1").Protect ("xxx")

End Sub

 

Előzmény: tbando (22740)
tbando Creative Commons License 2013.10.24 0 0 22741

Szia!

 

Néztem a makródat, de már az első sorban elakdtam :))).  Azt hogyan kell csinálni, hogy 3 nevet megadni egy érvényesítésben? Próbálgattam, de nem jöttem rá.

Előzmény: Delila10 (22738)
tbando Creative Commons License 2013.10.24 0 0 22740

Szóval az alábbi 2 makróval oldottam meg. Mindkettőt az adott füzet ThisWorbook moduljába másold.  A védett munkalap a Munka1, a védelmi jelszó xxx, a három felhasználó titkos nevei, pali, peti és poka, akik 3, 4, 5 oszlopokhoz férhetnek hozzá.  A felsorolt beállításokat igazitsd a te lapodhoz. Miután megvan a makró, mentheted a füzetet.  A fiúk amikor be akarnak írni, a beírás makrót indítsák. A kijelölt tartományba írhatnak.

 


Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cells.Select
Sheets("Munka1").Unprotect ("xxx")
Selection.Locked = True
Selection.FormulaHidden = False
Sheets("Munka1").Protect ("xxx")
End Sub

 

Sub beiras()
Dim ppw, oszlopNo
ppw = InputBox("Mi a titkos neved?")
If ppw = "pali" Then oszlopNo = 3: GoTo cimke
If ppw = "peti" Then oszlopNo = 4: GoTo cimke
If ppw = "poka" Then oszlopNo = 5: GoTo cimke
Exit Sub
cimke:
Sheets("Munka1").Unprotect ("xxx")
Sheets("Munka1").Columns(oszlopNo).Select
Selection.Locked = False
Sheets("Munka1").Protect ("xxx")
End Sub

 

Előzmény: giaco_mo (22735)
Eredő Vektor Creative Commons License 2013.10.24 0 0 22739

Védett munkafüzet tartományai szerkesztésének engedélyezése egyes felhasználók számára

Fontos:    Ha egyes felhasználóknak engedélyt szeretne adni a védett munkalap tartományainak szerkesztéséhez, Microsoft Windows XP vagy újabb operációs rendszert kell használnia, és a számítógépnek tartományba kell tartoznia. A tartomány használatát megkövetelő engedélyek helyett jelszót is megadhat valamely tartományhoz.

  1. Jelölje ki a védelemmel ellátni kívánt munkalapot.
  2. Kattintson a Korrektúra lap Változások csoportjában a Tartomány szerkesztésének engedélyezése gombra.

Megjegyzés:    Ez a parancs csak akkor érhető el, ha a munkalap nem védett.

  1. Az alábbi lehetőségek közül választhat:
    • Új szerkeszthető tartomány hozzáadásához kattintson a Megadás gombra.
    • Korábban megadott szerkeszthető tartomány módosításához jelölje ki a kívánt tartományt a Lapvédelemnél csak jelszóval módosítható tartományok listában, majd kattintson a Módosítás gombra.
    • Szerkeszthető tartomány törléséhez jelölje ki a kívánt tartományt a Lapvédelemnél csak jelszóval módosítható tartományok listában, majd kattintson a Törlés gombra.
  2. Írja be a Cím mezőbe a zárolni kívánt tartomány nevét.
  3. Írjon a Hivatkozás mezőbe egy egyenlőségjelet (=), majd a zárolni kívánt tartomány hivatkozását.

 Tipp   Másik lehetőségként kattintson a párbeszédpanelt összecsukó gombra, jelölje ki a munkalapon a tartományt, majd a teljes párbeszédpanel ismételt megjelenítéséhez újra kattintson a párbeszédpanelt összecsukó gombra.

  1. Írja be a Tartományjelszó mezőbe azt a jelszót, amellyel majd hozzá lehet férni a tartományhoz.

Megjegyzés:    Hozzáférési engedélyek használatakor nem kötelező jelszót megadni, de ha jelszót alkalmaz, megtekintheti, hogy a tartomány módosításához jogosultsággal rendelkező személyek milyen felhasználói hitelesítő adatokat használnak.

  1. A hozzáférési engedélyek megadásához kattintson az Engedélyek, majd a Hozzáadás gombra.
  2. Írja be az Írja be a kijelölendő objektumok nevét (példák) mezőbe azoknak a felhasználóknak a nevét, akiknek engedélyezni kívánja a tartományok szerkesztését.

 Tipp   Tájékoztatást kaphat arról, hogy hogyan kell megadni a felhasználóneveket, ha a példák hivatkozásra kattint. A megadott nevek helyességének ellenőrzéséhez kattintson a Névellenőrzés gombra.

  1. Kattintson az OK gombra.
  2. A kijelölt felhasználóhoz rendelendő engedély típusának megadásához jelölje be az Engedélyek mezőben az Engedélyezés vagy a Megtagadás jelölőnégyzetet (vagy törölje annak jelölését), és kattintson az Alkalmaz gombra.
  3. Kattintson az OK gombra, majd a még nyitva lévő másik párbeszédpanel OK gombjára.

 Tipp   Kérés esetén írja be a megadott jelszót.

  1. Kattintson a Tartomány szerkesztésének engedélyezése párbeszédpanelen a Lapvédelem gombra.
  2. A Minden felhasználónak engedélyezve listában adja meg azokat az elemeket, amelyeket a felhasználók módosíthatnak.

További információ a munkalapelemekről

Munkalapelemek

 

Törlendő jelölőnégyzetMegakadályozandó felhasználói műveletZárolt cellák kijelölése Az egérmutató mozgatása olyan cellákhoz, melyeknél be van jelölve a Cellák formázása párbeszédpanel Védelem lapján a Zárolt jelölőnégyzet. A felhasználók alapértelmezés szerint kijelölhetik a zárolt cellákat.Nem zárolt cellák kijelölése Az egérmutató mozgatása olyan cellákhoz, melyeknél törölve van a Cellák formázása párbeszédpanel Védelem lapján a Zárolt jelölőnégyzet jelölése. A felhasználók alapértelmezés szerint kijelölhetik a nem zárolt cellákat, és a TAB billentyű lenyomásával lépegethetnek a nem zárolt cellák között a védett munkalapokon.Cellák formázása A Cellák formázása és a Feltételes formázás párbeszédpanelen található beállítások módosítása. Ha a munkalap védetté tétele előtt feltételes formázást alkalmazott, az ennek megfelelő változások továbbra is megtörténnek, ha egy felhasználó valamely más feltételt kielégítő értéket ír be.Oszlopok formázása Az oszlopok formázására vonatkozó parancsok használata, beleértve az oszlopszélesség módosítását és az oszlopok elrejtését is (Kezdőlap lap, Cellák csoport, Formátum gomb).Sorok formázása A sorok formázására vonatkozó parancsok használata, beleértve a sormagasság módosítását és a sorok elrejtését is (Kezdőlap lap, Cellák csoport, Formátum gomb).Oszlopok beszúrása Oszlopok beszúrása.Sorok beszúrása Sorok beszúrása.Hivatkozások beszúrása Új hivatkozások beszúrása, beleértve a nem zárolt cellákba történő beszúrást is.Oszlopok törléseOszlopok törlése.

 Megjegyzés:   Ha az Oszlopok törlése beállítás védelem alatt áll, az Oszlopok beszúrása azonban nem, a felhasználók beszúrhatnak oszlopokat, melyeket aztán nem tudnak törölni.

Sorok törléseSorok törlése.

 Megjegyzés:   Ha a Sorok törlése beállítás védelem alatt áll, a Sorok beszúrása azonban nem, a felhasználók beszúrhatnak sorokat, melyeket aztán nem tudnak törölni.

Rendezés Az adatok rendezésére szolgáló parancsok (Adatok lap, Rendezés és szűrés csoport).

 Megjegyzés:   A felhasználók e beállítástól függetlenül nem rendezhetnek zárolt cellákat tartalmazó tartományokat a védett munkalapokon.

AutoSzűrő használataA legördülő lista használata a tartományszűrés módosításához AutoSzűrők alkalmazása esetén.

 Megjegyzés:   A felhasználók e beállítástól függetlenül nem alkalmazhatnak, illetve nem távolíthatnak el AutoSzűrőt a védett munkalapon.

Kimutatások használata Kimutatások formázása, elrendezésük módosítása, kimutatások frissítése vagy egyéb módosítása, illetve új kimutatások létrehozása.Objektumok szerkesztéseAz alábbi műveletek:

  1. Módosítások elvégzése azokon a grafikus objektumokon (beleértve a térképeket, beágyazott diagramokat, alakzatokat, szövegdobozokat és vezérlőelemeket), amelyeknek a zárolását nem oldotta fel a munkalap védetté tétele előtt. Ha például egy makrót futtató gomb található egy munkalapon, a felhasználók a gombra kattintva futtathatják a makrót, nem törölhetik azonban a gombot.
  2. Beágyazott diagram módosítása, például formázása. A diagram továbbra is frissül a forrásadatok módosítása esetén.
  3. Megjegyzések írása vagy szerkesztése.

Esetek szerkesztéseAz elrejtett esetek megtekintése, azoknak az eseteknek a módosítása, amelyekre ezt letiltotta, és ezen esetek törlése. A felhasználók módosíthatják a változó cellák értékét, ha a cellák nincsenek zárolva, és megadhatnak új eseteket.

 

DiagramlapelemekBejelölendő jelölőnégyzet Megakadályozandó felhasználói műveletTartalomA diagram részét képező elemek módosítása – ilyenek például az adatsorok, a tengelyek és a jelmagyarázatok. A diagram továbbra is megjeleníti a forrásadatok módosításait.ObjektumokA grafikus objektumok megváltoztatása (például alakzatok, szövegdobozok és vezérlőelemek), amennyiben a diagramlap védelme előtt a zárolás alól nem oldotta fel az objektumokat.

  1. Írjon be egy jelszót a Jelszó a védelem feloldásához mezőbe, kattintson az OK gombra, majd megerősítés végett ismét írja be a jelszót.

Megjegyzések:    

  • A jelszó megadása nem kötelező, ha azonban nem ad meg jelszót, bármely felhasználó megszüntetheti a munkalap védelmét, és módosíthatja a védett elemeket.
  • Olyan jelszót válasszon, amelyre emlékezni fog, ellenkező esetben nem tud hozzáférni a munkalapon lévő védett elemekhez.

 Megjegyzések 

  • Ha egy cella több tartományba is beletartozik, a cellát az adott tartományok bármelyikének szerkesztésére felhatalmazott felhasználók módosíthatják.
  • Ha egy felhasználó egyszerre több cellát próbál módosítani, és csak néhány cellára vonatkozik a jogosultsága, a program kéri, hogy a cellákat egyenként jelölje ki és változtassa meg.
Előzmény: giaco_mo (22735)
Delila10 Creative Commons License 2013.10.24 0 0 22738

A 3 területet elnevezed a 3 felhasználó nevével. Ugyanezt a 3 nevet megadod egy érvényesítésben. Az érvényesítést én az F1 cellába vittem be.

 

A védelem menüpontban a "Tartomány módosításának engedélyezése" almenüben egyenként megadod a 3 tartományt, a hozzájuk tartozó jelszavakkal együtt. A jelszavak ne egyezzenek meg az elnevezett területek nevével.

 

A laphoz rendeled az alábbi makrót:

 

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$F$1" Then
        ActiveSheet.Protect UserInterfaceOnly:=True
        Cells.Locked = True
        Range("F1").Locked = False
        Range(Target.Value).Locked = False
    End If
End Sub

Az F1 cella értékének változásakor a makró levédi a lap összes celláját, majd megszünteti a zárolást az F1 cellában, és az érvényesítésben kiválasztott nevű tartományban.

Ha nem az érvényesítésben kiválasztott ember tartományába akarnál írni, meg kellene adnod annak a tartománynak a jelszavát.

 

 

 

Előzmény: giaco_mo (22735)
tbando Creative Commons License 2013.10.23 0 0 22737

És persze szükséges még egy a mentéshez kapcsolt makró, ami újra írásvédetté teszi az összes oszlopot.

 

A jelszóbekéréshez meg praktikusabb az inputbox használata.

 

Előzmény: tbando (22736)
tbando Creative Commons License 2013.10.23 0 0 22736

Én csak egy olyat tudnék csinálni, hogy az egész lap védve van, kivéve az a1 cella. Ide kéne beírni a személyes jelszót, majd indítani az általános írásvédettséget megszüntető makrót, ami csak a személyes jelszó szerinti oszlopokat teszi hozzáférhetővé.

Előzmény: giaco_mo (22735)
giaco_mo Creative Commons License 2013.10.23 0 0 22735

Sziasztok!

Egy excel dokumentumon belül adott 3 oszlop, és 3 felhasználó, aki hozzáférhet a dokumnetumhoz.


Miként lehetne mogoldani, hogy a mindegyik felhasználó csak a neki kijelölt oszlopban szerepő értékeket módosíthassa, a másik kettőben szereplőket ne?

(Excel 2013)

forzajuve Creative Commons License 2013.10.23 0 0 22734

Tökéletes, és nem is kell számként használnom.

Köszönöm újra!!!

Előzmény: Fferi50 (22733)
Fferi50 Creative Commons License 2013.10.23 0 0 22733

Szia!

 

Próbáld ki ezt a megoldást:

 

   ujveg = Range("X1:Y120").Find(What:=y, LookIn:=xlValues, LookAt:=xlWhole).Offset(0, 1).Value
   For Each cl In Union(Range("B7:U7"), Range("B14:E14"), Range("B24:U24")).Cells

      cl.Formula = "'" & cl.Value

   Next
   Union(Range("B7:U7"), Range("B14:E14"), Range("B24:U24")).Replace What:=regiveg, Replacement:=ujveg, LookAt:=xlPart

 

A ' karakter a szövegjelölő.

 

A piros sorokat illeszd be erre a helyre. A Dim sort egészítsd ki ezzel: , cl as Range

 

Remélem így már nem lesz gond. (Igaz, jelezni fogja, hogy a cellában szövegként tárolt szám van, tehát számoláskor nem árt vigyázni vele.)

 

Üdv.

Előzmény: forzajuve (22732)
forzajuve Creative Commons License 2013.10.23 0 0 22732

Szia!

 

Emlékszel még a számot kódra cserélős makródra? Most előjött egy hiba, sajnos a kódok között van, E1, E2, stb is, ezt pedig az excel ugye tudományos formátumra alakítja, akkor is ha az összes cellát szövegre állítom. Nem lehetne az alábbi makróba beépíteni, hogy ezek a cellák (Union(Range("B7:U7"), Range("B14:E14"), Range("B24:U24")) mindenképpen szöveg formátumúak legyenek? Vagy az egyéni formátumnál vmi kombináció?

 

köszi

 

Private Sub Worksheet_Change(ByVal Target As Range)

Dim x As Double, y As Double, regiveg As String, ujveg As String

If Not Intersect(Range("B2"), Target) Is Nothing Then

   Application.EnableEvents = False

   y = Target.Value

   Application.Undo

   x = Target.Value

   Target.Value = y

   regiveg = Range("X1:Y120").Find(What:=x, LookIn:=xlValues, LookAt:=xlWhole).Offset(0, 1).Value

   ujveg = Range("X1:Y120").Find(What:=y, LookIn:=xlValues, LookAt:=xlWhole).Offset(0, 1).Value

   Union(Range("B7:U7"), Range("B14:E14"), Range("B24:U24")).Replace What:=regiveg, Replacement:=ujveg, LookAt:=xlPart

   Application.EnableEvents = True

End If

 

End Sub

Előzmény: Fferi50 (22730)
tbando Creative Commons License 2013.10.22 0 0 22731

Kösz. Megint tanultam valami fontosat. (Bár úgy rémlik, hogy erre eccer már rájöttem....).

Előzmény: Fferi50 (22729)
Fferi50 Creative Commons License 2013.10.22 0 0 22730

Szia!

 

És persze már megint egy kicsit pongyola voltam:

A feltétel cellába idézőjelek nélkül kell beírni a kérdéses szöveget.

(Az = vel kezdődő képletbe viszont idézőjelekkel!)

 

Üdv.

Előzmény: Fferi50 (22729)
Fferi50 Creative Commons License 2013.10.22 0 0 22729

Szia!

 

A Szumha függvénynél csak a feltétel kell: SZUMHA(tartomány; feltételek; [összegtartomány])

pl.A1 cella: =SZUMHA(B:B;"<>*szó*";C:C) minden olyan számot összead a C oszlopban, ahol a B oszlop megfelelő sorában nem szerepel a szó semmilyen összetételben sem (azaz kiszűri ha lasszó és azt is ha szófaj van benne és magát az önálló szót is. Erre a csillag karakter miatt képes. Ha azt akarod, hogy csak a szó -val kezdődőekek ne vegye figyelembe, akkor az első csillagot elhagyod (így nyilván a lasszó összegződik, de az önálló szó nem).

 

A szöveg.keres tartományon szerintem nem is működik...

 

Üdv.

Előzmény: tbando (22728)
tbando Creative Commons License 2013.10.22 0 0 22728

Nem kéne ebbe még egy egy szöveg.keres-t is beiktatni?

Előzmény: Fferi50 (22727)
Fferi50 Creative Commons License 2013.10.22 0 0 22727

Szia!

 

A feltétel cellába írd be: "<>*szó*" (a szumha esetében)

 

Üdv.

Előzmény: Onyxxx (22726)
Onyxxx Creative Commons License 2013.10.22 0 0 22726

Sziasztok! Meg lehet azt oldani Excel függvényben, hogy feltétel megadásnál, mondjuk SZUMHA-nál, minden olyan értékeket adjon össze aminél egy bizonyos szó NEM szerepel?

Köszönöm szépen

djmorphy Creative Commons License 2013.10.22 0 0 22725

Okés ma/holnap küldeni fogok egyet.

 

Az "logfile"-nál rájöttem, hogy csak azokat menti ki amit statikusan én írok be valamelyik cellába. Ami függvénnyel számoltatok vagy beírom hogy 1 2 3 és lehúzom hogy a többit magától számolja runtime error 13 dob :( 

 

Előzmény: Fferi50 (22724)
Fferi50 Creative Commons License 2013.10.22 0 0 22724

Szia!

 

A dátumos makróval kapcsolatban küldj egy példát priviben, mert ez mindkettőnknél működött.

 

Üdv.

Előzmény: djmorphy (22723)
djmorphy Creative Commons License 2013.10.22 0 0 22723

Köszi Szépen!

 

Valamiért nem akar működni. :(

 

Egyenlőre megoldottam úgy, hogy ctrl+F és a "-"-t cserélje ki "."-ra :D

 

Másik kérdésem miért van az, hogy ez a makrót sikerült egyszer ráerőszakolnom az excelre és azóta sem megy :(

Tökre megörültem, hogy értettem is mit kell csinálni és hogyan és sikerült is. De egyszer elmentette az értéket hogy miről mire ment aztán azóta sem működik. Úgy sem, hogy csináltam egy tök új excelt :(

 

http://stackoverflow.com/questions/10403517/how-to-make-an-external-log-using-excel-vba

 

 

Előzmény: Fferi50 (22696)
tbando Creative Commons License 2013.10.22 0 0 22722

A 22692-ben még csak addig jutottam, hogy az excel nem minden legitim dátumformát ismer fel stringként. Azóta utána néztem, hogy milyen dátumnak látja a magyar excel a stringeket. Az alábbi táblázatban foglaltam össze a lehetséges eseteket. Az összes többi stringnél a dátumfüggvények hibaüzenetet adnak.

 

 

 

Előzmény: tbando (22692)
Fferi50 Creative Commons License 2013.10.21 0 0 22721

Szia!

 

Nem kell törölni a régi neveket! A makro a meglevő névhez hozzárendeli az új tartományt:

Set eleje = Columns("A:A").Find(what:="sakk", LookIn:=xlValues, lookat:=xlWhole)
ActiveWorkbook.Names.Add Name:="sakk", RefersTo:="=" & Range(eleje, eleje.Offset(WorksheetFunction.CountIf(Columns("A:A"), "sakk") - 1, 6)).Address

Akkor is, ha már létezik a sakk nevű tartomány!!!

 

Egy icipici változás van a makróban, az offsetnél van egy -1-es, mivel maga az induló cella offset indexe 0,0. Így ha 5 cellát talál, akkor offset(4,0) pl. az ötödik sor első cellája.

 

A fenti makrórészt a sorbarendezés után betéve minden képleted működik a másik munkalapon.

 

Üdv.

Előzmény: egerkiraly68 (22720)
egerkiraly68 Creative Commons License 2013.10.21 0 0 22720

Sziasztok! Köszönöm Delilának a linket, máris letöltöttem a könyvet. Köszi Fferi és Jimmy a tippeket, szerintem a kettő kombinációja lesz jó.

 

Csinálok makrórgözítéssel egy olyat, hogy a korábbi elnevezéseket törli az Excel a két termékre, majd a Formulas, Define Name alatt beírja a makró a képletet először az egyik termékre, majd átírva a másik termékre a képletet, beírja másodszorra is a képletet az Excel elnevező ablakba.

Mindenképp úgy szeretném megcsinálni az automatizálást, hogy egy gombnyomással törlődjön a régi elnevezés, majd utána legyen sorba rendezve minden, majd jön a Define Name egyszer az első termékre, majd ugyanez a másik termékre.

 

Hogy lehet ide feltölteni Excel fájlt? Nyilván egy sematikus táblát tennék csak fel, nem az igazi munkafájlt.

Törölt nick Creative Commons License 2013.10.21 0 0 22719

Szerintem azért szeretné makróval, mert nem gondolta volna, hogy másképp is lehet. Nem beszélve arról, hogy a makrót minden egyes alkalommal futtatni kell, amikor új adatok erülnek a munkalapra. A képletes megoldás pedig automatikusan követi a változásokat...

Előzmény: Fferi50 (22718)
Fferi50 Creative Commons License 2013.10.21 0 0 22718

Szia!

 

Ha már macróval szeretné én így csinálnám:

 

set eleje = columns("B:B").find(what:="sakk",lookin:=xlvalues,lookat:=xlwhole)

activeworkbook.names.add name:="sakk",refersto:="=" & range(eleje, eleje.offset(worksheetfunction.countif(columns("B:B"),"sakk"),6)).address

 

Az address alapból abszolut címet ad meg.

Így minden munkalapról eléri, mert munkafüzet szintű a név.

 

 

Üdv.

 

 

Előzmény: Törölt nick (22716)
Delila10 Creative Commons License 2013.10.21 0 0 22717
Előzmény: egerkiraly68 (22715)
Törölt nick Creative Commons License 2013.10.21 0 0 22716

A "Sakk" nevű tartományt ezzel a képlettel kellene definiálni:

 

=ELTOLÁS(Munka1!$B$1;HOL.VAN("sakk";Munka1!$B:$B;0)-1;0;DARABTELI(Munka1!$B:$B;"sakk");6)

 

Excel 2010-ben működik.

Valahol 2003 és 2010 között az OFSZET függvényt átnevezték ELTOLÁS-ra. 2003-ban biztosan OFSZET kell az ELTOLÁS helyett, 2007-ben nem tudom, ki kell próbálni.

Előzmény: egerkiraly68 (22715)
egerkiraly68 Creative Commons License 2013.10.21 0 0 22715

Sziasztok! Pár hete láttam itt valahol egy linket, ami Kovalcsik Géza makró könyvére mutat, meg tudja valaki adni a pontos hsz. számot? Vagy ha újra belinkelné az illető ide, nagyon jó lenne. Köszi.

 

Más. Hogyan tudom megcsinálni azt, hogy amikor el akarok nevezni egy tartományt Név definiálással, tehát nem létrehozással, akkor az Excel dinamikusan érzékelje, hogy hol kezdődik és hol végződik az a tartomány?

 

A struktúra a következő: van 6 oszlop, ahol különböző termékfajták vannak. Az egy csoportba tartozókat, melyeknek azonos a neve, ezeket szeretném definiáltatni a makróval. 

Az első oszlop tartalmazza a neveket, összesen 5 fajta termékét.

 

Ebből az 5 termékből csak 2 terméket, a Sakkot és a Labdát kell definiálni, a többi nem érdekes.

 

Ahogy Excelben csinálom: átmásoltam egy külső adatbázisból a sheet tartalmát, tehát megvannak az aktuális adataim.

Utána sorba rendezem a terméknév szerint a táblázatot, majd megnézem, hogy kezdődik a Sakk nevű termékek sora, és ott kijelölöm a kezdő cellától az utolsó őt tartalmazó celláig a tartományt, belevéve a mellette lévő másik 5 oszlopot, benne a költségadatokkal, és ugyanezt megcsinálom a másik termékre is, melynek neve Labda.

 

A Sakk és a Labda tartományelnevezéseket aztán használja egy másik munkalap a vlookup-hoz, mert onnan veszi át a vonatkozó költségadatokat.

 

Ami a makró részét illeti, logikailag úgy gondolnám, hogy sorba kell először rendezi a táblázatot terméknév szerint, majd csinálni egy utasítást, hogy a makró keresse meg a B oszlopban azt a sort, mely először tartalmazza a Sakk nevet, ezt jelölje ki, majd menjen le addig, amíg eltérő nevet nem talál ugyanabban az oszlopban, majd kijelölve a köztes területet és a mellette lévő további öt sort definiálja Sakk néven a tartományt.

Majd ugyanezt csinálja meg a Labdával is, Labda névre elnevezve.

Éppen csak a hogyant nem tudom erre az utasításra. Ezt rögzítéssel nem lehet megcsinálni, csak if then-nel vagy Case ciklussal gondolom, de a szintaktikát nem tudom.

 

A múltkori segítséget még egyszer köszi mindenkinek - Fferi, Jimmy, Tbando , a makró remekül működik azóta is :-)

Delila10 Creative Commons License 2013.10.19 0 0 22714

Magyarul összefűzés. Van ilyen nevű függvény is, de az & jellel praktikusabb.

Előzmény: forzajuve (22713)
forzajuve Creative Commons License 2013.10.19 0 0 22713

Köszi! Bevallom még a szót sem hallottam:)

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

=A1&B1

(Ez nem összegzés, ez konkatenáció.)

Előzmény: forzajuve (22711)
forzajuve Creative Commons License 2013.10.19 0 0 22711

Sziasztok!

Tud az excel olyat, hogy A1+B1 cellák összegzése, de az egyik mező szöveg? Pl. 1234 és ABCD, a C1-be 1234ABCD.

Ha túl bonyolult, nem fontos. köszi

NeomatiK Creative Commons License 2013.10.18 0 0 22710

Szia!

 

Így jó lett, köszi!

Előzmény: Fferi50 (22708)
szunyókálóoroszlán Creative Commons License 2013.10.18 0 0 22709

Köszönöm, ez bevállt! Mondjuk fogalmam sincs, hogyan kapcsolódott be...

Előzmény: Törölt nick (22631)
Fferi50 Creative Commons License 2013.10.18 0 0 22708

Szia!

 

Ott van az a sortörés benne, csak nem látod!

Cellaformázás -> igazítás -> szöveg elhelyezése sortöréssel több sorba.

 

Üdv.

Előzmény: NeomatiK (22707)
NeomatiK Creative Commons License 2013.10.18 0 0 22707

Sziasztok!

 

Excelben egy cellában van egy email cím a @ karakterrel. Automatikusan hivatkozást csinál belőle. De én nem szeretnék hivatkozást. Jobb egérgomb helyi menüben kiválasztom a hivatkozás eltávolítását, ezután oké lesz. De ha a cellában (F2) Alt+Enter nyomva egy új bekezdést csinálva hozzáírok valamt, akkor megint hivatkozás lesz azzal együtt, amit hozzáírtam. Megint hivatkozás eltávolítását választom. De ekkor az új bekezdés eltűnik, közvetlenül az email cím után kerül aminek külön sorban kéne lennie. És ez az ami nem jó, mert nekem új bekezdésben (vagyis az email cím alatti új sorba) kéne írnom.

Légyszi segítsetek! :)

tbando Creative Commons License 2013.10.18 0 0 22706

Pardon. Nem vettem észre, hogy a makrót kiegészítetted az else ággal.

Előzmény: Fferi50 (22705)
Fferi50 Creative Commons License 2013.10.18 0 0 22705

Szia!

 

Az If Not IsDate(cl.Value) Then sort nem szabad kikommentelni, mert akkor a már dátumként kezelt értékekkel gond lesz (ha pl. nem szövegként, hanem kapásból dátumként jeleníti meg a cellában, akkor nem lesz benne "-"!

Ezt kezeli az else ág, amely beállítja a magyar dátum formátumot és be is írja mégegyszer az értéket, mert így érvényesül csak.

 

A hónapnevek, meg a tartomány az példaként kezelendő természetesen.

 

Üdv.

 

 

Előzmény: tbando (22702)
tbando Creative Commons License 2013.10.18 0 0 22704

Rosszul írtam :((((. Az óra oszlopra még rá kell ereszteni a Gyakoriság fgv.-t vagy Darabtelivel meghatározni a gyakoriságokat.  A diagramot a gyakoriság táblázat adatai adják.

Előzmény: tbando (22703)
tbando Creative Commons License 2013.10.18 0 0 22703

Csinálsz még egy oszlopot, amelyben a belépési időpontokról levágod a perceket. Gondolom az =óra() fgv. erre igen alkalmas. Aztán a diagramot ezzel az oszloppal csinálod.

Előzmény: police7777 (22694)
tbando Creative Commons License 2013.10.18 0 0 22702

Annyit fűznék hozzá, hogy a tömbben megadott  hónap nevek nem tekintendők szentírásnak. Mi csak feltételeztük, hogy a csv fileból ezeket hónapnevek jönnek. Ha nem, akkor az eltérőket át kell írni. Mert enélkül kiakad a makró. (Amire ugyan lehetne írni hibakezelőt, de házi használatra felesleges, leálláskor egyszerűen csak ellenőríni kell a hónapnév-egyezéseket és javítani, amit kell).

 

És még egy megjegyzés: A jelenlegi hónapnevekkel a januári, a februári, az augusztusi, a novemberi, és a decemberi dátumokat változatlanul fogja hagyni, mert azokat az excel felismeri dátumként, és ezért azokkal nem foglalkozik. Emiatt a dátumoszlopban keverten lesznek  angol és magyar formátumú dátumok, amik a velük való számolást nem befolyásolják, hiszen az excel mindkét formát beazonosítja.  A usert azonban zavarhatja. Ez esetben az If Not IsDate(cl.Value) Then sort és a hozzátartozó End if-et kell kikommentelni.

 

Előzmény: Fferi50 (22696)
Delila10 Creative Commons License 2013.10.18 0 0 22701

Köszi!

Előzmény: Törölt nick (22699)
Fferi50 Creative Commons License 2013.10.18 0 0 22700

Szia!

 

Azt hiszem, Te nyertél! És ez ráadásul 0 indexről induló tömböt csinál.

 

Üdv.

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

ho = Split("Jan-feb-mar-apr-may-june-july-Aug-sept-oct-nov-dec", "-")

 

;-)

Előzmény: Fferi50 (22698)
Fferi50 Creative Commons License 2013.10.18 0 0 22698

Szia!

 

Ez igaz, de én nem akarom ezt a munkalapon látni egy percre sem (hiszen később nem lesz rá szükség már). A munkalapra meg csak fel kellene vinni valahogy (vagy új egyéni listát csinálni rá).

Szóval, úgy gondolom, ez a legegyszerűbb.

 

Üdv.

 

Előzmény: Delila10 (22697)
Delila10 Creative Commons License 2013.10.18 0 0 22697

A tömböt így is fel lehet tölteni, ha a hónapok neveit beviszed a lapon egy tartományba:

 

Sub mm()
    ho = Application.Transpose(Range("A1:A12"))
    MsgBox ho(5)
End Sub

Előzmény: Fferi50 (22696)
Fferi50 Creative Commons License 2013.10.18 0 0 22696

Szia!

 

Tbandóval közösen az alábbi makrot fundáltuk ki számodra:

 

Sub honapos()
Dim ho(12) As String, honap, cl As Range, elso%, masodik%, nap%, ev%, lotus As Boolean
ho(0) = "Jan"
ho(1) = "feb"
ho(2) = "mar"
ho(3) = "apr"
ho(4) = "may"
ho(5) = "june"
ho(6) = "july"
ho(7) = "Aug"
ho(8) = "sept"
ho(9) = "oct"
ho(10) = "nov"
ho(11) = "dec"
lotus = ActiveSheet.TransitionFormEntry = True
If lotus Then ActiveSheet.TransitionFormEntry = False ' ha lotus képletbevitel van, kikapcsoljuk
For Each cl In Range("A1:A40").Cells
If Not IsEmpty(cl) Then
    If Not IsDate(cl.Value) Then
            elso = InStr(cl.Value, "-")
            masodik = InStr(elso + 1, cl.Value, "-")
            nap = Left(cl.Value, elso - 1)
            ev = Mid(cl.Value, masodik + 1)
            honap = Mid(cl.Value, elso + 1, masodik - elso - 1)
            honap = WorksheetFunction.Match(honap, ho, 0)
            cl.Value = DateSerial(ev, honap, nap)
     Else
           cl.NumberFormat = "m/d/yyyy"
           cl.Value = cl.Value
     End If
End If
Next cl
ActiveSheet.TransitionFormEntry = lotus 'és visszaállítjuk az eredeti állapotot
End Sub

 

Remélhetőleg ez már minden zavaró körülményt figyelembe vesz.

 

Üdv.

Előzmény: djmorphy (22635)
Fferi50 Creative Commons License 2013.10.18 0 0 22695

Szia!

 

Ha valaki követte itt a mi kis dátumpolémiánkat,  tudja meg a végeredményt is:

 

A problémát a Lotus képletbeviteli mód bekapcsolt állapota okozta. Kikapcsolása után már rendesen működött.

A ki-be kapcsolást makro-ból is meg lehet csinálni az ActiveSheet.TransitionFormEntry =False illetve True sorokkal.

 

Üdv.

Előzmény: tbando (22692)
police7777 Creative Commons License 2013.10.18 0 0 22694

Sziasztok!

 

Segítségeteket kérem olyam diagram osszeállításában ami úgy nézne ki, hogy:  Vízszintes tengelyen 7-15 óráig az időskála van, a függőlegesen pedig darabszám.

Ábrázolni szeretném egy felhasználó szoftverhasználati szokását. Megvannak a belépési idők és oszlopdiagramban szeretném a gyakoriságot ábrázolni, hogy

pl: 7-8 óra között 4 szer, 8-9 óra között 6-szor, 9-10 óra között 1-szer stb...lépett be a szoftverbe.

 

 

 

Köszönöm előre is a segítséget.

tbando Creative Commons License 2013.10.17 0 0 22693

Hát olyan makrót valóban nehezen. De én nem ilyen makróra gondoltam. Hanem olyanra, ami elsősorban az export táblázat készítése során használatos.

Előzmény: Sánta Kutya (SK) (22681)
tbando Creative Commons License 2013.10.17 0 0 22692

Mivel a szövegesen bevítt dátumok esetenként nem működnek, gondoltam csinálok egy összehasonítást. Lásd a képet.

 

A: egy szám

B: a szám különböző dátumformátumban

C: A B-oszlopbeli számfolmátumok stringként bevíve

D: A B-oszlopi értékek Dátumértéke. Nyilvánvalóan hibás mind, mert a Dátumérték stringet vár

E: A C-oszlopbeli stringek Dátumértéke. Jó néhányat nem tud értelmezni

F:  A B-oszlopbeli dátumok Hónap értéke. Valamennyit elfogadja

G: A C oszlop stringdátumainak Hónapértéke. Csak azokat tudja értelmezni, amelyeknél a Dátumértéket is tudta.

 

Tehát a lényeg: Az excel nem tudja az összes legitim dátumformátumot szövegként értelmezni

 

Fferi50 Creative Commons License 2013.10.17 0 0 22691

Szia!

 

Akkor próbáljuk meg az alábbit:

 

       If Not IsDate(cell.Value) Then

            elso=instr(cell.value,"-")

            masodik=instr(elso+1,cell.value,"-")
            nap = Left(cell.Value, elso - 1)
            ev = Mid(cell.Value, masodik + 1)
            honap = mid(cell.Value, masodik+1,masodik-elso-1)
            honap = WorksheetFunction.Match(honap, ho, 0)
            cell.Value = DateSerial(ev, honap, nap)
       End If

 

elso, masodik integerként definiálni.

 

Küldj privit az adatlapomról lsz.

 

 

Üdv.

Előzmény: tbando (22689)
tbando Creative Commons License 2013.10.17 0 0 22690

Ja és még valami. A probléma újabb áttekintése arra is jó volt, hogy fény derült a korábbi hsz-emben hosszasan ecsetelt a pont-kötöjel probléma hátterére. Mondanom sem kell, egy banálális bénázásom okozta :)))))))

Előzmény: tbando (22689)
tbando Creative Commons License 2013.10.17 0 0 22689

Szia!

 

Ezek szerint nálad jól működik a makró. Mert nálam a Numberformat kiiktatásával sem.  Ezek szerint az én excelem (2007) valamit rosszul csinál. Megnéznéd, hogy a te gépeden, hogy működik? Elküldeném, ha megadnád a mailcímed. Meg megköszönném, ha elküldenéd a te füzetedet, hátha az én gépemen is jó lesz.  De feltehetjük a füzeteket a data.hu-ra is.

 

Más. A nap% nem minden esetben barmolja el a hónap meghatározást. Csak ha a napdátum 10 alatti. Ugyanis akkor az integer változóba egyjegyű szám kerül, és így a honap = Replace(cell.Value, nap & "-", "") utasítás a cell-ben bennehagyja a 01-ből a 0-t,  amit így hozzátesz hónaphoz, amit aztán nem ismer fel.

 

 

Előzmény: Fferi50 (22682)
Sánta Kutya (SK) Creative Commons License 2013.10.17 0 0 22688

Fordítva, nekem kell megmondanom neki.

Az inkriminált táblázat nem direkt export volt, hanem már más kolléga dolgozott rajta egy csomót.

Köszönöm mindenkinek a segítséget, ez a kérdés most már tisztázódott!

Előzmény: Fferi50 (22686)
Fferi50 Creative Commons License 2013.10.17 0 0 22687

Vagy adja szövegfájlban és akkor azt csinálsz vele az excelben amit akarsz.

Előzmény: Fferi50 (22686)
Fferi50 Creative Commons License 2013.10.17 0 0 22686

Szia!

 

De azt akkor is meg kell mondania, hogy mi lenne szám, dátum, idő, stb. Nehogy már neked kelljen találgatni.

 

Üdv.

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

Ja, import nincs, az export xls-ben történik.

Előzmény: Fferi50 (22683)
Sánta Kutya (SK) Creative Commons License 2013.10.17 0 0 22684

Köszi!

Pontosan tudom, hogy minden mezőt szövegként exportál, ezen akarok változtatni, ehhez kell az időadatok esetén némi esettanulmány. Bizonyos dolgokba csak belecsöppentem, készen kaptam, de van módom idővel változtatni rajtuk.

Előzmény: Fferi50 (22683)
Fferi50 Creative Commons License 2013.10.17 0 0 22683

Szia!

 

Két dolog:

Az egyik a makrómmal: a cl.numberformat sort légy szíves hagyd ki belőle, az nem szükséges, sőt be is zavarhat.

A másik: a szöveges fájlok beimportálása

egyrészt a fejlesztőnek - pláne ha pénzért dolgozik - kutya kötelessége megadni az exportált fájl struktúráját, amibe természetesen beletartozik az is, hogy melyik mezőnek milyen a formátuma és az adattartalma. Ez alapján már lehet játszani az importálásnál - vagy utána - az oszlopok tartalmával.

Egy működő makrónál pedig már "gyerekjáték" átírni az  oszlopokkal kapcsolatos műveleteket.

 

Üdv.

Előzmény: Sánta Kutya (SK) (22681)
Fferi50 Creative Commons License 2013.10.17 0 0 22682

Szia!

 

Köszi az alapos tesztet.

 

Szerintem a napnak nincs köze a hónap meghatározásához, így a nap% jó (nálad is az volt - bár tudom, ez nem mentség). A honap pedig variant, így elbír bármit. 

 

Valóban a dim sorban a cell változót is definiálni kell, bár én jobban szeretem nem használni a VBA -ra hajazó neveket és ezért nálam mindig cl a cell (csak a kedvedért maradt benne...), persze azt sem árt definiálni.

 

El kell hagyni cell.numberformat sort  és akkor az excel a dateserialt a rendszer beállítás szerinti dátumformátumban írja ki a cellába.(vagy át kell javítani cell.numberformat="m/d/yyyy" -re vagy át kell írni cell.numberformatlocal="éééé.hh.nn"-re). Úgy gondoltam, hogy a biztonság kedvéért állítok a formátumon, aztán jól összekevertem a magyart és az angolt....

 

Összefoglalva:

Szerintem ha a cell.numberformat sort kikommenteled, akkor nem lehet probléma a futással.

 

Üdv.

Előzmény: tbando (22670)
Sánta Kutya (SK) Creative Commons License 2013.10.17 0 0 22681

Az már egy nehéz ügy, hiszen hogy írsz olyan makrót, amelyik különböző exporttáblázatokban eltalálja, melyik oszlop legyen időformátumú a sok szám közül?

 

Persze, persze, az adatbázis meg a táblázatkezelő egészen másra való, csekély átfedéssel, ezt huhogom állandóan. :-) Ha nem szeretném az Excelt, nem volnék itt. De hogy egyszerűen alkalmazkodni kell a tecnikához, az nem igaz. A technikát alkalmazni kell a saját igényeinkhez, ez egy má szemléletmód. Általában amit a lekérdezésbe be lehet építeni, és ismétlődően kell, azt célszerű beépíteni, de pont az exportformátum nem ilyen. Az sem mellékes szempont, hogy az adatbázis kezelőprogramját pénzért tartja karban egy külső fejlesztő, az Excelt meg a bérükért használják a dolgozók munkaidőben. Sajnos egy céges környezetben ilyen nem informatikai szempontok is bejátszanak.

Előzmény: tbando (22679)
police7777 Creative Commons License 2013.10.17 0 0 22680

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

 

Remekül működik, annyit még ha tudnál segíteni, hogyha ugyanabban a cellában akarom látni még az aktuális dátumot is az időpont előtt akkor hogyan kell modosítanom a makrót?!

 

Köszönöm

Előzmény: Törölt nick (22596)
tbando Creative Commons License 2013.10.17 0 0 22679

Látom, te is éjszakai bagoly vagy :)))). Vagy tán neked már holnap van? :)))))

 

Nos, ha az aposztróf nélküli 12:00:00de Minimuma 0, akkor az gubanc, akkor valamit rosszul gondolok.

 

A számformátumok kézi beállítása viszont szerintem nem ügy. Minden bizonnyal makrózható, akár az IDŐÉRTÉK beállításával közös makróban.

 

Abban egyetértek veled, hogy az excel dátum és idő kezelése komplikált.  Az SQL-é minden bizonnyal barátságosabb. Másban viszont nyilván az excel a jobb, különben miért kellene elhagyni az adatbázist. Tehát alkalmazkodni kell az excelhez. 

 

 

Előzmény: Sánta Kutya (SK) (22676)
Sánta Kutya (SK) Creative Commons License 2013.10.17 0 0 22678

De még az év is kellhet, mivel nem a Nagy Októbertől kezdve keresi, csak az ideire.

Az én megoldásom se nagyon jó, mert elfelejtettem, milyen bonyolultan tud az Excel képletben dátumokat összehasonlítani. Hozzászoktam az SQL természetes kényelméhez, aminek az alkotói tudták, hogy ez alapfunkció.

Előzmény: tbando (22674)
Sánta Kutya (SK) Creative Commons License 2013.10.17 0 0 22677

Na ez a másik. Ha minden alkalommal kézzel kell beállítgatni az összes időoszlop formátumát, akkor nem vagyok közelebb semmivel. Csak akkor értelmes, ha sikerül beállítani a formátumot is, különben ugyanakkora munka, mert szabad szemmel is olvashatónak kell lennie.

 

Előzmény: tbando (22675)
Sánta Kutya (SK) Creative Commons License 2013.10.17 0 0 22676

0

Azaz 12:00:00 de.

Előzmény: tbando (22671)
tbando Creative Commons License 2013.10.17 0 0 22675

 Viszont ha megkérem a fejlesztőt, hogy számként exportálja, akkor nem tudom, hogy fog megjelenni, és nem tudok személyesen kísérletezni vele...

 

Ha számként akarod exportálni, akkor mi sem egyszerübb, mint hogy meghatározod a stringdátumok időértékeit és azokat expotálod. Amik aztán olyan formában jelennek meg, ahogy beállítod a formátumukat. Ráadásul ezeknél már a MIN-t is minden további hókusz-pókusz nélkül használhatod.   

Előzmény: Sánta Kutya (SK) (22664)
tbando Creative Commons License 2013.10.17 0 0 22674

Még se kell a HÓNAP oszlop. Mert így már jó lesz:

 

{=SZUM(HA(HÓNAP(A:A)=10;C:C))}

Előzmény: tbando (22673)
tbando Creative Commons License 2013.10.17 0 0 22673

Sajnos nem jó. Összeadja a teljes C-oszlopot. Így kénytelen leszel a B-oszlopban meghatározni a hónapértékeket  a HÓNAP fgv-nyel, majd arra megcsinálni a szumha-t.  

Előzmény: tbando (22672)
tbando Creative Commons License 2013.10.16 0 0 22672

Ha az októbei adatokat akarod összegezni, akkor így vidd be a szumha fgv-t:   {=SZUM(HÓNAP(A:A)=10;C:C)} 

 

A kapcsos zárójeleket természetesen ne te billentyüzd be, hanem a SZUM-t  tömbképletként vidd be.

Előzmény: Onyxxx (22668)
tbando Creative Commons License 2013.10.16 0 0 22671

Én is úgy vaagyok vele, mint te. Szeretem megérteni is a dolgokat. Ezért megkérnélek, hogy írd már meg ide, hogyaz aposztróf nélküli dátumod MIN-je, milyen eredményt ad?

Előzmény: Sánta Kutya (SK) (22667)
tbando Creative Commons License 2013.10.16 0 0 22670

Szia!

 

Szia!

 

Na átstudiroztam a makródat, meg is értettem, de van 1 olyan probléma vele amit sehogy sem tudtam kiküszöbölni. Kiváncsi vagyok ezzel kapcsolatban a véleményedre.

 

De előtte ki kéne javítani a Dim sort. A nap változó nem lehet integer, mert az gondot okoz majd a hónap meghatározáskor. Tehát a nap% helyett elég lesz a nap, de jó a nap$ is. Továbbá célszerű lenne a cell változót is felvenni a Dim-listára.

 

Na most a probléma: 

 

Hiába van DateSerial-lal megadva a dátum, változatlanul stringnek írja át. Ráadásul hiába van a kiiratás ev-ho-nap sorrendben, valamint hiába az  „yyyy.mm.dd” számformátum megadása, a makró  mm/dd/yyyy formában írja a cellába, amit aztán az excel ugyanúgy nem ismeri fel dátumként mint a kiindduló dd-oct-yyyy formátumot.  Tehát semmilyen dátumművelet sem végezhető az átalakított formával, a DÁTUMÉRTÉK  is hibát ad vissza. 

 

DE…

 

Hogy még kacifántosabb legyen,  a makró ezen új mm/dd/yyyy formátummal újra futtatva az If Not IsDate(cell.Value) feltételnél  dátumként értelmezi és az end if-re ugrik.

 

Na most akkor ez hogyan van????

 

Ami aztán hab lett a tortán, hogy a számos sikertelen javítgatás során egyszercsak a makro is leállt a Nap=Left(cell.value,Instr(cell,”-“)-1)-nél. Hosszas kísérletezés nyomán kiderült azért, mert a “-“-t  “.”-nak látta, noha a cellában kötöjel volt. Erre átírtam a makróban a kötöjeleket ponttá, amire ugyan a Left-en túljutott, de a pontot meg egy későbbi fázisban nem fogadta el, mert itt meg kötöjelet látott.  Visszaírtam makróban a pontokat kötöjellé, erre megszűnt a makró hiba, és azóta hibátlanul lefutva adja a datumként nem értelmezhető cellabeírásokat J)))).

 

Ez utóbbit csak az érdekesség kedvéért írtam meg.  De hogy miért nem kaptam dátumként értelmezett eredményt a makróddal, arról nagyon érdekelne a véleményed.

Előzmény: Fferi50 (22645)
Sánta Kutya (SK) Creative Commons License 2013.10.16 0 0 22669

szumha(és(x1>szept. 30;x1<nov. 1.)) stb., most csak az alapötlet kissé slendriánul.

Előzmény: Onyxxx (22668)
Onyxxx Creative Commons License 2013.10.16 0 0 22668

Sziasztok!

Lenne egy kérdésem, remélem tudtok segíteni.

Egy oszlopban dátumok vannak, egy másikban számok. Össze kéne adnom egy bizonyos hónaphoz tartozó számokat, de nem megy mivel az excel dátumként és nem számként vagy szövegként kezeli ezeket. Így próbálkoztam ,hogy 2013.10* hogy az óktóberieket összeadja SZUMHA-val, de sajnos nem működik így.

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

Sánta Kutya (SK) Creative Commons License 2013.10.16 0 0 22667

Van egy ilyen betegségem, hogy meg is akarom érteni a dolgokat, nemcsak megcsinálni. :-)

Plusz ugye mivel rendszeresen dolgozunk efféle adatokkal, amiket egy SQL adatbázisból egy applikáció exportál, a megértés hozzásegíthet a program fejlesztéséhez, hogy a jövőben kevesebbet kelljen buherálni. Nem az zavar, ha egyszer nyakatekerten lehet megoldani valamit, hanem ha ezt rendszeresen meg kell ismételni.

Előzmény: Fferi50 (22665)
Sánta Kutya (SK) Creative Commons License 2013.10.16 0 0 22666

Köszönöm, hétfőn tudom kipróbálni!

Előzmény: Fferi50 (22661)
Fferi50 Creative Commons License 2013.10.16 0 0 22665

Szia!

 

Egy dolgot nem értek:

Ha már működik egy +0-val kiegészített tömbképlet (és működik), akkor min görcsölünk még tovább?

Egyébként makróban bevinni tömbképletet így kell: pl. Activecell.FormulaArray=MIN(A27:C28+0).

Miért is "erőszakoskodunk egy jobb - vagy annak tűnő megoldáson? (Egy kicsit spanyolviasz esetnek látom a dolgot.)

A +0 magyarázatát pedig Tbando (22647) már megadta:

Az internetes +0 pedig az excelnek az az igen hasznos, és itt a fórumon is már többszőr említett képessége, hogy bizonyos müveleti jelekre átállítja a formátumot. Esetedben a stringet az időértékének megfelelő normál számmá.

 

Akkor most hova tovább??

 

Üdv.

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

Nincs. De ezzel együtt kezdem azt hinni, hogy csakugyan szövegnek veszi. Viszont ha megkérem a fejlesztőt, hogy számként exportálja, akkor nem tudom, hogy fog megjelenni, és nem tudok személyesen kísérletezni vele...

Aposztrófnak nem kell lennie, az csak manuális gépeléskor van, ez meg exportból visszamaradt termék.

 

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

Van benne szóköz (elején, végén)?

Előzmény: Sánta Kutya (SK) (22656)
tbando Creative Commons License 2013.10.16 0 0 22662

Ha nem kezdődik aposztróffal, akkor viszont  a MIN-nek müködnie kéne.  Nézz meg tehát egy ilyen apósztróf nélkülit, hogy mi a MIN-je. Ha önmaga,akkor OK, ha 0 akkor gubanc.

Előzmény: Sánta Kutya (SK) (22656)
Fferi50 Creative Commons License 2013.10.16 0 0 22661

Szia!

 

Itt is van a makro:

 

Sub szovegido()
Dim szov As String, elso%, masodik%, cl As Range
For Each cl In Range("A2:B4").Cells
    szov = cl.Value
    elso = InStr(szov, ":")
    masodik = InStr(elso + 1, szov, ":")
    cl.Value = TimeSerial(Left(szov, elso - 1), Mid(szov, elso + 1, masodik - elso - 1), Mid(szov, masodik + 1))
    cl.NumberFormat = "hh:mm:ss"
Next
End Sub

 

Ez az adott tartományban szereplő összes cellatartalmat átállítja időértékké és formátummá.

Feltétele, hogy legyen benne két db kettőspont mint elválasztó (tehát 0:12:12, és 0:0:3 is ok, de 0:12 az nem), ezt most nem ellenőrzöm.

Ha szükséges, írj és beleteszem.

 

Üdv.

 

 

 

Előzmény: Sánta Kutya (SK) (22653)
Fferi50 Creative Commons License 2013.10.16 0 0 22660

Szia!

 

Akkor egy megoldási javaslat:

 

Az időértéket tartalmazó oszlopot az Adatok - szövegből oszlopok című eszközzel vágd 3 oszlopra - határoló a : .

Ezután a 3 oszlopból az idő(óra,perc,másodperc) függvénnyel már időértéket kapsz belőle és ezen műxik a min függvény helyesen!

Még dolgozom a makrón, hátha nem kell külön oszlopokat használni.

 

Üdv.

 

 

Előzmény: Sánta Kutya (SK) (22653)
tbando Creative Commons License 2013.10.16 0 0 22659

Akkor passz :((((

Előzmény: Sánta Kutya (SK) (22657)
tbando Creative Commons License 2013.10.16 0 0 22658

djmorphy biztos örül majd neki. Én még egyelőre tanulmányozom. Mert vannak benne újdonságok.

 

Az excel meg nyilván figyelmesebb mint én, és az októbert nem fogja 9-ik hónapként meghatározni :)))))))))

Előzmény: Fferi50 (22645)
Sánta Kutya (SK) Creative Commons License 2013.10.16 0 0 22657

kez

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

Nem dődik aposztróffal, megnéztem.

Előzmény: tbando (22655)
tbando Creative Commons License 2013.10.16 0 0 22655

A cellaformátum megnézése nem adekvát a te esetere.  Hogy értsd: állits be egy üres cellát időformátumra.  Aztán írd bele, hogy Sánta Kutya. Aztán nézd meg a cellaformátumát. Az lesz hogy időformátum. Noha valójában nyilvánvalóan string. Amint arról már írtam, erről a SZERKESZTŐLÉCEN győződhetsz meg. Mert ott majd látod, hogy  beírás aposztróffal kezdődik. Na most írj be ugyanebbe a cellába egy tizedes törtet. Azt már időformátumban adja vissza. A szerkesztőlécen sem lesz aposztróf elötte. 

 

Tehát az időformátum beállítás azt csinálja, hogy a megadott szám törtrészét időkijelzéssé formázza. De ha nem számot kap, akkor azzal nem tud mit kezdeni. Ezért meghagyja, ahogy van. Még mindig jobb, mintha hibakijelzést adna.

Előzmény: Sánta Kutya (SK) (22649)
Sánta Kutya (SK) Creative Commons License 2013.10.16 0 0 22654

Lehet, hogy mégis stringnek tekintette őket az Excel, mert az időérték függvény értelmezve volt rájuk. Nem igazán értem.

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

Miért? A számformátum beállítása nem tesz számmá egy számot?

Ezeket az időket százával exportáljuk egy adatbázisból, nincs mód tizedestörtként bevinni őket.

Előzmény: Fferi50 (22651)
Fferi50 Creative Commons License 2013.10.16 0 0 22652

Szia!

 

Annyit módosítanom kell, hogy két sztring esetén valóban 0 min, viszont ha az egyik igazi számként van megadva, akkor az a min függvény eredménye!

És még egy érdekesség:  11 = "11" viszont igaz!

 

Üdv.

Előzmény: tbando (22647)
Fferi50 Creative Commons License 2013.10.16 0 0 22651

Szia!

 

Nem tudom, hogy számként vitted-e be, vagy ebben a formában "3:12:21" (idézőjelek nélkül persze), mert ha ez utóbbi, akkor bármit csinálhatsz a számformátummal, soha nem lesz belőle idő!!!!!

Ha viszont pl. 0,5-ként viszed be és átállítod az időformátumra, akkor már műxik.

 

Üdv.

Előzmény: Sánta Kutya (SK) (22649)
Fferi50 Creative Commons License 2013.10.16 0 0 22650

Szia!

 

 

Mondanám, hogy természetesen szövegként (hiszen más karakterek is vannak benne - és nem idő formátum, csak olyan szöveg, mintha idő lenne! szerintem) és fütyül a számértékre.

Mivel a min, max függvénynél eleve írja, hogy az argumentumoknak számoknak kell lenni, ezért én nem is próbálkoztam szöveggel.

Tény, hogy a VBA tud szövegeket is összehasonlítani, elsősorban a hosszuk, másodsorban a betűk alapján, de ezt matematikára felhasználni - hát nem tudom.

Egyébként a szöveges min példád (11, 12) nálam egyből 0-át eredményezett, viszont az A1(11)>A2(12) értéke HAMIS, ami teljesen rendben van a karakteres összehasonlítás alapján.

De egy áthidaló megoldás:

 

A1="12:34:25"   B1="12:23:12"    C1=HA(A1>B1;B1;A1)  Ez megmondja a minimumot. Nyilván, ha több érték van, akkor ennél kicsit bonyolultabb a dolog.

 

Üdv.

Előzmény: tbando (22648)
Sánta Kutya (SK) Creative Commons License 2013.10.16 0 0 22649

Igen. Ráálltam a cellára, leolvastam, idő. Az első, ami *-gal van megjelölve. Átállítottam egy másik hasonló időformátumra, ami nem csillagos, hátha. Azzal se működött.

Nem string.

Előzmény: Fferi50 (22646)
tbando Creative Commons License 2013.10.16 0 0 22648

SK stringet használt, nem időformátumot vagy számfomátumot. Mert akkor neki is elfogadta volna min-t.

 

A 2010 hogy értelmezi, a stringként megadott időt?

Előzmény: Fferi50 (22646)
tbando Creative Commons License 2013.10.16 0 0 22647

Szvsz attól string, hogy stringként vitted be. Attól hogy az időformátumra hajazó stringet az excel képes időformátumnak is nézni, attól az még string marad. Amit ha jobbra igazítasz, akkor jobbra igazított string lesz. Nézd csak meg a szerkesztőlécen, ott lesz elötte az aposztróf.

 

Az internetes +0 pedig az excelnek az az igen hasznos, és itt a fórumon is már többszőr említett képessége, hogy bizonyos müveleti jelekre átállítja a formátumot. Esetedben a stringet az időértékének megfelelő normál számmá.  Van ilyen számos egyéb is:

 

pl. a=b*1 az 1 ha igaz, és 0 ha nem. Az 1&1 eredménye meg "11".  Ezért ha A1="11" és A"=12 akkor Min(a1:a2)=12.

 

Persze elég nehéz azt kitanulni, hogy maradva a fenti a1-a2 kiosztásnál az  a1+a2=23, de a szum(a1:a2)=12   :))))))

 

Előzmény: Sánta Kutya (SK) (22644)
Fferi50 Creative Commons License 2013.10.16 0 0 22646

Szia!

 

Nekem 2010-es Excelben minden hepcia nélkül működik a min és a max függvény időformátumban és számformátumban is.

Még tömbképlet sem kell hozzá.

Biztos, hogy a szabványos időformátumok közül használod valamelyiket?

 

Üdv.

 

Előzmény: Sánta Kutya (SK) (22644)
Fferi50 Creative Commons License 2013.10.16 0 0 22645

Szia!

 

Egy kicsit módosítottam a javaslatodon a következők miatt:

Ha általános formában importálja a csv fájlt, lesznek olyan dátumok, amelyeket tud értelmezni a magyar excel is (pl.legközelebb nov.), ezt érdemes figyelni és kezelni.

Ha Option Base 0 akkor lehet 0-ról indítani a hónapok feltöltését és nem kell így az eredményből kivonni 1-et, (vagy ha Option Base 1, akkor sem.)

Jóllehet, a cella alapértelmezésben az értéket adja vissza, én mégis szeretem használni a .value-t mivel így gyorsabb a számolás.

Lehet, hogy nem minden nap van 0-val kezdve, nem minden hónap 4 karakter hosszú. Ezért inkább a határolóval célszerű operálni (ami persze lehet más is, nem csak "-".

Továbbá- miért ne csinálnánk egyből dátumot és állítanánk be a dátum formátumot az adott cellán?

 

Sub honapos()
Dim ho(12) As String, ev%, nap%, honap
ho(0) = "Jan"
ho(1) = "feb"
ho(2) = "mar"
ho(3) = "apr"
ho(4) = "may"
ho(5) = "june"
ho(6) = "july"
ho(7) = "Aug"
ho(8) = "sept"
ho(9) = "oct"
ho(10) = "nov"
ho(11) = "dec"
For Each cell In Range("A1:A40")
If Not IsEmpty(cell) Then
       If Not IsDate(cell.Value) Then
            nap = Left(cell.Value, InStr(cell.Value, "-") - 1)
            ev = Mid(cell.Value, InStr(4, cell.Value, "-") + 1)
            honap = Replace(cell.Value, nap & "-", "")
            honap = Replace(honap, "-" & ev, "")
            honap = WorksheetFunction.Match(honap, ho, 0)
            cell.Value = DateSerial(ev, honap, nap)
            cell.NumberFormat = "yyyy.mm.dd"
       End If
    End If
Next
End Sub

 

És persze a Te programod sem csinál 27-Oct-2013-ból 2013.09.27-et!

 

Üdv.

Előzmény: tbando (22641)
Sánta Kutya (SK) Creative Commons License 2013.10.16 0 0 22644

OK, de mitől string, amikor ez egy időformátumú cella, jobbra igazított tartalommal,  tehát számként kéne kezelnie?

Előzmény: tbando (22642)
tbando Creative Commons License 2013.10.16 0 0 22643

Szia!

 

A 22641 makróban szokás szerint maradt 1-2 szépség hiba. Ha zavarnak és szeretnéd korrigáltatni, jelentkezz.

Előzmény: djmorphy (22635)
tbando Creative Commons License 2013.10.16 0 0 22642

A stringeknél ez már csak így van.   Annak ellenére, hogy az "a<"b"=IGAZ és az"a">"b"=HAMIS, a MIN("a";"b")= 0. Valószinűleg azért, mert a MIN a stringeket 0-nak tekinti. Ahogy egyébként a SZUM is, az ÁTLAG is, meg a DARAB is. Bár ez utóbbinak van  darab2 változata is.  

Előzmény: Sánta Kutya (SK) (22640)
tbando Creative Commons License 2013.10.16 0 0 22641

Biztos van elegánsabb megoldás is, de én csak erre vagyok egyelőre képes. Kijelölöd a szöveges cellatartományt, amelyben vegyesen vannak dátumok és egyebek, majd elinditod a makrót, ami a dátumokat átírja 07-Oct.-2013 formáról, 2013.09.07-re, amivel a magyar excel már elboldogul.  Két feltételnek kell ehhez teljesülni: 1. A dátumok mind amerikai formátumuak és a hónapok az angol rövidítésüek legyenek.  2. A felölelt időszak 2000-2099 közé essen.

A makró extrém esetben elbarmolhatja a cella tartalmát, ha jobbról a 3.-4. betű "20" és ez nem a 2000-res dátumból származik.  A makro szerkezete viszont roppant egyszerű, ezért a feltételeket könnyű átírni. 

 

 

Sub djmorphdatum()

 

Dim a$, b$, ev%, ho, nap%, honum, cell
Dim honapok(12)

 

honapok(1) = "jan"
honapok(2) = "feb"
honapok(3) = "mar"
honapok(4) = "apr"
honapok(5) = "may"
honapok(6) = "june"
honapok(7) = "july"
honapok(8) = "aug"
honapok(9) = "sept"
honapok(10) = "Oct"
honapok(11) = "nov"
honapok(12) = "dec"

 

For Each cell In Selection
If Left(Right(cell, 4), 2) = "20" Then
a = cell
ev = Right(a, 4)
ho = Mid(a, 4, Len(a) - 8)
nap = Left(a, 2)

honum = Application.Match(ho, honapok, 0) - 1
If honum < 10 Then honum = "0" & honum
b = ev & "." & honum & "." & nap

cell.Value = b
End If
Next cell

End Sub

  

Előzmény: djmorphy (22635)
Sánta Kutya (SK) Creative Commons License 2013.10.16 0 0 22640

Találtam egy nyakatekert workaroundot:

http://www.mrexcel.com/forum/excel-questions/461313-find-minimum-time-value.html

De nem értem, hogy működik. Nem a tömbképletet nem értem, hanem a +0-t. Mindenképpen hibás működés, hogy közönséges MIN függvénnyel nem ad jó eredményt.

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

01:44:16  01:38:08  0:00:00

Ez az A1:C1, és a harmadik szám (C1) az =MIN(A1:B1) képlet értéke.

Miért?

Ha időértéket számolok belőlük, megtalálja a minimumot, direktben meg nem. Mindhárom cella formátuma idő.

Fferi50 Creative Commons License 2013.10.16 0 0 22638

Szia!

 

Nyilván van hozzáférésed a VBprojekthez. Akkor használhatod a makróban az

Activeworkbook.VBProject.VBComponents lehetőségeit, illetve

Activeworkbook.VBProject.VBComponents("Thisworkbook" (vagy bármelyik másik darab).CodeModule tulajdonságait.

A VBComponents a Codename-ket fogadja el névként.

 

Üdv.

 

Előzmény: seven update sorbi (22636)
police7777 Creative Commons License 2013.10.16 0 0 22637

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

 

Remekül működik, annyit még ha tudnál segíteni, hogyha ugyanabban a cellában akarom látni még az aktuális dátumot is az időpont előtt akkor hogyan kell modosítanom a makrót?!

 

Köszönöm

 

 

 

Jimmy the Hand

2013.10.14 11:12:49  22596

Másold be ezt a makrót a munkafüzetedbe, és rendelj hozzá egy billentyűkombinációt.

 

Sub Pontosidő()     With ActiveCell         .Value = Time()         .NumberFormat = "h:mm:ss"     End With End Sub

 

Előzmény: police7777

2013.10.14 10:23:15 © 22595

Sziasztok!

 

Segítsetek! Olyan időfüggvény kellene nekem, ami az éppen aktuális időt rögzíti MÁSODPERCRE pontosan. A Ctrl+Shift+. kombináció az percre pontosan írja csak az időt.

 

Köszönöm

seven update sorbi Creative Commons License 2013.10.16 0 0 22636

Sziasztok!

 

Nekem is lenne egy kérdésem. Szeretnék egy egy excel file "Thisworkbook" lapján lévő makrókat beimportálni egy másik excel file "Thisworkbook" lapjára. A problémám az, hogyha kiexportálom a thisworkbook-ot, akkor az exportálás automatikusan egy class module file-t hoz létre (cls kiterjesztéssel), amit, ha visszaimportálok a másik munkafüzetbe, akkor ott is class module-ként jelenik meg, de én a "Thisworkbook" lapra szeretném azt bemásolni (nem kézzel, hanem makróval).

 

Köszi a segítséget.

djmorphy Creative Commons License 2013.10.16 0 0 22635

Sziasztok!

 

Dátummal kapcsolatban lenne kérdésem. 

CSV-ből importálok file-okat. Az "AD" oszlopba importálja a dáumokat de a következő formátumban:

"07-Oct-2013" 

Hogyan tudnám rávenni, hogy az excel tudja kezelni ezt a dátumot pl viszonyítani tudjak hozzá stb? Az a baj, hogy göngyölített adathalmaz tehát mindig csak nőni fog és egyesével átirogatni nem nagy élmény :D

tbando Creative Commons License 2013.10.16 0 0 22634

Azon töprengtem, hogyan lehetséges úgy átállítani fix tizedesre az excelt, hogy a usernek erről fogalma sincs.  Hát végülis nagyon könnyen. Mert ha több füzet van nyitva, akkor, ha akármelyiket is átállítjuk, azzal a többi füzetben is megtörténik az átállítás. Ha a későbbiek során ezek közül az átállított füzetek közül bármelyiket is behívjuk elsőként, az tovább "fertőzi" az utána megnyilókat, amelyek szintén hasonlóképpen fognak viselkedni. Egészen addig, amig ki nem kapcsoljuk a fix tizedes módot az egyik füzetben, mert ezzel a többi megnyitott füzetben is megszűnik. 

Előzmény: tbando (22632)
Fferi50 Creative Commons License 2013.10.15 0 0 22633

Szia!

 

És ezzel együtt a tizedesjegyek számát is átállította, ha 500000 esetén 0,5 jelenik meg, akkor 6 a tizedesjegyek száma!

 

Üdv.

Előzmény: Törölt nick (22631)
tbando Creative Commons License 2013.10.15 0 0 22632

Erre szépen rájöttél. Nem is tudtam, hogy van ilyen :)))))

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

Ötlet:

 

Bekapcsolta valaki a "fixed decimal mode-ot". Alant le van írva, hogy hogy lehet kikapcsolni.

 

Ques 19. Your colleague created a dashboard and when you enter a value, it appears with two decimal places. For example, when you enter 265 it shows up as 2.65. What's wrong? Solution: By chance Excel's fixed-decimal mode was turned on. To return to normal,
Excel 2003 -->
Click Tools and then Options to display the Options dialog box.
Then click the Edit tab and remove the check mark from the "Fixed decimal " option.
Excel 2007 -->
Click Office button on Top-Left corner and click 'Excel Options'.
Go to Advanced and Uncheck 'Automatically insert a decimal point' option.
Excel 2010 -->
Click File button on Top-Left corner and click 'Excel Options'.
Go to Advanced and Uncheck 'Automatically insert a decimal point' option.

 

forrás: http://www.excelitems.com/2010/12/excel-vba-interview-questions.html

Előzmény: szunyókálóoroszlán (22593)
Fferi50 Creative Commons License 2013.10.15 0 0 22630

Szia!

 

Azt mondjuk nem írtad, milyen módon kell kiosztani a posztokat...(képlet, makró, kézzel...)

Mondjuk a kézi kitöltést segíti ha a képen látható módon csinálsz egy "segítséget" magadnak (darabteli függvénnyel).

Üdv.

Előzmény: fres01 (22600)
tbando Creative Commons License 2013.10.15 0 0 22629

Csinálhatod FKERES-sel is. A százalékokat kumulálod 0-tól 83-ig és melléjük irod a posztokat. Majd az 1-100-ig kitöltött cellák mellé beírod az FKERES képletet: =fkeres(szám-1;$posztkiosztó;2) 

Előzmény: fres01 (22603)
tbando Creative Commons License 2013.10.15 0 0 22628

Írtad, hogy nézted a számformátumot is. Na és melyik formátum volt kijelölve, és azt hogyan illusztrálta, miközben az 5000000/0,5-ös cella volt kijelölve?

Előzmény: szunyókálóoroszlán (22627)
szunyókálóoroszlán Creative Commons License 2013.10.14 0 0 22627

Nem az. 

?

Előzmény: Eredő Vektor (22594)
Fferi50 Creative Commons License 2013.10.14 0 0 22626

Szia!

 

No egy kis jó hír a mai rémregény végére.

 

Jó éjt!

Előzmény: forzajuve (22625)
forzajuve Creative Commons License 2013.10.14 0 0 22625

Igen-igen! Ez lesz az!:) Nagyon köszönöm!!!

Előzmény: Fferi50 (22624)
Fferi50 Creative Commons License 2013.10.14 0 0 22624

Szia!

 

Elnézést, de ma nem vagyok jó formában!

Range("A7").value=left(range("A7").value,5) & csere

Range("B17").value=left(range("B17").value,5) & csere

 

Remélem, ez már segít.

 

Üdv.

Előzmény: forzajuve (22620)
forzajuve Creative Commons License 2013.10.14 0 0 22623

Dehogynem. "Compile error: expected: list separator or )"

 

 

Private Sub Worksheet_Change(ByVal Target As Range)

Dim csere As String

Dim x As Double, y As Double, regiveg As String, ujveg As String

If Not Intersect(Range("B2"), Target) Is Nothing Then

   Application.EnableEvents = False

   y = Target.Value

   Application.Undo

   x = Target.Value

   Target.Value = y

   regiveg = Range("X1:Y120").Find(what:=x, LookIn:=xlValues, lookat:=xlWhole).Offset(0, 1).Value

   ujveg = Range("X1:Y120").Find(what:=y, LookIn:=xlValues, lookat:=xlWhole).Offset(0, 1).Value

   Union(Range("B7:U7"), Range("B14:E14"), Range("B24:U24")).Replace what:=regiveg, replacement:=ujveg, lookat:=xlPart

   Application.EnableEvents = True

End If

If Not Intersect(Range("B1"), Target) Is Nothing Then

    Application.EnableEvents = False

    csere = Mid(Target.Value, 6)

    Range("A7").value=left(range("A7",5).value & csere
    
    Range("B17").value=left(range("B17",5).value & csere
 
    Range("C17").value=left(range("C17",5).value & csere
    
    Range("D17").value=left(range("D17",5).value & csere
    
    Range("E17").value=left(range("E17",5).value & csere
    
    Range("A24").value=left(range("A24",5).value & csere
    
    Range("D34").value=left(range("D34",5).value & csere

    Application.EnableEvents = True

End If

End Sub

Előzmény: Fferi50 (22621)
Attila Fehér Creative Commons License 2013.10.14 0 0 22622

De egy unload ilyet okozna? :O Sot, az unloaddal meg a memoriaban sem foglal ugy helyet tudomasom szerint.

Előzmény: Fferi50 (22604)
Fferi50 Creative Commons License 2013.10.14 0 0 22621

Szia!

 

Nem másolnád be azt a hibaüzetet és a makrót, ami most fut?

 

Köszi

Előzmény: forzajuve (22620)
forzajuve Creative Commons License 2013.10.14 0 0 22620

Ugyanaz a hibaüzenet.

Előzmény: Fferi50 (22619)
Fferi50 Creative Commons License 2013.10.14 0 0 22619

Szia!

 

Bocs, az előző válasz nem ér!

 

Range("A7").value=left(range("A7",5).value & csere

Range("B17").value=left(range("B17",5).value & csere

 

Már megint a szokásos hanyagságom!

 

Üdv.

Előzmény: forzajuve (22617)
Fferi50 Creative Commons License 2013.10.14 0 0 22618

Szia!

 

Melyik felsorolásban hiányolja?

Range("A7").value=left(range("A7").value & csere

Range("B17").value=left(range("B17").value & csere

Ezeket a cserés képleteket külön-külön sorba írd lsz.

 

 

Üdv.

Előzmény: forzajuve (22617)
forzajuve Creative Commons License 2013.10.14 0 0 22617

Valami lista elválasztót vagy zárójelet szeretne a felsorolásba.

Előzmény: Fferi50 (22616)
Fferi50 Creative Commons License 2013.10.14 0 0 22616

Szia!

 

Igen, igazad van, engem egy kicsit átvert a saját programom, amikor ugyanazokat az értékeket adtam minden szóbanforgó cellának, persze, hogy nem láttam az "ármánykodást".

Akkor most egyenlőre nem látok mást, mint cellánként megváltoztatni az értéket:

Range("A7").value=left(range("A7").value & csere

Range("B17").value=left(range("B17").value & csere és így tovább, ezeket a

 

   celja.Value = Left(celja.Value, 5) & csere

 

sor helyett írd be és elhagyhatod

 

celja As Range, beírást, valamint a

 

    Set celja = Union(Range("A7"), Range("B17"), Range("C17"), Range("D17"), Range("E17"), Range("A24"), Range("D34"))

 

sort.

 

Remélem, így már jobb lesz a dolog.

 

Üdv.

Előzmény: forzajuve (22615)
forzajuve Creative Commons License 2013.10.14 0 0 22615

Bocs, nem, mégsem ez a probléma. Jelenleg az alábbit használom, és az első 5 karaktert mindenképpen az A7-ből veszi, ha pedig az A7-et kitörlöm, le se fut...


Private Sub Worksheet_Change(ByVal Target As Range)

Dim celja As Range, csere As String

Dim x As Double, y As Double, regiveg As String, ujveg As String

If Not Intersect(Range("B2"), Target) Is Nothing Then

   Application.EnableEvents = False

   y = Target.Value

   Application.Undo

   x = Target.Value

   Target.Value = y

   regiveg = Range("X1:Y120").Find(what:=x, LookIn:=xlValues, lookat:=xlWhole).Offset(0, 1).Value

   ujveg = Range("X1:Y120").Find(what:=y, LookIn:=xlValues, lookat:=xlWhole).Offset(0, 1).Value

   Union(Range("B7:U7"), Range("B14:E14"), Range("B24:U24")).Replace what:=regiveg, replacement:=ujveg, lookat:=xlPart

   Application.EnableEvents = True

End If

If Not Intersect(Range("B1"), Target) Is Nothing Then

    Application.EnableEvents = False

    Set celja = Union(Range("A7"), Range("B17"), Range("C17"), Range("D17"), Range("E17"), Range("A24"), Range("D34"))

    csere = Mid(Target.Value, 6)

    celja.Value = Left(celja.Value, 5) & csere

    Application.EnableEvents = True

End If

End Sub

Előzmény: Fferi50 (22613)
forzajuve Creative Commons License 2013.10.14 0 0 22614

Rendben, nagyon köszönöm, hogy ezt is leírtad, így a későbbiekben is szabadon változtathatok a kijelölt területeken.

Előzmény: Fferi50 (22613)
Fferi50 Creative Commons License 2013.10.14 0 0 22613

Szia!

 

A következőket javaslom:

 

Az alábbi sor helyett:

 Range("A2:U500").Replace what:=regiveg, replacement:=ujveg, lookat:=xlPart

 

Írd be a következőt:

 

union(range("A2:U6"),range("A8:A23"),range("A25:A500"),range("B6:E16"),range("B18:C500"),range("E18:E500"),range("D18:D33"),range("D35:D500"),range("F2:U500")).Replace what:=regiveg, replacement:=ujveg, lookat:=xlPart

 

Ezzel kizárod az első módosításból a második változás érintett celláit. A címek kiszámolását oszloponként viszonylag könnyen meg tudod tenni. Arra kell figyelni, hogy a Union csak 30 paramétert fogad el.

Más módon is meg lehet oldani a cellák kihagyását, de az már mélyebb excel(VBA) ismereteket feltételez.

 

Üdv.

forzajuve Creative Commons License 2013.10.14 0 0 22612

Nem, nincs ott karakter, máshol is átírja az első 5-öt is, csak az első változtatandó mezőben nem.

Előzmény: Fferi50 (22610)
Fferi50 Creative Commons License 2013.10.14 0 0 22611

Szia!

 

Igen, nyilván a két módosítási lehetőség feltételeit vagy tartományait valamilyen módon szét kellene választani. Ezért is kérdeztem már korábban is, hogy vannak-e kiválasztási szempontjaid.

Egy kicsit gondolkodom még, hogyan oldható az meg, ha ugyanabban a tartományban kell ezeket a változtatásokat megcsinálni.

Egyébként a program mindkét része azt csinálja, amire megírtuk:

Az első kicseréli az adott karaktersorozatot egy másik karaktersorozatra minden olyan cellában, ahol talál ilyet, előfordulási helyétől függetlenül - sőt, ha több ilyen karaktersorozat van benne, mindet kicseréli.

A második pedig az általad definiált tartományban cseréli a karaktereket.

 

Üdv.

Előzmény: Fferi50 (22610)
Fferi50 Creative Commons License 2013.10.14 0 0 22610

Szia!

 

D34-ben csak a 3. karaktert írja át és utána a 6-tól vagy a 3-tól írja be a cserekaraktereket?

Nem lehet, hogy a cellában elől vannak szóközök vagy egyéb, nem látható karakterek? Mert a szövegfüggvények ezeket is számolják.

 

Üdv.

Előzmény: forzajuve (22608)
forzajuve Creative Commons License 2013.10.14 0 0 22609

Nem, valamiért több helyen is átírja az első 5-öt is, ha jól látom arra, ami az első változtatandó mezőben van.

Előzmény: Fferi50 (22607)
forzajuve Creative Commons License 2013.10.14 0 0 22608

így gondoltad? működik egyébként, csak D34-ben indokolatlanul átírja a 3. (Z) karaktert is A-ra. De amúgy ez már tényleg apróság, nem gond átrni, csak érdekességképpen...

nagyon köszönöm!

 

Private Sub Worksheet_Change(ByVal Target As Range)

Dim celja As Range, csere As String

Dim x As Double, y As Double, regiveg As String, ujveg As String

If Not Intersect(Range("B2"), Target) Is Nothing Then
   Application.EnableEvents = False
   y = Target.Value
   Application.Undo
   x = Target.Value

   Target.Value = y
   regiveg = Range("X1:Y120").Find(what:=x, LookIn:=xlValues, lookat:=xlWhole).Offset(0, 1).Value

   ujveg = Range("X1:Y120").Find(what:=y, LookIn:=xlValues, lookat:=xlWhole).Offset(0, 1).Value

   Range("A2:U500").Replace what:=regiveg, replacement:=ujveg, lookat:=xlPart
   Application.EnableEvents = True

End If

If Not Intersect(Range("B1"), Target) Is Nothing Then
    Application.EnableEvents = False
    Set celja = Union(Range("A7"), Range("B17"), Range("C17"), Range("D17"), Range("E17"), Range("A24"), Range("D34"))
    csere = Mid(Target.Value, 6)
    celja.Value = Left(celja.Value, 5) & csere
    Application.EnableEvents = True
End If

End Sub

Előzmény: Fferi50 (22607)
Fferi50 Creative Commons License 2013.10.14 0 0 22607

Szia!

 

Private Sub Worksheet_Change(ByVal Target As Range)
Dim celja As Range, csere As String
If Not Intersect(Range("Y18"), Target) Is Nothing Then
    Application.EnableEvents = False
    Set celja = Union(Range("Y20"), Range("Z21"), Range("AA23"), Range("AB25"))
    csere = Mid(Target.Value, 6)
    celja.Value = Left(celja.Value, 5) & csere
    Application.EnableEvents = True
End If
End Sub

 

Az egész eljárást beteheted a másik mellé a worksheet_change eseménykezelőbe!

A naracs színű sort szúrd be rögtön az első sorba!

A többi sort az End Sub fölé érdemes beszúrni, akkor biztosan nem zavarod meg a lelkivilágát.

Nálam az Y18 volt a vezérlőcella, a megváltoztatandókat pedig a set celja= sorban látod. Ha 4-nél több cellát akarsz változtani, akkor a konkrét cella címeket vesszővel elválasztva folytasd a második zárójel előtt a minta szerint.

csere: a vezérlő cellád értékének veszi a 6-dik karaktertől kezdődő részét.

A célcellákban marad az első 5 karakter és hozzáteszi a fentebb vett részt.

 

Most ki is próbáltam magamnál, remélem, nem lesz vele gondod.

 

Üdv. 

Előzmény: forzajuve (22606)
forzajuve Creative Commons License 2013.10.14 0 0 22606

Az újból vegye. Fix cellákban kellene cserélni, ha küldenél egy egyszerű mintát azt már át tudnám javítani:) köszi

Előzmény: Fferi50 (22601)
Fferi50 Creative Commons License 2013.10.14 0 0 22605

Szia!

 

Én úgy csinálnám, hogy elkezdeném ciklusban  beírni a cellákba,  hogy kapus, szélső,irányító ...stb. egymás után.Számolnám a ciklusokat, aztán a 15. után már nem írnék irányítót, a 17. után beállót és így tovább.

  

Üdv.

Előzmény: fres01 (22603)
Fferi50 Creative Commons License 2013.10.14 0 0 22604

Szia!

 

Én is azt gondoltam - csak ezek szerint nem írtam egyértelműen - hogy a rossz kódban valószínűleg az unload nem tetszik az Excelnek (mivelhogy a jóban ilyen nincs, hanem ugyanarra a fomra amire a rosszban az unload volt, hide van és persze nem is ugyanott).

 

Üdv.

Előzmény: Attila Fehér (22592)
fres01 Creative Commons License 2013.10.14 0 0 22603

Igen :) nem is aza a porblémám hanem h nekem kell genenrálni h a 100 sorba 18 kapus legyen stb.. :)

Fferi50 Creative Commons License 2013.10.14 0 0 22602

Szia!

 

Százalékszámítás megy?

 

Üdv.

Előzmény: fres01 (22600)
Fferi50 Creative Commons License 2013.10.14 0 0 22601

Szia!

 

Az újonnan beírt 13 karakterből vegye a cserét vagy máshonnan? Mert ez nem mindegy. Továbbra is aktuális a kérdés, honnan tudod, hogy éppen melyik cellában kell a cserét végrehajtani?

Az eseménykezelő makróval ez a feladat is gyorsan megoldható.

Egyébként pedig a szöveg manipuláló függvényeket ajánlom figyelmedbe.

 

Üdv.

Előzmény: forzajuve (22597)
fres01 Creative Commons License 2013.10.14 0 0 22600

Sziasztok!

Tudnátok ebben segíteni? A 2. feladatnál megakadtam :S

Készítsd el a kézilabda NB.II. ifjúsági bajnokságban résztvevő játékosok adatbázisát az alábbiak szerint!

1. Ebben a korosztályban 100 játékos van, mindegyikük 1994.01.01 és 1996.12.31 között született. (A születési dátumnál a jól ismert hosszú képletet használd!)

2. Töltsd ki a 'Poszt' oszlopot, ha tudjuk, hogy a játékosok
18%-a kapus
15%-a irányító
28%-a átlövő
22%-a szélső
17%-a beálló.

Köszönöm előre is 

Eredő Vektor Creative Commons License 2013.10.14 0 0 22599

a cserénél használhatsz joker karaktereket ("*" szövegdarabot helyettesít, "?" egy karaktert)

Előzmény: forzajuve (22597)
Eredő Vektor Creative Commons License 2013.10.14 0 0 22598

A egynél több cella van kijelölve, akkor a csere funkció csak a kijelölt cellákban hajtódik végre.

 

Előzmény: forzajuve (22597)
forzajuve Creative Commons License 2013.10.14 0 0 22597

Sziasztok!

 

Tudnátok még egy egyszerűbb automatikus cserés kérdésben segíteni? Csak az általam meghatározott cellákban cseréljen, úgy hogy pl. beírok B1-be 13 karaktert és B10,C10,D10-ben cseréljen (ott szintén 13 karakter van jelenleg), de csak 6-tól a 13. karakterig (az első ötöt hagyja úgy).

 

köszi

Előzmény: Fferi50 (22582)
Törölt nick Creative Commons License 2013.10.14 0 0 22596

Másold be ezt a makrót a munkafüzetedbe, és rendelj hozzá egy billentyűkombinációt.

 

Sub Pontosidő()
    With ActiveCell
        .Value = Time()
        .NumberFormat = "h:mm:ss"
    End With
End Sub

Előzmény: police7777 (22595)
police7777 Creative Commons License 2013.10.14 0 0 22595

Sziasztok!

 

Segítsetek! Olyan időfüggvény kellene nekem, ami az éppen aktuális időt rögzíti MÁSODPERCRE pontosan. A Ctrl+Shift+. kombináció az percre pontosan írja csak az időt.

 

Köszönöm

Eredő Vektor Creative Commons License 2013.10.14 0 0 22594

A számformázásnál bekerülhetett két szóköz:

egyéni formátum:

 

"0,00  "

 

helyett:

 

"0,00"

 

vagy egyzserűen válaszd a számformátumot.

 

Előzmény: szunyókálóoroszlán (22593)
szunyókálóoroszlán Creative Commons License 2013.10.14 0 0 22593

Miért van az, hogy egy cellába írt pl: 500000 0,5- ként jelenik meg az enter leütése után. Már néztem a formátumokat is meg amit lehetett, de nem tudom miért csinálja. Idáig nem volt ilyen... Nem tudom átállítani.

Ott van az orrom előtt, csak nem látom? Kérhetnék egy kis segítséget?

Köszönöm!

Attila Fehér Creative Commons License 2013.10.14 0 0 22592

Ha jol emlekszem, akkor a rossz kodban volt az hogy

Unload Soforbejel

Admin.hide

Admin.show

 

Valami oknal fogva az admin form, ha a hide aztan show nincs benne, akkor nincs rajta a focus, vagy nem aktiv. Ra kell kattintani hogy a setfocos bele alljon a textboxba. 

De ezek nelkul is leprobaltam, es kifejezettem ezeket a sorokat kicsereltem a korabbi verziora, de ugyanugy jelentkezett a hiba.

Előzmény: Fferi50 (22591)
Fferi50 Creative Commons License 2013.10.13 0 0 22591

Szia!

 

Úgy gondolom, a form kilövése (SoforbBejel.Unload) a folyamat közepén nem "könnyíti meg" az excel dolgát (a másik verzióban a Hide-al működik a program).

Úgy látom, a Soforbejel hívásában sem vagy következetes a hibás programban (máshol van a hívás, illetve nincs is).

 

Üdv.

Előzmény: Attila Fehér (22589)
_Nyuszi Creative Commons License 2013.10.12 0 0 22590

Mi az az aktív link?

Előzmény: Attila Fehér (22589)
Attila Fehér Creative Commons License 2013.10.12 0 0 22589

Ez a mukodo kod:

https://www.dropbox.com/s/i3ewgkqmv3xniq6/v33SbC-GWork.pdf

 

Ez pedig a rossz:

https://www.dropbox.com/s/g80xetvsxvjcxu8/v39SbC-Faulty.pdf

 

Bocsanat, nem tudtam, hogy ide nem lehet aktiv linket illeszteni. 

Előzmény: Fferi50 (22587)
_Nyuszi Creative Commons License 2013.10.12 0 0 22588

Neked legalább X-et mutat, nekem semmit se...

:(

Előzmény: Fferi50 (22587)
Fferi50 Creative Commons License 2013.10.12 0 0 22587

Szia!

 

Bocsi, de nekem csak egy piros x jelenik meg a képek helyén. Lehet, hogy a böngészőm beállítása nem szereti.

 

El tudnád küldeni priviben?

 

Üdv.

Előzmény: Attila Fehér (22586)
Attila Fehér Creative Commons License 2013.10.12 0 0 22586

 Ez a Mukodo kod

 

  Ez pedig a rossz kod

Előzmény: Fferi50 (22572)
forzajuve Creative Commons License 2013.10.12 0 0 22585

ohh, nagyon szépen köszönöm mindenkinek, tökéletes!!!

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

Ezt korábban is észrevehettem volna...

 

range("A2:J500").replace(what:=regiveg,replacement:=ujveg,lookat:=xlpart)

 

helyett

 

range("A2:J500").replace what:=regiveg,replacement:=ujveg,lookat:=xlpart


kellene. Vagyis van egy pár fölösleges zárójel az eredetiben.

Előzmény: forzajuve (22583)
forzajuve Creative Commons License 2013.10.12 0 0 22583

Ezt a sort még mindig pirossal jelöli, és egy =-t hiányol, ha jól értem.

range("A2:J500").replace(what:=regiveg,replacement:=ujveg,lookat:=xlpart)

Amúgy ennek futtatás nélkül kellene működni, tehát csak beírom az A1-be és már cserél is?

Előzmény: Fferi50 (22579)
Fferi50 Creative Commons License 2013.10.11 0 0 22582

Igaz!

Előzmény: pimre (22581)
pimre Creative Commons License 2013.10.11 0 0 22581

Bocs, de ha jól látom még ez is: ujveg=range("X1:Y100").find(what:=y,lookin:=xlvalues,lookat:=xlwhole).offset(0,1).value 

Előzmény: Fferi50 (22579)
Fferi50 Creative Commons License 2013.10.11 0 0 22580

Szia!

 

Köszi, látod "jó az öreg" még a háznál!:)

 

Hiába, a gépelési hibáktól nem tudok szabadulni továbbra sem...

 

A find és a replace lookat paramétere szabályozza, hogy a teljes cellatartalomnak egyeznie kell, vagy kereshet részeket is. Ezt tanácsos minden alkalommal definiálni, mert benne maradnak a beállítások a metódusban. (Ha egy find makró végrehajtása után megnézed a munkalapon a keresést, akkor azokkal a beállításokkal fog előjönni, amit a makróban megadtál neki.)

 

Üdv.

Előzmény: Törölt nick (22578)
Fferi50 Creative Commons License 2013.10.11 0 0 22579

Szia!

 

Igen, úgy látszik nem vagyok elég alapos a leírásban!

 

if not intersect(Range("A1"),Target) is nothing then

 

range("A2:J500").replace(what:=regiveg,replacement:=ujveg,lookat:=xlpart)

 

Az eljárást az adott munkafüzethez kapcsolódó Change eseményhez kell kötni.

Ha a munka1-en vannak az adataid, megnyitod a munka1 kódablakát.

Ott látni fogsz bal oldalon egy General tartalmű lenyílót. Ezt váltsd át Worksheet-re.

Ekkor alatta megjelenik a

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

váz.

Jobb oldalon is megjelenik a lenyílóban a selectionchange esemény

Ezt a lenyílót váltsd át Change -ra.

Akkor a kód ablakban megjelenik

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

E két sor közé kell bemásolni az általam e két sor közé beírt kódsorokat.

(Azaz nem külön modulban kell lennie.)

 

Jimmynek => 1. köszi az észrevételt, valóban nem ellenőriztem a gépelésemet.

És igen, ezzel a paraméterrel (xlpart) csak az adott szövegrészt cseréli le az új szövegre.

(mint ahogy kereshetsz is rész szövegre(xlpart) vagy egész cellára (xlwhole) a szövegkeresőben)

 

Remélem, így már működni fog rendesen.

 

Üdv.

 

 

Előzmény: forzajuve (22577)
Törölt nick Creative Commons License 2013.10.11 0 0 22578

Én sem teszteltem a kódot, de szerintem van benne két kérdőjel.

 

1. if not intersect("A1",Target) is nothing then

2. range("A2:J500").replace(what:=regiveg,replacement:=ujveg,lookat:=ylpart)

 

(Az meg bennem kérdőjel, hogy a replace csak azt cseréli-e le, amit kell, vagy esetleg mást is?)

Előzmény: Fferi50 (22574)
forzajuve Creative Commons License 2013.10.11 0 0 22577

Még mindig nem tetszik neki. Az elején a private mindenképpen kell? Bár az se jó, ha törlöm. köszi

Előzmény: Fferi50 (22576)
Fferi50 Creative Commons License 2013.10.11 0 0 22576

Szia!

 

Az x, y a programnak kell,hogy eltárolja a szükséges értékeket, neked csak az A1 cella játszik. Illetve a kódtábla természetesen.

 

Bocsi, van egy elírás a program végén:

Endsub helyett End Sub

 

Üdv.

Előzmény: forzajuve (22575)
forzajuve Creative Commons License 2013.10.11 0 0 22575

Nagyon köszi, tbandonak is!

 

Itt az x,y-nal mi a feladatom? Nem csak az A1-et kell kitöltenem?

Ha ezt így makrónak bemásolom, azt írja Compile error: Expected End Sub !?... bocsi az amatőr kérdésekért...

Előzmény: Fferi50 (22574)
Fferi50 Creative Commons License 2013.10.11 0 0 22574

Szia!

 

Itt egy kódsor példa, ami kezeli a feladatot:

 

Private Sub Worksheet_Change(ByVal Target As Range)

dim x as double,y as double,regiveg as string,ujveg as string

if not intersect("A1",Target) is nothing then
   Application.EnableEvents = False
   y = Target.Value
   Application.Undo
   x = Target.Value

   Target.Value=y
   regiveg=range("X1:Y100").find(what:=x,lookin:=xlvalues,lookat:=xlwhole).offset(0,1).value

   ujveg=range("X1:Y100").find(what:y,lookin:=xlvalues,lookat:=xlwhole).offset(0,1).value

   range("A2:J500").replace(what:=regiveg,replacement:=ujveg,lookat:=ylpart)
   Application.EnableEvents = True

endif

endsub

 

A1 cella a "kódcella"

x = a régi kód

y = az új kód

X1:Y100 tartomány a kódtartomány: első oszlop a kódszámok, második oszlop a betűvégek

A2:J500 tartomány a megváltoztatandó cellák

 

Üdv.

Előzmény: forzajuve (22565)
Törölt nick Creative Commons License 2013.10.11 0 0 22573

Szia,

 

engem érdekel a probléma és a kód. Pastebin.com-on egyszerűen meg lehet osztani.

Előzmény: Attila Fehér (22570)
Fferi50 Creative Commons License 2013.10.11 0 0 22572

Szia!

 

Hasonló hibám nekem is volt, úgy tűnik, mintha "nem lenne elég ideje" arra, hogy megcsinálja a kódsort, amikor direktben fut, léptetve viszont igen.

Most nem emlékszem már rá, hogy mivel jártam túl az eszén, de nem kellett nagy varia - csak rengeteg időbe telt mire rájöttem.

Szívesem megnézném a kódodat, hátha beugrik valami.

 

Üdv.

Előzmény: Attila Fehér (22570)
Fferi50 Creative Commons License 2013.10.11 0 0 22571

Szia!

 

Van egy jó hírem számodra!

Az általam javasolt adatösszesítést meg lehet csinálni ugyanarra a lapra, amire a főösszegeket szántad! Nem kell másik munkalap! Az összesítést abban a cellában kezdi az excel, ahol Te szeretnéd. A láthatatlanságot pedig nem csak elrejtéssel lehet megoldani, hanem az ablak "lefagyasztásával" is.

Viszont: Ha az egyes munkalapokon csak egy oszlop van, amit összesíteni akarsz, akkor akár az első két oszlopba is kerülhet az adatösszesítés eredménye. Mint már korábban is írtam, az új munkalap beillesztése után csak néhány kattintás az új összesítés. (És megúsztad a rengeteg "hahibás" képletet is!)

Ha több oszlopod is van, akkor is működik az összesítés - csak azonos tartalmú oszlopnak azonos neve legyen.

Ezt a funkciót pont erre a feladatra találták ki.

 

Üdv.

Előzmény: Plzeg (22568)
Attila Fehér Creative Commons License 2013.10.11 0 0 22570

Szep estet mindenkinek!

 

Mostmar jobb kedvvel irok! :) Sikerult megoldani az Excel eroltetett bezaros dolgot. Vagyis csak felig... A hibat okozo kodsort kerestem, sorrol sorra kileptem az eppen futo makrobol majd megprobaltam bezarni. Termeszetesen amikor mar sikerult leszurnom hogy melyik funkcioban lehet a hiba. Szoval van egy funkcio ami 2 fele agazik attol ugg, hogy a beolvasott vonalkodhoz mar tartozik valami adat vagy sem. Ennek a makronak az elso fele akkor fut le, ha van hozza tartozo, a masik fele ertelem szeruen, ha nincs hozza tartozo adat. Tesztelesnel mindket agaban ugyan azt csinalta az excellel. Szoval az elso felen sorrol sorra zartam az excelt. Ahogy megnyomtam a kilepo gombot mar latszodott a hatas, hog tortent e valami vagy sem mert ha igen, akkor azt sem kerdezte meg, hogy akarom e menteni a fuzetet. 

Ahogy minden kodsoron vegigmentem, es nem jott elo a hiba akkor ment fel a pumpa, hogy ha egyben lefut akkor hiba van, ha soronkent kileptetem akkor jo az excelem. 

Elo vettem egy korabbi verziot ami tokeletesen mukodik es annak a kodjat hasonlitottam ossze az ujabb verzioeval. Aprobb (nem fontosnak tuno) kodsorok voltak elteroek. Hiaba remeltem azokat ki, es ugy futtattam az ujabb verziot akkor is elojott a hiba. 

Ekkor a korabbi verziobol atmasoltam az egesz makrot bele az uj verzioba. MUKODIK!!!! Semmi hiba az excel bezarasakor! 

Ugyan nagy most az oromom, mivel prezentaciom lesz a heten, tortenetesen egy multiceg Transzport irodajara kerul elso korben a program, de azert kutato es folyton kivancsisaggal telt ember level engem nagyon erdekel, hogy mi lehet, lehetett a gond?!

Ha a valaszra rajovok akkor abbol tanulok es nem kovetem el azt a hibat kodolas kozben megegyszer!

Ha valakinek kell a problemas kod, szoljon nyugodtan, es kuldom a mukodo kodot es a hibas kodot. Ahogy emlitettem egy eleg komoly program apro resze ez a kod, igy nem tudom, hogy ugyan azt a hatast kelti e egymagaban, de jo lenne rajonni erre a problemara. Marcsak azert is mert lehet, hogy meg egy bugot talaltam az excelben :)

 

Megegyszer szeretnem megkoszonni az ehhez a temahoz hozzaszolok segitseget!

 

Koszonom!

tbando Creative Commons License 2013.10.11 0 0 22569

Igy van. Tényleg kell technikai lap. A te megoldásodban is volt. Csak te főlapnak nevezted. Imigyen:

 

Jelenleg az alábbi módon összegezem az országonkénti értékeket, A4 tartalmazza a főlapon az országmegnevezést.

 

És szó sem volt arról, hogy ezt a lapot akarnád kiküszöbölni. Hanem csak ezen lap frissitési procedurájának az egyszerűsítéséről. Erre adott Fferi50 is egy megoldást, meg én is. Vagy rosszul látom?

 

 

Előzmény: Plzeg (22568)
Plzeg Creative Commons License 2013.10.10 0 0 22568

Tbando-nak és Fferi50-nek köszönöm a válaszokat. Azonban úgy látom, hogy a megoldások alapján nincs lehetőség a közvetlenül a munkalapokról feldolgozni az adatakokat, mindenképpen a technikai munkalap, vagy elrejthető oszlopok kellenek.

tbando Creative Commons License 2013.10.10 0 0 22567

Én ezt úgy csinálnám, hogy lenne egy alaptáblázat a számokkal, egy vezérlőtáblázat, amelyben a cellák értéke 1 ha változzon  a vele azonos poziciójú cellában levő szám, és nulla, ha nem: egy kódtáblázat, ami a vezérlő számokat  és a hozzájuk tartozó betüket tartalmazza és végül a főtábla, amiben a betük változnak a vezérlő cella alapján  az FKERES, a HAHIBA és a HA függvényekből összerakott képlettel  vezérelve.

 

Egy egyszerű példán

 

Legyen a vezérlő cella az A1.  

 

  1. tab:  A11-gyel kezdve a nálad a 2222, 2345 5699 és társaik
  2. tab  AA11 gyel kezdve  1, ha az az első táblázatban azonos helyűen levő szám ki van jelölve változásra, a többi üres
  3. tab: A  BA-oszlopban a vezérlő számok (1111,1234,2345 stb),a BB-ben pedig a hozzájuk tartozó betük ( FG, HB, GP  stb)
  4. tab:  Főtábla a változó számokkal .  CA11-be pedig az alábbi képlet, amit végigmásolsz a tervezett táblázatodban

 

     =Hahiba(ha(aa11=0;a11;a11&fkeres($A$1;BA:BB;2;0);aa11)

 

A képlet, ha nem találja a vezérlő számot, vagy a cella nincs változásra kijelölve akkor  az első táblázatbeli  számot tartalmazza, egyébként meg a kombináltat.

 

A példa csak a problémakezelés elvét illusztrálja. Tehát a  vezérléseket  változtathatod, a táblázatkezelést pedig további feltételek beiktatásával kedvedre turbózhatod .

Előzmény: forzajuve (22565)
Fferi50 Creative Commons License 2013.10.10 0 0 22566

Szia!

 

A munkafüzet kódlapjában használd a

Private Sub Worksheet_Change(ByVal Target As Range)

 

End Sub

eseménykezelő eljárást, ahol Target az a cella, amelyben a változás történt.

pl.

Private Sub Worksheet_Change(ByVal Target As Range)

if not intersect(változásgeneráló cella - pl. range("A1") -,target) is nothing then

   application.enableevents=false

   a cellák megváltoztatását végző eljárás

   application.enableevents=true

endif

End Sub

Így, ha más cellában történt változás, akkor nem generálódik cellamódosítás.

 

Hogy a módosítandó cellákat hogyan választod ki, na az egy másik kérdés szerintem (esetleg azt már tudod?), de ehhez tudnod kell azt, hogy a változásgeneráló celládban mi volt a változtatás előtti érték. Akkor a range.replace metódussal egy lépésben megoldható! Kukucskáld meg a hozzá tartozó helpet.

 

Üdv.

Előzmény: forzajuve (22565)
forzajuve Creative Commons License 2013.10.10 0 0 22565

Sziasztok!

 

Segítségeteket kérném az alábbihoz:

Szeretnék excelben egy cellát, ahova ha beírok egy számot (pl. 1234), akkor az excel automatikusan lecseréli bizonyos mezők (kb. 50 db össze-vissza) tartalmának utolsó két alfabetikus karakterét. Tehát pl. ez a kiinduló helyzet:

1111: 2222FG, 2345FG, 5699FG, stb.

beírom, hogy az 1111 helyett, hogy 1234: és a fentiekből 2222HB, 2345HB, 5699HB lesz.

 

Természetesen van egy táblázatom (elég nagy), amiben benne van, hogy 1111=FG, 1234=HB, 2345=GP, stb.

 

Ha nem is tudtok pontos megoldást, az is jó lenne, hogy egyáltalán milyen függvénnyel/eszközzel lehetne ezt elérni.

 

köszi szépen

dr. Lópici Gáspár Creative Commons License 2013.10.10 0 0 22564

Szuper!

Köszönöm szépen a gyors választ!

üdv

LG

Előzmény: Fferi50 (22563)
Fferi50 Creative Commons License 2013.10.10 0 0 22563

Szia!

 

Nézd át légy szíves a kimutatás táblázatokról - és ahhoz kapcsolódóan a kimutatás diagramról - szóló help-et. Ha következetes a munkalapod felépítése, akkor néhány lépésben megkapod a kívánt eredményt.

 

Üdv.

Előzmény: dr. Lópici Gáspár (22562)
dr. Lópici Gáspár Creative Commons License 2013.10.10 0 0 22562

Sziasztok,

eszkábálni szeretnék magamnak egy jól működő napi kiadások táblázatot. Írom már egy ideje, minden kiadott forintot feljegyzek, most szeretném kicsit fejleszteni, mert talán eljött az idő, hogy elkezdjek következtetéseket levonni a pénzköltési szokásainkból.

Hogy néz ki: vízszintesen vannak a kiadási tételek, az oszlopok sorrendje pedig: dátum, kategória (itt olyanok vannak, hogy 'kaja', 'kultúra', 'gyógyszer' stb), vásárlás helye, és utolsóként 'besorolás' (céges illetve magáncélú kiadás).

Az lenne a kérdésem, lehet-e, és ha igen, hogyan kell készíteni összesítéseket különböző szempontok alapján?
Pl. csinálnék egy olyan kördiagramot, ami realtime-ban mutatja, hogy hogyan aránylik a céges a magánhoz, vagy pl mutatná a saját kiadásokon belüli arányokat.

Külön munkalapon nézném a grafikonokat, de lövésem sincs, hogy hogyan kell képletezni ahhoz, hogy a grafikonos munkalap x cellájába gyűjtse azokat (a másik munkalapon levő) C oszlopban szereplő összegeket, amely sor B oszlopában (kategória) a 'kaja' szó áll.

Nem olyan bonyas szerintem annak, aki ért hozzá, csak sajnos én máshoz értek. :)

köszi és üdv
LG

Fferi50 Creative Commons License 2013.10.10 0 0 22561

Szia!

 

Nézd meg légyszíves az Application.Interactive értékét nem állítod-e át valahol False-ra. Mert ez megtiltja a billentyűzetről és az egérrel való bevitelt, kivéve az inputra használható formákat pl. inputbox.

Ezt a végén vissza kell állítani True-ra.

 

Üdv.

 

 

Előzmény: Attila Fehér (22560)
Attila Fehér Creative Commons License 2013.10.10 0 0 22560

Ezek nagyon jo feltevesek, mindenkepp neki kell es fogok allni a feladatonkenti tesztelesnek. A munkafuzetet lehet menteni es bezarni, sot minden egyeb dolgot lehet rajta csinalni kivetel a billentyuzetrol cellaba irni de a makro tud a cellakba irni. A feladatok vegzese kozben semmi baj nincs, mindent megcsinal amit kell, ezert gyanakszom arra hogy a programban valamit elallitok az excelben amit nem allitok esetlwg vissza. A screenupdating szinte minden egyes modulban szerepel. Ezeket esetleg a keresesben megkeresem es annak a parjanak is szerepelnie kell a kod vegen. 

Előzmény: Fferi50 (22559)
Fferi50 Creative Commons License 2013.10.10 0 0 22559

Szia!

 

Azt gondolom, itt valamilyen rejtett memória túlcsordulás lehet az ok (de ez találgatás szintjén van). Ha a feladatkezelővel történt kiszállás után simán újranyitod az excelt, nem mutat megnyitható - javított, mentett, stb. - másolatokat? Mert esetleg ebből is lehet következtetni, hogy mit sikerült végrehajtania és mit nem.

Egyébként meg - sajnos - marad az alapos, minden "menüágon" végigmenő tesztelés. Valamelyiken csak kibukik a probléma és akkor azt lehet tovább vizsgálni.

Még kérdések

  • csak kilépéskor van ez a jelenség, vagy feladatok végzése közben is "behal"?
  • a program közben kezel (megnyit bezár) más munkafüzeteket -azokban esetleg vannak (nem kívánt) makrók? Érdemes ezeket a műveleteket alaposan átnézni.
  • vannak nagy cellatartományokon végzett műveletek?
  • képernyőfrissítés kérdése (bár ez a VBA lapon nem játszik).

Ilyen messziről nekem kb. ezek jutottak eszembe.

 

Üdv.

Előzmény: Attila Fehér (22558)
Attila Fehér Creative Commons License 2013.10.10 0 0 22558

Szia. Nem nincs. Csak 2007es office van a gepemen. 

Előzmény: Fferi50 (22553)
Attila Fehér Creative Commons License 2013.10.10 0 0 22557

Az a rengeteg kod nem egy modulban van hanem egyik modul hivja a masikat attol fuggoen, hogy mire van a felhasznalonak szuksege. Minden erdemleges ujitasnal a verzioszamot noveltuk 1-el. Talan meg ez is segiteni tud abban hogy megtqlaljuk mi okozza a hibat. 

Egy masik kerdes ami m8ndenkihez szol : ha valami valtozonak vagy pl Set WSS =Sheets("Start") ezeket a valtozo ertekeket vissza kell allitani a kod vegen ha igen akkor miert? Nem vagyok nagyon kezdo a VBAban de ezek valaszat meg nem talaltam meg sehol sem. 

Előzmény: tbando (22552)
Attila Fehér Creative Commons License 2013.10.10 0 0 22556

Koszonom a gyors valaszokat!

Egy update az elozo hozzaszolasomhoz, ami talan leszukiti a kort:  ha ez a dolog megtortent, hogy az excelbol nem tudok kilepni akkor utana meg egy kicsi makrot sem tudok futtatni. Pl application.quit.  ha a kodban allok es F8al probalok lepkedni akkor mar az elso F8nal mintha futtatna a kodot de a sarga kiemeles sem jelenik meg. Ez a screen updatehez tartozna?

Eredő Vektor Creative Commons License 2013.10.10 0 0 22555

Én első körben megnézném, nincs e a kódban valami, ami megnyitja háttérben az excelt, de be meg nem zárja ha nincs már rá szükség.

Esetleg érdemes azt is megnézni, hogy screenupdating vissza kapcsolása vagy hasonló dolgok vannak e benne.

Ilyesmik:

 

Dim app as New Excel.Application

app.Visible = False

Dim book As Excel.Workbook

Set book = app.Workbooks.Add(fileName)

book.Close SaveChanges:=False

app.Quit Set app = Nothing

Előzmény: Attila Fehér (22551)
Fferi50 Creative Commons License 2013.10.10 0 0 22554

Az előző hozzászólásomhoz egy javítás:

 

A "szokott képes" helyett csak képes (azaz tud)!

 

Bocs, már rányomtam, mikor észrevettem. És miután képről is írtak, nehogy félreértsétek!

 

Üdv. 

Előzmény: Fferi50 (22553)
Fferi50 Creative Commons License 2013.10.10 0 0 22553

Szia!

 

Van-e az Excelnek másik verziója is azokon a gépeken, amin fut a programod?

Mert ilyen "együttállás" szokott képes hibát generálni és igen, véletlenszerűen - főleg megnyitásnál, mentésnél, mentés másként esetén.

Ilyenkor valóban csak a feladatkezelő segít.

 

Üdv.

Előzmény: Attila Fehér (22551)
tbando Creative Commons License 2013.10.10 0 0 22552

Ha meg vagy győződve arról, hogy a program okozza a hibát, akkor meg lehetne próbálni, hogy kb  a felénél elhelyezel egy exit sub-ot. Aztán ha az odáig futás után nem lehet belőle normálisan kilépni, akkor a program első felében van a hibát okozó utasítás, ha nem akkor a második felében.  Ezután az exit subot átteszed a problémás rész feléhez, és újra teszteled a kiléphetőséget, majd az eredménytől függően a problémás részt megint felezve újra futtatsz. Így fokozatosan eljuthatsz a hibás sorig.

 

Talán. Mert az hogy nem minden futás után jelentkezik a probléma, az bizony gondot okozhat. Ezért a procedurát a kilépési  probléma jelentkezése után kéne  megcsinálni, ugyanazokkal a beállításokkal mint amikkel a probléma történt.    

Előzmény: Attila Fehér (22551)
Attila Fehér Creative Commons License 2013.10.10 0 0 22551

Sziasztok, 

 

Egy baratommal csinaltunk egy komplexnek (makrobol) allo programot. Ma a munkahelyen kiprobaltam, ahol mukodott is rendesen egy hibaval (nem talalt egy fotot), ami nem is lenne gond, mert az a sor kommentelve lett. Korabban is tapasztaltam en is, es a baratom is, hogy ugyan a munkafuzetet be tudjuk zarni, de az Excelt nem. Nem minden futtatas utan jon elo ez a hiba. Csak a feladatkezeloben tudom leallitani az excelt, de mivel a munkahelyi gep le van vedve igy a feladatkezelo sem erheto el. 

Ezt nem hiszem hogy termeszetes lenne az Excelnel. Biztos vagyok benne, hogy a program csinal az excellel valamit. Mivel kb 10000 kodsorrol beszelunk nagyon nehez lenne tesztelni es megtalalni mi okozhatja a hibat. 

Valakinek van valami otlete erre a hibakeresesre?

 

Elore is koszonom a valaszokat!

hát ő Creative Commons License 2013.10.09 0 0 22550

Szia!

Köszönöm a segítséget de sajnos nekem mégígy sem megy légyszíves küld el az elkészített munkalapot. Köszönöm

Előzmény: Fferi50 (22512)
hát ő Creative Commons License 2013.10.09 0 0 22549

Szia!

Biztos nagyon idegesítő vagyok, de nekem még ezek alapján se megy az elkészítés. Ezért kérlek küld el az elkészített munkafüzetet.

Előzmény: Fferi50 (22512)
Fferi50 Creative Commons License 2013.10.09 0 0 22548

Szia!

 

Még utánanéztem egy kicsit. Szerintem simán megoldható a problémád az Adatok, összesítés menüpontból. Kijelölöd az összesítő függvénynek az összeget.

Bejelölöd a feliratokat vegye a felső sorból és a bal első oszlopból. Hozzáadod a tartományokat egyszer. Az Excel megoldja azt, hogy egy munkalapra kerüljenek az országok adatai.

Ha új munkalap kerül be a füzetbe, csak annak a megfelelő tartományát kell hozzáadnod az összegező munkalaphoz.

Ezzel megvan az "árnyék" munkalapod.

A Fő munkalapon csak ezt kell összegezned:

Első oszlop = árnyék munkalap első oszlopa. Majd az összegző függvények a második oszlopba így:

Pl. A2=magyar, B2:=SZUM(Munka4!2:2), ha az árnyék munkalapod neve Munka4.

 

Ha az országok száma nem változik, akkor ehhez már nem is kell később hozzányúlnod.

 

Előzmény: Plzeg (22544)
tbando Creative Commons License 2013.10.09 0 0 22547

 

B+, már megint nem annak válaszoltam, akinek akartam :((((((.

 

 

De azért remélem plzeg rábukkan

 

Előzmény: tbando (22546)
tbando Creative Commons License 2013.10.09 0 0 22546

Itt egy megoldás. Nem OFFSZET-tel, hanem FKERES-sel.

 

A minta példámon a nemzetek az alaplapokon  a11-en kezdődnek, a hozzájuk tartozó boldogságaik pedig a b11-en.

 

Az összesítő lapon pedig:

 

A11:A20= nemzetek

B11:B20= szummázott boldogság

C11:D20= 01 és 02 lapok boldogságai

C10:D10= lapnevek

C8:D8=  az adott laphoz tartozó fkeres tartomány

 

A kulcsképletek amiket értelemszerűen továbbmásolsz:

 

c8:          =c10&”!a11:b20”

b11:       =szum(c11:z11)

c11:        =hahiba(Fkeres($a11;indirect(c$8);2;0);0)

 

Ha ezt a táblázatot megcsinálod mondjuk a z-oszlopig, , akkor az új lap bemásolásával és elnevezésével azonnal  újraszummáz.  A c..z oszlopokat akár el is rejtheted.

 

 

 

Előzmény: Fferi50 (22545)
Fferi50 Creative Commons License 2013.10.09 0 0 22545

Szia!

 

Nem tudom, ki állítja össze a heti jelentés munkalapokat? Nem lehet vele egyeztetni, hogyan csinálja?

 

Én mindenesetre csinálnék egy összesítő munkalapot (az előttem szólók javaslatait összegyúrva, ahol minden ország szerepel a sorokban és az oszlopokban az aktuális heti jelentés értéke). A második oszlopba pedig betenném az összegzőképletet ami a sor hátralevő celláira vonatkozik.

Ha mégsem sikerül rávenni az adatszolgáltatókat, hogy erre a munkalapra írják direktben a heti értéket, akkor is egyszerű rutinnal átmásolhatod rá az új információkat. Ezt a munkalapot akár el is rejtheted.

 

Az összegző jelentés eredmény celláiba pedig egyszerűen behivatkozod a háttér (összesítő) munkalap megfelelő celláját.

 

Üdv.

Előzmény: Plzeg (22544)
Plzeg Creative Commons License 2013.10.09 0 0 22544

Mindkettőtök felvetése jogos, de ezzel az egyszerű példával csak esetet akartam érthető módon leírni.

Előzmény: Törölt nick (22542)
Plzeg Creative Commons License 2013.10.09 0 0 22543

Én is boldog lennék, ha így lenne, de ez egy adottság. Természetesen az egyszerű példával csak a megoldandó esetet akartam leírni.

Előzmény: Delila10 (22541)
Törölt nick Creative Commons License 2013.10.09 0 0 22542

Sokkal könnyebb lenne egy munkalapra tenni az összes adatot. Így az országnevek nem szerepelnének feleslegesen sokszor és nem kéne mindig frissíteni a függvényedet.

Előzmény: Plzeg (22540)
Delila10 Creative Commons License 2013.10.09 0 0 22541

Az országok listája legyen azonos minden lapodon, ha van bennük boldog ember, ha nincs.

 

Az összesítő lapon ebben az esetben – ott is azonos a lista az előbbiekkel – az

=szum('01:33'!B2) az első 33 lap B2 celláinka az összegét adja.

Előzmény: Plzeg (22540)
Plzeg Creative Commons License 2013.10.09 0 0 22540

Adott egy táblázat, amelynek az első munkalapjának A oszlopa Európa országmegnevezéseit tartalmazza, a B oszlopa pedig összesítetten egy, az országhoz tartozó értéket. (például boldog emberek száma).

Minden héten készül egy újabb munkalap a boldog emberekről, de nem minden ország jelent. A munkalapra csak a jelentő országok kerülnek.

Az összesítés az egyre bővülő munkalapokról készül.

Jelenleg az alábbi módon összegezem az országonkénti értékeket, A4 tartalmazza a főlapon az országmegnevezést

 

=HAHIBA(OFSZET('01'!A1;HOL.VAN(A4;'01'!A2:A100;0);1);0) +HAHIBA(OFSZET('02'!A1;HOL.VAN(A4;'02'!A2:A100;0);1);0)+…….+……, stb

 

Amikor létrejön egy újabb munkalap, akkor bővítem az összegzést. Ezt a végtelenségig nem lehet.

 

Hogyan lehetne a munkalapokat úgy feldolgozni, hogy ne kelljen mindig egy újabb összeadás műveletet mögé biggyeszteni. Magyarán lehetséges-e a munkalap elnevezést változóba foglalva kezelni, vagy a munkalapokat tartományként értelmezni?

tbando Creative Commons License 2013.10.09 0 0 22539

Szerintem ő meg tudja különböztetni a 5-t a 6-tól :)))))

Előzmény: Eredő Vektor (22538)
Eredő Vektor Creative Commons License 2013.10.09 0 0 22538

Tulajdonképpen mindegy. Szerintem Ő sem érti miért írsz neki egy .-ot. :)

 

Előzmény: tbando (22537)
tbando Creative Commons License 2013.10.09 0 0 22537

djmorphy 22528-nak írtam

Előzmény: tbando (22535)
tbando Creative Commons License 2013.10.09 0 0 22536

 .

 

Előzmény: Eredő Vektor (22534)
tbando Creative Commons License 2013.10.09 0 0 22535

A tömbképlettel arra utasítod az excelt, hogy eredményezzen egy olyan tömböt a memóriájában, mintha a képletben megadott tömbök elemeivel egyenként végrehajtanád a képletbeli utasítást. Az esetedben pl. az összes C elemre nézze meg, hogy "aktív"-e, Ha igen, adja meg a hozzátartozó A-t, (ha nem akkor meg feltehetőleg az "" üresstringet. Tehát az összes C, A elempárra elvégezve a 

 

=Ha(Ci="aktiv";Ai;"") müveletet 

 

 a kapott eredményömbön meghatározza annak a Max-át.

 

Az általad minden bizonnyal ismert szumha is alapjában véve egy tömbképlet, azzal a különbséggel, hogy az excel helyből összevonja a szum-ot és a ha-t, ezért nem kell tömbképletként bevinni. De minden további nélkül lehetne: A

 

=szumha(a:a;5;b:b) ugyanazt az eredményt adja mint a{=szum(ha(a:a=5;b:b))}

 

A tömbképlethasználatról a sugóban olvashatsz még.

 

****

ui. Egyébként azt hittem mindezeket tudod, mert mint a 22509-ben írtam, a te képleted is jó, ha tömbképletben viszed be.

Előzmény: tbando (22532)
Eredő Vektor Creative Commons License 2013.10.09 0 0 22534

Villámagy

Előzmény: Törölt nick (22522)
DominicWolf Creative Commons License 2013.10.09 0 0 22533

Köszönöm szépen!

Előzmény: tbando (22532)
tbando Creative Commons License 2013.10.09 0 0 22532

 

Tartomány kijelölési lehetőségek:

 

Fixcellás


Range(ActiveCell, Range("H120")).Select

 

De lehet programból is megadni a fixcellát

 

Dim fixcella$

fixcella$ = "H120"
Range(ActiveCell, Range(fixcella$)).Select

 

************

 

Paraméteres

 

Range(ActiveCell, ActiveCell.Offset(0, 10)).Select

 

A szélességet is megadhatod programból

 

Dim melletti%
melletti% = 10
Range(ActiveCell, ActiveCell.Offset(0, melletti)).Select

Előzmény: DominicWolf (22531)
DominicWolf Creative Commons License 2013.10.09 0 0 22531

Köszi

Igen, majdnem. Egy dolog nem megy, hogy kell a területt megadni, hogy a selektáltba az aktív cellától egy fix celláig legyen a kijelölés, illetve a másik kijeleölés  az aktív cella + aktív mellet +10?

Előzmény: Eredő Vektor (22530)
Eredő Vektor Creative Commons License 2013.10.09 0 0 22530

makrórögzítés szerintem tökéletesen megoldja a problémádat.

Előzmény: DominicWolf (22525)
Eredő Vektor Creative Commons License 2013.10.09 0 0 22529

sima makrórögzítés szerintem tökéletesen megoldja a problémádat.

Előzmény: DominicWolf (22525)
djmorphy Creative Commons License 2013.10.09 0 0 22528

KÖszi! Ma ki fogom próbálni. Ez a tömb képlet mit jelent amúgy?

Előzmény: tbando (22527)
tbando Creative Commons License 2013.10.09 0 0 22527

Oké. Akkor 22507 hszbeli képlet helyett ez lesz a képleted:

 

=Max(ha(C:C="aktiv";A:A))    Természetesen tömbképletként bevíve, azaz enter helyett ctrl+shift+enter-rel. És akkor így fog kinézni a cellában:

{=Max(ha(C:C="aktiv";A:A))}

Előzmény: djmorphy (22526)
djmorphy Creative Commons License 2013.10.08 0 0 22526

Már én is elvesztettem a fonalat :D

 

A:A :2013.01.01

B:B értékek

C:C "aktív";"inaktív"

 

Már nem tudom hogy írtam de ez a végleges forma :D

Előzmény: tbando (22517)
DominicWolf Creative Commons License 2013.10.08 0 0 22525

Sziasztok!

 

Kérnék egy kis segítséget. Egy kis macrot akarok készíteni. Az lenne a feladata, hogy elindítva (mondjuk egy kép megnyomásával) az épp aktív cella (ahol áll) és mondjuk egy fix cella, pl. H120 közötti teljes területet kijelöli és egy másik lapra kimásolja. Ezen új lapról az első sort kitörli, majd a maradékot visszamásolja. Előtte az adott cella és a mellett levő, mondjuk 12 cella tartalmát kijhelöli és egy másik lapon egy újh sort szúr be, mondjuk a 3. sorba és ide másolja értékként és formátumként a kijelölteket.

 

Köszi előre is!

tbando Creative Commons License 2013.10.07 0 0 22524
    Előzmény: Törölt nick (22522)
    tbando Creative Commons License 2013.10.07 0 0 22523

    Kösz mindkettőtöknek. 

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

    Ejnye. Villámkéz.

    Előzmény: Eredő Vektor (22520)
    Törölt nick Creative Commons License 2013.10.07 0 0 22521

        Application.ScreenUpdating = False
        For i = 1 To 100
            Range("a1") = i
        Next i
        Application.ScreenUpdating = True

     

    ?

    Előzmény: tbando (22518)
    Eredő Vektor Creative Commons License 2013.10.07 0 0 22520

    Application.ScreenUpdating = False

    For i=1 to 100

    Range("a1")=i

    next i

    Application.ScreenUpdating = True

    Előzmény: tbando (22518)
    tbando Creative Commons License 2013.10.07 0 0 22519

    .

     

    Előzmény: tbando (22517)
    tbando Creative Commons License 2013.10.07 0 0 22518

    Azt szeretném kérdezni, hogy az excelben van-e olyan futtatási mód, ami nem mutatja a futás közbeni munkafüzeti változásokat, hanem csak a végeredményt. Tehát mondjuk az alábbi makróban az A1-ben a 100 beírása elött nem villannak fel az 1-99 számok.

     

    For i=1 to 100

    Range("a1")=i

    next i

     

     

    Előzmény: tbando (22517)
    tbando Creative Commons License 2013.10.07 0 0 22517

    Persze. Most már nem kell a munkafüzeted, mert most már értem a dec. 31-t.

     

    Amit viszont most nem értek (de kurvára ám), hogyha A1-be beirtad 2013.01.01-től és dec 31-ig lehúztad, abból hogyan lesz az A24 beírása az, hogy "aktiv" :)))))) ???

    Előzmény: djmorphy (22511)
    Fferi50 Creative Commons License 2013.10.07 0 0 22516

    Szia!

     

    Tbando 22509-es hozzászólása már megadta a helyes megoldást. A képlet jó, csak tömbképletként kell bevinni. (Shift+ctrl+enter a végén az enter helyett.)

    VBA-ban range("A1").formulaarray=

     

    Üdv.

    Előzmény: pimre (22514)
    Törölt nick Creative Commons License 2013.10.07 0 0 22515

    (Miért van az, hogy Ön mindent kétszer mond, kétszer mond?)

    pimre Creative Commons License 2013.10.07 0 0 22514

    A képleted nem december 31-et ad vissza, hanem az utolsó kitöltött dátumodat. Írj hozzá, vagy törölj néhányat, és mindjárt azt kapod ereményül. (Most a megoldásra nincs ötletem, de sajnos időm sem a megkeresésére, talán majd később. )

    Előzmény: djmorphy (22511)
    pimre Creative Commons License 2013.10.07 0 0 22513

    A képleted nem december 31-et ad vissza, hanem az utolsó kitöltött dátumodat. Írj hozzá, vagy törölj néhányat, és mindjárt azt kapod ereményül. (Most a megoldásra nincs ötletem, de sajnos időm sem a megkeresésére, talán majd később. )

    Előzmény: djmorphy (22505)
    Fferi50 Creative Commons License 2013.10.07 0 0 22512

    Szia!

     

    Oszlopszélesség állítás a legszélesebb szövegre:

    Range("A1").entirecolumn.autofit  (Ide azt a cellát Ird be, amelyikben a kiválasztó listaforrás egy elem szerepel)

    Ennek a szélességét felírhatod egy olyan cellába, amelyik "nem játszik".

    pl. range("Y1").value=range("A1").columnwidth

    ezután ahhoz a listaválasztó cellát tartalmazó munkalap kódlapjára a következőket írod be:

     

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    dim isc as range
    Set isc = Intersect(Range("C1"), Target)
    If isc Is Nothing Then
        If Range("C1").ColumnWidth = Range("Y1").Value Then Range("C1").ColumnWidth = eredeti cellaszélesség
    Else
        Range("C1").ColumnWidth = Range("Y1").Value
    End If
    End Sub

     

    Ha az eltárolt érték nem az listaválasztós munkalapon van, akkor a forma: Munkalapneve!range("Y1").value

     

    Figyelj rá, hogy a columnwidth  és a cells.width nem azonos mértékegységben számol. Ezért először nézd meg, hogy a kiválasztódnak mi a columnwidth értéke és azt írd az eredeti cellaszélesség értékének.

     

    Üdv.

    Előzmény: hát ő (22501)
    djmorphy Creative Commons License 2013.10.07 0 0 22511

    Számomra igen sok értelme és haszna van. A vezetőség különböző időpontokban kér visszamenőleg adatokat. És ezért van aktiv/inaktív mf-t ahol beállítom, hogy meddig vegye figyelembe az értékeket és végezze el az összeadást/kivonást stb.

     

    Elkükdhetem de csak annyi hogy A1-be beirtam 2013.01.01-től és dec 31-ig lehúztam majd beirtam random értékeket meg aktiv/inaktív random mód.

     

    Tervezés/tesztelés alatt van az egész még.

     

    Az a lényeg, hogy egy helyen akarom állítani a dátumot és minden olyan ahol bejön anyag vagy kimegy anyag azt vegye figyelembe. Mert már jártam úgy hogy egyik oldalon egyik dátum volt kimenő oldalon meg teljesen más :D

    Előzmény: tbando (22507)
    djmorphy Creative Commons License 2013.10.07 0 0 22510

    Az én rendszeremben sok értelbe van és igen hasznos is.

     

    Azért van, hogy az értéket figyelembe vegye-e vagy sem. Van hogy a vezetőségnek eszébe jut hogy 1 hónappal ezelőtt mennyi volt ez vagy az...

    Előzmény: tbando (22507)
    tbando Creative Commons License 2013.10.06 0 0 22509

    Aha. Ha A24-ben nem dátum van, hanem az aktív szó, akkor jó a képleted. Csak tömbképletként kéne bevinni. Azaz ctrl+shift-tel.

    Előzmény: djmorphy (22506)
    tbando Creative Commons License 2013.10.06 0 0 22508

    .

     

    Előzmény: djmorphy (22505)
    tbando Creative Commons License 2013.10.06 0 0 22507

    A képletednek nem sok értelme van. Hogyan lehet egy dátum (A24) egyenlő aktiv v. inaktív szóval ill. a jelölésével? Meg azt se értem, hogyan ad a képleted dec 31-t. Szerintem csak akkor adhatna, ha A24<>F:F. 

     

    Na figyu. Én megírom itt neked az aktív napot adó képletet, te meg elküldöd nekem priviben hogyan kaptál dec 31-t.  Kiváncsi lennék rá

     

    Szóval az utolsó aktív napot adó képlet:

     

    =Max(ha(F:F=äktiv";A:A))    Természetesen tömbképletként bevíve.

    Előzmény: djmorphy (22505)
    djmorphy Creative Commons License 2013.10.06 0 0 22506

    A24-ben az van, hogy "Aktív"

    Előzmény: djmorphy (22505)
    djmorphy Creative Commons License 2013.10.06 0 0 22505

    Sziasztok!

     

    Van egy Mf ahol 2013.01.01-től 2013.12.31-ig fel vannak sorolva a dátumok. Azt a dátumot szeretném meghatározni amelyik utoljára még aktív.

     

    Ezt írtam de mindig dec.31-et ad vissza. Biztos szereti az újévet :D

     

    =MAX(HA(A24='Napi szintű'!F:F;'Napi szintű'!A:A))

     

    F oszlopban van, hogy "Aktív" vagy "Inaktív"

    A oszlopban van a dátum.

     

    Miért nem jó? Vagy másképpen hogy elhet megmondani neki hogy mondjuk azt adja vissza, 2013.08.31 az utolsó aktív nap?

    Fferi50 Creative Commons License 2013.10.06 0 0 22504

    Szia!

     

    Amikor pl. lépésenként futtatsz egy programot, akkor is képes vagy előre - hátra mozogni az adott programban (a sárga nyíl húzgálásával), időleges megállási pontot generálni (piros lesz a sor), a debug egyéb - változókhoz kapcsolódó szolgáltatásait használni, beleértve a program környezetének változtatását is. Pl. egymásba ágyazott rutinoknál lehetséges, hogy egy megállás után - ha nem tetszik amit csinál - elhúzod a sárga nyilat az end sub -ra, akkor egy lépés után a program visszalép a hívó rutinra. Ezután módosíthatod a hívott rutint és ismét meghívod, anélkül, hogy az egészet újra indítanád. Ezt teszi lehetővé a programban elhelyezett Stop utasítás. Itt a program megáll, előadja a VBA modul képernyőjét és kisárgítja a Stop utasítást. Kritikus helyekre szoktam beírni, ha már minden rendben, egyszerűen kidobom vagy kikommentelem belőle.

     

    De gondolom ezeket Te is szoktad csinálni programírás-tesztelés során.

     

    Üdv.

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

    "Azt gondolom, hogy mivel ezek az utasítások (mind az End, mind a Debug -reset gombja) befejezik az aktuális projekt futását, természetes, hogy a változók aktuális értékei eltűnnek."

     

    Ez már filozófia :)

     

    "Stop utasítás viszont pont azt teszi lehetővé, hogy  menet közben, egy adott állapotban megnézhessük a változók értékeit, sőt változtathassunk rajta, oda-vissza lépkedjünk a programban."

     

    Az "oda"-lépkedés az megvan, de a "vissza"-lépkedés érdekelne. Azt hogy kell csinálni?

    Előzmény: Fferi50 (22495)
    tbando Creative Commons License 2013.10.06 0 0 22502

    valamint ha debuggolás közben a stop gombra kattintasz.

     

    Ezt csináltam. Csak nem a stopgombra kattintva, hanem a menüből

    Előzmény: Törölt nick (22488)
    hát ő Creative Commons License 2013.10.06 0 0 22501

    Köszönöm Fferi50!

    Elfelejtettem mondani hogy teljesen amatőr vagyok uh értem mit mondasz de nem tudom megvalósítani. Esetleg példát tudsz küldeni?

    Előzmény: Fferi50 (22496)
    tbando Creative Commons License 2013.10.06 0 0 22500

    a

    Előzmény: Törölt nick (22490)
    tbando Creative Commons License 2013.10.06 0 0 22499

    Megtaláltam a Reset gombot. Azt se tudtam, hogy van ilyen. Van  még mit tanulnom :))). Szóval kösz.

    Előzmény: Törölt nick (22490)
    tbando Creative Commons License 2013.10.06 0 0 22498

    Ez csak egy rásegítő hsz. Mert az előző megint nem jelent meg. 

    Előzmény: Törölt nick (22493)
    tbando Creative Commons License 2013.10.06 0 0 22497

    Igen, erről tudtam. Írtam is a 22486-ban. De nálam más okozta nullázást. Hogy mi, az a válaszaitok (a tied, meg fferié) szinergiája nyomán ugrott be. A Run/Reset.  Elég béna voltam, hogy nem jöttem rá magamtól. De ez van.  Köszönöm a közremüködésetek.

    Előzmény: Törölt nick (22493)
    Fferi50 Creative Commons License 2013.10.06 0 0 22496

    Szia!

     

    Cellaméret változtatás:

    A cella kiválasztás eseményéhez kötheted a cella méret változtatás, de csak az egész oszlop méretét tudod megváltoztatni! 

    Ahhoz, hogy tudd, a cella szélessége mekkora legyen, először is meg kell jegyezned a lista szélességét. Az érvényesítési oszlopon (ami a lista elemeit tartalmazza) hajtsd végre az autofit metódust, egy változóban jegyezd meg az oszlop szélességét. Ezután akár el is rejtheted az érvényesítési oszlopot.

    A cella kiválasztása esetén pedig átállítod az oszlopszélességet a megjegyzett értékre.

    Ha másik cellát választanak ki, akkor az előző cellád oszlopszélességét visszaállítod az eredeti méretre.

     

    Színezés:

    Olyan feltételes szerkezetet készítesz (pl select case cellaérték ...), ami attól függő színt használ,  hogy a lista melyik elemével egyezik a cella értéke.

     

    Üdv.

    Előzmény: hát ő (22494)
    Fferi50 Creative Commons License 2013.10.06 0 0 22495

    Szia!

     

    Azt gondolom, hogy mivel ezek az utasítások (mind az End, mind a Debug -reset gombja) befejezik az aktuális projekt futását, természetes, hogy a változók aktuális értékei eltűnnek.

    A programba beépített és Debug-olásra használt Stop utasítás viszont pont azt teszi lehetővé, hogy  menet közben, egy adott állapotban megnézhessük a változók értékeit, sőt változtathassunk rajta, oda-vissza lépkedjünk a programban. Más kérdés persze, hogy bizonyos programozási műveletek ilyen esetben tönkrevág(hat)ják a memóriát és belehal a projekt.

     

    Üdv.

    Előzmény: Törölt nick (22490)
    hát ő Creative Commons License 2013.10.06 0 0 22494

    Sziasztok!

    Delila10 már korábban segített egy olyan kérdésbe amikor Pl A1 cella érvényesítést tartalmaz és kijelölöm egy lista elemét(pl: 2) majd A2 cella ugyan azt az érvényesítést tartalmazza és ott kijelölöm ugyan azt a lista elemet mint ami at A1 cellában van (2),akkor az A1 cellából eltünjön a listaelem(2) és üresre vált és csak az A2 tartalmazza. Ezt a makrót használom de most azt szeretné ha megoldható lenne hogy a listaelemekhez és nem a cellához megjegyzéshez hasonlító fugró üzenet jelenjen meg. Az a célom hogy egy személyazonosításhoz hasonló ablakocska jelenjen meg amikor a kurzort a cella fölé viszem. A személyazonositó kis ablakocskába szeretnék elhelyezni egy kisméretű fotót és szöveget. Hu itt még nincs vége. Technikai okokból a cellák méreteit 0,9x0,9 es méretre kell kicsínyítenem és azt szeretném ha a cella kijelőlésekor a cella a cellában lévő lista méretére szétcsusszon. Valamint ha a lista bármely elemét az A1-es cellába jelenítem meg akkor a cella színe legyen piros, Ha A2 jelenítem meg akkor zöld és így tovább kb 10 színnel A10 ig. Nos nem tudom hogy ez így megvalósítható e de ezt szeretném. Aki tud kérem segítsen. Köszönöm.

     

     

    Törölt nick Creative Commons License 2013.10.06 0 0 22493

    Aztán olyan is van, hogy új változót akarsz felvenni a szubrutinba, vagy egy korábbi változó típusát megváltoztatod. Ilyenkor kiírja az Excel, hogy ezzel a lépéssel Reset-eled a projektedet. És tényleg :)

    Előzmény: tbando (22489)
    Törölt nick Creative Commons License 2013.10.06 0 0 22492

    ("Magyarország legnagyobb és legrégibb fóruma..." )

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

    ?

    Előzmény: tbando (22489)
    Törölt nick Creative Commons License 2013.10.06 0 0 22490

    Nem nagyon bírok képet feltölteni, pedig úgy egyszerűbb lenne...

    Szóval az a négyzet alakú gomb, ami a makró futását megállítja. A VB editor eszköztárában van. Valójában nem Stop hanem Reset felirat jelenik meg, ha az egeret fölé viszed, csak akkor lusta voltam megnézni, amikor az előbbit írtam. De minden épeszű távirányítón, magnón, lemezjátszón így jelölik a Stop funkciót.

     

    Az eddigieken kívül akkor is nullázódnak a változók, ha futási hiba esetén nem a Debug hanem az End gombra kattintasz.

    Emellett a Te Exceled már korábban is produkált érdekes dolgokat, szóval lehet, hogy egyedi jelenséggel állunk szemben :)

    Előzmény: tbando (22489)
    tbando Creative Commons License 2013.10.05 0 0 22489

    Kösz Jimmy! Az end utasítás valóban nulláz. De javítás közben még sosem adtam ki az end utasítást. Tehát kell még lennie egyéb nullázóknak is. A stop gombbal meg még nem találkoztam. Az micsoda?  

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

    Az End. utasítás nulláz, valamint ha debuggolás közben a stop gombra kattintasz.

    Előzmény: tbando (22487)
    tbando Creative Commons License 2013.10.05 0 0 22487

    Azt elfelejtettem megírni, hogy milyen javítgatásoknál történik a reset. Nos, megírom az összetett makrót, majd a futási sorrendjüknek megfelelően egyenként nézem, hogy mit csinálnak. Ha hibát tapasztalok, javítom. Ha nyilvánvaló, hogy ezzel megváltozhattak a modulváltozók értékei, akkor újra kezdem egészet. De ha a javítás nem érintette a változókat, akkor csak a subrutint ellenőrzöm újra. Sok esetben ez elég is.  De néhányszor nem, és ilyenkor eltart egy ideig amíg rájövök, hogy azért, mert a változók mégiscsak lenullázódtak.

    Előzmény: tbando (22486)
    tbando Creative Commons License 2013.10.05 0 0 22486

    Kb. én is itt tartok. Hogy a javítgatás belepiszkál a memóriába. Van amikor egy felugró ablakban ezt ki is írja. Pl. ha kreálok egy új változót. Ilyenkor természetes a reset. De  más esetekben nem ír ki semmit. Csak nulláz.  Más javítgatásoknál, meg semmi probléma. 

     

     

    Előzmény: Fferi50 (22485)
    Fferi50 Creative Commons License 2013.10.05 0 0 22485

    Szia!

     

    Nem igazán gondolkodtam még el ezen, természetesnek vettem, hogy ha hibával száll ki a program, akkor újraindításkor lenullázódnak a változók.

    Mikor nullázódnak le? Amikor futás közben egy javítás után meg akarod nézni az értékét ismételten, vagy amikor futás után belejavítasz valamibe és újraindítod? 

    Futás közbeni javításnál én úgy emlékszem, hogy a with - endwith közötti belepiszkálásra szokott visszabeszélni, hogy akkor most reseteli az egészet, ha belenyúlok. Ilyenkor általában békén szoktam hagyni.

     

    Szerintem azok a javítások nullázzák a változókat, amelyek miatt belepiszkál a memóriába a VBA. Szóval programírás-javítás közben előfordul ez a reset,  kóddal futás közben nem lehet előidézni szerintem (ami azért is csúnya lenne, mert akkor a saját mutatóit is hazavághatná vele gondolom).

     

    Üdv.

    Előzmény: tbando (22481)
    tbando Creative Commons License 2013.10.05 0 0 22484

    Átlökte.

    Előzmény: tbando (22483)
    tbando Creative Commons License 2013.10.05 0 0 22483

    Na nézzük, átlöki-e?

    tbando Creative Commons License 2013.10.05 0 0 22482

    Egyre határozottabban az az érzésem, hogy a duplaküldéseket nem a kapcsolat lelassulása okozza, hanem, hogy az első hsz elakad, amit a második átlök. Tehát valami bugos fórummotor fejlesztés történhetett mostanában.

    Előzmény: tbando (22481)
    tbando Creative Commons License 2013.10.05 0 0 22481

    Tehát szerintem egyesével kell a modul-változókat is nullára, üres stringre ...stb. állítani értékadással.

     

    Én is így gondoltam. De nem egészen így van. Mert amikor egy összetett makrót subrutinonként javítgatok, már többször előfordult, hogy a javítgatás során a modulváltozók lenullázódtak, és még nem jöttem rá, hogy mely javítgatási lépésekkel idéztem ezt elő. Ehhez várnék itt valami támpontot.

     

    Előzmény: Fferi50 (22479)
    tbando Creative Commons License 2013.10.05 0 0 22480

    Tehát szerintem egyesével kell a modul-változókat is nullára, üres stringre ...stb. állítani értékadással.

     

    Én is így gondoltam. De nem egészen így van. Mert amikor egy összetett makrót subrutinonként javítgatok, már többször előfordult, hogy a javítgatás során a modulváltozók lenullázódtak, és még nem jöttem rá, hogy mely javítgatási lépésekkel idéztem ezt elő. Ehhez várnék itt valami támpontot. 

    Előzmény: Fferi50 (22479)
    Fferi50 Creative Commons License 2013.10.05 0 0 22479

    Szia!

     

    Ha olyan utasításra gondolsz, amely egy lépésben megoldaná a resetet, akkor én olyat nem találtam eddig (igaz, nem is kerestem). A help azt írja, hogy a modulszintű változó addig fogja a memóriát, amíg be nem nem állítod a kezdeti értékre.  (Module-level variables consume memory resources until you reset their values, so use them only when necessary.) Mivel minden változótípusnál más a kezdeti érték, azokat sajnos egyesével kell beállítani olyan értékre, amit a futás kezdetén kap:

     

    "When a procedure begins running, all variables are initialized. A numeric variable is initialized to zero, a variable-length string is initialized to a zero-length string (""), and a fixed-length string is filled with the character represented by the ASCII character code 0, or Chr(0).Variant variables are initialized to Empty. Each element of a user-defined type variable is initialized as if it were a separate variable.

    When you declare an object variable, space is reserved in memory, but its value is set to Nothing until you assign an object reference to it using the Set statement."

     

    Tehát szerintem egyesével kell a modul-változókat is nullára, üres stringre ...stb. állítani értékadással.

     

    Üdv.

    Előzmény: tbando (22478)
    tbando Creative Commons License 2013.10.05 0 0 22478

    Kösz. A rövidített paramétermegadási módról  tudok ugyan, de viszonylag ritkán használom, mert általában elszúrom valahol...

     

    A 22437 hszbeli kérdésemre nem tudod véletlenül a választ? Arra, hogy milyen jellegű utasítások, lépések nullázzák a modulváltozókat? 

    Előzmény: Fferi50 (22477)
    Fferi50 Creative Commons License 2013.10.05 0 0 22477

    Szia!

     

    Természetesen nagyon hasznos és a program jó áttekintését teszi lehetővé a "nevesített" paraméterek használata. Ott, ahol sok paraméter van, én is használom mindig, de ha csak egy-két paramétert lehet megadni, akkor nem gyötröm  magam vele. Egyébként nem kötelező a név használata, akkor viszont arra figyelni kell, hogy milyen sorrendben adod meg a paraméter értékeket - vesszővel elválasztva!- (és az elsőnél nem kell vessző!!! csak a szóköz).

     

    Üdv.

    Előzmény: tbando (22476)
    tbando Creative Commons License 2013.10.04 0 0 22476

    Képzeld!  Nem tudtam. :)))). Még csak ott tartottam Jimmy jóvoltából, hogy Copy Destination:= stb. Tehát kösz.

     

    De ami ennél fontosabb, hogy egérkirálynak még jobban megfelelne a 22469 hszbeli makró, ha még hozzáírja ezt a sort:

     

    Activesheet.Name="new price " & worksheets.count+1

     

     

    Előzmény: Fferi50 (22475)
    Fferi50 Creative Commons License 2013.10.04 0 0 22475

    Szia!

     

    Mivel az aktív munkalap a "Munka1(2)", akkor az adatot így a legegyszerűbb átvinni:

     

    Sheets("Munka1").Range("A10:D20").Copy range("A10")

     

    És akkor semmi select, paste, cutcopymode, stb.

     

    (De gondolom, Te ezt tudod is.(:))

     

    Üdv.

    Előzmény: tbando (22469)
    tbando Creative Commons License 2013.10.04 0 0 22474

    Lelassult, lelassult, na de ennyire? A 22472 és a 22473 között több mint félóra telt el.

    Előzmény: Delila10 (22471)
    tbando Creative Commons License 2013.10.04 0 0 22473

    Szia!

     

    Én úgy vélem, hogy a select szeleciója egérkirálynak még bonyolultabbá tenné a rögzítés finomitása projectet. Ezért  maradt benne a makróban. :)))

    Előzmény: Delila10 (22471)
    tbando Creative Commons License 2013.10.04 0 0 22472

    Szia!

     

    Ez a mostani eset hasonló, a  múltkorihoz. Momentán egy rögzített makrót a legkevesebb változtatással akartam prezentálni egérkirálynak.   Hogy legközelebb magai is képes legyen a változtatásokra. A select szelekciója a magasabb osztályok tananyaga.   :))))

    Előzmény: Delila10 (22471)
    Delila10 Creative Commons License 2013.10.04 0 0 22471

    Lelassult.

     

    Látom, továbbra sem vagy hajlandó mellőzni a Select utasításokat. :(

    Előzmény: tbando (22470)
    tbando Creative Commons License 2013.10.04 0 0 22470

    Mi a fene lett ezzel a fórummotorral? Látva a hozzászólásodat, legalább 3 percet vártam az ismételt elküldéssel, közben vagy 10x kilépve-belépve a fórumba

    Előzmény: Delila10 (22465)
    tbando Creative Commons License 2013.10.04 0 0 22469

    Mivel azt írod hogy kezdőként a rögzítésből próbálod kitalálni a vba logikáját, bemutatom neked, hogyan kellett volna változtanod a rögzítéseden, hogy akárhány új lapot kreáljon. Próbáld megérteni, a jövőben hasznos lesz.

     

    Sub Makró1()

     

    Sheets("Munka1").Select

        Sheets.Add Type:= _

            "C:UserstBandoAppDataRoamingMicrosoftTemplateslotus.xltx"

        'Sheets("Munka1").Select

        'Range("A10:D20").Select

        'Selection.Copy

        Sheets("Munka1").Range("A10:D20").Copy

        'Sheets("Munka1 (2)").Select

        Range("A10").Select

        ActiveSheet.Paste

        Application.CutCopyMode = False

       

    End Sub 

     

    Tehát a felső 3 kék sorból összehozod a pirosat, majd a kékeket törlöd vagy csak egyszerűen eléjük írsz egy egyvonásos aposztrófot.

     

    A makróban a fekete bold szöveg az én excelemet specifikálta, nálad a tiedet fogja. 

     

    Előzmény: egerkiraly68 (22459)
    tbando Creative Commons License 2013.10.04 0 0 22468

    Mivel azt írod hogy kezdőként a rögzítésből próbálod kitalálni a vba logikáját, bemutatom neked, hogyan kellett volna változtanod a rögzítéseden, hogy akárhány új lapot kreáljon. Próbáld megérteni, a jövőben hasznos lesz.

     

    Sub Makró1()

     

    Sheets("Munka1").Select

        Sheets.Add Type:= _

            "C:UserstBandoAppDataRoamingMicrosoftTemplateslotus.xltx"

        'Sheets("Munka1").Select

        'Range("A10:D20").Select

        'Selection.Copy

        Sheets("Munka1").Range("A10:D20").Copy

        'Sheets("Munka1 (2)").Select

        Range("A10").Select

        ActiveSheet.Paste

        Application.CutCopyMode = False

       

    End Sub 

     

    Tehát a felső 3 kék sorból összehozod a pirosat, majd a kékeket törlöd vagy csak egyszerűen eléjük írsz egy egyvonásos aposztrófot.

     

    A makróban a fekete bold szöveg az én excelemet specifikálta, nálad a tiedet fogja. 

    Előzmény: egerkiraly68 (22459)
    tbando Creative Commons License 2013.10.04 0 0 22467

    Arra gyanakodtam, hogy az lehet esetleg a hiba oka, hogy elfelejtettem közölni, hogy a képlet tömbképlet, amit a ctrl+shift-tel kell beírni. Ám most megnéztem a normál bevitelű változatot, az nullát ad eredményül, tehát nem azt, ami nálad jelentkezett. Így tehát változatlanul kiváncsi vagyok, és várom a hibás füzetet. 

    Előzmény: tbando (22466)
    tbando Creative Commons License 2013.10.04 0 0 22466

    Ezt írod:

     

    kipróbáltam, de az a gond, hogy amikor max értéket számol az Excel, az egész tartomány legmagasabb értékét rendeli hozzá az A,B,C verziőjú termékeknél, vagyis cellánként halad és nézeget, nem csinál összehasonlítást a konkrét termék A,B,C típusú termékeinek értéktömbjében.

     

    Elképzelni sem tudom, hogy mi lehet nálad a probléma. Nálam úgy működik a képlet, ahogy szeretnéd. És bár most ugyan már okafogyott lenne a használata, mert már születtek praktikusabb megoldások is, engem azért érdekelne, hogy mi lehet nálad a hiba oka. Ezért megköszönném, ha elküldenéd priviben a hibás munkafüzetet, megjelölve benne, hogy hol ad hibás eredményt.

     

    üdv tBando

    Előzmény: egerkiraly68 (22457)
    Delila10 Creative Commons License 2013.10.04 0 0 22465

    Mégsem ette meg, csak gondolkozott, hozza-e?

    Előzmény: Delila10 (22464)
    Delila10 Creative Commons License 2013.10.04 0 0 22464

    Jimmy makrója megoldja a gondodat. Ő nem hozott létre új lapot, hanem a régieket törölte, és azoknak a helyére gyűjtötte ki az újakat.

     

    A kérdésedre, hogy hogyan hozhatsz létre új lapot megadott névvel:

    Worksheets.Add.Name = "Ízlésed szerinti név"

     

    off

    Ezt már megírtam egyszer, de a fórummotor megette.

    on

    Előzmény: egerkiraly68 (22457)
    Delila10 Creative Commons License 2013.10.04 0 0 22463

    Jimmy makrója megoldja a gondodat, de azért leírom, hogyan hozhatsz létre új lapot az ízlésed szerinti névvel.

     

    Worksheets.Add.Name = "Ízlés szerinti név"

    Előzmény: egerkiraly68 (22457)
    Fferi50 Creative Commons License 2013.10.04 0 0 22462

    Szia!

     

    Ha úgy gondolod, küld át.

     

    A makróban az "A","B","C" mindig a cellák oszlop azonosítóját jelenti, az x,y pedig a sorokat jelenti. Ha változatlanul másolod be, akkor működnie kellene, ha előtte lerendezted az "A" oszlopot terméknévre. Ha nincs rendezve, akkor az is beírható a makróba.

     

    Más: Tbandóhoz írtad a kérdést.

    Igen, van olyan lehetőség, hogy létrehozz egy új munkalapot:

    worksheets.add  beszúr egy új munkalapot az aktív munkalap elé és azt aktíválja. utána átnevezheted.

     

    Üdv.

    Előzmény: egerkiraly68 (22459)
    Fferi50 Creative Commons License 2013.10.04 0 0 22461

    Szia!

     

    Ha úgy gondolod, küld át.

    A makróban az "A","B","C" az a cellák oszlop azonosítóját jelenti egyébként. Ha pontosan bemásolod amit írtam, akkor elvileg működnie kellene, feltétel az, hogy az "A" oszlop terméknévre le van rendezve inditás előtt. Ha nincs, azt is bele lehet tenni a makróba.

     

    Kérdés:

    Miért makró? Nem jó az amit Tbandó-val közösen javasoltunk? (Sorbarendezés, ismétlődések kivétele.)

     

    Üdv.

     

    Előzmény: egerkiraly68 (22459)
    Törölt nick Creative Commons License 2013.10.04 0 0 22460

    Próbáld ki ezt:

     

    Sub izé()
        Dim wsForrás As Worksheet, wsCél As Worksheet
        Dim rngForrás As Range, rngCél As Range
        Dim c As Range, rngFeltétel As Range, rngTalálat As Range
        
        Set wsForrás = ThisWorkbook.Worksheets("Munka1")
        Set wsCél = ThisWorkbook.Worksheets("Munka2")

        'törlünk mindent a cél munkalapon
        wsCél.Cells.Delete
        
        'fejléc másolás
        wsForrás.Range("A1:C1").Copy Destination:=wsCél.Range("A1")
        'szűrőtartomány beállítás
        wsForrás.Range("F1") = wsForrás.Range("A1")
        Set rngFeltétel = wsForrás.Range("F1:F2")
        
        'forrás tartomány kijelölése
        Set rngForrás = wsForrás.Range("A1", wsForrás.Range("A" & wsForrás.Rows.Count).End(xlUp))
        
        'ciklus
        For Each c In rngForrás
            Set rngTalálat = wsCél.Range("A:A").Find(what:=c, lookat:=xlWhole, LookIn:=xlValues)
            If rngTalálat Is Nothing Then
                rngFeltétel(2) = c
                Set rngCél = wsCél.Range("A" & wsCél.Rows.Count).End(xlUp).Offset(1)
                rngCél = c
                rngCél.Offset(, 1) = "Standard"
                rngCél.Offset(, 2) = Application.WorksheetFunction.DMax(rngForrás.Resize(, 3), 3, rngFeltétel)
            End If
        Next
    End Sub

    A makró helyes működésének feltételei:1) A forrás és cél munkafüzetek neve megfelelően be van állítva (a fenti példában Munka1 és Munka2)

    2) Az adatok az A, B, C oszlopokban helyezkednek el, olyan sorrendben, ahogy a 22439-ben megadtad. Az 1-es sorban fejléc van, utána összefüggő adatsor.

    3) Az adatsor alatt nincs semmi (pl. összegzés, átlagolás, lábléc, másik táblázat, stb.)

     

    A makró amúgy a AB.MAX függvényt használja, és a ciklus lefutása előtt a cél munkalap teljes tartalmát törli.

    Előzmény: egerkiraly68 (22439)
    egerkiraly68 Creative Commons License 2013.10.04 0 0 22459

    Köszi a részletes makró leírást is, de nem tudtam jól megcsinálni, mivel szintaktikai hibákba futottam bele - ez még magas az én tudásszintemhez.

     

    Elég kezdő vagyok, elsősorban rögzítek, és abból következtetek vissza a makró működésének logikájára, meg youtube videókból lesegetek el dolgokat. Szóval még gyerekcipős az én makróírási képességem :-)

     

    A gondom az volt, hogy nem tudtam, amikorA,B,C-re hivatkozol, mikor jelenti az Excel oszlopneveket, mikor magát a hasonló nevű termék azonosítót, ráadásul konkrét munkafüzetben, konkrét lapokkal dolgozva nem tudom behivatkozni ezeket a munkalap neveket.

     

    Nagyon jó lenne ilyen elegáns és egyszerűbb, valódi makró megoldást nyújtani, tehát nem makrórögzítéses verziót csinálni, mert ott túl sok minden van benne, ami nem kell igazából.

    Átküldhetem esetleg privátban a konkrét fájlt?

    Előzmény: Fferi50 (22449)
    egerkiraly68 Creative Commons License 2013.10.04 0 0 22458

    Köszönöm a Te javaslatodat is, pontosan ezt csináltam, létrehoztam egy új munkalapot, és ott dolgoztam a javasoltak szerint, viszont itt merül fel némi gondom, amit az előző hsz-ban leírtam.

    Előzmény: Fferi50 (22453)
    egerkiraly68 Creative Commons License 2013.10.04 0 0 22457

    Köszönöm a javaslatot, kipróbáltam, de az a gond, hogy amikor max értéket számol az Excel, az egész tartomány legmagasabb értékét rendeli hozzá az A,B,C verziőjú termékeknél, vagyis cellánként halad és nézeget, nem csinál összehasonlítást a konkrét termék A,B,C típusú termékeinek értéktömbjében.

     

    Viszont a másik ötlet, a két szintű sorbarendezés és ismétlődések eltávolítása nagyon jó ötlet volt, köszönöm, ez működik, és ezt rögzítéssel makróztam le, ahogyan javasoltad.

     

    Most már csak egy gondom van: hogyan tudom megoldani azt, hogy ne a makrórögzítéssel létrehozott új sheet nyitást csinálja, ahová berakja a Sheet1 abszolút nevet, hanem konkrét új munkalap létrehozó parancsot tudjak betenni, és azonnal nevezze is át newprice-ra?

     

    Arról van szó, hogy ha egyszer lefuttatom a makró rögzítéses programot, finomítgatom stb, majd újra lefuttatnám, már hibára fut ott, hogy az Excel az új munkalap létrehozásakor a makró elején nem találja meg a Sheet1-et, hiszen automatikusan Sheet2-t hoz fel az Excel (mivel már használatban volt Sheet1 korábban).

    Hiába törlöm ki a felesleges Sheet 1-et, utána akkor is Sheet2 stb, növekvő sorszámozású üres lappal indít.

     

    Nem szeretném a felhasználót megkérni arra, hogy előre hozza létre a newprice nevű munkalapot, pedig ez kiküszöbölné a problémát. Ok, ő elvileg csak egyszer futtatja le a programot, és így nem lehet gond, de mi van, ha eszébe jut valami, töröl valamit a forrás fájlban, majd újra futtatná a programot? Akkor már ő is hibára fog futni.

    A kérdés tehát az, hogy van-e olyan közvetlenül kiadható utasítás, mellyel létrehozok a makró elején egy új munkalapot, és függetlenül az aktuális Sheetx névtől azonnal átnevezi newprice névre?

     

     

    Előzmény: tbando (22451)
    DominicWolf Creative Commons License 2013.10.04 0 0 22456

    Van az épfileben vmi macro. Az alaplap http linkeket hoz minden termékre. Egy macro elindításával e linkek alapján Rec-be letölti az összes terméket egy oszlopba a kódok mellé. Ezt ki lehetne használni?

    Előzmény: Delila10 (22445)
    tbando Creative Commons License 2013.10.03 0 0 22455

    Nem feltétlenül. Ha összefűzöd a kódot a névvel, akkor jó a sima darabteli.

    Előzmény: djmorphy (22440)
    tbando Creative Commons License 2013.10.03 0 0 22454

    Na ez  még egyszerübb :))))

     

    De még ez is  fokozható.  Mivel úgy látom, hogy az alaptáblázaton már alapból csökkenő sorrendben vannak az árak :))))))

    Előzmény: Fferi50 (22453)
    Fferi50 Creative Commons License 2013.10.03 0 0 22453

    Vagy

    Átmásolja a forráslistát egy üres munkalapra és a javasolt módon sorbarendezett listán csinál egy ismétlődések eltávolítását a terméknév alapján!

    Aztán a második oszlopot kitölti "Standard" szöveggel.

     

    Üdv.

    Előzmény: tbando (22452)
    tbando Creative Commons License 2013.10.03 0 0 22452

    De most hogy nézegetem az ábrát, rájöttem, hogy van egy pofonegyszerű eljárás is:

     

    Az alaplistát sorbarendezed a Termék/Ár oszlopokra (az utóbbit csökkenőre) 

    A G-oszlop a megadott módon

    A H is

    Az I-ben pedig egyszerű FKERES, mivel az mindig az első megtaláltat adja.

     

    Előzmény: tbando (22450)
    tbando Creative Commons License 2013.10.03 0 0 22451

    B+ A kép lemaradt

     

     

    Előzmény: tbando (22450)
    tbando Creative Commons License 2013.10.03 0 0 22450

    Erre gondolsz?  Hogy az Alaplistából ilyesfajta Kimenő lista legyen?

     

    Akkor makró nélkül:

     

     

     

     

     

     

     

     

     

    Az  F-oszlopba átmásolod a terméklistát, majd az Adatok/Adateszközök/Ismétlődések eltávolítása –val  megcsinálod a listát.

     

    A G-oszlop egyszerű, beírod, hogy „standard”.

     

    A H-oszlopba meg ezt a képletet aktualizálod  a saját táblázatodra:

     

    =HA(FKERES(F10;$A$10:$C$21;2;0)="standard";FKERES(F10;$A$10:$C$21;3;0);MAX(HA($A$10:$A$21=F10;$C$10:$C$21)))

     

    És kész.

     

    E lépéseket természetesen makrósíthatod is, a legkönnyebben a makrórőgzítő bekapcsolásával, majd a kapott makró finomításával, amivel szerintem te is megbirkózol.  Ha mégsem, jelentkezz újra.  Valaki biztos segít. Akár én is. 

    Előzmény: egerkiraly68 (22439)
    Fferi50 Creative Commons License 2013.10.03 0 0 22449

    Szia!

     

    Légy szíves a második (magamnak szóló) hozzászólást olvasd el!

     

    Üdv.

     

    Fferi

    Előzmény: egerkiraly68 (22439)
    Fferi50 Creative Commons License 2013.10.03 0 0 22448

     

     

    Szia!

     

    Bocsi, az előző hozzászólást elbaltáztam!

     

    A ciklus kulcsa legyen a termék neve (első oszlop). A ciklus addig tart, míg a következő sorban is ugyanez a termék van.

    Cikluson belül: első sor: bemásolod a termék nevét, a tipusa standard, bemásolod az árat a megfelelő cellába.

       Belső ciklus:Ha a következő sorban ugyanez a termék van, akkor megnézed, hogy az ár melyiknél nagyobb, azt hagyod meg a listában.

       Ha másik termék van a következő sorban, akkor ciklus vége.

       Ha üres cellához értél az "A" oszlopban, akkor a külső ciklusnak is vége.

    Feltétel, legyen sorba rendezve termék szerint a forrásod.

    Ha a terméknév mellet még az ár oszlop szerint is sorbarendezed max legyen elől feltétellel, akkor a belső ciklus csak sima továbblépés a következő termékre!!!

    Pl:

    kulcs=forras.range("A2").value

    x=2 'a forrás sort számolja

    y=2 ' a lista sort számolja   (a fejlécet tekintem első sornak)

    do while range("A" & x).value=kulcs

         lista.range("A2").value=forras.range("A" & x).value

         lista.range("B" &y ).value="Standard"

         lista.range("C" & y).value=forras.range("C" & y).value

         x=x+1

         do while forras.range("A" & x).value=kulcs

             if forras.range("A" & x).value=kulcs then

                if forras.range("C" & x).value> lista.range("C" & y).value then lista.range("C" & y).value=forras.range("C" & x).value

             endif

             x=x+1

          loop

          y=y+1

          kulcs=forras.range("A" & x).value

          if isempty(forras.range("A" & x)) then exit do

    loop

     

    Üdv.

     

    Fferi

    Előzmény: Fferi50 (22447)
    Fferi50 Creative Commons License 2013.10.03 0 0 22447

    Szia!

     

    A ciklus kulcsa legyen a termék neve (első oszlop). A ciklus addig tart, míg a következő sorban is ugyanez a termék van.

    Cikluson belül: első sor: bemásolod a termék nevét, a tipusa standard, bemásolod az árat a megfelelő cellába.

    Ha a következő sorban ugyanez a termék van, akkor megnézed, hogy az ár melyiknél nagyobb, azt hagyod meg a listában.

    Ha másik termék van a következő sorban, akkor ciklus vége.

    Pl:

    kulcs=forrás.range("A2").value

    x=2

    do while range("A" &x).value=kulcs

         lista("A2").value=range("A" & x).value

         lista.range("B" &y ).value="Standard"

         lista.range("C" & y).value=forras.range("C" & y).value

    x=x+1

         do while forras.range("A" & x).value=kulcs

                 if forras.range("A" & x).value=kulcs then

                 if forras.range("C" & x).value> lista.range("C" & y).value then lista.range("C" & y).value=forras.range("C" & x).value

              endif

    Előzmény: egerkiraly68 (22439)
    Eredő Vektor Creative Commons License 2013.10.03 0 0 22446

    nem lüke az, a legjobb szerintem. (A +0-val egyetemben)

    Előzmény: Delila10 (22444)
    Delila10 Creative Commons License 2013.10.03 0 0 22445

    Szívesen. Nem sokat mond a Rectangle objektum. Valami beágyazás?

    Előzmény: DominicWolf (22442)
    Delila10 Creative Commons License 2013.10.03 0 0 22444

    Egy kissé lüke megoldás a néha szövegként kell felismertetni néha meg számként a cellákat problémára:

    Egy oszlopban hivatkozz a cikkszámokra, =B2 & ""

    Ezzel szöveggé alakítod mindet, és a darabhatöbb függvényben erre az oszlopra hivatkozz.

    Előzmény: djmorphy (22443)
    djmorphy Creative Commons License 2013.10.03 0 0 22443

    Köszönöm! Tökéletes minden! :) Habár random nem veszi észre de ez a vonalkódolvasó file hibája. Mert manuálisan kitöltöttem egy ilyet ahol minden klappolt. Már szívtam meg, hogy néha szövegként kell felismertetni néha meg számként a cellákat...

    Előzmény: Delila10 (22441)

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