Keresés

Részletes keresés

pimre Creative Commons License 2011.09.20 0 0 16112

Delila kösz, ki fogom próbálni. Bár az igazat megvallva, nem tudom, hogy akkor is jelentkezik-e a hiba, amikor a hibaüzenetet ki kell írni. Halvány emlékeim szerint a megállás akkor jelentkezett, amikor egyáltalán nem kellett az eltérésre figyelmeztetni. (Szándékom szerint egyébként is ez volt a részlet funkciója. Hiszen, ha tucatjával jönnek az eltérések, akkkor úgyis valami generális hiba van. Én meg azt ellenőriztem, hogy nincs-e valami apró poloska, ami egy-két rejtett hibát okoz a 2500 sor egyenként közel 20-20 adatában. Így a jellemző eset az, amikor a programrész hibajelzés nélkül fut le.) 

Előzmény: Delila10 (16107)
pimre Creative Commons License 2011.09.20 0 0 16111

Jimmy köszönöm.

Előzmény: Törölt nick (16106)
Sznida Creative Commons License 2011.09.20 0 0 16110

Köszönöm szépen Jimmy! Sokat segítettél!

Több oszlopban van szám is és szöveg is, tehát egy kicsit meg kellett variálni, de az elv az tökéletes!!!

 

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

 

Minden jót!

 

Üdv: Sznido

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

Kreálsz egy új oszlopot, és abba képlettel összefűzöd a 4 oszlop tartalmát, ami sorbarendezezési szempont, a prioritás szerinti sorrendben. Tehát ha pl.  A, D, B, K oszlopok szerint akarsz sorbarendezni, akkor X segédoszlop tartalma:

X2 = A2 & D2 & B2 & K2

Ezután rendezed az egészet X oszlop szerint, majd törlöd az X oszlopot.

Ha valamelyik oszlopban számok vannak, akkor ott még kell egy furfang: át kell alakítani a számokat helyiértéket megőrző szöveggé. Ha pl. a fenti példában D oszlopban számok vannak, és egyik szám sem nagyobb, mint 10^16, akkor

X2 = A2 & (1E16+D2) & B2 & K2

 

Előzmény: Sznida (16108)
Sznida Creative Commons License 2011.09.20 0 0 16108

Sziasztok,

 

A következő problémába ütköztem, s gondoltam megkérdezem Tőletek, mert mindig nagyon hamar kaptam jó válaszokat! :)

2003-as excelben hogyan lehet megoldani makró nélkül a négyszintű sorba rendezést?

A 2003-as excelben jelenleg három oszlop alapján lehet, nekem kellene egy negyedik is.

Van rá megoldás? Makróval meg tudnám csinálni, de a nélkül kellene!

 

Köszönettel: Sznido

Delila10 Creative Commons License 2011.09.20 0 0 16107

Nem a kérdésedre válaszolok, de arra, hogy a felhasználó "ne unatkozzon", van egy másik mód is, mint az msgbox.

Kiírathatod a státuszsorba a program pillanatnyi állását, vagy bármilyen más szöveget.

 

    For sor = 1 To sorok
        adat1 = adat1 = Sheets(aktlapnév).Cells(sor, oszlop)
        adat2 = adat2 = Workbooks(ellfile).Sheets(aktlapnév).Cells(sor, oszlop)
        If adat1 <> adat2 Then
            Application.StatusBar = Str(sor) + ". sor, " + oszlopnév(oszlop) + ". oszlop eltér!"
        End If
    Next
    Application.StatusBar = False

Az utolsó sor visszaállítja a státuszsor eredeti beállítását.

 

Előzmény: pimre (16104)
Törölt nick Creative Commons License 2011.09.20 0 0 16106

Sem a magyarázatát, sem a megoldását nem tudom, de azt igen, hogy nem különleges eset. Egy-egy hosszabb programfutás során nálam is gyakran előfordul, hogy kvázi "lefagy" az Excel, de közben valójában tekeri a CPU-t ezerrel, és számolja, mait számolni kell, csak megszakad a kapcsolata a külvilággal. Úgy vettem észre, hogy a fókuszváltás az ablakok közt (pl. az Excel ablak elveszti a fókuszt) gyakran (talán mindig) kiváltja ezt a viselkedést. De ha megszakítom a program futását egy Ctrl+Break -kel, majd azt modnom neki, hogy folytassa, visszaáll a megszokott működés.

 

Az egész valószínűleg egy rosszul megírt Microsoft termék hibája. Mivel a makród ettől még rendesen lefut, a helyedben nem nyugtalankodnék nagyon. Viszont érdemes a makródat úgy megírni, hogy az időigényes számolási rész előtt tegyen ki a usernek egy kis cédulát, amin az áll, hogy hosszú folyamat jön, ami alatt az Excel esetleg úgy tűnhet, mintha lefagyott volna, de legyen türelemmel, és ne piszkálja a Ctrl+Alt+Del gombokat.

Előzmény: pimre (16104)
pimre Creative Commons License 2011.09.20 0 0 16105

