Keresés

Részletes keresés

Delila10 Creative Commons License 2013.07.03 0 0 21657

Alfanumerikus, de számjegyeket tartalmazó cellák egérrel történő másolásakor automatikusan nő az érték 1-gyel, numerikus adatnál ehhez a Ctrl billentyűt nyomva kell tartani.

Előzmény: Sánta Kutya (SK) (21655)
Törölt nick Creative Commons License 2013.07.03 0 0 21656

2003-ban is működik. Szerintem az az algoritmus, hogy ha egy karaktersorozat számra végződik, akkor a lehúzás növeli a számot, bármi legyen is előtte.

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

2007-esben tényleg növeli. Ami a furcsa, hogy nem is két cella, hanem csak egy alapján. Lehet, hogy a 2013/ miatt dátumnak nézi.

Előzmény: pimre (21654)
pimre Creative Commons License 2013.07.03 0 0 21654

Honnan szedted ezeket? Kipróbáltad? Mitől növelné a 'lehúzás' a sorszámot?

Előzmény: Eredő Vektor (21652)
pimre Creative Commons License 2013.07.03 0 0 21653

Azért javasoltam a B oszlop szerinti rendezést, hogy jó sorban legyenek.

Előzmény: Eredő Vektor (21651)
Eredő Vektor Creative Commons License 2013.07.03 0 0 21652

 