Bocs, a programrészlet bemásolásánál a tabulátoraim elvesztek, de remélem, így is érthető a rövid kód.

Előzmény: pimre (16104)
pimre Creative Commons License 2011.09.20 0 0 16104

Akkor rögtön van is egy kérdésem:

 

Van 2500 sornyi adatom, ezen belül 16 oszlop (A-P). Ezeket tartalmazza a sor és az oszlop változó az alábbi részletben, ahol ellenőrzést végzek, hogy azonos-e a két fájl összes adata.

Közben, hogy a felhasználó (szerencsére ez itt csak magam vagyok, hiszen a programot tesztelem) ne unatkozzon, minden sor vizsgálatának elején ráállok annak 1. oszlopára: (Cells(sor, 1).Select). Így a vizsgálat közben szépen fut lefelé a képernyő. 

 

For sor = 1 To sorok

Cells(sor, 1).Select ' Hogy lássuk, amint megy a sorokon

For oszlop = 1 To oszlopok

adat1 = Sheets(aktlapnév).Cells(sor, oszlop) ’ aktlapnév a megnyitott munkafüzet vizsgált lapja

adat2 = Workbooks(ellfile).Sheets(aktlapnév).Cells(sor, oszlop) ’ ellfile az ellenőrzendő másik munkafüzet neve benne az           'azonos nevű munkalappal

If adat1 <> adat2 Then

MsgBox Str(sor) + ". sor, " + oszlopnév(oszlop) + ". oszlop eltér!’

End If

Next oszlop

Next sor

MsgBox „Ellenőrzés befejezve.”

 

Ez egy nagyon egyszerű programrészlet. Nem is lenne gondom vele. De számomra érthetetlen okokból időnként megáll a képernyőn a futás. A program dolgozik ugyan, de valamelyik sor kiírásánál megmerevedik a képernyő. Azaz látszólag nem hajtja végre a Cells(sor, 1).Select parancsot. 

Ráadásul a jelenség nem következetes. Van amikor rendesen lefut, van amikor valamelyik soron megáll a léptetés. És, hogy melyiken, az mindig változó. Valami memóriazavar lehet, úgy sejtem.

 

Aztán – ha megállt a képernyőn a léptetés - a program befejezi azért az ellenőrzést, és kiírja a program végén, hogy vége az ellenőrzésnek (vagy ha közben eltérés van, azaz ki kell írni a hibát, hogy eltérnek az adatok, akkor azt is rendesen megteszi.), tehát csak a Cells(sor, 1).Select parancs nem működik. Szerencsére nincs jelentősége, mert a felhasználó nem találkozik vele, csak engem nyugtalanít. Mint minden olyan esemény, ahol nem az történik, amit szeretnék Ismeritek Murphy idevágó törvényét: „A program mindig az utasításaidat hajtja végre, nem pedig a kívánságaidat”.

 

Szóval tudja valaki a dolog magyarázatát, esetleg a megoldását?

 

Előzmény: pimre (16103)
pimre Creative Commons License 2011.09.20 0 0 16103

Dehogynem, rengeteg. De a többségét megoldom. Amit nem, abban eddig segítettetek. Most úgy látom több mint 3 hónap után, hogy a programom átadható a felhasználónak. Kösz az eddigieket is.

 

De azért még dolgozom tovább. Sejtésem szerint az Excel programozás lehetőségeinek talán vagy fél százalékát megismertem:-))). De hogy ebből mikor lesz akár 25%, az a messzi jövő kérdése:-(((

Előzmény: Delila10 (16099)
tt65 Creative Commons License 2011.09.19 0 0 16102

A legpörgősebb topikok közé biztos nem fog bekerülni az a topik! :-) De szerintem csak idő kérdése, hogy megint meglóduljon a diskurzus!

Előzmény: Delila10 (16101)
Delila10 Creative Commons License 2011.09.19 0 0 16101

Igen.

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

:D

Unatkozol?

Előzmény: Delila10 (16099)
Delila10 Creative Commons License 2011.09.19 0 0 16099

Senkinek semmilyen problémája az Excellel?

Így nem találnak majd rá a böngészők erre a fórumra!

Törölt nick Creative Commons License 2011.09.15 0 0 16098

 

Pl. Használhatod a ComboBox Change eseménykezelőjét:

 

Private Sub ComboBox1_Change()
  If Me.ComboBox1.Text <> "" Then
    Me.Label1.Caption = "A ComboBox értéke NEM üres"
  Else: Me.Label1.Caption = "A ComboBox most üres"
  End If
End Sub

Előzmény: kovacsmiklos1985 (16095)
tt65 Creative Commons License 2011.09.14 0 0 16097

én arra gondoltam, ha az első sorban kezdőd adatok fölé (mint ahogy a kollega mintájában is volt) beszúrsz egy címsort (már beképletezett állapotban).

 

akkor a =SOR()-SOR($A$2)+1 a helyes recept, de az már a túlragozott elegancia csimborasszója :-)

Előzmény: Delila10 (16096)
Delila10 Creative Commons License 2011.09.14 0 0 16096

Köszönöm.

 

tt65

Címsor esetén =DARABTELI($A$1:$L$47;SOR()-1)   :)

 

 

Előzmény: pimre (16093)
kovacsmiklos1985 Creative Commons License 2011.09.14 0 0 16095

Sziasztok!

 

Excel VBA-ban hogy lehet azt megoldani, hogy egy programsor akkor tegyen eleget valaminek, ha mondjuk egy mező értéke nem üres.

 

Pl.

 

if combobox1.text = "ide jönne, hogy nem üres" then label1.caption = "Sikerült megoldani"

 

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

 

Miki

tt65 Creative Commons License 2011.09.14 0 0 16094

Igen, valóban az.

A gereblye ott van benne, ha a táblázat fölé beszúrsz egy sort mondjuk címsornak , akkor a Sor() fv. rögtön elcsúszik eggyel ...

én már léptem bele, azért szólok :-)

Előzmény: pimre (16093)
pimre Creative Commons License 2011.09.14 0 0 16093

Ez nagyon szép, elegáns megoldás.

Előzmény: Delila10 (16091)
tt65 Creative Commons License 2011.09.14 0 0 16092

ha már egy oszlop van, akkor lehetne a GYAKORISÁG fv-el operálni, esetleg egy kimutatást készíteni és abban megszámoltatni az előfordulásokat!

Előzmény: pimre (16088)
Delila10 Creative Commons License 2011.09.14 0 0 16091

Az adatok szétválasztása jó.

 

Mivel a MIN és MAX függvényekkel [=MIN(A1:L47) és =MAX(A1:L47)]  sikerül kideríteni, hogy a tartomány legkisebb tagja 1, a legnagyobb 111, egy új oszlopba felvesszük 1-től 111-ig a sorszámokat. Legyen most ez a tartomány az N1:N111. 

 

Az O1 cella képlete: =DARABTELI($A$1:$L$47;N1). Ezt lemásolod az O111 celláig, és kész.

 

"Megspórolhatod" az N oszlopot, ha egy oszlopba az első sorba a  =DARABTELI($A$1:$L$47;SOR()) képletet írod a fenti helyett, és ezt másolod le a 111. sorig. A SOR() függvény az aktuális sor számát adja eredményül, nem kell egy másik oszlopban lévő sorszámra hivatkoznia a DARABTELI függvénynek.

Előzmény: erno68 (16086)
erno68 Creative Commons License 2011.09.14 0 0 16090

Köszönöm szépen a segitségeteket . Ernő

Előzmény: pimre (16088)
pimre Creative Commons License 2011.09.14 0 0 16089

Nyelvbotlás: 'az adatok közt lévő szóközök' helyett 'az adatok közt lévő üres cellákat' akartam írni. Bocs. 

Előzmény: pimre (16088)
pimre Creative Commons License 2011.09.14 0 0 16088

Akkor mondok egy nagyon primitív megoldást. Azt meg tudod tenni, hogy valamennyi oszlop adatát egyenként kijelölöd, és egyenként átmásolod az A oszlop adatai mögé?  Ha igen, akkor az átmásolgatás után az A oszlopban lesz 564 adatod, tekintve, hogy most van 12 oszlopod, egyenként 47 sorral.  (Megjegyzés: Az átmásolásnál javaslom a kivágás/beillesztést, így nehezebb eltéveszteni, hogy hol tartasz)

Ezután az A oszlop 564 adatát (vagy az egész A oszlopot) kijelölöd (a kijelölés muszáj az adatok közt lévő szóközök miatt), és adatok->sorba rendezés>A oszlop->emelkedő sorrendben.

Ez már összehozza az azonos értékeket, és meg tudod számolni őket.

 

A szakértőktől elnézést a megoldás közönségessége miatt, de működik, és talán érthető.

Előzmény: erno68 (16086)
Vacy Creative Commons License 2011.09.14 0 0 16087

Küldtem egy lehetséges megoldást.

Előzmény: erno68 (16086)
erno68 Creative Commons License 2011.09.13 0 0 16086

:) na enyire haladtam de itt elakadtam http://www.csomortani.ro/szavazas  . Ernő

Előzmény: Delila10 (16081)
erno68 Creative Commons License 2011.09.13 0 0 16085

Nem jön össze :( eldöntöttem bunkó vagyok megkérlek segitsetek ki és ha tudjátok küldjétek el az erno@csomortáni.ro cimre , elöre is köszönöm. Ernő 

Előzmény: Delila10 (16079)
erno68 Creative Commons License 2011.09.13 0 0 16084

Köszi szépen, igy olvasásra elég bonyolultnak tünik, főleg ha csak amatör szinten ismerem az excellt :) Ernő

Előzmény: Sánta Kutya (SK) (16078)
Delila10 Creative Commons License 2011.09.13 0 0 16082

megszámlálhatod a pontokat szövegrészt értetted félre. Szavazásról volt szó, nem az írásjelre, hanem a pontszámra utaltam. :)

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

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