Én egész egyszerűen készítenék egy oszlopot, amiben egyesével növekvően megvannak a számlaszámok. (Első cellába beírom, hogy 2013/0001 és lehúzom - növelni fogja a sorszámot automatikusan. A létrejött oszlop mellé fkeressel összekeresném a két oszlopot egy harmadikba. Ahol #HIÁNYZIK van, az nincs benne.

 

Előzmény: Parkvárosi (21647)
Eredő Vektor Creative Commons License 2013.07.03 0 0 21651

Ez csak akkro jó, ha sorban vannak a számai.

 

Előzmény: pimre (21650)
pimre Creative Commons License 2013.07.03 0 0 21650

Ha egyszeri feladatról van szó, akkor nem kell makró. Tételezzük fel, hogy az egyébként következetlenül megadott számlaszámokról annyit biztosan tudonk, hogy 2013/-el kezdődnek, és utánuk szám jön, akár két számjeggyel, akár többel, de maximum 4 számjeggyel.

 

Legyenek az alapadataid az A oszlopban. Akkor a B1 cellába a következőt írod: =ÉRTÉK(KÖZÉP(A1;6;4)). Ezzel lefelé kitöltöd az összes cellát B-ben, majd rendezed a táblázatot a B oszlop szerint. 

Ezután a C2 (vigyázat, nem a C1) cellába írod a következőt: =HA(B2=B1+1;"";"hiányzó szám"). Majd a képlettel kitöltöd a C oszlop összes celláját.  A lyukak utáni sorban a C oszlopban megjelenik a  hiányzó szám szöveg

 

Előzmény: Parkvárosi (21647)
Sánta Kutya (SK) Creative Commons License 2013.07.03 0 0 21649

Mihez képest hiányzó? Hol van az alaphalmaz definiálva?

Előzmény: Parkvárosi (21647)
James 42 Creative Commons License 2013.07.03 0 0 21648

Nem vagyok egy nagy Excel guru, de nem hiszem, hogy a program tudhatná, hogy mi az, aminek ott kellene lennie, de nincs. Ha ezt jól lehet specifikálni, akkor biztos lehet rá makrót írni, de talán nem is szükséges. Én azt csinálnám, hogy egyszerűen sorba rendezném az adatokat a számlaszám szerint (utána persze nem fontos elmenteni a változásokat, illetve vissza lehet vonni a rendezést, ha kell), és így már a sorok számozása alapján könnyen ellenőrizhetném, hogy folyamatosak-e a számlaszámok. Főleg, ha szükség esetén beszúrok annyi sort, hogy pl. a 2013/11-es számlaszám a 21-es sorban legyen, mert így mindig csak az utolsó számjegyet kellene figyelni. De persze az Autoszűrő segítségével is lehet ellenőrizni az oszlopban előforduló adatokat, mert az is sorba rakja őket, de ebben az esetben macerásabb ellenőrizni az egész listát.

Előzmény: Parkvárosi (21647)
Parkvárosi Creative Commons License 2013.07.03 0 0 21647

Sziasztok!

Tudna nekem tanácsot adni valaki, hogy ha egy táblában több számlaszám szerepel, akkor hogy lehetne a hiányzót jeleztetni az excellel? Makrót lehet ehhez írni?

Pl: az oszlopban egymás alatt, de nem sorban vannak a számok: 2013/0011, 2013/0013, 2013/10, 2013/....

pimre Creative Commons License 2013.07.01 0 0 21646

Sziasztok, azt ugye jól látom, hogy combobox és listbox használatánál (hosszú listánál) az egér görgető nem működik?

Találtam ugyan egy elég bonyolult megoldást(http://www.xtremevbtalk.com/showpost.php?p=1119288&postcount=5), de a szerző maga is megírja, hogy ha a program bármilyen okból megáll, az Excel valószínűleg összeomlik. Más meg erről megírta máshol, hogy nem valószínűleg, hanem biztosan. 

 

Tényleg nincs megoldás erre?

pimre Creative Commons License 2013.06.28 0 0 21645

Kicsit keresgéltem a témával kapcsolatban. Mások is beleütköztek ebbe a jelenségbe:

 

http://bytes.com/topic/access/answers/864827-single-data-type-dangerous és

http://www.xtremevbtalk.com/archive/index.php/t-224997.html

 

Az elsőben már egyszerű kivonási műveletek is eltérést mutatnak a valóságos értéktől. De azt is kiderítik, hogy nem csak az egyszeres, hanem még a dupla pontosságú lebegőpontos számok is okozhatnak problémát. A legpontosabb a decimális típus. (máshol kiderül, hogy ehhez kell egy kis ügyeskedés, és egyébként ezzzel meg lassabbak a számolások)

 

A másodikban meg szóba kerül, hogy implicit adatkonverziók is okozhatják a jelenséget, és vannak példák a round-al kapcsolatos anomáliákra is.

Előzmény: tbando (21644)
tbando Creative Commons License 2013.06.28 0 0 21644

Nem valószínű, hogy rájövök magamtól. Már csak azért sem, mert e tekintetben a súgó sem ad eligazítást. A VBA Round-nál például nem jelzi, hogy az argumentumoknak double-knak kell lenniük, míg WSF Round-nál igen.  Talán majd valaki a spilerek közül.

Előzmény: pimre (21643)
pimre Creative Commons License 2013.06.28 0 0 21643

De azért ha egyszer megtudod az okot is, az majd érdekelne.

Előzmény: tbando (21642)
tbando Creative Commons License 2013.06.28 0 0 21642

Megoldottad. Átírtam az összes deklarációt double-ra. És így a Round-olt adatok is 6.2-re változtak. Kösz.   

Előzmény: pimre (21641)
pimre Creative Commons License 2013.06.28 0 0 21641

A különbséget a változódeklaráció okozza. A példádban a  hossz! deklaráció single változótípust hoz létre, míg én double típusúnak deklaráltam.

 

Hogy ezek miért viselkednek elétrően a kerekítéskor (meg esetleg máskor), arról egyelőre fogalmam sincs.

Előzmény: tbando (21640)
tbando Creative Commons License 2013.06.28 0 0 21640

Kösz, hogy foglalkoztál a kérdésemmel. A Round(6+2/10,1) nekem is helyes eredményt adott. De nézd meg az alábbi makrót, és az eredménylistáit.

Az excel munkalapon első blikkre úgy néz ki, hogy csak a WorksheetFunctionos (sor14) változat a kerekített. A többi nem. Ennek ellenére úgy néz  ki, mintha  a VBA-right  a sor11-12-ben  mégis a 6,2-t kerekítette volna.  Hogy a c13 és a c15-ben miért 4-t írt, arról lövésem sincs. És az is meglepő, hogy a vba és az E-oszlopban levő munkalap rightok más számokat látnak.

Nemkülönben érdekes a vba változók listája. Ami szerint mintha a Round kerekítés barmolná el a kerekítést. De ez sem igaz, mert akkor az eredm3-nek meg kellene egyeznie a hossz változóval.  De nem egyezik.

summa summárum: A Round és a Worksheet,Round mást számol. Most már csak az a kérdésem, hogy mit számol a Round. Tudja valaki?

 

Sub kerzur()

Dim a%, kulonbseg%, hossz!, ahossz!, eredm1#, eredm2#, eredm3#

 

kulonbseg = 8: hossz = 6

 

a = kulonbseg - hossz

  ahossz = hossz + a / 10

  hossz = hossz + a / 10

 

 

  eredm1 = Round(hossz, 1)   ''Nem kerekít

  eredm2 = Application.Round(hossz, 1)  ''Kerekít

  eredm3 = hossz ''Kerekités nélkül természets, hogy nem kerekít

   

  Range("a11") = "ahossz"

  Range("a12") = "hossz"

  Range("a13") = "eredm1: Round"

  Range("a14") = "eredm2: WorksheetFunction.Round"

  Range("a15") = "eredm3: hossz"

 

  Range("b11") = ahossz

  Range("b12") = hossz

  Range("b13") = eredm1

  Range("b14") = eredm2

  Range("b15") = eredm3

 

  Range("c11") = Right(ahossz, 1)

  Range("c12") = Right(hossz, 1)

  Range("c13") = Right(eredm1, 1)

  Range("c14") = Right(eredm2, 1)

  Range("c15") = Right(eredm3, 1)

 

End Sub

 

A makrót lefuttattam 2003-on is. Dettó 2007.

 

Előzmény: pimre (21639)
pimre Creative Commons License 2013.06.28 0 0 21639

Nálam ilyesmi nem mutatkozik:

 

Sub kerekit()
Dim a As Double, b As Double, c As Double
a = 6.19999999809
b = Round(a, 1)
c = Application.WorksheetFunction.Round(a, 1)
Range("A1:A3").Select
Selection.NumberFormat = "0.00000000000"
Cells(1, 1) = a
Cells(2, 1) = b
Cells(3, 1) = c
End Sub

 

Az eredmény:

 

6.199999998090

6.200000000000

6.200000000000

 

A 6+2/10 pedig nálam kereken 6.2-et ad ereményül. 

 

Mindez Excel 2003-ban

 

Előzmény: tbando (21638)
tbando Creative Commons License 2013.06.28 0 0 21638

Még annyit hozzáfűznék, hogy az a bizonyos 6,2, amit a a round  nem kerekített az 6+2/10 müvelet erdményeképp jött létre. Tehát egy osztás is van benne. De megcsináltam ezt az összeadást egy rövid függvényben is, ahol viszont a round normálisan működött.   ???? 

Előzmény: tbando (21637)
tbando Creative Commons License 2013.06.28 0 0 21637

Azt szeretném kérdezni, hogy mi a különbség  a Round és az Application.Worksheetfunction.Round között? A súgó alapján úgy véltem, hogy illene egyforma eredményt adniuk. Ezzel szemben azt tapasztaltam, hogy van amikor a Round cseszik kerekitett értéket rakni a munkalapra. Ilyenkor pont azt az eredményt adja mint Round nélkül.  Ami ráadásul a forrásváltozóban levő számmal sem egyezik meg-

 

Pl:  A VBA-beli  a=6.2  kiíratva a munkalapra:

 

=a:   6.19999999809  

=round(a,1):   6.19999999809  

=Application.Worksheetfunction.Round(a,1):   6.2

 

Miiért van ez?

tbando Creative Commons License 2013.06.27 0 0 21636

A Névadásnak nincs függvénye. Eljárást lehet rá írni. De annak szvsz nincs túl sok értelme, mert seperc alatt végigkattogtatható, aztán amíg nem törlöd, használhatod. De ha valami okból mégis szeretnéd makrósítani, semmi gond: a kattogtatás elött bekapcsolod a makrórögzítőt.

Előzmény: makako6 (21633)
pimre Creative Commons License 2013.06.27 0 0 21635

C:Windowssystem helyesen C:\Windows\system

Előzmény: pimre (21634)
pimre Creative Commons License 2013.06.27 0 0 21634

Köszönöm. A 2. pontot nem volt könnyű teljesíteni, de nagy nehezen rájöttem, hogy az ietimer.cab egy tömörített fájl, tehát tömörítővel kibontottam. Az így kapott ietimer.ocx fájlt bemásoltam C:Windowssystem könyvtárba. És a regisztráció céljából lefuttattam a regsvr32 ietimer.ocx parancsot. Innentől ment minden, mint a karikacsapás. Működik is. Mellesleg én is Excel 2003 alatt dolgozom.

Mindenesetre csak saját célra fogom használni, a kezemből kiadandó program esetén mégsem merem alkalmazni, mert valóban olyan igényeket támaszt, ami nem minden gépen teljesül.

 

"És még egy dolog: az Accessben ez a funkció gyárilag benne van :)". Most már befejezem azt, amit excelben kezdtem el, de ősszel nekiállok megtanulni az Accesst, és átgondolom, hogy ugyanezt a feladatot hogyan tudom majd ott megoldani.

 

Előzmény: Törölt nick (21626)
makako6 Creative Commons License 2013.06.27 0 0 21633

Szia,

 

A nevek definiálásának(kijelölésből új) képletére gondoltam.

Előzmény: tbando (21632)
tbando Creative Commons License 2013.06.26 0 0 21632

MIre? 

Előzmény: makako6 (21631)
makako6 Creative Commons License 2013.06.26 0 0 21631

Kedves Tbando,

 

Van erre esetleg függvény is az Excelben?

Előzmény: tbando (21628)
makako6 Creative Commons License 2013.06.26 0 0 21630

Szia,

 

Először is köszönöm szépen a gyors választ, mert excelben működik a dolog! Ezt a függvény használom a több cellásnál is, így itt sem hagytam ki, változtattam meg,hogy egységes legyen és az egyszerűség kedvéért másoltam ki egy két cellás példát.

 

Valójában Google apps(excel alapú) táblázatba szeretném ezt adoptálni, ahol jelenleg még nem találtam meg ezt a lehetőséget, de ha már excelben tudom mit, hol keressek ott is egyszerűbb lesz a dolog, vagy hasonló megoldást keresek esetleg beírható fv formájában. Szóval a segítség hasznos volt.

 

Köszönöm még egyszer!

Előzmény: tbando (21628)
Törölt nick Creative Commons License 2013.06.26 0 0 21629

Ez így ebben a formában nem egzakt. Az igaz, hogy a program működése feltételez egy bizonyos telepített környezetet. Pl. kell hozzá, hogy a timer vezérlő telepítve legyen. De ugyanúgy kell hozzá az is, hogy az Excel telepítve legyen. Ebben szerintem nincs semmi különös. Számtalan program van, amihez .NET Framework ez-az-amaz kell, különben nem megy. Ez még nem von le semmit a program értékéből, viszont ha használni akarják, előzőleg a megfelelő keretrendszert telepíteni kell.

Előzmény: Sánta Kutya (SK) (21627)
tbando Creative Commons License 2013.06.26 0 0 21628

Lehet hogy hülyeséget irok, de szerintem ez a képlet csak 2 eredményt adhat: 100%-t vagy 50%-t. Amit miért akarsz kerekíteni?

 

 " =ROUNDUP((100%-COUNT(lap!D12;lap!E12)/2),1) "

 

Előzmény: makako6 (21614)

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