Keresés

Részletes keresés
Így működik

Bővebben az új keresőről

FaniApu Creative Commons License 2011.01.06 0 0 13697

Kedves Valaki!

Segítséget szeretnék kérni hogyan lehet megszámolni egy adott tartományban lévő olyan cellák barabszámát aminek a háttérszíne pl. narancsárga (vagyis feltételes formázással színezett)?

Üdv:Fani

Delila_1 Creative Commons License 2011.01.06 0 0 13696

Úgy van! Ezért jobb a Ctrl+c, Ctrl+v-s beírás ide. A "gyalogos" bemásolásnál ilyen hibák fordulhatnak elő. :(

 

Köszi a javítást!

Előzmény: SQLkerdes (13695)
SQLkerdes Creative Commons License 2011.01.05 0 0 13695

=SZORZATÖSSZEG(--(KÖZÉP(B2;SOR(B2:INDIREKT("A"&HOSSZ(B2)));1)="s"))

 

A boldolt B2 helyett gondolom A1-et akartál írni :-)

 

Előzmény: Delila10 (13694)
Delila10 Creative Commons License 2011.01.05 0 0 13694

Akkor itt a szorzatösszeges, ami összeszámlálja a B2-ben a s betűket:

 

=SZORZATÖSSZEG(--(KÖZÉP(B2;SOR(B2:INDIREKT("A"&HOSSZ(B2)));1)="s"))

Előzmény: SQLkerdes (13693)
SQLkerdes Creative Commons License 2011.01.05 0 0 13693

Mondjuk én a HA-t kihagynám és sima boolean-t csinálnék belőle, valahogy így:

=SUM(--(MID(A1,ROW(A1:INDIRECT("A"&LEN(D27)),1="W"))))

 

Lehet a zárójelek számát elcsűrtem, de az elv gondolom látszik.  

Előzmény: Jimmy the Hand (13682)
SQLkerdes Creative Commons License 2011.01.05 0 0 13692

Ez tévedés, Delila szokta szorzatösszeggel csinálni a dolgokat, én vagyos a SUM-os, de azt most lenyúltad :-)

Előzmény: Jimmy the Hand (13683)
Jimmy the Hand Creative Commons License 2011.01.05 0 0 13691

Nagyjából.

Karakterekre van szedve a szöveg (ciklusban) a KÖZÉP függvénnyel, és 1 értéket kapnak a "w" karakterek.

A SOR függvény azért kell, mert ezzel állítom elő a ciklusváltozót. Ha tudnék nála (mármint a SOR-nál) jobbat, nem keverném bele.

 

Előzmény: Törölt nick (13689)
Törölt nick Creative Commons License 2011.01.05 0 0 13690

Rosszul fogalmaztam. Cellából kapja, de nem "úgy", hanem a felhasználói függvény adott argementumában van az megadva.

Előzmény: Sznida (13688)
Törölt nick Creative Commons License 2011.01.05 0 0 13689

Értem már. Sorokra van szedve a szöveg és 1 értéket kapnak azok a sorok ahová a tömbképlet "w"-t tesz. A szum meg ezeket adja össze. Fifikás.

Előzmény: Törölt nick (13685)
Sznida Creative Commons License 2011.01.05 0 0 13688

Én is úgy gondoltam, hogy cellákból adod be az értéket! :)

 

Örülök, hogy működik! :)

 

Igazán nincs mit!

 

Szép napot!

 

Üdv: Sznido

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

Ja, köszönöm a fáradozást!

Előzmény: Sznida (13684)
Törölt nick Creative Commons License 2011.01.05 0 0 13686

Erre közben már készítettem egy felhasználói fgv-t. Majdnem ugyanez, csak persze inputbox helyett cellából kapja.

Előzmény: Sznida (13684)
Törölt nick Creative Commons License 2011.01.05 0 0 13685

A D27  elírás, de értem. (A működését még nem, de nem semmi az okfejtés :) Megy is. Köszönöm.

Hogy a fenébe működik ez?

Előzmény: Jimmy the Hand (13682)
Sznida Creative Commons License 2011.01.05 0 0 13684

Szia,

 

Van egy új megoldás:

bekéri a szöveget, de azt Te bárhonnan beadhatod neki, aztán bekéri a keresett karaktert, amit szintén bárhonnan megadhatsz neki, aztán a végén kiírja a darabszámot (j) egy ablakba, amit akár máshol is felhasználhatsz! :)

 

Sub szamolas()
    Dim i As Integer
    Dim j As Integer
    Dim myStr As String
    Dim myNewStr As String
    Dim mychar As String
    Dim myStrLen As Integer
    j = 0
    myStr = InputBox("Add meg a szöveget!")
    mychar = InputBox("Add meg a számlálandó karaktert!")
    myStrLen = Len(myStr)
    For i = 1 To myStrLen
        myNewStr = Mid(myStr, i, 1)
        If myNewStr = mychar Then
            j = j + 1
        End If
    Next i
    MsgBox ("darabszám=" & j)
End Sub

 

Remélem segítettem!

 

Üdv: Sznido

Előzmény: Törölt nick (13681)
Jimmy the Hand Creative Commons License 2011.01.05 0 0 13683

Ugyanez szorzatösszeggel is megoldható, de azt majd SQLkerdes kolléga szállítja ;-)

Előzmény: Jimmy the Hand (13682)
Jimmy the Hand Creative Commons License 2011.01.05 0 0 13682

Ha mondjuk A1-ben van a szöveg, és "w" betűket kell számolni, akkor:

 

{=SZUM(HA(KÖZÉP(A1;SOR(INDIREKT("A1:A"& HOSSZ(D27)));1)="w";1;0))}

Előzmény: Törölt nick (13679)
Törölt nick Creative Commons License 2011.01.05 0 0 13681

Köszönöm, nem. Biztos vagyok benne hogy nem lesz használható az én esetemben. (Az általam írt rövid példa egyáltalán nem hasonlít a valósra)

Előzmény: Sznida (13680)
Sznida Creative Commons License 2011.01.05 0 0 13680

Szia Robbantomester,

 

Én egy csúnya megoldást tudok, az excel képleteit, illetve cellái felhasználásával! :(

Érdekel?

 

Küldjem?

 

Üdv: Sznido

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

Sziasztok,

hogy számolnátok meg egy string-ben egy adott karaktert?

Pl.: Hány darab "w" karakter van ebben a string-ben: "wweeeerrr"

 

Elvileg function-os megoldát kell rá írnom, de kíváncsi vagyok tud e valaki beépített függvényest.

 

Törölt nick Creative Commons License 2011.01.04 0 0 13678

írd a backslash-t duplán:

\

akkor megmarad

Előzmény: Sznida (13677)
Sznida Creative Commons License 2011.01.04 0 0 13677

Szia Ciripke,

 

Ha ugyanabban a könyvtárban van az excel file, akkor arra itt egy megoldás.

Ha jól értem, akkor word-ben akarsz hiperhivatkozást, akkor egy tetszőleges word file-hoz rendelt visual basic eseménykezelőjébe "ThisDocument"-be másold be. Aztán metsd el a word file-t ugyanabba a mappába ahol az exceled is van.

A word megnyitáskor beolvassa ezt a makrót, és egy hiperlinket ír be a kursor helyére, arra ctrl-al kattintva már nyílik is meg az excel file.

A "fileName helyére írd be az excel file nevét.

A Cim = kezdetű sorban van középen egy per jel, az nem per, hanem fordított per, azaz backslash, csak az sajnos törlődik! :(

A word bezáráskor töröl mindent, és ment.

 

Private Sub Document_Open()
    Eleresi_ut = Application.ActiveDocument.Path
    FileName = "12345.xls"
    Cim = Eleresi_ut & "/" & FileName
    ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:=Cim, SubAddress:="", _
        ScreenTip:="", TextToDisplay:=Cim
End Sub
Private Sub Document_Close()
    Application.DisplayAlerts = False
    Selection.WholeStory
    Selection.Delete Unit:=wdCharacter, Count:=1
    Application.ActiveDocument.Save
End Sub

 

Remélem segítettem!

 

Üdv: Sznido

Előzmény: Ciripke (13676)
Ciripke Creative Commons License 2011.01.04 0 0 13676

Szia!

 

Én nem arrag ondotlam, hogy a fájlt mindíg keresse, hanem azt, hogy a forrás fájl helyét magához viszonyítva adhassam meg.

 

Tehát, hogy a célfájlhoz képes egy szinttel feljebb, lejjebb, vagy u azon könyvtárban találnám meg.

Ehhez nem kell állandóan figyelni, hogy hol a fájl.

Ha nincsott, ahova mutat, pl. abban a könyvtárban, amiben a célfájl is, akkor persze nem tudja megnyitni, de én úgy küldeném a hálózaton, hogy a mappában mindkét fájl is megvan.

 

Az a baj, hogy ez nem olyan hivatkozás, mint pl. a html-ben, ahol könnyen meg tudom oldani, itt a csatolt adatok elérését kéne módosítani.

 

 

Előzmény: Törölt nick (13664)
SQLkerdes Creative Commons License 2011.01.04 0 0 13675

Vagy, ha linkelt érték van a cellában, akkor a (workbook).changelink method is használható.

Előzmény: SQLkerdes (13666)
Sznida Creative Commons License 2011.01.04 0 0 13674

Köszi! :)

Én is üdvözlök mindenkit a Klubban!

 

Örülök, hogy rátaláltam erre a fórumra, sokat tanultam már a bejegyzésekből.

 

Üdv: Sznido

 

 

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

Amúgy üdv. a Klubban :)

Előzmény: Sznida (13672)
Sznida Creative Commons License 2011.01.04 0 0 13672

Szia Lesleee,

 

Akkor sajnos csalódnod kell, mert ...

Amúgy az else az nem parancs, hanem az egy elágazása az if parancsnak (if-ha, then-akkor, else-ellenben, endif-ha ciklus vége)

 

Örülök, hogy segíthettem! :)

 

Minden jót!

 

Üdv: Sznido

Előzmény: Lesleee (13671)
Lesleee Creative Commons License 2011.01.04 0 0 13671

Kedves Sznida!

 

 

Amikor átnézem a kódodat, akkor már értem, hogy mi miért történik, és az else parancsról is már hallottam, de egyedül még nem megy.

 

Köszönöm, imádlak...bízom benne, hogy nem pasi vagy :-)

 

 

Üdv, Leslee

 

Előzmény: Sznida (13670)
Sznida Creative Commons License 2011.01.04 0 0 13670

Szia Lesleee,

 

Erre gondoltál?

 

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("h8:h157,i8:i157,j8:j157,k8:k157,l8:l157")) Is Nothing Then
    Target.Value = Cells(Target.Row, 4).Value
    For i = 8 To 12
        If Target.Column <> i Then
            Cells(Target.Row, i).ClearContents
        End If
    Next i
    Cancel = True
End If
If Not Intersect(Target, Range("m8:m157,n8:n157,o8:o157,p8:p157,q8:q157")) Is Nothing Then
    Target.Value = Cells(Target.Row, 5).Value
    For i = 12 To 17
        If Target.Column <> i Then
            Cells(Target.Row, i).ClearContents
        End If
    Next i
    Cancel = True
End If
If Not Intersect(Target, Range("g8:g157")) Is Nothing Then
    Target.Value = ClearContents
    If Cells(Target.Row, 4).Value <> "" Then
        Target.Value = 0 - Cells(Target.Row, 4).Value
    ElseIf Cells(Target.Row, 5).Value <> "" Then
        Target.Value = Cells(Target.Row, 5).Value
    Else
        MsgBox ("Mindkét cella üres")
    End If
    Cancel = True
End If
End Sub

 

Remélem igen!

 

Sok szerencsét!

 

Üdv: Sznido

Előzmény: Lesleee (13669)
Lesleee Creative Commons License 2011.01.04 0 0 13669

 

Sziasztok!

 

 

 

Pár nappal ezelőtt már kaptam itt egy makrót, amit picit átalakítottam, és most egyébként remekül működik. De egy újabb funkciót is jó lenne, ha tudna, de nem tudok rájönni.

 

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

 

If Not Intersect(Target, Range("h8:h157,i8:i157,j8:j157,k8:k157,l8:l157")) Is Nothing Then
Target.Value = Cells(Target.Row, 4).Value

 

For i = 8 To 12
    If Target.Column <> i Then
        Cells(Target.Row, i).ClearContents
    End If
Next i
Cancel = True
End If

 

If Not Intersect(Target, Range("m8:m157,n8:n157,o8:o157,p8:p157,q8:q157")) Is Nothing Then
Target.Value = Cells(Target.Row, 5).Value
For i = 12 To 17
    If Target.Column <> i Then
        Cells(Target.Row, i).ClearContents
    End If
Next i
Cancel = True

 

End If

 

End Sub

 

Ez két különböző cella tartalmát másolja át két különböző helyre. Eddig rendben van.

  

Most azt szeretném, ha duplán kattintok a g8-ba, akkor 2 cella közül (d8 és e8), amelyikben érték van, azt másolja át a G8-ba. De ráadásul, ha a d8-ban van érték, akkor azt mínusz előjellel másolja át.

 

 

 

Előre is köszönöm, ha valaki segít.

 

Sznida Creative Commons License 2011.01.04 0 0 13668

Bocs, de kicsit sok lett benne a hiba..., mert eltűntek a fordított per-ek, azaz a blackslash-ek :(

 

Még egyszer:

 

Szia Ciripke,

 

Ezt az Excel sugójában találtam, akár hasznos is lehet...

 

"A könyvtár betűjelének eltávolítása a kiszolgáló címéből:       Lehet, hogy már nem érvényes az a betűjel, amelyet a hiperhivatkozás létrehozásakor a megosztott hálózati könyvtárhoz rendeltek. Ha a hiperhivatkozást a könyvtárakhoz rendelt betűjelektől függetlenné szeretnénk tenni, módosítsuk a hiperhivatkozás céljának címét, és a betűjel helyett a kiszolgáló és a megosztott könyvtár nevét adjuk meg. A G:/saját.xls címet például a //kiszolgáló/könyvtár/saját.xls címre cserélhetjük."

 

A per helyet a fordított per-t használd, csak sajnos azok eltűnnek... :(

 

Ha az excel file-t a hálózatra mented, és megadod a kiszolgáló, illetve a mappák nevét "/"-el elválasztva, utána pedig a file nevét, akkor szerintem működhet a dolog.

Igaz nem relatív hivatkozás lett, de mindenki gépe a hálózaton fogja keresni az excel file-t!

 

Remélem használható lesz!

 

Üdv. Sznido

Előzmény: Sznida (13667)
Sznida Creative Commons License 2011.01.04 0 0 13667

Szia Ciripke,

 

Ezt az Excel sugójában találtam, akár hasnos is lehet...

 

"A könyvtár betűjelének eltávolítása a kiszolgáló címéből:       Lehet, hogy már nem érvényes az a betűjel, amelyet a hiperhivatkozás létrehozásakor a megosztott hálózati könyvtárhoz rendeltek. Ha a hiperhivatkozást a könyvtárakhoz rendelt betűjelektől függetlenné szeretnénk tenni, módosítsuk a hiperhivatkozás céljának címét, és a betűjel helyett a kiszolgáló és a megosztott könyvtár nevét adjuk meg. A G:saját.xls címet például a \kiszolgálókönyvtársaját.xls címre cserélhetjük."

 

Ha az excel file-t a hálózatra mented, és megadodd a kiszolgáló, illetve a mappák nevét ""-el elválasztva, utána pedig a file nevét, akkor szerintem működhet a dolog.

Igaz nem relatív hivatkozás lett, de mindenki gépe a hálózaton fogja keresni az excel file-t!

 

Remélem használható lesz!

 

Üdv. Sznido

Előzmény: Ciripke (13663)
SQLkerdes Creative Commons License 2011.01.04 0 0 13666

Elméletben nem lehetetlen a dolog.

 

A teendők:

- Egy workbook.open eseménykezelő a workbook megnyitásakor kiolvassa annak elérési útvonalát (hívjuk mondjuk Path-nak)

- Az eseménykezelő tartalmazza a wordfile nevét (elérési út nélkül), mondjuk egy változóban (hívjuk mondjuk sFileName-nek)

- Az eseménykezelő egy előre megadott cella tartalmát átalakítja Path/sFileName-re (vagy a Path/sFileName -en elérhető tartalmat beteszi az adott cellába).

 

Vannak itt néhányan akik ilyen eseménykezelőket tudnak írni (én nem tartozom közéjük), hátha tudnak ez alapján segíteni (vagy elmagyarázni, hogy miért baromság amit fentebb írtam :-)

Előzmény: Ciripke (13663)
erdeiboroka Creative Commons License 2011.01.03 0 0 13665

Ha notepaddal létrehozok egy filet, amiben | elválasztójellel vannak adatok, azt utána megnyitom az Excelből, bejön a Szövegbeolvasó varázsló, ahol a Tagolt esetet választom, majd a határoló jeleknél az egyéb helyen megadom a | elválasztójelet, akkor úgy nyitja meg ezt a filet, hogy minden adat külön cellában van.

Lehet, hogy nem értem a kérdést?

Boróka

Előzmény: valakiasokközül (13645)
Törölt nick Creative Commons License 2011.01.03 0 0 13664

Szerintem az általad leírt  módon nem lehet egy fizikai helyre mutató hivatkozást "aktívvá" tenni. Gondolj bele, ehhez szükség lenne egy háttérben folyamatosan futó programra, ami állandóan azt figyeli, hogy mikor hová helyezed át a file-kat.

Meg kell oldani a file-ok lokalitását.

Előzmény: Ciripke (13663)
Ciripke Creative Commons License 2011.01.03 0 0 13663

Sziasztok!

 

Excel 2003-al kapcsolatban szeretnék kérdezni.

Van-e lehetőségem arra, hogy ha mondjuk egy excel fájl tartalmát csatolom egy word fájlhoz, akkor relatív elérési utat adhassak meg, (pl.: exceladatok.xls)  így, bárhova pakolom a két fájlt csak az egymáshoz viszonyított helyzetüket kéne megtartani.

 

Azért fontos ez, mert hálózaton dolgozunk, és hiába készítek el valamit, a másik felhasználó nem látja, hisz nincs hozzáférése az én fájljaimhoz, mert a word az excelt nálam keresi. (kivéve, ha frissítek minden hivatkozást minden felhasználónál, de az nagyon hosszú idő)

 

 

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

 

üdv:

    C.

Sztai Creative Commons License 2011.01.02 0 0 13662

Lesleee,

Nincs miért elnézést kérni :-)

A lényeg, hogy érted e a vegyes hivatkozás használatát

Üdv

Előzmény: Lesleee (13661)
Lesleee Creative Commons License 2011.01.02 0 0 13661

Kedves Sztai!

 

Elképzelhető, hogy nem megfelelően fogalmaztam, amiért elnézést kérek.

 

A segítő szándékodat mindenesetre köszönöm :-)

 

Üdv:

 

Leslee

Előzmény: Sztai (13659)
Sztai Creative Commons License 2011.01.02 0 0 13660

Dupla katt a "menüre" gyorsabb megoldás.

Az általad menüsornak nevezett dolog a szalag (ribbon) és rajta a menüpontok a fülek (tabs).

BÚÉK

Előzmény: mafikám (13626)
Sztai Creative Commons License 2011.01.02 0 0 13659

Kedves Lesleee,

Eredetileg ezt kérted:"Azt szeretném, ha abban az esetben, ha egy cella (c1) nem üres, akkor a c2:c7 cellák kitöltése változzon, ha a d1 nem üres, akkor a d2:d7 kitöltése változzon, és így tovább."

Ha jól értem ez azt jelenti, hogy pl. a d2:d7 tartomány szine változzon meg, ha d1 nem üres ill. pl. e2:e7 szine akkor változzon, ha e1 nem üres. Erre az esetre javasoltam az alábbi feltételes formázást: formázandó tartomány pl. c2:f7 és a tartomány amit figyel a c1:f1, a javasolt feltétel pedig ez: =c$1<>"". Ez így helyes.

A példa amit Te most küldtél, egész más. Ebben e2:i2 tartományt formáztad és az itt lévő cellák a d$2 cellát figyelik, hogy üres e. Ebben a példádban nincs különbség d$2 és d2 között. Ha azt szeretted volna, hogy az e2:i2 tartomány minden cellája szines legyen, ha d2 nem üres, akkor a $d2 vegyes hivatkozást kellett volna használnod (a formátumot jobbra másolod és nem akarod, hogy az oszlop módosuljon). 

d$2 jelentése: relativ oszlop, abszolut sor

$d2 pedig abszolut oszlop, relativ sor.

üdv

 

Előzmény: Lesleee (13658)
Lesleee Creative Commons License 2011.01.02 0 0 13658

Köszönöm a magyarázatot. A válaszomban nem írtam rosszul, tényleg így $C1 működött :-)

 

Az általad írt, pedig ilyen érdekesen

 

Előzmény: Sztai (13656)
mafikám Creative Commons License 2011.01.02 0 0 13657

Koszonom szepen, meglett!:)

Előzmény: SQLkerdes (13628)
Sztai Creative Commons License 2011.01.02 0 0 13656

A vegyes hivatkozásnál az egyik elem (oszlop vagy sor) abszolut a másik pedig relativ.

A Te példádnál maradva a cella, amelyiknek a tartalmát vizsgálod (C1 üres e vagy sem) mindig az első sorban lesz, de mindig az aktuális oszlopban. Ezért érdemes abszuolut sort ($1) és relativ oszlopot (c) használni ----> c$1. Ha lefelé (v. fölfelé) másolod a sor nem változik, jobbra/balra másolva az oszlop igen.

Remélem így érthető

(a válaszodban úgy tűnik rosszul írtad $C1, helyesen c$1

Üdv

 

Előzmény: Lesleee (13655)
Lesleee Creative Commons License 2011.01.02 0 0 13655

A =$C1<>"" hivatkozással működött, bár nem tudom pontosan miért :-)

 

Köszönöm az ötletet a vegyes hivatkozásra.

 

Neked is BUÉK

Előzmény: Sztai (13654)
Sztai Creative Commons License 2011.01.01 0 0 13654

Használj vegyes hivatkozást!

=c$1<>""

BUÉK

Előzmény: Lesleee (13653)
Lesleee Creative Commons License 2011.01.01 0 0 13653

Sikítófrászt kapok a feltételes formázástól :-)

 

Azt szeretném, ha abban az esetben, ha egy cella (c1) nem üres, akkor a c2:c7 cellák kitöltése változzon, ha a d1 nem üres, akkor a d2:d7 kitöltése változzon, és így tovább.

 

Beállítottam, de csak a c2-t színezte, majd abszolút hivatkozást csináltam a c1-ből, így már jó volt, de akkor meg nem tudtam másolni lefelé a szabályt.

 

Valakinek ötlet?

Lesleee Creative Commons License 2011.01.01 0 0 13652

Kedves Sznido!

 

Ellenkezőleg, én köszönöm. Tanultam belőle :-)

 

Neked is minden jót!

 

Leslee

Előzmény: Sznida (13651)
Sznida Creative Commons License 2011.01.01 0 0 13651

Szia Lesleee,

 

Én küldtem Neked ezt a makrót, és a Te általad küldött ajánlásban benne volt én csa ezért hagytam benne, gondoltam Te így akarod használni! :)

Bocs a kellemetlenségért!

 

Minden jót!

 

Üdv: Sznido

Előzmény: Lesleee (13650)
Lesleee Creative Commons License 2011.01.01 0 0 13650

Igen, pont azt a sort töröltem teljesen, csak ebben van még benne.

 

 

Köszönöm a segítségedet:-)

 

Üdv:

 

Leslee

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

ebből csak a visszakapcsolást vetted ki, az elején benne van még a manuálisra állítás (Application.Calculation = xlCalculationManual)

akód egyes sorai számítási munkát generálnak a muinkafüzetben és felesleges futás közben ezzel terhelni (lassítani) azt, ezért szokták kikapcsolni.

Előzmény: Lesleee (13648)
Lesleee Creative Commons License 2011.01.01 0 0 13648

...és valóban :-)

 

A makrót itt kaptam, egy kicsit átalakítottam, de a számolás módja benne volt. Most azt a sort kivettem és működik.

De akkor egy ilyen sor mi célból kell? Csak opciós, és ha nem írjuk bele, akkor a program által beállítottként számol?

 

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Application.Calculation = xlCalculationManual

if Not Intersect(Target, Range("h8:h150,i8:i150,j8:j150,k8:k150,l8:l150"Is Nothing Then

Target.Value = Cells(Target.Row, 4).Value

For i = 8 To 12    

If Target.Column <> i Then  

Cells(Target.Row, i).ClearContents    

End If

Next i

Cancel = True

End If

 

If Not Intersect(Target, Range("m8:m150,n8:n150,o8:o150,p8:p150,q8:q150")) Is Nothing Then

Target.Value = Cells(Target.Row, 5).Value

For i = 12 To 17    

If Target.Column <> i Then        

Cells(Target.Row, i).ClearContents    

End If

Next i

Cancel = True

End If

End Sub

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

mi van abban a makróban? biztos ott van a kapcsoló a számítás módjára

Előzmény: Lesleee (13646)
Lesleee Creative Commons License 2011.01.01 0 0 13646

Sziasztok!

 

 

2010-es excelt használok. A képletek újraszámolását automatikus számolásra állítottam. Ez kézi beírásnál remekül működik, azonban ha lefut egy makró (dupla klikkes), akkor nem számolja újra, sőt az automatikus számolás opció is visszaállítódik manuálisra.

 

Tud valaki segíteni?

valakiasokközül Creative Commons License 2011.01.01 0 0 13645

Az általam feltett kérdésre a "mester"

 

robbantomester


t ökéletes útmutatást adott. Így a feladatom megoldásra került, s további ötletek nélkül is maximálisan boldogulok.

Ha valaki mégis úgy érzi, hogy remekelni akar, s egyszerűbb, automatikusabb megoldással tud "ragyogni", akkor azt is szívesen fogadom :)

 

Köszönöm mindenkinek, aki esetleg elgondolkodott a feladat megoldásán, s külön köszönet a robbantomester -nek, hogy gyorsan és hatékonyan segített!!!

 

további szép napot mindenkinek

 

valaki a sok közül ....

 

Előzmény: valakiasokközül (13640)
valakiasokközül Creative Commons License 2011.01.01 0 0 13644

A 2. lecke is kész....és nagyban megkönnyítetted a tanácsaiddal a munkám/elképzelésem...

A csv formátumban mentést, s a karakterek cseréjét használtam.....első olvasásra ez volt a számomra is érthető.

 

 

Előzmény: valakiasokközül (13643)
valakiasokközül Creative Commons License 2011.01.01 0 0 13643

Szia

 

Az 1. pontban leírt "házi feladatot" megcsináltam..... kellett egy kis gyakorlás a beállításokhoz, de a leírásod alapján meg tudtam oldani...

Sikerélményben most gazdag vagyok.....

Köszönöm!

 

kezdem a házi feladat 2. részét :)

 

 

Előzmény: Törölt nick (13641)
valakiasokközül Creative Commons License 2011.01.01 0 0 13642

Szia

 

Köszönöm a gyors válaszod.

Sajnos az excell-t nem tanultam soha, s nem is használom...azaz alap user vagyok...bár 5-6 éve a "ti" segítségetekkel kicsit belemerültem a makrózásba és akkor megírt viszonylag egyszerű táblázatkezelőt most is használom....Mára minden t elfelejtettem.... :(

 

Amit beírtál, azon elkezdek gondolkodni, s talán gyakorolgatni....így első olvasásra annyira nem tűnik nekem egyszerűnek, de én is igyekszem valamit tenni, valamilyen irányba elmozdulni... ha konkrétab (egyszerű felhasználónak érthetőbb, szájbarágósabb) megoldásra van időtök, akkor azt megköszönöm

további szép napot!

 

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

1.

"Szövegből oszlopok" menüpont erre való

2007-ben:

menüszalag/adatok/adateszközök.

Vagy:

menüszalag/külsőadatok átvétele/szövegből menüponttal közvetlenül megnyitható a szövegfile és konvertálható oszlopokra.

(Ugyanezek megvannak 2003-ban is)

 

 

2:

Makró nélkül:

Egy másik munkalapra ÖSSZEFŰZ() fgv-el összefűzöd a cellákat, a cellahivatkozások közél berakod a "|"  jelet

Vagy: Elmented *.csv formában a táblázatot, majd a csv-ben kicseréled (nem kézzel!!!) a pontosvesszőket(;) "csere" funkcióval more(|)-ra (Sima notepadban a csere funkciót ctrl+h-val lehet előcsalogatni)

Vagy: makró és egy kattintással megvan minden, idő híján ezt most nem tudom

 

Ezek jutottak eszembe

 

Előzmény: valakiasokközül (13640)
valakiasokközül Creative Commons License 2011.01.01 0 0 13640

sziasztok, BUÉK

 

IGO navigációból akarom a mentett POI-kat excell táblában tárolni, s esetleg excelben módosítani, átírni, kiegészíteni....

 

A dolog működik, csak kicsit macerás.

Amit eddig csináltam:

 

Igo-ból a "save" mappa "user.upoi" kiterjesztésű fájlt kimásoltam. Az excell megnyitja, mert sima szöveges fájl...

A probléma az, hogy ez a szöveges fájl így néz ki az excell-ben:

 

1|Vallalkozasom ügyfelek. Biatorbágy|Noname György||42.470052|14.855459|_HUN||||2951|Biatorbágy|Ismeretlen Zsigmond utca|27|megjegzés|telefonszám||

2|Vállakozásom céges címek. Dunaharaszti|Gebrüder Weiss||47.365358|19.118950|_HUN|||||Dunaharaszti közelében|51-es út|||telefonszám||

 

Az excell egy sort egy cellába rak be. A fenti két sort az A1 és B1 cellákban nyitja meg. Ha belemegyek ezekbe a cellákba, akkor tudom átírni, javítani, stb mert mentés után tökéletesen működik a navigációban...

 

Nekem ennél sokkal többre van szükségem, hisz szeretném az excel előnyeit kihasználni. ( szűrés, rendezett áttekintés)

 

Létrehozta, egy táblázatot ami így néz ki: (minden adat külön cellában)

 

 

Ez így nagyon frankó, mert mappa, almappa, név, stb szerint tudom szűrni, rendezni, hisz külön-külön oszlopban van minden adat...

Budapest, XIX kerület, Lackó ....

Budapest, XX kerület,  Ferences ....

 

Konkrétan 2 dolog lenne, amit nektek "excell zseniknek" meg kellene oldani:

 

1.:

Szöveges fájl formátumot hogy tudok úgy bemásoltatni az excellbe, hogy az külön cellába másolja be az adatokat. Az adatok így vannak a szöveges fájlban (igo-ban) hogy:

adat|adat|adat|adat|adat|adat|......

Az excellbe így kellene átkonvertálni:

A1    A2  A3   A4  A5  A6  A7  A8  A9  A10

adat  |  adat  |  adat  | adat  |  adat  |

ha így van, akkor egyértelmű, hogy az A2, A4, A6 oszlopot kényem-kedvem szerint tudom szűrni, s egy baromira átlátható táblázatom van.....

 

Vagy egy külső program kellene, ami a " | " jel közötti részt külön cellákba rak be, s ügyel arra, hogy a sortörés jó legyen

Vagy egy olyan függvény az excellen belül, ami a szöveges fájl bemásolása után végigmegy az A1, B1, C1... cellákon és onnan kinyert adatokat új táblázatba tölti be ( a " | " jel közötti adatokat, az üres adatot is.... ezzel gyakorlatilag autómatikusan megcsinálná azt ami én manuálisan és nagyon lassan (lásd hozzászólásom eleján betett táblázat)

 

2. feladat...

 

Az 1. feladatban elkészített excell táblázatot konvertálja vissza vagy szöveges formátumban, vagy az elkészített táblázatot alakítsa úgy át, hogy az összes adat (soronkénti adat) egy cellába másolja be:

adat|adat|adat|adat|adat|

 

Az Io csak úgy tudja olvasni, ha az adatok között nincs szóköz.....

 

Eddig ezt úgy oldottam meg, hogy megnyitottam az IGO  "user.upoi" fájlt jegyzetfüzetként, bemásoltam az excell táblázatom szövegként (ekkor a sorokat helyesen töri meg, csak az a baj, hogy minden excell cellát egy szóközzel elválaszt...így az igo nem olvassa...de ha az így kapott szöveges részbe a " | " jelek és az adatok mentén a szóközt kiszedtem, akkor minden rendben van....

 

Ha ezt meg tudjátok oldani, akkor sok-sok ember hasznát vehetné, hisz ezek alapján könnyedén saját poikat is készíthetsz és kezelheted, átírhatod..... sebességmérő kamerák, hasznos helyek, stb

 

Előre is köszönöm azoknak akik a feladaton elgondolkodnak és segíteni próbálnak!

 

szép napot mindenkinek

 

 

 

 

 

 

Törölt nick Creative Commons License 2010.12.31 0 0 13639

+1

Előzmény: tt65 (13638)
tt65 Creative Commons License 2010.12.31 0 0 13638

Sikerekben gazdag, boldog újévet kívánok minden excel fan-nak!

Sznida Creative Commons License 2010.12.31 0 0 13637

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

Jók működik, igen ezt szerettem volna, bocsánat a nem érthető fogalmazásért!

 

Köszi még egyszer!

 

Boldog új évet kívánok!

 

Üdv: Sznido

Előzmény: Jimmy the Hand (13636)
Jimmy the Hand Creative Commons License 2010.12.31 0 0 13636

2003-ban is kétféle Commandbutton lehet munkalapra tenni. Nézd meg az eszköztárakat. Van egyszer egy "Űrlapok" és egy "Vezérlők eszközkészlete".

A leírásod alapján azt gondolom, Te az utóbbit használtad. Erre az esetre hoztam össze az alábbi megoldást.

 

Van egy Class Module, amit úgy hívnak, hogy "clsButtonGroupElement". Ennek a kódlapjára menjen a következő kód:

 

'---------------------kód eleje-----------------------------------

Option Explicit

Public WithEvents myButton As CommandButton

Private Sub myButton_Click()
    Debug.Print myButton.Name & " clicked."
End Sub
'---------------------kód vége------------------------------------

 

A munkafüzet ThisWorkbook kódlapjára pedig:

'---------------------kód eleje-----------------------------------

Option Explicit

Public myButtonGroup As Collection

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Dim O As Object, BGE As clsButtonGroupElement, S As Shape
    Dim PID As String
    
    Set myButtonGroup = New Collection
    For Each S In Sh.Shapes
        On Error GoTo Hiba
        PID = S.OLEFormat.Object.progID
        If PID = "Forms.CommandButton.1" Then
            Set BGE = New clsButtonGroupElement
            Set BGE.myButton = S.OLEFormat.Object.Object
            myButtonGroup.Add BGE
        End If
Folyt:
    Next
    Exit Sub
Hiba:
    Resume Folyt
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    Set myButtonGroup = Nothing
End Sub
'---------------------kód vége------------------------------------

 

A Class Module kódját nyilván átírod majd, hogy a gombok valami értelmeset csináljanak.

A másik rész dióhéjban annyit tesz, hogy mindig, amikor egy munkalapot aktiválsz, létrehoz egy új Collection-t, amibe beleteszi a munkalapon lévő ActiveX gombokat. Ha többféle Shape objektum volna a munkalapon, nem csak Commandbutton, erre az esetre van egy szűrés a ProgID-vel. Nem vagyok benne 100%-ig biztos, de reményeim szerint csak a gombokat engedi át.

 

 

 

 

Előzmény: Sznida (13630)
Lesleee Creative Commons License 2010.12.30 0 0 13635

Kedves Sznido!

 

 

Köszönöm a fáradozásodat, ez is remekül működik, csak a ....formátumot törli

 

De erre már rájöttem egyedül :-) clearcontents

 

 

Szia, Leslee

Előzmény: Sznida (13634)
Sznida Creative Commons License 2010.12.30 0 0 13634

Szia Lesleee,

 

Tessék parancsolni:

 

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.Calculation = xlCalculationManual
If Not Intersect(Target, Range("B13:B2000,c13:c2000,d13:d2000,e13:e2000,f13:f2000")) Is Nothing Then
Target.Value = Cells(Target.Row, 1).Value
For i = 2 To 6
    If Target.Column <> i Then
        Cells(Target.Row, i).Clear
    End If
Next i
Cancel = True
End If
End Sub

Örülök, hogy segíthettem! :)

 

Minden jót!

 

Üdv: Sznido

Előzmény: Lesleee (13633)
Lesleee Creative Commons License 2010.12.30 0 0 13633

Pontosan erre gondoltam, köszönöm.

 

Azzal ki lehetne egészíteni, hogy egyszerre csak az egyik lehetőségbe lehessen írni? Tehát, ha véletlenül másik helyre kattintottam, akkor a jó helyre kattintáskor a másik törlődjön. Vagyis egyszerre csak egy helyen jelenhessen meg összeg.

Előzmény: Sznida (13631)
NeomatiK Creative Commons License 2010.12.30 0 0 13632

íigen,. ezt a múltkor felfedeztem (és írtma is ide), hogy ha 00:.... -val kezdem, akkor jól írja. Csak így hosszadalmassabb a beírás.

Előzmény: SQLkerdes (13627)
Sznida Creative Commons License 2010.12.30 0 0 13631

Szia,

 

Így gondoltad?

 

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.Calculation = xlCalculationManual
If Not Intersect(Target, Range("B13:B2000,c13:c2000,d13:d2000,e13:e2000,f13:f2000")) Is Nothing Then
Target.Value = Cells(Target.Row, 1).Value
Cancel = True
End If
End Sub

 

Üdv: Sznido

Előzmény: Lesleee (13629)
Sznida Creative Commons License 2010.12.30 0 0 13630

Szia,

 

A lényeg, hogy van 52 munkalap, minden munkalapon van 30-30 commandbutton. Minden gomb ugyanazt csinálja, csak az éppen aktuális sorral. Megcsináltam már, de csak úgy tudtam, hogy minden egyes commandbutton_click-et létrehoztam, és bemásoltam ugyanazt a kódot mindegyikbe.

Azt szeretném, hogy csak egy kód fusson le például ami a class modulban van. Remélem így érthető.

Ja, Excel 2003-ról van szó, mert most néztem a 2010-ben már két féle commanbutton-t tudok lerakni egy munkalapra egy űrlap-vezérlőt, és egy activeX vetzérlőt. a 2003-ban csak activeX-et tudok lerakni.

 

Köszönöm szépen!

 

Üdv: Sznidó

Előzmény: Jimmy the Hand (13623)
Lesleee Creative Commons License 2010.12.30 0 0 13629

Üdv Mindenkinek!

A segítségeteket kérném.

Adott egy táblázat, amelynek első oszlopába összegeket írunk be. A következő 5 oszlop 5 különböző kategória (pl: egy, kettő három, négy, öt)

A beírt összeget szeretném az 5 kategória valamelyikébe rendelni. Arra gondoltam, hogy ha adott kategória (adott összeg melletti) cellájába kattintok duplán, akkor másolja át oda az összeget.


Egyszerű szöveget már sikerült beírnom dupla klikkes makró segítségével, de az adott feltétellel együtt nem megy.

Ebből ki lehetne indulni?

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Application.Calculation = xlCalculationManual
If Not Intersect(Target, Range("B13:B2000")) Is Nothing Then
Target.Value = Date
Cancel = True
End If

If Not Intersect(Target, Range("Q13:AA2000, G13:G2000, K13:K2000")) Is Nothing Then
Target.Value = "IGEN"
Cancel = True
End If
End Sub

 

Előre is köszönöm

SQLkerdes Creative Commons License 2010.12.30 0 0 13628

Jobb klikk bármelyi menü pontot (pld Home) és ott kattints KI a Minimise the Ribbon opciót.

Előzmény: mafikám (13626)
SQLkerdes Creative Commons License 2010.12.30 0 0 13627

Azt írd be, hogy 00:12:27.

Ha csak azt írod be, hogy 12:27 akkor úgy veszi mintha 12 óra 27 perc 00 másodpercet rögzítenél be és pp:mm formátumban csak a 27:00-t mutatja.

Előzmény: NeomatiK (13624)
mafikám Creative Commons License 2010.12.30 0 0 13626
Sziasztok!

2007-es (angol) excelem van es valami elallitodott, ha rakattintok az egyes menupontokhoz tartozo funkciok (pl. file - cut, insert - pivot table, stb), csak akkor jelennek meg, ha a menure kattintok, ha az excel tablaba, akkor pedig eltunnek a funkciok, csak a menusor latszik. Mit kell beallitani, hogy a funkciok is fixen latszodjanak? Koszi a segitseget!
NeomatiK Creative Commons License 2010.12.29 0 0 13625

Egyelőre beírom "szöveg"-nek formázva a cellát, ahogy eddig. Oszt kész. Csak műveletet nem tudok így végezni.

Előzmény: NeomatiK (13624)
NeomatiK Creative Commons License 2010.12.29 0 0 13624

Sziasztok!

 

Korábban már volt problémám az időformátummal amikor pp:mm formátumban akartam beírni.

Megint ez a gondom (Excel2002-ben) eddig az adott oszlopban be tudtam írni pp:mm formában írni. De most bővíteni akartam az oszlopot újabb adatokkal, de nem sikerült :-/ Ugyanaz a jelenség adódott, mint amire válaszolok. 12:27 -et akartma beírni a cellába, erre 27:00 jelenik meg. 

 

Ha a korábbi jól megírt (és jól megjelenő) céllába írtam be felülírván az ott szereplő adatot, akkor az is ezt a 27:00 -t jeleníti meg.

 

A windowsos időformátum szerintem jó, ahogy korábban felhívtátok rá a figyelmem.

 

Továbbra se tudom, hogy mi lehet a gebasz.

Van valami ötletetek?

Előzmény: NeomatiK (13550)
Jimmy the Hand Creative Commons License 2010.12.27 0 0 13623

Nem tudom, hogy tudok-e, mert nem értem pontosan, hogy mit szeretnél.

Van egy munkalapod tele Commandbutton-okkal, ez eddig világos. Mit szeretnél velük csinálni? Mit értesz az alatt, hogy "egy osztályba sorolni"?

Előzmény: Sznida (13621)
wawabagus Creative Commons License 2010.12.24 0 0 13622

                                                                                               

 

                                                                                                 *

   

                                         * * *  NAGYON BOLDOG KARACSONYT MINDENKINEK!!!!!!!!!!!  * * *

                                                                                                 

                                                                                                 *

Sznida Creative Commons License 2010.12.23 0 0 13621

Jimmy the Hand,

 

Olvastam, és persze ki is próbáltam ezt a makrót, nagyon jól működik.

Nekem most olyan problémám van, és remélem tudsz segíteni.

A munkalapom van teli commandbutton-okkal, összesen 30-al, és ezeket szeretném egy osztályba sorolni, de sajnos nem sikerült. Azt gondolom, hogy az a baj, hogy ezek nem userform-on vannak, illetve OLE objektumok.

Tudsz segíteni?

 

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

 

Üdv: Sznido

Előzmény: Jimmy the Hand (9698)
boraka Creative Commons License 2010.12.23 0 0 13620

Áldott békés karácsonyi ünnepeket és egészségben, örömökben, sikerekben gazdag Boldog Új Évet Kívánok!

Delila_1 Creative Commons License 2010.12.23 0 0 13619

Minden kedves fórumtársnak kellemes ünnepeket, és boldog újévet kívánok.

 

Nem találnak meg a keresők bennünket, ha ilyen csend van itt.

 

Törölt nick Creative Commons License 2010.12.20 0 0 13618

rámutatsz a megfelelő ikonra akkor kiírja a billentyűfunkciót. pl szűrőnél írja is hogy ctrl shift L

Előzmény: Tbrigitt (13617)
Tbrigitt Creative Commons License 2010.12.20 0 0 13617

Ma telepitették fel a gépemre a 2007-es excelt, eddig 2000-es volt, szóval elég nagy ugrás....

Kezdem egész jól megtalálni hogy a már megszokott dolgokat hol keressem/találom, DE a gyorsbillentyű kombinációk, melyek tök jól müködtek a 2000-es verzióban, itt egyáltalán nem müködnek, ugyanazokra a kombinációkra - pld Alt+D+F re a filtert hoztam be - a 2007-es nem reagál. Hogy lehet ezeket a funkciókat "előhozni"?

Előre is köszi bármilyen segitséget!

 

quetzalcoaatl Creative Commons License 2010.12.20 0 0 13616

megvaaaaannnn:))) thx

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

Naaaaa.

Az egyik helyen jól csináltad, egy centivel arébb meg már rosszul. Hiányzik egy &

Előzmény: quetzalcoaatl (13614)
quetzalcoaatl Creative Commons License 2010.12.20 0 0 13614

annyira hüje vagyok ehhez az excelhez...hol a hiba? A5&" "&B5" "&C5

nem akarja csinálni....

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

Hát fűzz bele egy szóközt, így: " " (Idézőjel, szpész idézőjel) --> ...&" "&...

Előzmény: quetzalcoaatl (13612)
quetzalcoaatl Creative Commons License 2010.12.20 0 0 13612

lenne egy megoldhatatlan kérdésem:) van három cell, betű, szám, betű, három oszlopban, össze kellene vonnom őket &-el működik (A5 & B5 &C) csak az a baj, hogy úgy vonja őket össze, hogy nem hagy szóközt a három cella között pedig kéne, mit írjak a képletbe? kösz.

Törölt nick Creative Commons License 2010.12.17 0 0 13611

Lehet át kell struktúrálnod azt a táblát....Nemtom...  A Lista funkciót (több) összefüggő tartományra lehet használni. Vagy talán még jó neked az irányított szűrő is.... Sőt.

Előzmény: nyuffo (13610)
nyuffo Creative Commons License 2010.12.17 0 0 13610

Valóban enged, a listát létrehozza pl. ABC-ben és EFG-ben is. Az egymás melletti oszlopokkal - tehát ABC-n vagy EFG-n belül - működik a két feltétel szerinti szűrés, de úgy látom, hogy mondjuk A és F oszlopok használatával már nem. "A és B"-nél jól listáz, de "A és F" esetén nem. Itt csak az F szerint végzi a szűrést, és már nem veszi figyelembe az A oszlop korábbi szűrését, azaz nem tudok két szempont szerint keresni. Ennyire megzavarná, hogy van közöttük egy D oszlop, ami nem lista, nincs hozzáadva szűrő?

 

 

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

biztos h enged, akkro vmit rosszul csinálhatsz

Előzmény: nyuffo (13608)
nyuffo Creative Commons License 2010.12.16 0 0 13608

Megpróbáltam a listával, de itt sem enged több oszlopcsoportra szűrőt tenni, egyszerre csak egyre. Úgy szeretném, hogy pl. A-B-C oszlopban van szűrő, D-nél nincs, E-F-G-nél van, H oszlopban nincs, stb.

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

2003-asban Listává, (2007-esben asszem "tábla"-nak hívják - "Formázás Táblázatként)" alakítsd azt a tartományt (oszlopot) ahová a szűrőt akarod rakni

Előzmény: nyuffo (13583)
nyuffo Creative Commons License 2010.12.16 0 0 13606

SQLkerdes: Köszönöm a választ.

 

1. Sajnos nem csak szomszédos oszlopokra szerettem volna szűrőt tenni. Majd megpróbálom úgy átalakítani a táblázatot, hogy mégis szomszédosak legyenek, vagy minden oszlop kap szűrőt.

2. Akkor inkább nem mozgatom. :)

 

Az Excel amúgy 2007-es, de 2003-as verzióban is kell működnie, mert melóban csak az van.

Előzmény: SQLkerdes (13584)
SQLkerdes Creative Commons License 2010.12.15 0 0 13605

Gondoltam érdekességként benyomom ide ezt a videót.

Múltkor szó volt róla, hogy miért nem lehet pivot táblát heti csoportosításban készíteni.  Nos itt mondják el, hogy hogyan lehet.  Kell hozzá egy kis VBA meg nem egy kicsi angol, de megéri, mert jó trükk.

Törölt nick Creative Commons License 2010.12.15 0 0 13603

ctrl+alt+del --> taskmanager. Magyarul :). De látod Jimmy lefordított mindent "magyarra"

Előzmény: Gavriel (13599)
Jimmy the Hand Creative Commons License 2010.12.15 0 0 13600

13585-ben azt írtad, nem akarod, hogy a munkafüzet látszódjék... Akkor most akarod látni, vagy nem akarod látni? ;-)

 

Egy kis háttérinfó.

 

Amikor a

Set xls = CreateObject("Excel.Application")   (illetve Set objExcel = CreateObject("Excel.Application"))

sor lefut, elindul az Excel egy új példánya, ami az éppen futó Exceltől független. Az új példány alapértelmezésben nem látható. Ha azzá akarod tenni, akkor (mint Robbantómester már megmutatta):

objExcel.Visible = True

Újra eltüntetni nyilván így kell:

objExcel.Visible = False

 

Lényeges dolog, hogy a makró végén az új Excel példányt vagy láthatóvá kell tenni, vagy pedig a Quit paranccsal bezárni (lásd: 13591). Ha egyik sem történik meg, akkor az Excel kvázi láthatatlanul ott marad a memóriában, és fölöslegesen köt le erőforrást. Ha nem törődsz vele, úgy a makró minden egyes futtatásakor újabb láthatatlan Excel keletkezik, és előbb utóbb megeszik az összes RAM-ot. És mivel a makró végeztével az objExcel objektumváltozó elveszíti értékét, már többé nem tudsz vele hivatkozni a láthatatlan Excel példányokra, tehát nem tudod bezárni sem őket. (Ha látható, akkor a szokott módon be tudod zárni.) Ekkor már csak a Task Managerből tudod kilőni. Ott viszont gondban leszel, hogy melyik Excel.exe a láthatatlan, és melyik az, amelyikben éppen dolgozol....

 

Előzmény: Gavriel (13597)
Törölt nick Creative Commons License 2010.12.15 0 0 13598

Igen, mert csak a feladatkezelőben látszik. Onnan láthatóvá tudod tenni ("Átváltás")

Sajnos nem tudom fejből a makróját és most nincs időm utánanézni.

Talán:

xls.Visible = True vagy P.Visible = True

Előzmény: Gavriel (13597)
Törölt nick Creative Commons License 2010.12.15 0 0 13596

Ne törődj vele. Add meg a saját elérési utadat idézőjelek között. (Ebből a fórummotor kihagyta a backslash-t)

Előzmény: Gavriel (13595)
Törölt nick Creative Commons License 2010.12.14 0 0 13592

Na, szóval nem xls.close, hanem P.close

 

Dim Path As String
Dim xls As Object, P As Object
Path = "i:-=DTP & Office=-MeloPMP Bakony900228.xls"
Set xls = CreateObject("Excel.Application")
Set P = xls.Workbooks.Open(Path)
'code....
P.Close

 

a végére meg berakod amit Boraka írt az utolsó két sorában, hogy ne kíváncsiskodjon, hogy mit akarsz meg mit nem. (Persze jó az övé is)

Előzmény: Gavriel (13589)
boraka Creative Commons License 2010.12.14 0 0 13591

Sub RejtettMegnyitas()
Dim objExcel As Object
Dim FileHelyeNeve As String

 

  Set objExcel = CreateObject("Excel.Application")

  objExcel.Visible = False
  objExcel.Workbooks.Open Filename:=FileHelyeNeve
 
  '....

  objExcel.Quit
  Set objExcel = Nothing

 

End Sub

Előzmény: Gavriel (13589)
Törölt nick Creative Commons License 2010.12.14 0 0 13590

Ha jól emlékszem, akkor

xls.close

(Utána nézek, ha kell pontosítok (mást is)

Majd utána nézek még.

Ha másik munkafüzetben kell turkálni, akkor mindig így szokták megoldani. Szerintem teljesen felesleges open-el megnyitogatni, visible-t + egyebeket állítgatni.

 

 

Előzmény: Gavriel (13589)
Törölt nick Creative Commons License 2010.12.14 0 0 13588

Dim Path As String
Dim xls As Object
Path = "a teljes elérési út"
Set xls = CreateObject("Excel.Application")
Set P = xls.Workbooks.Open(Path)

 

Háttérben nyílik meg az alkalmázás. A végén ki is kell pucolnod onnan.

Előzmény: Gavriel (13585)
E.Istvan Creative Commons License 2010.12.14 0 0 13586

Azt nem írtad, hogy makróból akarod-e. Ott simán csak le kell tiltani a képernyő frissítést a művelet idejére

application.screenupdating=false

az ablakot is el lehet rejteni.

windows("Munkafüzet.xls").visible=false

 

Makró nélkül is van egy trükk.

Megnyitod az elrejteni kívánt táblát. Valamilyen adatot, cellát változtatsz benne. Majd az ablakot elrejted és az egész Excelt bezárod. Ekkor az Excel rákérdez, hogy mentse-e a táblát. Így legközelebbi megnyitáskor automatikusan rejtettként fog megnyílni.

Előzmény: Gavriel (13585)
SQLkerdes Creative Commons License 2010.12.13 0 0 13584

1.) csak ha az érintett oszlopok szomszédosak.  Vagyis egy 5 oszlops táblázatból (A:E) tudsz szűrni pld az A:C oszlopokra, de nem az A:B + D oszlopra.  A teendő csak annyi, hogy kijelölöd a megfelelő oszlop fejlécét (esetünkben mondjuk az A1:C1 tartományt és így aplikálod a szűrőt (nem írtad milyen exceled van).

2.)  kétlem, hogy ez lehetséges.  Az excel ezt az adatot nem "hiperlinkként" kezeli, hanem sima adatként, neki nem számít, hogy megváltozott a "környezet"

Előzmény: nyuffo (13583)
nyuffo Creative Commons License 2010.12.13 0 0 13583

Sziasztok,

 

Két kérdésben szeretném a segítségeteket kérni.

 

1. A táblázatban szeretnék szűrőt elhelyezni, de csak bizonyos oszlopokban. Csoportos kijelöléssel nem engedi, illetve vagy mindenhova, vagy sehova nem tesz szűrőt. Hogyan lehet ezt csak bizonyos oszlopokra megoldani?

 

2. A táblázatban hiperhivatkozásként szerepelnek fájlok, melyek kattintásra megnyithatók. Kérdésem, hogy az Excel tudja-e követni valamilyen módon az elérési útvonalban történő változásokat? Pl. könyvtár átnevezése, xls fájl valamint a hozzá linkelt fájlok kiírása dvd-re, ezáltal az elérési út változása.

 

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

 

 

tt65 Creative Commons License 2010.12.10 0 0 13582

köszönöm, értem. ki fogom próbálni!

Előzmény: Sztai (13581)
Sztai Creative Commons License 2010.12.10 0 0 13581

Egy másik megoldás a két egymástól független pivot tábla készítése ua-ból az adatforrásból problémára:

1. Készítsd el a két Piv. táblát

2. a másodikat jelöld ki és vágd ki (ctrl+x) és illeszd be egy új munkafüzetbe

3. módosítsd a kedved szerint pl. csoportosítsd másként az adatokat

4. jelöld ki a P.táblát, vágd ki és illeszd be az eredi munkafüzetedbe

ennek a két piv táblának már két egy mástól független data cache-e van

remélem segítettem

Üdv

 

Előzmény: tt65 (13573)
Sztai Creative Commons License 2010.12.10 0 0 13580

Ha ugyanabból az adatforrásból készítesz két v. több pivot táblát, akkor az excel 2007 automatikusan ua-t az adat-gyorsítótárat (data cache) használja, hogy csökkentse a memória használatot és a fájl méretet. Ha szertnél két pivotot csinálni amelyek függetlenek egymástól, módosítsd a tartományt, pl. hagyd ki a D oszlopot, hiszen úgysem használod ezt a mezőt (arány), mert készítesz egy számított mezőt és azt teszed be a pivot tábládba. Ez után már a két tábla független egymástól és tudod másként csoportosítani (persze a számított mezőt ismét létre kell hoznod)

Remélem segítettem

Üdv

Előzmény: tt65 (13573)
tt65 Creative Commons License 2010.12.07 0 0 13579

visszavontam, az más...

Előzmény: tt65 (13578)
tt65 Creative Commons License 2010.12.07 0 0 13578

nálam HÉT.NAPJA a fv. neve :-)

Előzmény: Delila10 (13577)
Delila10 Creative Commons License 2010.12.07 0 0 13577

 

WEEKNUM helyesen a függvény neve.

 

Előzmény: Delila10 (13576)
Delila10 Creative Commons License 2010.12.07 0 0 13576

 

A WEEKNUMBER függvényt tartalmazó oszlopnak a 0".hét" formátumot adnám.

 

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

én nem foglalkoznék a kimutatás heti/havi bontásával, hanem annak adathátterébe beraknék egy WEEKNUMBER(), meg egy HÓNAP() függvényt plusz oszlopként (Ami a dátumaidból kiyneri a hetet meg a hónapot). Aztán idővel szükség lehet az ÉV()-re is.

Előzmény: tt65 (13573)
Jimmy the Hand Creative Commons License 2010.12.06 0 0 13574

Próbálkoztam, és azt tapasztalatam, hogy az EOF akkor is False eredményt ad, ha a fájl utolsó bájtját is beolvastam már, és utána a Get még tud olvasni egy 0-t. Nekem ezt teszi a 2-es fájl végére. Fogalmam sincs, miért. Passzolom a kérdést.

Előzmény: Törölt nick (13570)
tt65 Creative Commons License 2010.12.06 0 0 13573

készítettem két kimutatást, az egyiket a havi bontásra, a másikat a hetire. Igen, de ha egyiket állítom, megy vele a másik is!

ti ezt értitek?

Előzmény: Delila10 (13571)
tt65 Creative Commons License 2010.12.06 0 0 13572

Igen, de ha havi bontást kérek, akkor azt írja január, február , stb.

Ha ezen a módon hetit kérek, akkor azt írja 2010.01.04- 2010.01.10 ahelyett, hogy azt írná 1. hét !

Mennyivel szebb az utóbbi!

Előzmény: Delila10 (13571)
Delila10 Creative Commons License 2010.12.06 0 0 13571

Szívesen.

 

Ezért nem tartalmaz hetit, mert megadhatod a 7-essel. :)

Előzmény: tt65 (13569)
tt65 Creative Commons License 2010.12.06 0 0 13569

köszönöm nektek, ez lett a megoldás!

 

ehhez kapcsolódik, ha negyedéves, havi , napi csoportosítást tud az excel, akkor hetit miért nem tud?

végül si a napit választottam, a napok száma 7 opcióval ...

Előzmény: Delila10 (13568)
Delila10 Creative Commons License 2010.12.06 0 0 13568

Ha jól látom, 2007-es verziót alkalmazol.

 

A kimutatásba az első 3 oszlopot veszed be.

Kiválasztod a Kimutatáseszközök/ Eszközök/ Képletek/ Számított mező almenüt.

A Név rovatba beírod az előállítandó mező nevét (Arány), a Képlethez pedig =100*intézett ügy/érkezett ügyfél.

Előzmény: tt65 (13564)
Törölt nick Creative Commons License 2010.12.06 0 0 13567

tegyél be egy számított mezőt a pivotba ugyanazzal a matekkal. (Kimutatáseszközök/Képletek/Számított mező)

Előzmény: tt65 (13565)
joe.bacsi Creative Commons License 2010.12.06 0 0 13566

Előzmény: tt65 (13564)
tt65 Creative Commons License 2010.12.06 0 0 13565

bocs, "ennek lennék kiváncsi a napi átlagértékére" helyesen "ennek lennék kiváncsi a heti átlagértékére"

 

tt65 Creative Commons License 2010.12.06 0 0 13564

kis segítséget kérnék.

van egy naponta vezetett táblázat

két adat alapján napi értéket számol a kettő hányadosából

ennek lennék kiváncsi a napi átlagértékére

Sajnos azonban a napi hányadosok átlaga nem egyezik meg a hetti összértékekből képzett hányadossal.

 

lsd. alább:

 

nekem a 101% érték felel meg.

az alsó részen lévő pivot táblában is ezt az adatot szeretném látni, nem tudom mi a megoldás?

köszi előre is

szkripnyik Creative Commons License 2010.12.06 0 0 13563

Anyám!!!

 

De rég volt a hagyományos Basic program, és az ő filekezelése!

Miért lőjek ágyúval (FileSystemObject) verébre (hagyományos filekezelés)

:-)))

Előzmény: szkripnyik (13560)
szkripnyik Creative Commons License 2010.12.06 0 0 13562

Köszi!!!

 

Pont párhuzamosan írtuk!

 

Előzmény: Jimmy the Hand (13559)
Jimmy the Hand Creative Commons License 2010.12.06 0 0 13561

Hogy kell Backslast megadni ahhoz, hogy a fórummotor ne törölje ki? Már az sem jó, ha kettőt írok be?

"C:mappaalmappaakármi.txt" helyett minden esetben "C:*mappa*almappa*akármi.txt" értendő, és a * helyett backslash-t kell írni.

Előzmény: Jimmy the Hand (13559)
szkripnyik Creative Commons License 2010.12.06 0 0 13560

Szeretnék filet olvasni makróból:

 

Sub olvas()
    Const ForReading = 1, ForWriting = 2, ForAppending = 3
    Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
    Dim fs, f, ts, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    fs.OpenTextFile "d:moricka1.txt"            'Ellenőrzi egy file létezését
    Set f = fs.GetFile("d:moricka2.txt")         'Olvas egy másik filét
    Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault)
    For i = 1 To 1000
    s = ts.ReadLine
    MsgBox s
    Next i
    ts.Close
End Sub

 

Kérdéseim a professzor urakhoz:

1. Hogyan lehet " On Error"-ral vagy valami mással lekezelni, ha nem létezik a file és a filevéget?

2. Miért térhet el az fs.OpenTextFile sorban és a Set f= fs.Getfile sorban a filenév?

    Gyakorlatilag leellenőrzöm az első létezését és olvasgatom a másodikat.

3. Hogyan tudnék bináris filet is végigolvasgatni?

 

A file létezés ellenőrzését megtaláltam: If (fs.FileExists("móricka.txt")) Then ......

Folyamatos olvasást megtaláltam:  s = ts.Read(1000) beolvassa (a következő) 1000 karaktert.

Maradt a filevég lekezelése....

Előzmény: szkripnyik (13535)
Jimmy the Hand Creative Commons License 2010.12.06 0 0 13559

1. Erre a célra a Dir függvényt használnám.

    If Dir("C:mappaalmappaakármi.txt", vbNormal) = "" Then
        MsgBox "Not exist."
    End If

 

A másik lehetőség, FileSystemObject használatával:

Set fs = CreateObject("Scripting.FileSystemObject")
If Not fs.fileexists("C:mappaalmappaakármi.txt") Then
MsgBox "Not exist."
End If

 

2. A FileSystemObject egy összetett objektum, nem egy fájlra vonatkozik. Inkább egy interfész a fájlrendszer elérésére. Ugyanazon FileSystemObject-en keresztül akárhány fájlt megnyithatsz. Másrészt, az OpenTextFile és a GetFile két különböző dolog. A GetFile egy fájl típusú változóhoz rendel hozzá egy konkrét fájlt, és akkor arra a fájlra ezen a változón keresztül tudsz hivatkozni, és vele (rajta) műveleteket végezni. Az OpenTextFile pedig megnyit egy szövegfájlt, vagy ha nincs, akkor létrehozza azt. Ez tehát nem a fájl meglétének ellenőrzése. Igazából az OpenTextFile-t úgy tudnád használni, ha TextStream típusú változóhoz rendelnéd a megnyitott fájlt, másképp nem tudom, hogyan hivatkoznál rá:

Dim ts As TextStream

Set ts = fs.OpenTextFile("d:moricka1.txt")

 

3. A FileSystemObject-ben nincs meg a lehetőséged bináris fájlolvasásra. Másképp kell megoldani:

 

    Dim FNumber As Long, NextValue As Byte
    FNumber = FreeFile
    Open "C:mappaalmappaakármi.dat" For Binary Access Read As FNumber
     While Not EOF(FNumber)
        Get FNumber, , NextValue
        Debug.Print NextValue
    Wend
    Close FNumber

 

Ha a NextValue változót Byte helyett Integer-ként deklarálod, akkor kétbájtonként olvassa a fájlt, ha Long-ként, akkor négyesével, stb.

 

Előzmény: szkripnyik (13535)
Delila10 Creative Commons License 2010.12.06 0 0 13558

Valami olyan beállítási lehetőségre gondoltam, amit egyszer megadva minden dokumentumomban rám bízza a formátum megadását. :)

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

a cellaformátum "szöveg"-re állításával

Előzmény: Delila10 (13556)
Delila10 Creative Commons License 2010.12.06 0 0 13556

 

Hol választhatom meg?

 

 

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

 

ps. azért megjegyzem, hoyg a felhasználó megválaszthatja, hoyg akarja é ezt az automatizmust avagy nem

Előzmény: Delila10 (13548)
NeomatiK Creative Commons License 2010.12.05 0 0 13554

Igen, ott néztem.

Így néz ki, kiloptam a képet:

 

Előzmény: Delila10 (13553)
Delila10 Creative Commons License 2010.12.05 0 0 13553

Nem Exceles beállítás.

Start menü-> Beállítások-> Vezérlőpult -> Területi és nyelvi beállítások-> Területi beállítások fül -> Idő

Pl. 16:56:33

Előzmény: NeomatiK (13552)
NeomatiK Creative Commons License 2010.12.05 0 0 13552

Nem találok a beállítások között ami rossz lenne.

Előzmény: Delila10 (13551)
Delila10 Creative Commons License 2010.12.05 0 0 13551

Azt hiszem, a Vezérlőpulton a Területi beállításokat kellene ellenőrizned, ha már az Excelnek 2 verziójában is hibásan jelentkezik az idő jelzése.

Előzmény: NeomatiK (13550)
NeomatiK Creative Commons License 2010.12.05 0 0 13550

Excel 2007-ben is ugyanez a heklyet, azaz pp:mm formátum ellenérre 0:12:34-et kell beírni, hogy 12:34 jelenjen meg a cellában.

Ha csak 12:34-et írok bele, akkor 34:00 lezs a cellában. A 12 meg megy az órákhoz, szerkesztőlécben 12:34:00 lesz.

 

Itt ezt nagyon elcseszték a programozók szerintem.

Előzmény: Delila10 (13548)
NeomatiK Creative Commons License 2010.12.05 0 0 13549

Csináltam már pár lapon, de ugyanaz az eredmény, kéne elé a 0:

 

Excel 2002-nél.

Előzmény: Delila10 (13548)
Delila10 Creative Commons License 2010.12.05 0 0 13548

Próbálkozz egy új lapon. Előfordul néha 1-1 hibás lap, többször találkoztam már ilyennel.

 

A kettőspontot mindenképp be kell vinni, másképp dátum + idő formátumra áll át a cella. Sajnos a fejlesztők olykor túlzásba viszik a felhasználó kiszolgálását, amivel több kárt okoznak, mint hasznot. Időnként direkt hátrányos a program "önállósága".

Előzmény: NeomatiK (13547)
NeomatiK Creative Commons License 2010.12.05 0 0 13547

De mint írtam előbb, nem az jelenik meg a cellában amit beírtam.

 

.

.

.

.

 

Közben most kipróbáltam, ha pl 14:15-öt akarok a cellába, akkor 0:14:15-öt kell beírnom.

 

Nincs valami olyan módszer, hogy a 0: -t ne kelljen az elején beírni. Nem is értem, hogy miért igényli így a beírást, hiszen pp:mm formátumot adtam meg neki.

Előzmény: Delila10 (13546)
Delila10 Creative Commons License 2010.12.05 0 0 13546

Csak az összegző cella formátuma legyen [pp]:mm, a többié pp:mm.

 

Robbantómester: szívesen.

Előzmény: NeomatiK (13545)
NeomatiK Creative Commons License 2010.12.05 0 0 13545

Eddig szöveg formátumban volt megadva az idő.

De így, hogy átállítottam pp:mm-re, beírni se tudom az időt.

Ha kettősponttal írom (xy:wz) be akkor nem az xy:wz jelenik meg. Ha vesszővel (xy,wz) így se az jelenik meg.

 

Ha [pp]:mm -re állítom a cella formátumát 15:16 -ot akarván

"15:16"-ot beírva 916:00 jelenik meg a cellában, a szerkesztőlécben 15:16:00 van.

 

Ha "15,16"-ot írok be 21830:24 jelenik meg, a szerkesztőlécben "1900.01.15  3:50:24" van.

Törölt nick Creative Commons License 2010.12.05 0 0 13544

Köszönöm.

Előzmény: Delila10 (13543)
Delila10 Creative Commons License 2010.12.05 0 0 13543

Nem számolja át az alapértelmezett napra az időt, hanem ami a szögletes zárójelek között van, azt teljes egészében kiírja.

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

a [] mit csinál pontosan?

Előzmény: Delila10 (13541)
Delila10 Creative Commons License 2010.12.05 0 0 13541

Az összegző függvény legyen =SZUM(tól:ig)/60, ennek a cellának a formátuma pedig [pp]:mm, ahogy joe.bacsi írta.

Előzmény: NeomatiK (13536)
joe.bacsi Creative Commons License 2010.12.05 0 0 13540

[pp]:mm

 

:)

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

csak mert nekem összeadja.

Nem csak az a baj, hogy pl. 15:30:00 + 15:30:00 az = pp:mm formátummal 00:00 lesz

Előzmény: NeomatiK (13538)
NeomatiK Creative Commons License 2010.12.04 0 0 13538

Nincs, csak pp:mm formátum van benne.

 

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

nézd meg a szerkesztőlécet, mi van benne? Van benne év, hónap, nap?

 

Előzmény: NeomatiK (13536)
NeomatiK Creative Commons License 2010.12.04 0 0 13536

Sziasztok!

 

Van egy oszlop....

benne "Egyéni" formátumon belül "pp:mm" -nak formázva (perc:másodperc) a cellák.

Szeretném összeadni, de nem sikerült. 0-t ad eredményül a szumma függvény, pedig ugyanaz pp:mm formátumra van állítva a cella.

Mi lehet a gubanc?

Köszi előre is!

szkripnyik Creative Commons License 2010.12.04 0 0 13535

Szeretnék filet olvasni makróból:

 

Sub olvas()
    Const ForReading = 1, ForWriting = 2, ForAppending = 3
    Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
    Dim fs, f, ts, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    fs.OpenTextFile "d:moricka1.txt"            'Ellenőrzi egy file létezését
    Set f = fs.GetFile("d:moricka2.txt")         'Olvas egy másik filét
    Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault)
    For i = 1 To 1000
    s = ts.ReadLine
    MsgBox s
    Next i
    ts.Close
End Sub

 

Kérdéseim a professzor urakhoz:

1. Hogyan lehet " On Error"-ral vagy valami mással lekezelni, ha nem létezik a file és a filevéget?

2. Miért térhet el az fs.OpenTextFile sorban és a Set f= fs.Getfile sorban a filenév?

    Gyakorlatilag leellenőrzöm az első létezését és olvasgatom a másodikat.

3. Hogyan tudnék bináris filet is végigolvasgatni?

 

A választ előre is köszönöm.

Ba_G Creative Commons License 2010.12.03 0 0 13534

Kösz mindenkinek a gyors segítséget, tanulmányozom az irodalmat.

Előzmény: SQLkerdes (13533)
SQLkerdes Creative Commons License 2010.12.02 0 0 13533

Mégsem.

 

Az itt leírt módszer jobb megoldás.

SQLkerdes Creative Commons License 2010.12.02 0 0 13532

Ezt a kódot alkalmazd alkotó módon:

 

Sub valami()

Range(Columns(7), Columns(Columns.Count)).Hidden = True

End Sub

Előzmény: Ba_G (13530)
Törölt nick Creative Commons License 2010.12.02 0 0 13531

1. rejtsd el az összes többi oszlopot/sort.

2. cellavédelemnél állítsd be hogy ne lehessen kijelölni a többi cellát

Előzmény: Ba_G (13530)
Ba_G Creative Commons License 2010.12.02 0 0 13530

Előre is bocs a láma kérdésért:

 

Van egy piszlicsáré 3 oszlop 8 soros táblám (x2: magyar, angol), aminek csak 7 cellájába (1 oszlopba) szeretném engedélyezni az adatbevitelt. Megoldottam "érvényesítéssel", még azt is, hogy mondjuk egy képernyőnyi felületen belül ne lehessen beleírni ill. a meglévő fix adatok ne legyenek változtathatók (+ némi VBA machinációval, hogy kitöltetlenül ne lehessen elmenteni vagy bezárni), de nyilván elegánsabb lenne, ha csak a 3x8(x2 , azaz mondjuk 3x18) as mátrix lenne aktív, vagy egyáltalán: látható. Erre van egyszerű megoldás?

 

A VBA alighanem ágyúval verébre volt, annál is inkább, mert kiderült, menteni nem is szükséges, csak e-mailen küldeni Excelen belülről (azaz Groupwise-on, de most ez talán mindegy), a levelek kerülnek archívumba mellékletestül. (Remélem jól vettem le a feladatot és már nemigen változik a "kiírás". Hozzátenném, hogy nem vagyok pogromozó, szoftvermérnök stb., csak szükségmegoldás :) arra, hogy egy üzemviteli hibanaplózást megoldjunk...)

 

EIK!

Törölt nick Creative Commons License 2010.12.02 0 0 13529

 

Köszönöm a válaszokat, így végre sikerült a nyomtatás. A combobox -ot, pedig megnézem.

A régebbi excell-ben mindent pillanatok alatt megtaláltam, de ez a 2007-es a sok csiribiriséggel néha nagyon kiakaszt. Nem vagyok profi a témában, nem tudom miért nincs legalább egy "váltás a hagyományos nézetre" opció vagy ilyesmi. Köszönöm még 1x! Üdv. Kr

Törölt nick Creative Commons License 2010.12.02 0 0 13528

Ez: by súgó

 

Oldalak számozási sorrendjének módosítása

Az Excel alapértelmezésben a munkalapon fentről lefelé, majd balról jobbra számozza és nyomtatja az oldalakat, de a számozás és nyomtatás iránya módosítható balról jobbra, majd fentről lefelé irányúra.

  1. Váltson arra a munkalapra, amelynek a számozási sorrendjét módosítani szeretné.
  2. A Lap elrendezése lap Oldalbeállítás csoportjában kattintson a párbeszédpanel-megnyitó gombra az Oldalbeállítás párbeszédpanel megnyitásához.

  1. A Lap lap Oldalak sorrendje csoportjában jelölje be a Le, majd jobbra folytatva vagy a Jobbra, majd lefelé folytatva választógombot.

 Tipp   A választott irány az előnézeti mezőben látható.

 

Vagy átírod kézzel

Előzmény: Törölt nick (13526)
SQLkerdes Creative Commons License 2010.12.01 0 0 13527

Az első probléma megoldásához sok szerencsét kívánok, a második esetében a combobox a barátod.

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

Sziasztok

Egy kérdés: 2007-es excell-ben hogyan lehet felcserélni a nyomtatásra szánt oldalak sorszámát? Amit első lapon szeretnék nyomtatni az ok, de a másodikat 3.-nak adja, a 3.-at 2.-nak, stb. Az a gondom, hogy néha csak 2 oldalt szeretnék, de így meg kell keresnem a táblázatban hol kezdődik a következő. A fél netet végignéztem, de nem találom a konkrét leírást, szétvet már az ideg.

Még egy: az érvényesítés után a legördülő lista elemeinek a számát lehet változtatni valahogy? Van egy 300 tételes lista, de mire végiggörgetem és megtalálom amit keresek, kihullik a hajam. Alapból csak 8 elemet jelenít meg, nem lehet ezt bővíteni?

Köszönettel:Kr

 

Törölt nick Creative Commons License 2010.12.01 0 0 13525

van hát, hisz lehet konvertálni sap-ból ;)

Előzmény: E.Istvan (13524)
E.Istvan Creative Commons License 2010.12.01 0 0 13524

Elég sokat. Nem biztos, hogy felhasználó létemre helyesen tudom a nevüket. 

PS, PM, FI, CO, HR

De kivágnak innen minket. Vagy a kérdésnek Exceles vonatkozása is van? :o)

Előzmény: Törölt nick (13514)
missparker Creative Commons License 2010.11.30 0 0 13523

Köszönöm! Ki fogom próbálni, beszámolok a - remélhetőleg - sikerről.

Előzmény: Törölt nick (13510)
wawabagus Creative Commons License 2010.11.30 0 0 13522

Köszi mind kettőtöknek a tippeket!!!

:-)

 

Nincs a cégnek 2007-es excele :-DDD...

 

SQLkerdes Creative Commons License 2010.11.30 0 0 13521
Előzmény: wawabagus (13516)
boraka Creative Commons License 2010.11.30 0 0 13520

Az Excel 2007 -> 1 048 576 sort tud kezelni

Előzmény: wawabagus (13519)
wawabagus Creative Commons License 2010.11.30 0 0 13519

A 250.000-et sikerült 95.000-re csökkenteni

:-DDDD

 

hát még ezzel sem megyek sokra :-)!

Előzmény: wawabagus (13518)
wawabagus Creative Commons License 2010.11.30 0 0 13518

Szia!

Jessszus, ez nem hangzik jól :-(((((((((((((((((...

SQL tudásról nálam nem beszélhetünk...

HMMM...

Hát akkor el kell gondolkodjak valami más megoldáson :-((.

 

250.000 sorom van ezt excelbe nem tudom bepaszírozni.

Nincs valami alternatív ötleted?

 

Nekem most nem jut eszembe semmi...

 

Talán valahogy összevonhatnám access alatt a sorokat...

 

Próbálkozom...

 

Köszi az infót!!

 

:-)

Yo

 

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

Hát én sajnos elég gyakran találkozom ezzel.

A pivotot újra meg kell csinálni (Adatkapcsolatot létrehozni (ConnectionString, sql kódot átmásolni MSQUERY-be.)

Nem egyszerű. Mélyebb tudást igényel adatbáziskezeles szinten, mint egy sima excelezés

Előzmény: wawabagus (13516)
wawabagus Creative Commons License 2010.11.30 0 0 13516

Sziasztok!

Viszot lenne még egy kérdésem :-(...

 

2003-as excelben szeretnék egy 2007-es access adatbázisra épülő pivotot csinálni.

 

Tehát a pivot excelben lenne, de az adat maga accessben, mert hogy nagyon sok.

 

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

 

Kiválasztom hogy milyen mezőket szeretnék, next, next...és nem tudja megcsinálni.

 

Találkoztatok már ilyesmivel?

 

Köszi a tanácsokat!!

Y

wawabagus Creative Commons License 2010.11.30 0 0 13515

boraka, robbantomester, SQLkerdes!!

 

NAGYON KÖSZÖNÖM a megoldást!!

 

Remekül működik!!!!!!!!

 

:-)

 

Örök hála

Törölt nick Creative Commons License 2010.11.30 0 0 13514

modulszinten melyeket?

Előzmény: E.Istvan (13501)
Sir Spangi Creative Commons License 2010.11.30 0 0 13513

Köszönöm!

 

Este kipróbálom, szerintem a 3. variációt fogom használni, ha működik. :-D

 

Előzmény: E.Istvan (13512)
E.Istvan Creative Commons License 2010.11.30 0 0 13512

A cellába nem csak az óra:percet kell felvinni, hanem a dátumot is. Akkor jól fog számolni.

A másik lehetőség, hogy két oszlopot vezetsz, az egyikbe írod a dátumot, a másikba az időpontot. Majd a két értéket összeadod. És az így összeadott értékekre számolod ki a két időpont közötti különbséget.

Egy esetleges harmadik lehetőség, hogy képlettel oldod meg, ekkor nem kell dátum. Például, ha a befejezés időpontja kisebb, mint a kezdés időpontja, akkor feltételezzük hogy egy nap eltelt. =ha(b1<a1;b1+1-a1;b1-a1)

Előzmény: Sir Spangi (13511)
Sir Spangi Creative Commons License 2010.11.30 0 0 13511

Sziasztok!

 

Egy Excel táblázattal kapcsolatos problémámra szeretnék segítséget kérni.

 

Csináltam egy táblázatot, amellyel a munkaidőmet(kezdés-végzés), km-ert, men.levél sorszámot stb. vezetem évek óta. Az Excel göngyölíti, kiszámolja a fogyasztást meg mindent amit akarok.

Eddig minden rendben ment, kiszámolta az óráimat (is), a kezdés-végzés adatok alapján.

Mostanában viszont vannak olyan műszakjaim, amikor éjszakás vagyok, pl. 19.00-kor kezdek, és másnap reggel 7.00-kor végzek. Ezt jelenleg nem tudja feldolgozni.

Nem találok megoldást, nem tudom kezeltetni a táblázattal.

Azt szeretném megkérdezni, hogy mi a módja annak, hogy nappali, és éjszakás, másnapra átnyúló időpontokat is tudjak vele számoltatni?

 

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

P.S.: Valószínűleg csak késő délután leszek, mert sajnos menni kell a 2. munkába. :-D

Törölt nick Creative Commons License 2010.11.29 0 0 13510

Kimutatás varázsló - Több tartomány (összesítés) Ha nem találod a 2007-esben, akkor fel kell tenned a gyorselérési eszköztárra: Excel beállításai - Testreszabás - Kimutatáseszközök|Beállítás lap

 

Ez pontosan jó erre amit írsz.

Előzmény: missparker (13509)
missparker Creative Commons License 2010.11.29 0 0 13509

Sziasztok,

 

Bocs, hogy így ismeretlenül, de szeretném a segítségeteket kérni, ebbe beletört a bicskám:

 

Adva van 20 sheet, rajta sok-sok sor és oszlop (többezer sor, 90 oszlop). Minden sheet-en van egy vagy két oszlop ("leírás1" és "leírás2"), ami tartalmazhat egy bizonyos karatersort (cellaformátum: szöveg), ami nekem most érdekes ("cukor"). Csinálnom kell egy olyan összesítő sheet-et, ami az összes sheet összes olyan sorát tartalmazza, ami tartalmazza a "leírás1" és/vagy "leírás2" oszlopban a  "cukor"-t.

 

Vmi ötlet esetleg? (magyar 2007-ben próbálkozom...)

boraka Creative Commons License 2010.11.29 0 0 13508

Szerintem is jó kis feladat, az eseménykezelős már müxik, kiváncsian várom a végleges UDF-es megoldást. ;-) Jó lenne megtudni, hogy MixM topictárs tudta-e hasznosítani az eddigieket.

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

Viszont tény, hogy érdekes feladat ;) Számomra  főleg az UDF-es.

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

ps. egyébként teljesen feleslegesnek tartok erre scriptes megoldást (legyen az UDF vagy eseménykezelős) mert ha jól értem a cél itt csupán a figyelem felkeltése, hogy túl sok munkanap követné egymást - ami gondolom PTK-ba is ütközik. Erre tökéletesen elég, ha az a "P" betű lesz színes, ami után 6-nál több munkanap van. Ezt pedig feltételes formázással meg is lehet csinálni a beépített függvények segítségével. (Lsd "Előzmény")

Előzmény: Törölt nick (13466)
Törölt nick Creative Commons License 2010.11.29 0 0 13505

Ezt a függvényt nem egészen értem. Leírásodból azt véltem kivenni, hogy a cella feltételes formázásában, a "képlet értéke" módban kell használni.

Ez logikusan azt jelentené, hogy ha pl. a C3 cella formázásánál használom, akkor a függvénynek a C3 cellára vonatkozóan kellene meghatároznia IGAZ vagy HAMIS értéket, és a feltételes formázás ettől függően pirosít vagy nem pirosít.


 - Így van.

 

És egy észrevétel: a 'sor' változót szerintem Byte helyett Long típusra kellene beállítani, mert Byte-ként legfeljebb 255 lehet az értéke, egy excel munkafüzet pedig legalább 65536 sort tartalmaz.

 - Ez szándékos volt, mert tudtam, hogy nem leszz 255-nél több.

 

 

 

  De mivel a függvény Volatile, újra kiszámolja C3-ra, amivel újra felülírja C4-et, és ez így szerintem végtelen ciklus. Nekem lefagyott az Excelem, amikor kipróbáltam.

 - Ha az utolsó If... End If nélkül próbálod, akkor működik, ez esetben csak azokat a "P"-ket színezi, amelyek után 6-nál több <> "P" van.

Ezzel az If-el az volt a célom, hogy True értéket kapjanak azok a cellák is, amelyeknél a "P" után 6-nál több <> "P" van.

Hogy végtelen az lehet... Nem tudtam hogy fog viselkedni a volatile, ha az utolsó If .... End If -ben lévő sorokkal "utólag" "belepiszkálok"

 

 

 

 

Előzmény: Jimmy the Hand (13498)
mouser Creative Commons License 2010.11.29 0 0 13504

egyébként tényleg működik, bár egyelőre nem volt időm megérteni, hogy mitől :-)

 

és köszi :-)

Előzmény: Jimmy the Hand (13503)
Jimmy the Hand Creative Commons License 2010.11.29 0 0 13503

Köszi, az tényleg kimaradt :)

Előzmény: Delila10 (13502)
Delila10 Creative Commons License 2010.11.29 0 0 13502

Bocsi, kimaradt egy "kacsa csőre".

 

=SZORZATÖSSZEG((Munka1!$A$1:$A$365<=B1)*(Munka1!$A$1:$A$365>=A1)*(Munka1!$B$1:$B$365))

Előzmény: Jimmy the Hand (13500)
E.Istvan Creative Commons License 2010.11.29 0 0 13501

Igen, például SAP R/3

Előzmény: Törölt nick (13445)
Jimmy the Hand Creative Commons License 2010.11.29 0 0 13500

Tegyük fel, hogy Munka1 lapon, A1:A365-ben vannak a dátumok, B1:B365-ben az értékek, továbbá Munka2 A oszlopában vannak az intervallumok kezdő dátumai, B oszlopban pedig a végdátumok.

Ez esetben pl. C1-be ez a képlet kerül:

=SZORZATÖSSZEG((Munka1!A1:A365<=B1)*(Munka1!A1:A365=A1)*(Munka1!B1:B365))

Előzmény: mouser (13497)
E.Istvan Creative Commons License 2010.11.29 0 0 13499

Ha 2007-es Exceled van akkor:

=SZUMHATÖBB(értéket tartalmazó oszlop;dátum oszlop;">="&dátum eleje cella;dátum oszlop;"<="&dátum vége cella)

Előzmény: mouser (13497)
Jimmy the Hand Creative Commons License 2010.11.29 0 0 13498

Ezt a függvényt nem egészen értem. Leírásodból azt véltem kivenni, hogy a cella feltételes formázásában, a "képlet értéke" módban kell használni.

Ez logikusan azt jelentené, hogy ha pl. a C3 cella formázásánál használom, akkor a függvénynek a C3 cellára vonatkozóan kellene meghatároznia IGAZ vagy HAMIS értéket, és a feltételes formázás ettől függően pirosít vagy nem pirosít.

Mivel ezt a formázást az összes cellára be kell állítani, nem értem, hogy a függvény miért akarja a szomszédos cellák értékét felülírni? Egyrészt, nem biztos, hogy csak P betű és üres cella van ebben a táblázatban, így a függvényed adatvesztést okozhat. Másrészt, a szomszédos cellák pirosságát ugyanezzel a függvénnyel kellene meghatározni, nem?

Tegyük fel, hogy C3 és C4 cellák feltételes formázásában szerepel ez a függvény, tehát C3 piros, ha ErrRed(C3)=IGAZ, C4 pedig piros, ha ErrRed(C4)=IGAZ

Excel kiszámolja C3-ra. Közben felülírja C4 értékét. Erre, mivel a C4 feltételes formázás bemenő értéke megváltozott, kiszámolja C4-re is. De mivel a függvény Volatile, újra kiszámolja C3-ra, amivel újra felülírja C4-et, és ez így szerintem végtelen ciklus. Nekem lefagyott az Excelem, amikor kipróbáltam.

 

Lehet, hogy nem jól értem a felhasználás módját, de nekem itt valami nem gömbölű...

 

És egy észrevétel: a 'sor' változót szerintem Byte helyett Long típusra kellene beállítani, mert Byte-ként legfeljebb 255 lehet az értéke, egy excel munkafüzet pedig legalább 65536 sort tartalmaz.

Előzmény: Törölt nick (13493)
mouser Creative Commons License 2010.11.28 0 0 13497

helló mindenki!

 

excel problémám a következő. van egy munkalapom az év napjaival, hozzárendelve minden naphoz egy érték. egy másik munkalapon pedig minden sorban egy időintervallum egy kezdő és egy végdátummal. (tetszőleges számú nappal egy intervallumban,).

 

namost a feladat az, hogy minden sorban adjam össze az ahhoz az intervallumhoz intervallumhoz tartozó értékeket egy új oszlopban vmi függvénnyel, de eddig nem jött össze, úgyhogy hilfe!

Törölt nick Creative Commons License 2010.11.28 0 0 13496

az (As Boolean)  a fgv-hez nem jó, mert futásközben ettől eltérő értéke is van. Az (ER As Range) jó, de szerintem emiatt sem lehet hiba (illetve nem is volt)

 

Ha nincs a kommentezett sor, akkor megy szépen a függény, helyesen true értéket ad azokra a cellákra, amelyekben "P" van és utána 6-nál több egyéb cella. A kommentezett sor előtti sorban meghatározott Range tartalmazza  azt a tartományt, amelyekre még true-t kell kapni, hogy a feltételes formázás érvényesüljön.

Ezt akarom a kommentezett sorral true-ra állítani, de a függvény hibaértékekkel tér vissza. (Nem vba hiba)

 

Előzmény: boraka (13494)
Törölt nick Creative Commons License 2010.11.28 0 0 13495

ErrRedColor változó tényleg nem volt deklarálva de hibát nem okoz ettől.

ERRange -vel az a tartományt határozom meg, amelyben a (következő) "P" betűt kell keresni

 

 

Előzmény: boraka (13494)
boraka Creative Commons License 2010.11.28 0 0 13494

Dehogy haragszunk, sőt, a több különböző megoldás jó tanulási lehetőség.

Elsőként az alábbit javasolnám, ill. kérdezem:

 

Function ErrRed(ER As Range) As Boolean

Dim ERRange As Range, oszlop As Byte, sor As Byte, ERRangeColor As Range
Dim ErrRedColor As Byte 'ez nem volt definiálva

Ezt nem igazán értem miért kell:

Set ERRange = Range(Cells(sor, oszlop + 1), Cells(sor, oszlop + 31))

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

Ne haragudjatok, egy kicsit belecsaptam én is...

Az a helyzet, hogy ezt szerintem pár soros UDF-el meg lehet csinálni, amit feltételes formázásként kell megadni és boolean-t ad vissza a fgv.

Most így néz ki, de szeretném a segítségeteket kérni:

 

Function ErrRed(ER)


Dim ERRange As Range, oszlop As Byte, sor As Byte, ERRangeColor As Range
oszlop = ER.Column
sor = ER.Row
Set ERRange = Range(Cells(sor, oszlop + 1), Cells(sor, oszlop + 31))
Application.Volatile
If ER = "P" Then ErrRed = Application.Match("P", ERRange, 0) Else ErrRed = 6
ErrRedColor = ErrRed
ErrRed = ErrRed > 7
If ErrRed Then


Set ERRangeColor = Range(Cells(sor, oszlop + 1), Cells(sor, oszlop + ErrRedColor - 1))
ERRangeColor.Value = ErrRed ' ez az egy sor nem jó, nem tudom hogy kell a "range" cella értékeit "IGAZ"-ra állítani


End If


End Function

Előzmény: boraka (13492)
boraka Creative Commons License 2010.11.28 0 0 13492

Na, akkor az alábbi a megoldási javaslatunk MixM topictárs felvetésére:

 

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim meddig As Integer
Dim figyel As Integer

 

  meddig = Cells(Target.Row, Columns.Count).End(xlToLeft).Column

  figyel = 1
 
  Range("A" & Target.Row).EntireRow.Interior.ColorIndex = xlNone
   
  For i = 1 To meddig
    If UCase(Cells(Target.Row, i)) = "P" Then
      If i - figyel >= 6 Then
        Range(Cells(Target.Row, figyel), Cells(Target.Row, i)).Interior.ColorIndex = 3
        figyel = i
      Else: figyel = i
      End If
    End If
  Next i
 
  If meddig - figyel >= 6 Then Range(Cells(Target.Row, figyel), Cells(Target.Row, meddig)).Interior.ColorIndex = 3

 

End Sub

  

Előzmény: Delila10 (13491)
Delila10 Creative Commons License 2010.11.28 0 0 13491

A sor végének színezéséhez még kell egy sor a Next után.

 

If meddig - figyel >= 6 Then Range(Cells(Target.Row, figyel), Cells(Target.Row, meddig)).Interior.ColorIndex = 3

 

Szerintem az első feltételnél is 6-tal kell vizsgálni: If i - figyel >= 6 Then

(#13426)

Előzmény: boraka (13490)
boraka Creative Commons License 2010.11.27 0 0 13490

Ja, vagy úgy, akkor itt egy következő javaslat:

 

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim meddig As Integer
Dim figyel As Integer

 

  meddig = Cells(Target.Row, Columns.Count).End(xlToLeft).Column 

  figyel = 1
 
  Range("A" & Target.Row).EntireRow.Interior.ColorIndex = xlNone
   
  For i = 1 To meddig
    If UCase(Cells(Target.Row, i)) = "P" Then
      If i - figyel >= 7 Then
        Range(Cells(Target.Row, figyel), Cells(Target.Row, i)).Interior.ColorIndex = 3
        figyel = i
      Else: figyel = i
      End If
    End If
  Next i
 
End Sub

Előzmény: Delila10 (13489)
Delila10 Creative Commons License 2010.11.27 0 0 13489

Ezt én úgy értelmezem, hogy nem pihenőnap nem lehet több, vagyis ha a sor elején több nem P-s cella van, az sem jó. Mondjuk csak a 8. napot akarják kiadni szabadnapnak.

Lehet, hogy nem jó a meglátásom.

Előzmény: boraka (13488)
boraka Creative Commons License 2010.11.27 0 0 13488

Szia!

 

Nem értem. A nem "P"-t tartalmazó cellákat miért kellene színezni? A feladatban nem az van, hogy a "P"-k közötti cellákat kell színezni, ha az több mint 6?

Előzmény: Delila10 (13487)
Delila10 Creative Commons License 2010.11.27 0 0 13487

Szia!

 

Ha a sor 6, vagy több nem P-t tartalmazó cellával kezdődik, vagy végződik, azokat nem színezi a makró.

Előzmény: boraka (13484)
boraka Creative Commons License 2010.11.27 0 0 13486

Rosszul látod ;-)

Előzmény: Jimmy the Hand (13485)
Jimmy the Hand Creative Commons License 2010.11.27 0 0 13485

Nem vagyok passzív, csak mostanában annyi dolgom van, hogy nem nagyon marad időm ilyesmire.

De úgy látom, nagyon jól elvagytok nélkülem is :)

Előzmény: boraka (13477)
boraka Creative Commons License 2010.11.27 0 0 13484

"ennek is az a hibája, hogy a sorok elejét és végét nem rúzsozza ki."

 

Nem értem mire gondolsz

Előzmény: Delila10 (13483)
Delila10 Creative Commons License 2010.11.27 0 0 13483

Ez nagyon jól néz ki, de ennek is az a hibája, hogy a sorok elejét és végét nem rúzsozza ki.

Ha megoldod ezeket, nem bajlódom az enyémmel, úgyis csak este felé leszek számítógép közelében. Az is jó, hogy eseményt kezelsz, nem kell külön indítani.

 

Az én makrómnál a sor eleji ellenőrzéshez a Next oszlop mögé be kell tenni a t=False sort.

 

Előzmény: boraka (13479)
MixM Creative Commons License 2010.11.26 0 0 13482

Nagyon szépen köszönöm mindenkinek az ötleteket és a segítséget!!!

Örülök, hogy létezik még olyan fórum, ahol nem csak lehet segítséget kérni, de kapok is:)

Mindenkinek további szép napot!!!

SQLkerdes Creative Commons License 2010.11.26 0 0 13481

De az enyém végéről nem maradt le!

 

Na, jóccakát mindenkinek én mára szögre akasztom a klaviatúrát!

Előzmény: boraka (13480)
boraka Creative Commons License 2010.11.26 0 0 13480

Csupa kisbetűvel írtam, igaz a végéről lemaradt a ;-))

Előzmény: SQLkerdes (13478)
boraka Creative Commons License 2010.11.26 0 0 13479

Remélem, már ez is egy jó megoldás lesz:

 

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim meddig As Integer
Dim figyel As Integer

 

  meddig = Cells(Target.Row, Columns.Count).End(xlToLeft).Column 

  figyel = 0
 
  Range("A" & Target.Row).EntireRow.Interior.ColorIndex = xlNone
   
  For i = 1 To meddig
    If UCase(Cells(Target.Row, i)) = "P" Then
      Select Case figyel
        Case 0
          figyel = i
        Case Else
          If i - figyel >= 7 Then
            Range(Cells(Target.Row, figyel), Cells(Target.Row, i)).Interior.ColorIndex = 3
            figyel = i
          Else: figyel = i
          End If
      End Select
    End If
  Next i
 
End Sub

Előzmény: boraka (13470)
SQLkerdes Creative Commons License 2010.11.26 0 0 13478

Jól!

De azért nem kell velem ordítani :-)

 

(ezt a technikát már használtam máskor, de validation-nel nem tűnik működni, hm...)

Előzmény: boraka (13476)
boraka Creative Commons License 2010.11.26 0 0 13477

Jimmy! Nagyon passzív vagy mostanában.

Előzmény: Jimmy the Hand (13427)
boraka Creative Commons License 2010.11.26 0 0 13476

Jól sejtem, hogy nem próbáltad ki?

Előzmény: SQLkerdes (13473)
boraka Creative Commons License 2010.11.26 0 0 13475

Próbáld ki ezt, nálam hibakezelés nélkül sem akad ki:

 

ActiveSheet.UsedRange.Validation.Delete

Előzmény: wawabagus (13468)
Törölt nick Creative Commons License 2010.11.26 0 0 13474

Ez nem jó a validációs listák megkereséséhez?:

 

.SpecialCells(xlCellTypeAllValidation).Select

 

makrórögzítő...

(ctrl+g, irányított, Adatérvényesítés bejelöl...)

 

 

Előzmény: wawabagus (13472)
SQLkerdes Creative Commons License 2010.11.26 0 0 13473

Ez a kód itt (a lenti linkről másolva):

Sub a()

Dim r As Range

Set r = Intersect(ActiveSheet.UsedRange.SpecialCells(xlCellTypeAllValidation), ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible))

If Intersect(ActiveCell, r) Is Nothing Then MsgBox "Cell has no validation"

Else MsgBox "Cell has validation"

End If

End Sub

 

Szerintem ha a fenti Activecell object helyett a worksheets(akarmennyi).usedrange objectet használod, akkor is működik (azt nézi meg, hogy van-e közös halmaza két range-nek, a range-ek akármekkorák lehetnek).

 

Szóval nem kell cellánként megnézni.

Előzmény: wawabagus (13472)
wawabagus Creative Commons License 2010.11.26 0 0 13472

Szia!

Köszi.

Pont ezen a site-on jártam már és olvasgattam. De nem találtam ott megoldást.

 

Megnézem mégegyszer, de amiket kínálgatnak az cellánkénti ellenőrzés...

 

Az a baj, hogy kb 50 db fájlt akarok összemásolni egy helyre és ha elkezdi őket cellánként ellenőrizgetni...háááát...

 

Na, hétfőn újult erőkkel :-)))...

 

Köszi a segítséget!!

 

És jó hétvégét mindenkinek!!

Y

 

Előzmény: SQLkerdes (13471)
SQLkerdes Creative Commons License 2010.11.26 0 0 13471

Itt:  http://www.mrexcel.com/forum/showthread.php?t=353536 van néhány érdekes technika a validation list létezésének ellenőrzésére.

Nem tűnik nativ lehetőségnek...

Előzmény: wawabagus (13469)
boraka Creative Commons License 2010.11.26 0 0 13470

De igen, próbáltam, de szerettem volna egy másik megoldást is.

Második nekifutásra ezt szögeltem össze:

 

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim meddig As Integer
Dim figyel As Integer

 

  meddig = Cells(Target.Row, Columns.Count).End(xlToLeft).Column 'oszlopok száma az aktuális sor értékei alapján
  figyel = 0
 
  Range("A" & Target.Row).EntireRow.Interior.ColorIndex = xlNone
   
  For i = 1 To meddig
    If UCase(Cells(Target.Row, i)) = "P" Then
      Select Case figyel
        Case 0
          figyel = i
        Case Else
          If i - figyel >= 7 Then
            Range(Cells(Target.Row, figyel), Cells(Target.Row, i)).Interior.ColorIndex = 3
            figyel = i
          End If
      End Select
    End If
  Next i
 
End Sub

 

  

 

Előzmény: Delila10 (13457)
wawabagus Creative Commons License 2010.11.26 0 0 13469

Fordítva:

 

 

    On Error Resume Next

    Selection.validation.Delete
   

Előzmény: wawabagus (13468)
wawabagus Creative Commons License 2010.11.26 0 0 13468

Szia!

 

Sehol nem találtam arra kódot hogyan lehet megállapítani van-e validációs lista vagy sem a sheeten...

 

De arra gondoltam, hogy be lehetne vetni egyszerűen egy hiba kezelést...

Ha hiba merül fel /mert ugye nincs mit törölni/, akkor menjen tovább

De nem tudom jó helyre raktam-e...vagy tiszta baromság amivel próbálkozom...

 

 

    Workbooks(1).Activate
    Cells.Select
    
   
    Selection.validation.Delete
    On Error Resume Next

    
    Workbooks(i).Sheets(1).UsedRange.Copy

 

Szerinted van ennek értelme?

Nem működik :-DDD, de nem vagyok biztos abban, hogy emiatt

Előzmény: SQLkerdes (13462)
Törölt nick Creative Commons License 2010.11.26 0 0 13467

Megj.: Ebbe bele kéne tenni azt is feltételes formázással, hogy a hétvégék oszlopa automatikusan sárga legyen

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

Ezt az egyszerű képletet  feltételes formázásnak kell megadnod (a C4 cellára állva január munkalapon):

=HA(C4="P";HOL.VAN("P";D4:AG4;0);6)>6

Ezután a formátum másolóval ("ecset") másold át a teljes táblázatra.

Azok a "P"-k lesznek pirosak, amelyek után hatnál több munkanap van.

Az eredmény ugyanaz, mintha a hatnál több munkanap lenne piros: Rögtön látni fogod hol van hiba.

Visszaküldöm a file-t

 

Előzmény: MixM (13464)
Delila10 Creative Commons License 2010.11.26 0 0 13465

Azt, hogy mi történt az 5. és 36. sorban, csak a füzetben lehetne megnézni.

Volt két hiányosság a makrómban, az elsőt kijavítottam, a másodikra most nem érek rá.

Az első hiba, hogy ha a sorban az első P előtt 6, vagy annál több nem P van, nem színezte a sor elejét.

A második hiba, hogy a sor végét sem, ha az utolsó 6, vagy annál több cella nem P.

 

Sub mm()
    Dim oszlop As Integer, uoszlop As Integer, sor As Integer, usor As Integer
    Dim kezd As Integer, veg As Integer, t As Boolean
    
    Cells().Interior.ColorIndex = xlNone
    uoszlop = ActiveSheet.UsedRange.Columns.Count
    usor = ActiveSheet.UsedRange.Rows.Count
    
    For sor = 1 To usor
        For oszlop = 1 To uoszlop
            If oszlop > 5 And t = False And Cells(sor, oszlop) = "P" Then
                Range(Cells(sor, 1), Cells(sor, oszlop - 1)).Interior.ColorIndex = 3
                kezd = oszlop + 1
            End If
            
            If Cells(sor, oszlop) = "P" And t = False Then
                kezd = oszlop
                t = True
                GoTo Kov
            End If
            
            If Cells(sor, oszlop) = "P" And t = True Then
                veg = oszlop
                If veg - 1 - kezd > 5 Then
                    Range(Cells(sor, kezd + 1), Cells(sor, veg - 1)).Interior.ColorIndex = 3
                End If
                kezd = veg
            End If
            
          
Kov:
        Next oszlop
    Next sor
End Sub

Előzmény: MixM (13464)
MixM Creative Commons License 2010.11.26 0 0 13464

Azt hittem egyszerűbb a feladat, de lehet hogy csak nekem tűnik bonyolultnak amiket írtok. Mindenesetre örülök és köszönöm, hogy foglalkoztok vele és próbáltok segíteni:)

Lefuttattam a makrót, az első 5 sorban ki is pirosította a hibát(szándékosan tettem bele párat:)), de a többin nem jelzi a problémát, majd a 36. sorban ismét pirosított:)

 

Azt hiszem el kezdek komolyabban foglalkozni a makrókkal:)

Előzmény: Delila10 (13457)
wawabagus Creative Commons License 2010.11.26 0 0 13463

Ahaaaaaaaaaaaa...:-)

 

Milyen hülye ez a VBA

 

:-D

 

Köszi!

 

Előzmény: SQLkerdes (13462)
SQLkerdes Creative Commons License 2010.11.26 0 0 13462

Csak tippelek, de azt gondolom, hogy a delete előtt akad el a kivitelezés.

VBA benéz a fiókba, turkál mert keresi a Validation object-et.  Nem találja, panaszkodik.

Annyi esze nincs, hogy észrevegye, hogy úgyis törölni akarod, szóval lényegében nem számít, hogy nincs.  Mivel a VBA nem a lényeget nézi, hanem a formális parancsot, kiakad. 

Előzmény: wawabagus (13461)
wawabagus Creative Commons License 2010.11.26 0 0 13461

Sziasztok!

 

SQL Kérdés és boraka köszi a segítséget!!!

Tök jó így...kijavítottam és már szuperul működik.

 

 

De én egyszerűen nem értem a logikáját az excelnek.

 

Ha ez a kód normálisan működik:

 

    Workbooks(1).Activate
    Cells.Select
    Selection.validation.Delete

 

Akkor a for next ciklusban azért nem működik, mert szintén nem biztos hogy mindenhol van validációs lista?

 

Ha nincs, akkor nem tud törölni?

 

 

 

SQLkerdes Creative Commons License 2010.11.26 0 0 13460

Most vagy nem ugyanarról a kódról beszélünk vagy valami gond van a kognitív funkcióimmal...

 

Szerintem nem keresi meg a következő P-s cellát, csak elugrik 7 cella távolságra és megpillantja, hogy az P-e.

Előzmény: Delila10 (13458)
SQLkerdes Creative Commons License 2010.11.26 0 0 13459

De lefuttattam, csak nem számítógépen, hanem fejben ;-)

Csak egymagos processzora van, de azért bírja a bizalmamat  :-))

Előzmény: Delila10 (13457)
Delila10 Creative Commons License 2010.11.26 0 0 13458

Az eredeti kérdés  "A célja, hogy lelellenőrizze, hogy az adott dolgozónál két pihenő közt nem telik el 6 napnál több."

 

Itt nincs szó üres, és nem üres cellákról. A makróm nem is figyeli, csak azt, hogy az egymást követő, "P" tartalmú cellák között hány nem "P"-s cella van.

Előzmény: SQLkerdes (13456)
Delila10 Creative Commons License 2010.11.26 0 0 13457

Nem próbáltátok ki az én makrómat (#13438)? Mármint Te és Boraka. 

Előzmény: SQLkerdes (13453)
SQLkerdes Creative Commons License 2010.11.26 0 0 13456

Én is ezt mondom.

 

Ha jól olvasom a kódot, akkor nem ellenőrzi, hogy van-e más P 7 távolságon belül, illetve nem ellenőrzi, hogy ha a 7 távolságra lévő cella üres akkor van-e távolabb P-s cella.

Az első esetben nem kell pirosítani, a másodikban igen.

A kód viszont az első esetben pirosít, a másodikban nem.

 

Előzmény: Delila10 (13454)
boraka Creative Commons License 2010.11.26 0 0 13455

Igen, igazad van, ez így nem jó.

Előzmény: SQLkerdes (13453)
Delila10 Creative Commons License 2010.11.26 0 0 13454

Mi van, ha a (target.row,i+3)-ik cella is "P"? Akkor nem kell színezni.

 

Szerintem a "P" betűk a pihenő napot jelentik, és a színezés azért kell, mert nem szabad 2 pihenő nap között 6-nál több napon dolgoztatni a munkavállalókat.

Előzmény: boraka (13446)
SQLkerdes Creative Commons License 2010.11.26 0 0 13453

Vagy nagyon elnézek valamit, vagy amit csinál az az, hogy megnézi egy cella tartalmát és ha az P ÉS a tőle 7 cellára levő cella tartalma is P akkor a kettő között pirosít.

Amit én mondok az az, hogy ha egy cella tartalma P és a tőle 7 cellára eső cella tartalma üres, de a nyolcadik cella P, akkor a fenti IF hamisra értékelődik ki, pedig a két P-s cella közötti távolság nagyobb mint 6.

 

Vagy.  A1=P,  C1=P és G1=P

Bár itt két szomszédos P közötti távolság sem nagyobb hatnál, de az A1 ellenőrzésekor (tartalma P= true) ellenőrzi a G1-et is (tartalma P= true), látszólag megfelel a kódba épített tesztnek, de mégsem olyan eset amit keresünk.

 

Én egy Do While-lal megkeresném a vizsgált cella utáni első P-s cellát és összehasonlítanám az oszlopszámukat.

Előzmény: boraka (13450)
boraka Creative Commons License 2010.11.26 0 0 13452

Próbáld meg így kikapcsolni a szűrőt:

 

' ha a munkalapon az autoszűrő aktív

If ActiveSheet.AutoFilterMode = True Then ActiveSheet.AutoFilterMode = False

Előzmény: wawabagus (13447)
SQLkerdes Creative Commons License 2010.11.26 0 0 13451

Ehelyett:

 

  'Delete hidden sheets
        a = 1
        While a <= Worksheets.Count
        If Not Worksheets(a).Visible Then
        Worksheets(a).Delete
        Else
        a = a + 1
        End If
        Wend

 

Próbált meg ezt:

 

a kód elejére tedd ezt:

 

Dim WS as worksheet

 

utána az a=1 és az azt követő rész helyére (Wend-del bezárólag)

 

For each ws in workbooks(i).worksheets

if not ws.visible then ws.delete

next

 

Ciklusba nem csak számokat lehet tenni, hanem object-eket is, profibb és gyorsabb (pld nem kell minden iterációnál összeszámolnia a sheet-eket).

Előzmény: wawabagus (13447)
boraka Creative Commons License 2010.11.26 0 0 13450

"Azt kellene leellenőrizni, hogy "P" és "P"-t tartalamzó cellák közti cellák száma nem több 6-nál. Amennyiben több jelölje ki a két "P" közti cellákat pirosal."

 

Szerintem ezt csinálja. 

Előzmény: SQLkerdes (13448)
SQLkerdes Creative Commons License 2010.11.26 0 0 13449

Hát ilyennek oka lehet pld ha nem is volt ott filter

Előzmény: wawabagus (13447)
SQLkerdes Creative Commons License 2010.11.26 0 0 13448

Tuti, hogy ez jó?

Mert úgy tűnik, mintha a konkrét cellától számított 7. cella tartalmát nézni, holott ha pld. a 8. cella "P" de a hetedik üres, akkor is pirosítani kell.

Előzmény: boraka (13446)
wawabagus Creative Commons License 2010.11.26 0 0 13447

Fárszthatlak benneteket még egyszer? /és nem utoljára?

Az alsó kódban minden működik kivéve a banális filter show all, ami normál makróban működik, de ebben  a környezetben nem...

 

WHY?????????????

 

Db = Workbooks.Count
Dim ws As Worksheet

For i = 3 To Db

    Workbooks(i).Activate
    'Delete hidden sheets
        a = 1
        While a <= Worksheets.Count
        If Not Worksheets(a).Visible Then
        Worksheets(a).Delete
        Else
        a = a + 1
        End If
        Wend
        
     'Delete filter
    Workbooks(i).Sheets(1).Activate
    ActiveSheet.ShowAllData
    
    Workbooks(i).Sheets(1).UsedRange.Copy
             
    Workbooks("Trackcode merge template.xls").Activate
    Sheets("Combine").Select
    usor = ActiveSheet.UsedRange.Rows.Count
    Cells(usor + 1, 1).Select
    
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    ActiveSheet.Paste
Next i

A baja:

 

boraka Creative Commons License 2010.11.26 0 0 13446

No, akkor íme egy másik megoldási javaslat:

 

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim meddig As Integer

 

  meddig = Cells(Target.Row, Columns.Count).End(xlToLeft).Column 'oszlopok száma az aktuális sor értékei alapján
 
  Range("A" & Target.Row).EntireRow.Interior.ColorIndex = xlNone
   
  For i = 1 To meddig
    If UCase(Cells(Target.Row, i)) = "P" And _
       UCase(Cells(Target.Row, i + 7)) = "P" Then
      Range(Cells(Target.Row, i), Cells(Target.Row, i + 7)).Interior.ColorIndex = 3
    End If
  Next i
 
End Sub

Előzmény: Delila10 (13438)
Törölt nick Creative Commons License 2010.11.26 0 0 13445

használtok vmilyen ERP-t? (SAP R/3, MS Navision, SAP SBO, stb...

Törölt nick Creative Commons License 2010.11.26 0 0 13444

Ja! Nem csak Ő nevezte "P"-nek az egyszerűség kedvéért?

Előzmény: SQLkerdes (13442)
Delila10 Creative Commons License 2010.11.26 0 0 13443

Megint javítanom kell magamat. Az elejére beírandó sor Cells().Interior.ColorIndex = xlNone, lemaradt a másolás elejéről a Cells()  :(

 

SQL: üres cellák esetén is színez a makró.

Előzmény: Delila10 (13440)
SQLkerdes Creative Commons License 2010.11.26 0 0 13442

Nem lesz egy komplex file :-)

P betük egy sorban köztük néhány üres cella.

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

küldd el a file-t. Tetszik a feladat, de így látatlanba...

Előzmény: MixM (13426)
Delila10 Creative Commons License 2010.11.26 0 0 13440

Az elejére érdemes betenni az  Interior.ColorIndex = xlNone sort.

 

Valószínűnek tartom, ha MixM kipirosított területet talál, átírja a P-t közelebbi cellába, és akkor töröltetni kell a kiabáló háttérszínt. 

Előzmény: Delila10 (13438)
Törölt nick Creative Commons License 2010.11.26 0 0 13439

hé, az tök barátságos, mosolyagtam amikor írtam csak az nem látszott :)

Előzmény: Or Kán (13434)
Delila10 Creative Commons License 2010.11.26 0 0 13438

Biztos én csinálok valamit rosszul, de ezek a képletek nem jöttek össze nekem. Írtam helyette egy makrót, ami a lapon lévő összes sort, és oszlopot vizsgálja, a "P"-k közötti cellák hátterét pirosra váltja, amennyiben a a darabszámuk eléri, vagy meghaladja a 6-ot.

 

Sub mm()
    Dim oszlop As Integer, uoszlop As Integer, sor As Integer, usor As Integer
    Dim kezd As Integer, veg As Integer, t As Boolean
    
    uoszlop = ActiveSheet.UsedRange.Columns.Count
    usor = ActiveSheet.UsedRange.Rows.Count
    
    For sor = 1 To usor
        For oszlop = 1 To uoszlop
            If Cells(sor, oszlop) = "P" And t = False Then
                kezd = oszlop
                t = 1
                GoTo Kov
            End If
            
            If Cells(sor, oszlop) = "P" And t = True Then
                veg = oszlop
                If veg - 1 - kezd > 5 Then
                    Range(Cells(sor, kezd + 1), Cells(sor, veg - 1)).Interior.ColorIndex = 3
                End If
                kezd = veg
            End If
Kov:
        Next oszlop
    Next sor
End Sub

Előzmény: SQLkerdes (13436)
wawabagus Creative Commons License 2010.11.26 0 0 13437

Na ne mááá :-)...

 

Én mindig is szerettem ide járni, pont mert mindenki tök normális és segítőkész. /ellentétben pl az access forummal, ahol már annyi idióta okostojással találkoztam/.

 

Hát pont azért van ez a fórum, hogy segítséget lehessen kérni, nem?

 

Mindenki jól jár :-), aki kérdez és aki válaszol.

 

Nem tudom, hogy az itt feltett kérdéseim alapján ez mennyire hihető, de a cégünkön belül /200ember :-), engem képzelnek az

"excel" szakértőnek. Ha kérdésük van mindig hozzám jönnek, főleg hogy tanfolyamot is csináltam az embereknek.

 

És én ezt konkrétan tök szeretem, mert pl:

1. nagyon okosnak érzem olyankor magam :-))), hogy mindent meg tudok oldani /majdnem :-d/

2. mindig tanulok valami újat

3. tök jó érzés, hogy meg tudom valakinek könnyíteni az életét

4. a hülye monoton feladataim mellett kifejezettem éhezek apró/ vagy nem apró kihívásokra

 

Szóval mardjon szerintem minden a régiben, ahogy eddig...mindig mindenki segítőkész volt és jófej :-)))

 

 

 

SQLkerdes Creative Commons License 2010.11.26 0 0 13436

Ugyanez másként:

 

=(MIN(IF(A1:$Q1="p",COLUMN(A1:$Q1),1000))-MAX(--($A1:A1="p")*COLUMN($A1:A1))-1>6)

Előzmény: SQLkerdes (13435)
SQLkerdes Creative Commons License 2010.11.26 0 0 13435

Ugyan már, most ez komoly?

 

Nem kell itt villongásokba átcsapni.

 

 

Inkább írjatok jobb megoldást, mint amit én itt javasolok:

 

=(MATCH("p",A1:$Q$1,0)+COLUMN(A1)-1-LOOKUP("p",$A$1:A1,COLUMN($A$1:A1))-1>6)

 

ezt a képletet kell használni a Conditional Formattingban, egyéb tudnivalók:

 

- a képlet feltételezi, hogy a kiértékelendő elemek az 1. sorban vannak

- a Conditional Formatting indításánál az A oszlopból (A1) kiindulva formázunk

- a kiértékelés a Q1 celláig működik, ha ennél nagyobb a kiértékelendő terület, akkor a képlet $Q$1 részét megfelelően ki kell cserélni, pld $AA$1-re

Or Kán Creative Commons License 2010.11.26 0 0 13434

Ha már elkezdted...

 

Ennél a hozzászólásnál miért nem volt problémád a nem barátságos hangnemmel?

 

http://forum.index.hu/Article/jumpTree?a=105148072&t=9009340

Előzmény: Delila10 (13433)
Delila10 Creative Commons License 2010.11.26 0 0 13433

De, azt hiszem, igen. Más fórumoktól csak a jót vegyük át, itt maradjon meg az eddigi barátságos, segítőkész szellem.

 

Nem érdemes ezt tovább ragozni.

Előzmény: Or Kán (13432)
Or Kán Creative Commons License 2010.11.26 0 0 13432

A sok kaptafa között a megoldást nem találtad véletlenül meg?

Előzmény: Delila10 (13431)
Delila10 Creative Commons License 2010.11.26 0 0 13431

Ott is jó helyen van – mondta a suszter a kaptafával kapcsolatban. :)

Lusta voltam az eredetit kikeresni.

Előzmény: Or Kán (13430)
Or Kán Creative Commons License 2010.11.26 0 0 13430

Ezt nem nekem kellett volna elsőként címezni.

Előzmény: Delila10 (13429)
Delila10 Creative Commons License 2010.11.26 0 0 13429

Ne valósítsuk meg itt a prog.hu lekezelő hangnemét!

Lehet segíteni iskolai feladatoknál is, rávezetéssel, nem kész megoldással. Miért baj az, ha valaki itt kér segítséget?

Előzmény: Or Kán (13424)
boraka Creative Commons License 2010.11.26 0 0 13428

;-)

Előzmény: Jimmy the Hand (13427)
Jimmy the Hand Creative Commons License 2010.11.26 0 0 13427

Ez jó! :-)

Előzmény: boraka (13425)
MixM Creative Commons License 2010.11.26 0 0 13426

Szia!

 

 Ez nem iskolai feladat. Kezdő vagyok az excel-ben. Ez egy munkahelyi beosztás elkészítését segítő táblázathoz kell. A célja, hogy lelellenőrizze, hogy az adott dolgozónál két pihenő közt nem telik el 6 napnál több.

 

Előzmény: Or Kán (13424)
boraka Creative Commons License 2010.11.26 0 0 13425

Hol akadtál el?

Előzmény: MixM (13423)
Or Kán Creative Commons License 2010.11.26 0 0 13424

Ez egy iskolai házi? Mert abban nem segítünk...:)

Előzmény: MixM (13423)
MixM Creative Commons License 2010.11.26 0 0 13423

Sziasztok!

 

 Segítségre lenne szükségem!

 Excel-ben adott egy sorban néhány cella, melynek tartalam "P". Azt kellene leellenőrizni, hogy "P" és "P"-t tartalamzó cellák közti cellák száma nem több 6-nál. Amennyiben több jelölje ki a két "P" közti cellákat pirosal.

 

Köszi!

Delila10 Creative Commons License 2010.11.25 0 0 13422

Igen, másik változóval. Pl. az egyik lapon lévő adatokból valamilyen feltételnek megfelelőeket akarsz átmásolni egy másik lapra, mindig a következő sorba.

Az első lapon egy for-next ciklusban figyelteted, megfelel-e az érték a feltételnek, majd minden másolás után növeled a változót, ami a beírás helyét határozza meg.

Előzmény: Törölt nick (13418)
boraka Creative Commons License 2010.11.25 0 0 13421

:-))

Előzmény: wawabagus (13416)
SQLkerdes Creative Commons License 2010.11.25 0 0 13420

Ja, boszorkányság ;-)

Előzmény: wawabagus (13419)
wawabagus Creative Commons License 2010.11.25 0 0 13419

Hát az excel szeszélyes...:-) és szokott furcsán gondolkodni :-)...ezt már többször is tapasztaltam.

 

A másik fajta copy működött tökéletesen az immediate ablakban...

 

Szóval én sem értem néha mit akar...

 

de már csak ilyen, a kedvére kell tenni :-)

 

 

Előzmény: SQLkerdes (13417)
Törölt nick Creative Commons License 2010.11.25 0 0 13418

szerintem for each ciklusban szokták használni, esetleg sima for-ban esetleg  másik változóval

Előzmény: wawabagus (13416)
SQLkerdes Creative Commons License 2010.11.25 0 0 13417

Nem hiszem, hogy én voltam a megoldás, mert nem működött a dolog.

 

Ami egy kicsit meglep, hogy az excel által nem szeretett változatnak is ugyanúgy működnie kellene, mint a szívének kedves usedrange-es megoldásnak...

Előzmény: wawabagus (13416)
wawabagus Creative Commons License 2010.11.25 0 0 13416

Köszi :-)

Hát képzeld én hogy örülök :-DDD...

 

Már a hajamat téptem.

Fogom alkalmazni ezt a kiírásos dolgot, tök prakikus.

 

Köszi szépen!!

Nem már átírtam azt a i+1-et...

 

Biztos rosszul emlékszem, de sokan mintha használtátok volna ezt.../rosszul emlékszem...szerintem nem :-))

 

na mindegy, ma is tanultam valami újat :-)!!!

 

Danke!!!

 

 

 

Előzmény: boraka (13413)
wawabagus Creative Commons License 2010.11.25 0 0 13415

Szia!

de de de kipróbáltam...

csak akkor még egyéb bajok is fennálltak és szerintem ezért nem működött...

annyit javítgattam hogy már nem is emlékszem, de azt hiszem valami olyan volt,  hogy

 

a Cells(usor + 1, 1).Select nem jó helyen volt...

 

De látod te voltál a megoldás :-DDDD!!

Köszi szépen :-)!

 

Persze szívhatok tovább, mert mindig jönnek újabb és újabb megoldandó problémák, úgyhogy még elszórakozom ezzel a makróval egy darabig :-).

 

Még jó, hogy ez szórakozás számba megy kivéve amikor megőrülök, hogy nem találom a megoldás :-DDD...

 

:-)

Köszi a segítséget!!

 

 

 

Előzmény: SQLkerdes (13414)
SQLkerdes Creative Commons License 2010.11.25 0 0 13414

De hisz a #13385-ben pont ezt javasoltam!

Azt hittem ezt is kipróbáltad és nem működött :-(

Előzmény: wawabagus (13411)
boraka Creative Commons License 2010.11.25 0 0 13413

Örülök! :-))

 

Ugye már az a "i = i + 1" sincs a for ciklusban? Mert az nagyon nem jó oda.

Előzmény: wawabagus (13411)
SQLkerdes Creative Commons License 2010.11.25 0 0 13412

Szerintem ezt a problémát az okozza, hogy a UsedRange object-ed még akkor is egy 1x1-es tartomány (az A1 cella) ha üres a worksheet.

Ennek eredményeként:

 

 usor = ActiveSheet.UsedRange.Rows.Count utasítás eredménye usor=1

    Cells(usor + 1, 1).select  eredménye, hogy (usor+1=1+1=2) a második sor kerül kiválasztásra

 

A becsapós, hogy amikor a sheet nem üres, hanem "csak" egy sort foglal el, ugyanez az eredmény áll elő.

Előzmény: wawabagus (13399)
wawabagus Creative Commons License 2010.11.25 0 0 13411

ÉS IGEN ÉS IGEN ÉS IEGN :-DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD...

 

Ez egy tök jó ötlet ezzel a lépésenkénti Msgbox-al :-DDDDDDDDD

Juhhéj

 

Az excel ezt nem szereti:

Range(workbooks(i).sheets(1).cells(1,1), workbooks(i).sheets(1).cells(1,1).end(xltoright).end(xldown)).copy

 

Míg ezt kedveli:

 Workbooks(i).sheets(1).usedrange.copy

 

SZUPER!!!!

 

Köszi köszi köszi!!!!!!!!!!!!!!!!!

:-)

Előzmény: boraka (13410)
boraka Creative Commons License 2010.11.25 0 0 13410

Be kellene határolni, hogy melyik lépésnél akad ki.

 

Tegyél be egy msgbox ""-ot az első utasítás után, majd, ha még jó, akkor így tovább.

 

For i = 3 to Db

...

Workbooks(i).Activate

Msgbox ""

...

Előzmény: wawabagus (13409)
wawabagus Creative Commons License 2010.11.25 0 0 13409

Beírtam és jót csinál mert a sheet1-el manipulál.

De nem megy egyáltalán végig a cikluson.

 

Kinyiffan az elsőnél...

 

Ez csak azért fura mert tök ugyanaz a kód ciklusba rakás nélkül jól működik...

 

 

Előzmény: boraka (13407)
boraka Creative Commons License 2010.11.25 0 0 13408

Ja, bocsi ezt elnéztem, valóban, javítsd ki Worksheets(1).Name-ra

Előzmény: boraka (13407)
boraka Creative Commons License 2010.11.25 0 0 13407

Worksheets(i) nincsen, csak worksheets(1) :-)

 

Nyilván nincs, ezért irattam ki elsőként az i értékét, hogy be lehessen helyettesíteni.

 

Szóval, végigment a ciklus vagy már az elején (az első kiírás után) elszállt?

Előzmény: wawabagus (13406)
wawabagus Creative Commons License 2010.11.25 0 0 13406

Worksheets(i) nincsen, csak worksheets(1) :-)

 

De ha lenne akkor ezt írja ki:

 

Tehát tök jó a kiválasztás. Nekem pont a Book2 kell.

Mivel nálam ugye worksheets(1) van ezért igazából Sheet1 lesz a név :-)...

 

Annyira idegesítő...

Tök nem értem...

Biztos valami banális hiba van a kódban.

 

Előzmény: boraka (13405)
boraka Creative Commons License 2010.11.25 0 0 13405

Javaslom, hogy az alábbi kis módosítással nézzük meg a for ciklus működését:

 

For i = 3 To Db

    MsgBox "i = " & i & Chr(10) & _
           "Workbooks(i).Name: " & Workbooks(i).Name & Chr(10) & _
           "Worksheets(i).Name: " & Worksheets(i).Name

   

    Workbooks(i).Activate

    .......

Előzmény: wawabagus (13404)
wawabagus Creative Commons License 2010.11.25 0 0 13404

Ezzel próbálkoztam tegnap.

De semmi eredmény :-(((((((((

Előzmény: boraka (13403)
boraka Creative Commons License 2010.11.25 0 0 13403

Először is az alábbi módosítást javaslom:

 

i = i+1

Next

 

helyett

 

Next i

Előzmény: wawabagus (13402)
wawabagus Creative Commons License 2010.11.25 0 0 13402

Szia!

Köszönöm az ötletet, de közben rájöttem, hogy azért nem tudta az Excel hova másoljon, mert cellákat töröltem és nem sorokat.

/Persze nem értem miért volt ez baj neki, de mindegy/

 

Az őrület környékez. Kikészülök ettől a #&@&# makrótól. Főleh, hogy szerintem olyan közel vagyok amegoldához és mégis távolt :-D.

 

Minden ami zöld a csodásan működik, mert kipróbáltam.

Ami problémás az a maradék...

DE MIÉRT??????????????????????????????

Megőrülök!!!!!!!!

 

Sub megnyitás()
respond = MsgBox("Do you have other excel file open?", vbYesNo, "Question:")
On Error GoTo Errorcatch
    If respond = vbYes Then
        MsgBox "Please close all excel files except the template!"
        Exit Sub
    Else

útvonal = "S:AdHoc AnalysisMACROKárolyi Krisztateszt"

With Application.FileSearch
    .LookIn = útvonal
    .FileType = msoFileTypeExcelWorkbooks
    .Execute
For i = 1 To .FoundFiles.Count
     Workbooks.Open .FoundFiles(i)
Next

End With
End If

Db = Workbooks.Count


For i = 3 To Db


    Workbooks(i).Activate
    Range(Workbooks(i).Worksheets(1).Cells(1, 1), Workbooks(i).Worksheets(1).Cells(1, 1).End(xlToRight).End(xlDown)).Copy
    Workbooks("Trackcode merge template.xls").Activate
    Sheets("Combine").Select
    usor = ActiveSheet.UsedRange.Rows.Count
    Cells(usor + 1, 1).Select
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    ActiveSheet.Paste


i = i + 1
Next
Exit Sub
Errorcatch:
MsgBox Err.Description
End Sub

 

 

Előzmény: boraka (13401)
boraka Creative Commons License 2010.11.25 0 0 13401

Szia! Próbáld meg az alábbit:

usor = Range("A" & Rows.Count).End(xlUp).Row 'sorok száma az A oszlop értékei alapján

Előzmény: wawabagus (13399)
wawabagus Creative Commons License 2010.11.25 0 0 13400

Mi több, lefuttatom a lenti kódot.

Megcsinálja.

 

A temlétből törlöm a bemásolt sorokat, mentem és becsukok mindent.

 

Újra nyitom a templétet, az excel mintha emlékzne, hogy ott volt korábban pár sor, amit töröltem és folytattja a "kitörölt", tehát fizikailag már nem ott lévő sorok alatt.

 

Ki a hülye? Én vagy az excel?

 

wawabagus Creative Commons License 2010.11.25 0 0 13399

Sziasztok!

Tesztelem továbbra is ezt a #&@&# makrót.

Immediat ablakban csináltam, úgy hogy részenként tesztelem...

Leegyszerűsítettem és kinyitottam a temlétet meg a Book2 fájlt, hogy megnézzem a copy működik-e.

 

Vicces mert úgy tűnik hiányzott egy cell select parancs és most már kopizza, viszont egy dolgot baromira nem értek...

Ahányszor futtatom a makrót mindig lejjebb és lejjebb másol, amit totál nem értek...hiszem ha én kitörlöm az előző bemásolt sorokat, akkor a használt sorok száma marad 1...

 

Nem tudom értitek-e...

 

A lenti részt teszteltem. És működik is. Elvileg hurrá. Viszont, ha újra próbálkozom ennek a kódnak a futtatásával, úgy hogy amit korábban bemásolt 2 sor törlöm, akkor ő mintha úgy látná, hogy ott továbbra is van valami...és a már kitörölt sorok alá másolja be az újat?

De miért?

 

 

Range(Workbooks("Book2").Worksheets("Sheet1").Cells(1, 1), Workbooks("Book2").Worksheets("Sheet1").Cells(1, 1).End(xlToRight).End(xlDown)).Copy
    
Workbooks("Trackcode merge template.xls").Activate
    
    Sheets("Combine").Select
    usor = ActiveSheet.UsedRange.Rows.Count
    Cells(usor + 1, 1).select    
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    ActiveSheet.Paste

a=usor + 1
?a

 

wawabagus Creative Commons License 2010.11.25 0 0 13398

Jaj...nem fejeztem be az előző hozzászólást :-):

Szóval ez rendben van, mert

1 = Personal

2 = template

3 = Book2

 

ez tök jó

 

 

De aztán a végén meg ezt írja ki:

 

Előzmény: SQLkerdes (13390)
wawabagus Creative Commons License 2010.11.25 0 0 13397

Szia!

Megcsináltam, amit mondtál és jó munkfüzet nevet ír ki:

 

 

Előzmény: SQLkerdes (13390)
MixM Creative Commons License 2010.11.25 0 0 13396

Sziasztok!

 

 Segítségre lenne szükségem!

 Excel-ben adott egy sorban néhány cella, melynek tartalam "P". Azt kellene leellenőrizni, hogy "P" és "P"-t tartalamzó cellák közti cellák száma nem több 6-nál. Amennyiben több jelölje ki a két "P" közti cellákat pirosal.

 

Köszi!

SQLkerdes Creative Commons License 2010.11.25 0 0 13395

Dim SourceWS As Worksheet

Set ws = Workbooks("book1").Worksheets(1)

SourceWS.Range("A1").CurrentRegion.Copy

 

helyett

 

Dim SourceWS As Worksheet

Set SourceWS = Workbooks("book1").Worksheets(1)

SourceWS.Range("A1").CurrentRegion.Copy

 

Előzmény: SQLkerdes (13394)
SQLkerdes Creative Commons License 2010.11.25 0 0 13394

Értem amit mondasz, de nézd meg a kódot ami a hibát generálta:

 

Range(workbooks(i).sheets(1).cells(1,1), workbooks(i).sheets(1).cells(1,1).end(xltoright).end(xldown)).copy

 

Itt nincsen nulladik sor v. oszlop az tuti.

Én arra gyanakszom, hogy vagy a workbook-kal vagy a worksheet(1)-el van valami gond.

 

Még egy elméleti hibalehetőség (nem gondolom, h ez a gond, de jobb helyretenni) az hogy wawabagus kódjában Sheets(1) szerepel, nem pedig Worksheets(1).  Elméletben ez okozhat olyan hibát, hogy ha az első sheet pld egy Chart akkor azt próbálja kijelölni és kopizni.  Én nem szeretek Sheet-re hivatkozni, mert sose tudja az ember, hogy olyan sheet-e, mint amivel igazán dolgozni szeretne...

 

 

Kicsit mellékszál:

A sok xldown és xltoright helyett lehetne használni a következő technikát is:

 

Dim SourceWS As Worksheet

Set ws = Workbooks("book1").Worksheets(1)

SourceWS.Range("A1").CurrentRegion.Copy

 

Merthogy a CurrentRegion object direkt erre van (excel felületen a Ctrl+*)

 

 

Előzmény: Jimmy the Hand (13391)
Jimmy the Hand Creative Commons License 2010.11.25 0 0 13393

Bocsi, a kódot dupláztam. Ugyanaz a kettő, csak az elsőből töröltem a felesleges üres sorokat.

Előzmény: Jimmy the Hand (13392)
Jimmy the Hand Creative Commons License 2010.11.25 0 0 13392

Valami ilyesmi lehetne a rövidített verzió:

 

Sub megnyitás()
    Dim respond As Long, útvonal As String
    Dim wbSource As Workbook, rngTarget As Worksheet
   
    respond = MsgBox("Do you have other excel file open?", vbYesNo, "Question:")
    If respond = vbYes Then
        MsgBox "Please close all excel files except the temple!"
        Exit Sub
    Else
        útvonal = "S:AdHoc AnalysisMACROKrisztateszt"
        With Application.FileSearch
            .LookIn = útvonal
            .FileType = msoFileTypeExcelWorkbooks
            .Execute
            For i = 1 To .FoundFiles.Count
                Set wbSource = Workbooks.Open(.FoundFiles(i))
                Set rngTarget = Workbooks("Trackcode merge template.xls").Sheets("Combine").Range("A" & Rows.Count).End(xlUp).Offset(1)
                wbSource.Sheets(1).UsedRange.Offset(1).Copy
                rngTarget.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                wbSource.Close SaveChanges:=False
            Next
        End With
    End If
End Sub

 

Sőt, szerintem ebből a "respond" begyűjtése és kiértékelése is kihagyható.

Sub megnyitás()
    Dim respond As Long, útvonal As String
    Dim wbSource As Workbook, rngTarget As Worksheet
    
    respond = MsgBox("Do you have other excel file open?", vbYesNo, "Question:")
    If respond = vbYes Then
        MsgBox "Please close all excel files except the temple!"
        Exit Sub
    Else

        útvonal = "S:AdHoc AnalysisMACROKrisztateszt"
        
        With Application.FileSearch
            .LookIn = útvonal
            .FileType = msoFileTypeExcelWorkbooks
            .Execute
            For i = 1 To .FoundFiles.Count
                Set wbSource = Workbooks.Open(.FoundFiles(i))
                Set rngTarget = Workbooks("Trackcode merge template.xls").Sheets("Combine").Range("A" & Rows.Count).End(xlUp).Offset(1)
                wbSource.Sheets(1).UsedRange.Offset(1).Copy
                rngTarget.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                wbSource.Close SaveChanges:=False
            Next
        End With
    End If


End Sub
Előzmény: wawabagus (13366)
Jimmy the Hand Creative Commons License 2010.11.25 0 0 13391

Nem worksheet-tel van baj, hanem olyan range hivatkozás van, ami nem létezik.

Pl nulladik sor- v. oszlopindex.

Előzmény: SQLkerdes (13390)
SQLkerdes Creative Commons License 2010.11.24 0 0 13390

Akkor a "for i=3 to db" ciklus for utáni első sorába még tedd be ezt, hogy lássuk melyik workbookkal van baj:

 

MsgBox workbooks(i).fullname

 

 

Előzmény: wawabagus (13366)
wawabagus Creative Commons License 2010.11.24 0 0 13389

Az elsőt :-)...

 

Most futok, mert itt hagynak :-(...

 

Köszi :-)!!!!!!!!!!

Előzmény: SQLkerdes (13387)
wawabagus Creative Commons License 2010.11.24 0 0 13388

Le kell lépjek most sajnos, mert várnak rám...

 

Köszönöm az eddigi segítséget nektek...!!!

 

Holnap folytatom a hajtépést :-D...

 

Szép estét mindenkinek!!!

 

SQLkerdes Creative Commons License 2010.11.24 0 0 13387

Melyik módszert választottad?

 

Előzmény: wawabagus (13386)
wawabagus Creative Commons License 2010.11.24 0 0 13386

Method 'Range' of object '_Worksheet" failed.

 

:-(.

Előzmény: SQLkerdes (13385)
SQLkerdes Creative Commons License 2010.11.24 0 0 13385

Nyírjuk ki a kódnak ezt a részét:

 

Workbooks(i).Sheets(1).Range(A2).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy

 

Ehelyett használd a következőt:

 

Range(workbooks(i).sheets(1).cells(1,1), workbooks(i).sheets(1).cells(1,1).end(xltoright).end(xldown)).copy

 

 

 

Vagy

 

Workbooks(i).sheets(1).usedrange.copy

 

A második lehet, hogy nagyobb területet másol ki mint az első, ha vannak pld üres sorok a táblázatodon belül.

Előzmény: wawabagus (13380)
wawabagus Creative Commons License 2010.11.24 0 0 13384

Nem válaszoltam...nincsenek rejtett sheetek.

 

Előzmény: SQLkerdes (13382)
wawabagus Creative Commons License 2010.11.24 0 0 13383

Igen ez Personal mindig bekavar.

De persze nyitva van...ő az első workbook...

/már ahogy én értelmezem/.

 

Pont ezért a ciklus a 3 to DB, mert

1 = personal

2 = template

3 stb meg a megnyitott fájlok

 

Persze tisztában vagyok azzal, hogy nem mindenkinek lesz perszonalja és ezzel még kombinálnom kell.

De még nagyon elején voltam a makrómnak...meglőtt mielőtt elkezdtem volna szépítgetni :-)

 

:-)

 

Előzmény: SQLkerdes (13382)
SQLkerdes Creative Commons License 2010.11.24 0 0 13382

Na, ezzel már megyünk valamire!

 

Vannak rejtett worksheetjeid bármelyik érintett workbookban?

Nem lehet, hogy a Personal-od (ami ugyi alapból rejtett) worksheet-jét próbálod manipulálni a for ciklus valamely részében?

Előzmény: wawabagus (13380)
SQLkerdes Creative Commons License 2010.11.24 0 0 13381

Na ne má!

Tessék csak megírni, itt a névtelenség (nicknévség) homályában semmi sem ciki!

Előzmény: wawabagus (13378)
wawabagus Creative Commons License 2010.11.24 0 0 13380

Select method of Worksheet class failed.

Ezt írta ki.

 

A ciki hiba meg az volt, hogy a megnyitott munkafüzetekben, csak az első sorban volt adat tehát a select A2 stb-nek semmi lrtelme nem volt :-D.

 

De kijavítottam és továbbra is baja van...

 

:-(

SQLkerdes Creative Commons License 2010.11.24 0 0 13379

Lássuk mit mond a hibacsapda, utána okosabbak leszünk.

Legalább azt lesz esélyünk megtudni, hogy melyik object-tel van a gond, az is valami :-)

Előzmény: wawabagus (13376)
wawabagus Creative Commons License 2010.11.24 0 0 13378

Asszem rájöttem a hibára és annyira ciki, hogy le sem merem írni :-DDDD

Leellenőrzöm :-D

Előzmény: SQLkerdes (13375)
Törölt nick Creative Commons License 2010.11.24 0 0 13377

Hülyeséget írtam?, for each-ben szoktak így értéket adni

Előzmény: Törölt nick (13374)
wawabagus Creative Commons License 2010.11.24 0 0 13376

Igen igen...igazad van a "A2"-t illetően, de ezt már korábban észrevettem és kijavítottam, de továbbra sem jó...

 

Az automatikus becsukás is jó ötlet, de mi van, ha menteni akarja majd, vagy pont az hogy nem akarja menteni...?

Bár biztos ez is kiküszöbölhető :-)...

 

Igen tudom, hogy mindig mondjátok, hogy hagyjam el a selecteket.

Mindig próbálom is utólag átnézni, hogy lehet-e valamit rövidíteni...szoktam selecteket törölni, de volt sokszor, hogy anélkül nem működött :-(...nem értem miért...mintha nem mindig lehetne elhagyható.

 

De elvileg selectel, vagy nélküle működnie kellene...

 

Tök igazad van, hogy törekedni kell a rövid tömör makrókra...:-).

De úgy vagyok vele, hogy ha megspórol nekem, vagy a kollégáimnak tobb óra munkát, akkor már csak hab a tortán hogy 2mp helyett 5-öt fut :-)...

 

De törekszem azért hogy tömör legyek, de még nincs meg a tudásom hozzá.

Tákolom őket össze mindenhonnan :-)...

 

 

Előzmény: SQLkerdes (13371)
SQLkerdes Creative Commons License 2010.11.24 0 0 13375

A gond az i=i+1 résszel van (logikailag), de szerintem az nem kéne KO-zza a kódot, csak fura dolgokat csináltat vele (pld az i=2 értékre nem hajtja végre a ciklusban foglaltakat).

 

írd meg mit jelzett ki a hibacsapda

Előzmény: wawabagus (13372)
Törölt nick Creative Commons License 2010.11.24 0 0 13374

az i=i+1 típusú értékadást elég gyakran használják for cikluson belül. Számláló értékadásnak hívják. Ebben az esetben a 4-el pont tud mit kezdeni a "Next" is (For i=3 to DB)

 

az az usor = usor tényleg gyanús, lehet ott lesz a hiba? Így a változóba egy logikai érték kerül - amit persze hogy a Cells() nem tud hova rakni - és ebből lesz a 400-as error (ShowModal) hiba?

Előzmény: SQLkerdes (13370)
SQLkerdes Creative Commons License 2010.11.24 0 0 13373

És még egy ha a lentiek egyike sem működne:

 

A Responde rész után rakd ezt be:

 

On Error GoTo Errorcatch

...(ide jön a kód többi része)...
---(közvetlenül az end sub elé még ezt rakd be, hogy az end sub most így nézzen ki:

 

exit sub

Errorcatch:
MsgBox Err.Description

 

end sub

 

Amit kiír azt másold be ide nekünk.

wawabagus Creative Commons License 2010.11.24 0 0 13372

Szia!

Az útvonal működik rendesen. Ezt a részét le tudtam tesztelni korábban.

 

usor=usor stb...huh ezt nem vettem észre, de kijavítottam és nem működik...

 

A For i=3 to DB

 

Next i

 

Kellene nem?

 

Egyesével szeretnék menni :-(...nem értem ezt.

 

Továbbra sem jó neki valami...

 

Elméletben már jónak kéne lennie nem?

 

Előzmény: SQLkerdes (13370)
SQLkerdes Creative Commons License 2010.11.24 0 0 13371

Workbooks(i).Sheets(1).Range(A2).Select

 

Hacsak nincs olyan range-ed aminek az A2 nevet adtad (nem kéne) akkor a szintaktika a következő legyen:

 

Workbooks(i).Sheets(1).Range("A2").Select

 

Szerintem a kód írható gyorsabbra, pld a Select-ek elhagyásával.

 

Az első részben lévő ellenőrzésből is kihagyható a felhasználó input-ja, azt kell ellenőrizni, hogy a nyitott workbook-ok neve megfelel-e az elvárásaidnak.  Mivel az egyetlen olyan workbook-nak ami nyitva kell legyen tudod a nevét (a template), akár kódból be is csukhatod a nyitott, de felesleges workbookokat.


Előzmény: wawabagus (13366)
SQLkerdes Creative Commons License 2010.11.24 0 0 13370

Én még ilyet sem láttam, de lehet ez az én hibám:

 

usor = usor = ActiveSheet.UsedRange.Rows.Count

 

Ez viszont hacsak nem direkt csináltad nem jó:

 

For i=3 to DB

...

i=i+1

Next

 

A for változóját extrém ritkán manipuláljuk a for cikluson belül.  

Simán lehet, hogy az i a 4 értéket veszi fel és a Next nem tud mit kezdeni vele.  Ha kettesével akarsz lépkedni a For-ban akkor használd a Step-et

 

For i=1 to DB step 2

 

...

 

Next

Előzmény: wawabagus (13366)
SQLkerdes Creative Commons License 2010.11.24 0 0 13369

Első ránézésre nekem gyanús az "útvonal" nevű változó.

Próbáld meg utvonal-ként

Előzmény: wawabagus (13366)
wawabagus Creative Commons License 2010.11.24 0 0 13368

Hát, jó azért én is sokat tanultam könyvekből :-). /Excel hacks pl, meg elődöm exceleiből, meg a netről/.

Én szeretem ezt az interaktív dolgot a fórumozásban...a makrós könyvek meg annyira érthetetlenek nekem.

Nekem főleg az elején segített a forum /ti/, meg most hogy makró írást próbálgatom :-).

:-)

 

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

Napuff. Most mindenki magára fogja venni. Én is sok mindent tanultam meg itt - de inkább könyvekből, meg angol fórumokon. Ill. prog.hu (Ja és nem csak excel VBE-t)

Előzmény: wawabagus (13364)
wawabagus Creative Commons License 2010.11.24 0 0 13366

Sziasztok!

400-as error code?

Mi a baja a macronak?

Ha debugot mondana még le tudnám követni mit vétettem, de így...? Gőzöm sincs.

Nem értem mit kell javítanom...

 

A makró egy folderból kinyit minden ott lévő fájlt és bemásol egy munkafüzetbe...elméletileg.

Tisztában vagyok azzal, hogy még sokat kell alakítani a makrón, de ez a kód most meglőtt...

Ti értitek mit akar nekem mondani?

Köszi előre is

------------

Sub megnyitás()

respond = MsgBox("Do you have other excel file open?", vbYesNo, "Question:")
    If respond = vbYes Then
        MsgBox "Please close all excel files except the temple!"
        Exit Sub
    Else

útvonal = "S:AdHoc AnalysisMACROKrisztateszt"

With Application.FileSearch
    .LookIn = útvonal
    .FileType = msoFileTypeExcelWorkbooks
    .Execute
For i = 1 To .FoundFiles.Count
     Workbooks.Open .FoundFiles(i)
Next

End With
End If

Db = Workbooks.Count

For i = 3 To Db 'azért 3, mert nekem megnyíllik a personalom is
    Workbooks(i).Sheets(1).Range(A2).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy

    Workbooks("Trackcode merge template.xls").Select
    Sheets("Combine").Select
    usor = usor = ActiveSheet.UsedRange.Rows.Count
    Cells(usor + 1, 1).Select
    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    ActiveSheet.Paste
i = i + 1
Next

End Sub

Mad árka Creative Commons License 2010.11.24 0 0 13365

Delila10, boraka és robbantómester: köszönöm a segítségeteket, megvilágosodtam minden feltett kérdés kapcsán. :)

wawabagus Creative Commons License 2010.11.24 0 0 13364

OFF

Ajaj, én vajon hol ülök :-)?

Leellenőriztem, hogy 2005 óta itt élősködöm :-).

Tudásom 60% kb itt szereztem :-)...hála nektek!

ON

Törölt nick Creative Commons License 2010.11.24 0 0 13363

OFF

Próbálok a hozzászólásban iróniát látni (nem a tiédben) - biztosan naív vagyok.

Én úgy látom, hogy a kérdést feltevők nagyobb része egy kövön ül: Valaki megveregeti a vállát a tiéd helyett.

Viszont vannak pofátlansági fokozatok. A csúcsán a kolléga van, mert nem tud semmit - az alján pedig az, aki érti is hogy miről van szó, ha nem érti akkor pedig kitapossa az utat a világosságig bármi áron.

Aki nem foglal helyet ebben a piramisban, az meg segít önzetlenül - mert jó neki is hogy (idegeneknek) megmutatta hogy milyen ügyesokos. Jó a másik félnek is mert: Tanult valamit, vagy épp megveregette a főnöke a vállát.

Egyébként van Rászi-nál egy jó adag szemtelen provokáció is alighanem - viszont simán tükröt tart azok elé, akik kész megoldást adnak, pedig sokszor érezni egy egy kérdésnél, hogy nem kéne (pl. házifeladatosok)

Prog.hu-n ütik az ilyeneket. ( és szerintem nem kell azt írom, hogy "más fórumokon")

ON

Előzmény: SQLkerdes (13362)
SQLkerdes Creative Commons License 2010.11.24 0 0 13362

OFF

Én nem tudom, nekem nem szimpatikus mikor valaki nyíltan azt hangoztatja, hogy más munkájával fog babérokat learatni.

Lehet old school vagyok, de ez szerintem nem helyes.

Nyilván ennek is vannak fokozatai, de amikor valaki nem tűnik érteni a megoldást, amit aztán majd sajátjaként prezentál, az a skála tetején van nálam.

Ha valaki még nyíltan hirdeti is, az meg a skála tetejének a teteje.

ON

Előzmény: Rászid-lob (13361)
Rászid-lob Creative Commons License 2010.11.24 0 0 13361

Rendes tőled, hogy ilyen sokat kinézel a főnökből. (- nem mondom el neki)

Megnyugtatlak. Nem fogja tudni. Elég jól eltudom magam adni.

 

Egyébként minden elismerésem annak, aki így keni-vágja a programozást.

Előzmény: Törölt nick (13358)
Törölt nick Creative Commons License 2010.11.23 0 0 13360

Köszi, én begyűjtöttem.

 

Előzmény: SQLkerdes (13359)
SQLkerdes Creative Commons License 2010.11.23 0 0 13359

VBA-ban érdekelteknek egy kis szines:

 

http://www.codeforexcelandoutlook.com/blog/2008/09/trimming-cells-before-and-after/

 

Én nem tudtam, hátha más is érdekesnek találja a következő technikát a VBA kódok felgyorsításához:

- a worksheet tartalmát beolvassuk egy VBA változóba (array)

- utána nem a worksheet-tel dolgozunk, hanem az array-el,

- majd a végén az eredményeket visszaírjuk a worksheetbe.

 

Úgy tűnik, hogy amikor a VBA kommunikál az excellel az meglehetősen lassú, így ez a technika rendkívüli gyorsulást tud okozni!

 

A cikkben egy sima TRIM függvényt használ és a worksheet-es verzió 25 másodpercig fut le, a fenti array-es tachnika 0,06 (!) másodperc alatt!!!

 

Nyilván ezt a technikát nem lehet mindenhol használni, de ahol lehet ott úgy tűnik nagyon durván felgyorsítja a futást, ha az excel-lel történő kapcsolattartást minimalizáljuk.

Törölt nick Creative Commons License 2010.11.23 0 0 13358

Nyugi, a főnököd tudni fogja hogy nem te csináltad ;)

Előzmény: Rászid-lob (13355)
Or Kán Creative Commons License 2010.11.23 0 0 13357

Igazán nincs mit: neked öröm nekem szórakozás. :)

 

A hiba: a lapok összemásolásánál lehagyja egy-egy lap utolsó sorát a program. Ez azért van, mert amikor az új munkafüzetbe másol, akkor megkeresi az éppen aktuális (a másolás utáni) utolsó sort, és annak megfelelően rakja oda az új lap adatait. itt azonban elkövettem azt a hibát, hogy az utolsó sor után nem léptettem a számlálót, így "törli" (merthogy rámásol) az új lap első sora az előző utolsóját. Ezért a programot az alábbiak szerint kell változtani (kézzel be tudod írni a kódba, csak odakattintasz az egérrel: egy "+1"-et kell beírni):

 

sub msn()

.

.

.

 

k = k.Row+1

Next

End Sub

 

Előzmény: Rászid-lob (13355)
Delila10 Creative Commons License 2010.11.23 0 0 13356

Az eredeti kérdésben (13338) kifejezetten stringek szerepelnek a második oszlopban. Ha az FKERES hamis ága 0, a függvénnyel kihozott érték 0 (szám) lesz, ha a segédtáblában nem szerepel az A oszlop értéke, és ez zavaró lehet.

 

Az is igaz viszont, ha a hamis ág "", a felhasználó esetleg nem veszi észre, hogy nem szerepel a B oszlopban a függvény. :)

Előzmény: Törölt nick (13354)
Rászid-lob Creative Commons License 2010.11.23 0 0 13355

Mégegyszer köszönöm.

Úgy néz ki rendben van a dolog, már csak egy kis formázgatás van hátra. Utána pedig megyek a főnökhöz learatni a babérokat. Remélem nem gond, ha nem dicsekszem vele, hogy külső segítség is kellett.

Rendes volt tőled, hogy így ismeretlenül segítettél.Mégegyszer köszönöm.

 

Én nem vettem észre semmit, ezért elárulhatnád hogy mit kell látnom.

 

 

Előzmény: Or Kán (13339)
Törölt nick Creative Commons License 2010.11.22 0 0 13354

Te miért szereted jobban az üres stringet, mint ""?

Ezzel csak egy baj szerintem, ami problémát okozhat:

0 <> ""

és ha számokkal, logikai értékekkel dolgozol, akkor erre szükség van.

Előzmény: Delila10 (13351)
Törölt nick Creative Commons License 2010.11.22 0 0 13353

Jajaa, megcseréltem - de rájött volna magától is.  Egyébként 2007-es excelben felesleges ez a módszer(HAHIBA() Meg tényleg előbb írtad, csak én nem olvastam végig a tiédet. Ügyes vagy :)

Előzmény: boraka (13352)
boraka Creative Commons License 2010.11.22 0 0 13352

HA(HIBÁS(fkeres képlet);fkeres képlet;0)

helyett szerintem ez kellene: 

HA(HIBÁS(fkeres képlet);"";fkeres képlet).

 

Egyébként, pont az utóbbit javasoltam megoldásként is.

Előzmény: Törölt nick (13350)
Delila10 Creative Commons License 2010.11.22 0 0 13351

Robbantómesternek teljesen igaza van a ha(hibás...), ill. a hahiba(...) függvénnyel. A végükön lévő 0 helyett inkább ""-et (üres stringet) írnék, de ez ízlés kérdése.

 

Kipróbáltam, a 2007-es verziónál csak a 17-18-ik beírt adat után hajlandó a következő sorban önállóan hozni az előző sor képletét.

 

Itt tudod beállítani:

 

Előzmény: Mad árka (13349)
Törölt nick Creative Commons License 2010.11.22 0 0 13350

amúgy ezt így szokták:

HA(HIBÁS(fkeres képlet);fkeres képlet;0)

 

excel 2007-ben egyszerűbb:

HAHIBA(fkeresképlet;0)

Előzmény: Mad árka (13349)
Mad árka Creative Commons License 2010.11.22 0 0 13349

Megnéztem ezt az adattartomány végi beállítást, alapértelmezetten bejelölt nálam, de nem folytatta sem a formázást, sem a képletet.  Korábban azt a megoldást használtam hasonló esetekben (ha ugyanarra gondolunk), hogy bevittem az egész képlet elé egy HA függvényt, megadva, hogy ha semmi sincs a cellában, akkor semmit se jelenítsen meg, ha ez nem igaz, akkor pedig jöhet a másik függvény (ez esetben FKERES). Így tudtam elkerülni, hogy az egész adattáblában a 3200. sorig hiányzik-hiányzik-hiányzik hibaüzenet szerepeljen, viszont ha folytattuk az adatbázist, akkor automatikusan kitöltötte a kérdéses oszlopokat is. 

 

Konkrétabban a példánál maradva:

=HA(A5="";"";FKERES(A5;U:V;2;0))

 

Ennek a kiküszöbölésére volna az adattartomány végén a formázás/képletek folytatása lehetőség bejelölése? (Nem tudom, számít-e bármit, de 2007-es Excellel dolgozom.)

Előzmény: Delila10 (13340)
Mad árka Creative Commons License 2010.11.22 0 0 13348

A Súgó sok szempontból hasznos és az elmúlt órákban elég sok részét el is olvastam, csak sajnos épp az Exceles alapműveltség hiányzott a maradéktalan felfogásához, ennek köszönhetően vagy másfél órát szűköltem többek között az FKERES függvénnyel, de egyszer se sikerült korrektül megírnom a legbugyutább példát használva sem. Szóval a mai nap kiteljesedését tényleg a Ti segítségetekkel értem el, ráadásul a most használt képlet konkrétan negyede annak, amit én a(z) (F)KERES, HA és VAGY függvényekből összetákoltam. :) Ha esetleg tanítjátok is az Excelt, szívesen elküldöm e-mailben a mintáját, elrettentésül másoknak a "hogyan ne" tanfolyamra. ;))

 

No, a lényeg: köszi! :)

Előzmény: Delila10 (13346)
boraka Creative Commons License 2010.11.22 0 0 13347

Nagyon szívesen. :-)

Előzmény: Mad árka (13345)
Delila10 Creative Commons License 2010.11.22 0 0 13346

Arra, hogy az U:V tartomány 2. oszlopából adja vissza az értéket, amit az U oszlopban megtalált. Olvasd el a súgó ide vonatkozó leírását, biztosan többet segít.

Előzmény: Mad árka (13344)
Mad árka Creative Commons License 2010.11.22 0 0 13345

Boraka és Robbatómester, Nektek is nagyon köszönöm, most már tényleg mindent értek (ebben a témában legalábbis). Az pedig külön öröm, hogy a tippek működnek is. :-)

Mad árka Creative Commons License 2010.11.22 0 0 13344

Nagyon köszönöm, pont erre gondoltam, kipróbáltam és működik is.

 

A képletben egyébként a 2 és a 0 mire vonatkozik?

Előzmény: Delila10 (13340)
Törölt nick Creative Commons License 2010.11.22 0 0 13343

a sok "függő" aki 10 percenként benéz ide... :DD

Törölt nick Creative Commons License 2010.11.22 0 0 13342

fkeres jó.

Fkeres(amit keresel;ahol keresed, az első oszlopa ennek az "amitkeresed" legyen);visszaadandó oszlop száma az "ahol keresed"-ben;0)

Előzmény: Mad árka (13338)
boraka Creative Commons License 2010.11.22 0 0 13341

Az FKERES jó lehet, ha pl. az alapadatokat a Munka1 munkalapra a kereső részt pedig a Munka2 - "B" oszlopába teszed az alábbi ábra alapján. A képletet innen ki tudod másolni: =HA(HIBÁS(FKERES(A1;Munka1!$A$1:$B$3;2;0));"";FKERES(A1;Munka1!$A$1:$B$3;2;0))

 

Előzmény: Mad árka (13338)
Delila10 Creative Commons License 2010.11.22 0 0 13340

Két üres oszlopba beviszed az A oszlop feltételezhető adatait (körte, alma, barack), melléjük a hozzájuk tartozó szöveges információt (uff, öff, eff).

Legyen a példában a gyümölcsök helye az U, a másik a V oszlop.

Feltételezve, hogy a címsor miatt az adatok az A2 cellában kezdődnek, a B2 képlete:

=FKERES(A2;U:V;2;0)

Ezt másold le mondjuk a 6. sorig.

 

Ha az Eszközök/Beállítások Szerkesztés fülén be van jelölve az "Adattartomány végén a formázás és a képletek folytatása" jelölő, az ezután bevitt adatok (A oszlop) mellé automatikusan beíródik a képlet.

 

Az FKERERES utolsó paramétereként megadott 0 helyett a HAMIS is jó.

Előzmény: Mad árka (13338)
Or Kán Creative Commons License 2010.11.22 0 0 13339

Nincs mit. :)

 

(Lesz majd egy kisebb probléma a futtatás után, nem tudom, rájössz-e, ha igen, jelezz vissza. Ha nem, holnap megírom a dolgot.)

Előzmény: Rászid-lob (13337)
Mad árka Creative Commons License 2010.11.22 0 0 13338

Sziasztok! Elvesztem az Excel bugyraiban, ha van szabad segítő kéz, szeretnék kérni egyet. 

 

A kiindulási helyzet: adatbázist építek (tákolnék). Az egyik oszlopba megnevezések kerülnének, mondjuk körte, alma, barack. Minden megnevezésnek megvan a maga "értéke", legyen így: körte = uff, alma = öff, barack = eff. (Szándékosan nem számokat adtam meg, mind szöveges.) Azt szeretném elérni, hogy ha beírom az első cellába, hogy alma, a második oszlopban jelenjen meg automatikusan, hogy "öff".

 

Ti milyen függvényt használnátok erre? Én a KERES-sel próbálkoztam, de jó eséllyel hibásan, ezután az FKERES-sel, de ott már nem is tudtam szabályosan megadni a képletet, valamit mindig elszúrtam (viszont cserébe, azt hiszem, az összes hibaüzenetet végigolvastam már :).

 

Köszönök minden sugallatot.

Rászid-lob Creative Commons License 2010.11.22 0 0 13337

Húúúúúú!

 

Nagyon köszönöm, úgy néz ki, hogy sikerül, de otthon fogom élesben kipróbálni.

 

Minden esetre nagyon köszönöm.

Ha esetleg valami mégsem menne, akkor lehet, hogy még kérek tanácsot.

 

Üdv, és köszönöm.

Előzmény: Or Kán (13336)
Or Kán Creative Commons License 2010.11.22 0 0 13336

Semmi baj. (Próbáld ezt a leírást lépésről lépésre követni).

 

1. Nyisd meg az egyik olyan fájlt, amiben az adatok vannak (csak ez az egy fájl legyen nyitva)

 

2. Nyomj egy alt gombot, tartsd lenyomva és nyomj egy F11-et (ekkor látod meg az excel makrószerkesztőjét, ami egy teljesen más képernyő, mint az eddig megszokott)

 

3. a képernyő bal oldalában, egy keskeny ablakban látszik az a fájlod (a neve), ami meg van nyitva

 

4. Kattints rá erre a fájlnévre. A kattintás után megjelennek a fájl munkalapjainak nevei

 

5. Még mindig ebben a bal oldali ablakban görgesd le a munkalapneveket a fájl végéig

 

6. Találd meg a "ThisWorkbook" lapnevet és kattints rá a névre. Ekkor a képernyő jobb oldalán látsz egy nagy kiterjedésű teljesen fehér ablakot

 

7. Ebbe a nagy fehér ablakba kopizd bele azt a programot, amit az előző hozzászólásomban írtam (a sub sortól kezdődően az end sub-ig)

 

8. A bekopizott programot indítsd el úgy, hogy a kurzorod a Sub soron van, az egérrel pedig felmész a menüsor ikonjaihoz és rakattintasz a zöld nyílra (kb a képernyő közepén felül, a menüsor alatt)

 

9. A futtatás után kapsz egy új munkafüzetet, amibe be vannak kopizva a munkafüzetlapokról az adatok

Előzmény: Rászid-lob (13335)
Rászid-lob Creative Commons License 2010.11.22 0 0 13335

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

Sajnos ennyire nem értek az excelhez, de próbálom felfogni.

A makrók - makrók rögzítése nevű ablakba kellene bemásolni a Leírás nevű mezőbe?

 

Bocs, ha zöldfülűnek látszom, de azért díjazzátok nekem, hogy próbálkozom.

 

ctrl-c és ctrl-v kombináció nem másol be semmit, hiába nyomok előtte alt+F11 -et.

 

Köszönöm.

Előzmény: Or Kán (13334)
Or Kán Creative Commons License 2010.11.22 0 0 13334

Próbáld ki ezt a makrót: (Az egyik excel fájlod "ThisWorkbook" makrólapjára kellene másolnod az alt+"F11" megnyomása után - sima copy paste-el. Ha megvan a másolás, felül a menűsorban van egy kis zöld nyíl, arra kellene rákattintani a makró futtatásához. A program csak akkor működik jó, ha minden munkafüzetlap első sora tartalmaz adatokat, és a munkafüzetlapokon nincs sor-, vagy oszlopkihagyás az adatok között.)

 

Sub msn()

b = ActiveWorkbook.Name

Workbooks.Add

n = ActiveWorkbook.Name

Workbooks(b).Activate

k = 1

For i = Workbooks(b).Sheets(1).Index To Workbooks(b).Sheets.Count

Set s = Workbooks(b).Sheets(i).Cells(1, "a").End(xlDown)

s = s.Row

Set o = Workbooks(b).Sheets(i).Cells(1, "a").End(xlToRight)

o = o.Column
Range(Workbooks(b).Sheets(i).Cells(1, 1), Workbooks(b).Sheets(i).Cells(s, o)).Copy

Workbooks(n).Sheets(1).Cells(k, 1).PasteSpecial

Set k = Workbooks(n).Sheets(1).Cells(1, 1).End(xlDown)

k = k.Row

Next

End Sub

 

Előzmény: Rászid-lob (13333)
Rászid-lob Creative Commons License 2010.11.22 0 0 13333

Sziasztok!

 

A segítségeteket szeretném kérni. Egy 1280 oldalas *.pdf fájlt átkonvertáltunk excelbe. Sajnos a konvertáló program 5 excel fájlt készített. Minden egyes excel fájl 300 oldal táblázatot tartalmaz. Sajnos minden egyes oldal a táblázat külön lapján (fülecskéjén) szerepel.

 

A kérdésem az, hogy az egyes lapok tartalmát hogyan lehetne a legelső lapra varázsolni úgy, hogy elkerüljem a manuális ctrl-c és ctrl-v kombinációt.

 

A lapokon található táblázatok természetesen ugyanannyi oszlopból állnak.

 

Köszönöm.

 

Törölt nick Creative Commons License 2010.11.21 0 0 13332

van, a cellakijelölést kell letiltani

Előzmény: NeomatiK (13331)
NeomatiK Creative Commons License 2010.11.21 0 0 13331

Köszönöm.

 

 

Egyébként van olyan jellegű védelem, hogy ne működjön a másolás?

Vagyis ha nyit egy új munkafüzetet, az enyémből ne tudja átmásolni az egészet az összes cella (vagy amelyik rész szimpatikus neki) kijelölésével?

Előzmény: Or Kán (13320)
SQLkerdes Creative Commons License 2010.11.20 0 0 13330

Robbantómester, köszi az ötletet, megfontolom.

 

Csak kis színesként írom, hogy kicseréltem a Find LookIn property-jét xlValue-ról xlFormula-ra és 100-szoros gyorsulát értem el.

Ami korábban 128 másodpercig tartott, az ezzel a property-vel 1,23 másodpercig (minden más változatlanul hagyása mellett).

Ki érti ezt, ki érti ezt, én nem (KFT rulez)

 

Tuti valami bug...

Előzmény: SQLkerdes (13326)
Törölt nick Creative Commons License 2010.11.20 0 0 13329

Még jobb, ha csak simán:

Application.Matc(...) (Amúgy a HOL.VAN függvény megfelelője)

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

Bocs, nem MatchCase, hanem csak Match.

Így: WorkSheetFunction.Match(...)

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

A Find miatt működik nagyon lassan. Ráadásul ezt beleteszed egy ciklusba is. Képzled el, hogy végigmegy a Find a for ciklus lépésszám x sorok száma alkalommal végigkeres. Ez azért lassúság rendesen.

 

Valamint.

 

Megfeledkezel arról a tényről, hogy ráadásul felesleges is a find (szerintem). Ha már előállítod advanced filterrel az egyedi sorokat, akkor nem értem miért nem használod ugyanezt a további adatok kinyerésére a "Find" helyett - és szerintem a ciklus is szükségtelenné válik.

 

Ha nem akarod ezt megtenni Advanced Filterrel. akkor se a Find-et használd, hanem a MatchCase függvényel nyerd ki a találat sorszámát. Sokkal gyorsabb a find-nél

 

Nem más megoldást javasolok - hanem a kód javítására adok ötletet fentiekkel.

Atom gyors lesz szerintem.

Előzmény: SQLkerdes (13326)
SQLkerdes Creative Commons License 2010.11.20 0 0 13326

Sziasztok,
Valaki nézzen már rá erre a kódra, mert valami itt nagyon nem stimmel, csak nem tudok rájönni, h mi.
Alapprobléma:

- van egy worksheet-em (Source) ami kb 50 ezer sort tartalmaz, elég komoly redundancivál (sok a (közel) azonos sor);

- bizonyos okokból szükségem van minden egyedi sor három adatára, ezeket egy másik worksheet-re (Target) szeretném átiratni.
Amit csináltam:

- Advanced Filterrel előállítottam azt a listát, amely a Source-on lévő adatok egyedi azonosítóit tartalmazza (hívjuk ezt LoanNumber-nek)

- Minden a Target-en meglévő LoanNumber mellé ki szeretném írni az adott hitel bizonyos adatait (fiók, hitelügyintéző, stb).

- A probléma megoldására a Range.Find metódust akartam alkalmazni, vagyis hogy a Target minden egyes során végig megyek és az éppen aktuális LoanNumber-t Find paranccsal megtalálom a Source táblában, majd a talált cellától jobbra x cellával lévő adatot kiírom a Target táblába

 

A kód lényegi része:

 

For lTargetActualRow = 2701 To 2800    

sContractNr2Find = wsTarget.Cells(lTargetActualRow, 1).Value    

Set rFoundCell = rLoanNrCells.Find(What:=sContractNr2Find, After:=wsSource.Cells(2, 1), LookIn:=xlValues _        , LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _        MatchCase:=False, SearchFormat:=False)    

wsTarget.Cells(lTargetActualRow, 2) = rFoundCell.Offset(0, iIssuedAmount).Value     wsTarget.Cells(lTargetActualRow, 3) = rFoundCell.Offset(0, iBranch).Value     wsTarget.Cells(lTargetActualRow, 5) = rFoundCell.Offset(0, iLoanOfficer).Value

Next 

A kód működik hiba nélkül, de úgy tűnik, hogy nagyon lassan.
Százas adagokra felosztottam a kikeresendő (kb 30 ezer egyedi LoanNumber-t) (ezért látszik hogy a for 2701 és 2800 között lépeget) és azt látom, hogy folyamatosan lassul a kód végrehajtása, olyannira, hogy mostmár a fenti ciklus több mint 100 másodperc (!) alatt fut le!
Van bárkinek bármilyen ötlete, hogy ez mitől lehet?
A rLoanNrCells range az A1:A51000 tartománynak felel meg.
Én a Find valamelyik paraméterére gyanakszom, de nem ismerem annyira, hogy megoldjam ezt a problémát, amit meg eddig próbáltam az nem műxik.
A megoldandó feladat és a Source tábla sokkal összetettebb annál, hogy más megoldást válasszak, szóval ne más megoldást javasoljatok, hanem a fenti kód javítására tegyetek javaslatot lécci.
Előre is köszi!

tt65 Creative Commons License 2010.11.20 0 0 13325

Lehet már írta valaki, ha nem, akkor Nézet --> Elrejtés menüpont és a Personal eltűnik ... (előhívi a Felfedés-sel lehet)

Előzmény: Aata1 (13254)
tt65 Creative Commons License 2010.11.20 0 0 13324

maybe! :-)

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

asszem nem olvastad ezt végig :)

Előzmény: tt65 (13322)
tt65 Creative Commons License 2010.11.19 0 0 13322

be lehet állítani a pivottáblánál. az adatok fülön "adatfrissítés a fájl megnyitásakor" opció!

Előzmény: Törölt nick (13207)
Or Kán Creative Commons License 2010.11.19 0 0 13321

Ez kimaradt:

 

"Menü->Eszközök->Védelem->Lapvédelem->OK

Előzmény: Or Kán (13320)
Or Kán Creative Commons License 2010.11.19 0 0 13320

Menü->eszközök->lapvédelem->OK

 

Ekkor nem lehet a füzetlapra írni.

Előzmény: NeomatiK (13315)
Delila10 Creative Commons License 2010.11.19 0 0 13319

Azért kér az olvasáshoz is jelszót, mert a beállításoknál a 'Jelszó betekintéshez:'  rovatba is adtál jelszót.

 

Írtam, hogy a csak olvasásra (jelszó nélkül) megnyitott füzetbe is enged írni, de nem engedi "saját magára" lementeni.

Előzmény: NeomatiK (13317)
NeomatiK Creative Commons License 2010.11.19 0 0 13318

Látom van olyan hogy Eszközök / Védelem ...

 

próbálgatom...

Előzmény: NeomatiK (13317)
NeomatiK Creative Commons License 2010.11.19 0 0 13317

Nem úgy sikerül ahogy szeretném, a fájl olvasáshoz is kéri a jelszót. És enged a cellába írni, módosítani.

Előzmény: Delila10 (13316)
Delila10 Creative Commons License 2010.11.19 0 0 13316

2003-as verziónál:

Mentés másként, jobbra fent Eszközök, Beállítások, Jelszó a módosításhoz ('Figyelmeztet a módosítás elkerülése' négyzet bejelölése). A Speciális gomb segítségével beállíthatod a titkosítás típusát. OK után újra bekéri a jelszót.

 

A fájl új behívása után engedi a módosításokat jelszó nélkül is, de nem engedi ugyanazon a néven, és útvonalon menteni.

Előzmény: NeomatiK (13315)
NeomatiK Creative Commons License 2010.11.19 0 0 13315

Sziasztok!

 

Tudom, banális a kérdésem, de még nem csináltam ilyet:

Hogy lehet egy excel munkafüzetet védelemmel ellátni, hogy olvasáshoz bárki hozzáférhessen, de írni csak én írhasak bele?

Tudom, hogy van valami jelszavas védelem, csak nem ismerem a minkántjét. 

Delila10 Creative Commons License 2010.11.18 0 0 13314

Ezt egyszerűbben oldottam meg. A Munka2 lapon kijelöltem az A3:Bvalahány tartományt, ameddig lemásoltam a képleteket. Feltételes formázást adtam ezeknek a celláknak.

 

A formázás képlete =INT($B3)<INT($B$2), formátumnak pedig fehér színű karaktert választottam. Így mindig csak a legnagyobb pontszámot elértek neve, és pontszáma látszik.

Előzmény: Hedgehog (13313)
Hedgehog Creative Commons License 2010.11.18 0 0 13313

Köszönöm, ez jól működik.

 

Viszont ugye jól értem, ez pont nagyságszerinti sorba rakja a neveket tulajdonképpen. Vagyis, nem dinamikus a résztáblázat mérete, hanem én határozom meg előre, hogy mondjuk a legelső 3 legnagyobb pontszámú kell nekem.

Én igazából olyat szeretnék, hogy csak a legnagyobb pontszámúakat mutassa, és mindet. Tehát, ha van pl. 15 pontosból kettő ember, akkor két sor legyen a résztáblázat, ha 5 db 15 pontos van, akkor 5 soros.

A tömbképletek nem erre valók? Próbáltam azt is, de nem igazán sikerült működésre bírnom.

Előzmény: Delila10 (13312)
Delila10 Creative Commons License 2010.11.18 0 0 13312

Itt vettem észre a hibát, hogy azonos pontszámnál az első személyt adja mindegyik esetben. Ezt ki lehet küszöbölni.

A Munka1 lapon a C2 képlete legyen =B2+SOR()*0,0001,

a Munka2 lap A2 legyen =INDIREKT("Munka1!A" & HOL.VAN(B2;Munka1!C:C;0)),

a B2 pedig =NAGY(Munka1!C:C;SOR()-1). Ennél az oszlopnál tizedesek nélküli számformátumot kell beállítani.

Előzmény: Delila10 (13311)
Delila10 Creative Commons License 2010.11.18 0 0 13311

 A Munka1 lapon van a teljes névsor, a Munka2-n a kivonat. Utóbbin az A oszlop képlete látható, a B2 képlete =NAGY(Munka1!B:B;SOR()-1).

Előzmény: Hedgehog (13307)
Törölt nick Creative Commons License 2010.11.18 0 0 13310

nézd meg a KICSI, NAGY, SORSZÁM beépített függvényeket.

Pivottal talán próbáld meg csökkenő sorrendbe rendezni érték(pontszám) szerint a neveket.

Még eszembe jut az irányított szűrő, autoszűrő használata is.

Előzmény: Hedgehog (13307)
Törölt nick Creative Commons License 2010.11.18 0 0 13309

a nem szükséges (Üres) teljes sorokat / teljes oszlopokat pedig elrejtheted és nem kerül bele a nyomtatásba

Előzmény: Törölt nick (13306)
Törölt nick Creative Commons License 2010.11.18 0 0 13308

Ezt hogy érted?

Ha összefüggő tartományt szeretnél kinyomtatni akkor oldalbeállítás - nyomtatási terület. Vagy nézet, oldaltörés megtekintése és egérrel a terület (kék) széle elmozgatható.

Vagy nyomtatásnál bejelölöd,  csak a(z) (előzőleg) kijelölt területet nyomtassa.

 

Ha arra gondolsz, hogy majd magától kiszelektálja az üres cellákat, amik szétszórtan vannak, hát olyan nincs. Össze kell rendezni a cellákat "úgy"

Előzmény: Törölt nick (13306)
Hedgehog Creative Commons License 2010.11.17 0 0 13307

Sziasztok!

 

Ha adott egy táblázatom (nevek, mellettük pontszámok), meg lehet valahogy oldani, hogy a munkalap egy másik területére átkerüljenek automatikusan frissülő módon a legtöbb pontot elérő nevek?

Pivottal próbálkozom, de ott nem tudom megoldani, hogy automatikusan felismerje a legnagyobb pontszámúakat...

Törölt nick Creative Commons License 2010.11.17 0 0 13306

Sziasztok!

 

Lenne még egy kérdésem! Az excelben van olyan lehetőség/megoldás, hogy csak az olyan cellákat vegye bele a nyomtatásba, amelyekben van adat?

wawabagus Creative Commons License 2010.11.17 0 0 13305

Szia!

Névvel elláttad a cellát?

Egy úgy érted azt a bizonyos 143-as cellát?

Ha átküldesz egy "gyakorló fájlt" akkor megcsinálom neked, de már csak holnap reggel...

ok?

wawabagus kukac freemail

:-)

Előzmény: longbc (13303)
Delila10 Creative Commons License 2010.11.17 0 0 13304

Mélységes elnézésem. Én követtem el a hibát, voltak egyforma adataim az A oszlopban, ahonnan a "sorsolás" történt. Valóban nem másol a makród azonos sorokat.

 

Előzmény: Jimmy the Hand (13299)
longbc Creative Commons License 2010.11.17 0 0 13303

Szia!

 

Köszi, valóban ez lehetett az egyik hiba, mert most már más hibára fogva nem hajlandó rendesen működni...:) Érvénytelen cellahivatkozás a baja (#HIV!). INDIREKT-ként már megtaláltam a súgó erre vonatkozó fejezetét, az ott található példát bemásoltam a táblázatom egy üres munkalapjára, de ott megint nem minden működött rendesen. Érdekes, hogy csak a névvel ellátott cellával van a problémája...!? Erre vonatkozóan is van valami különleges beállítás az excelben??

 

Előzmény: wawabagus (13302)
wawabagus Creative Commons License 2010.11.17 0 0 13302

Szia!

Magyar exeled van, ez meg angolul van :-D...Mindjárt megnézem hogy van ez magyarul.

Pillanat

...

INDIREKT magyarul :-)

Előzmény: longbc (13301)
longbc Creative Commons License 2010.11.17 0 0 13301

Szia!

 

Köszi a segítséget, de valamiért nem működik a dolog...

 

 

Én megléptem azt, amit írtál, de valamiért nem akar működni... Az F143-as cellákban vannak azok az információk, amiket minden egyes munkalapról át szeretnék csatolni az összefoglalóba... Erről az indirect parancsról egyébként nem találtam semmit a súgóban...

Előzmény: wawabagus (13292)
wawabagus Creative Commons License 2010.11.17 0 0 13300

Szia Delila_10!

:-D:-D:-D

Köszi szépen.

Mindjárt megpróbálom feldogozni a makrót, és alkalmazni :-)))))))).

Köszi szépen!

 

Ilyenkor mindig arra gondolok, hogy milyen vicces, hogy a felhasználó csak annyit lát "ja ha persze, hát berak pár véletlenszerű számot egy új sheetre".

 

Nem látja ez a sok "szenvedést" mögötte :-DDD.

 

:-)

Köszi szépen!!!

Előzmény: Delila10 (13297)
Jimmy the Hand Creative Commons License 2010.11.17 0 0 13299

"Mentségemre szól, hogy Jimmynél is vannak azonosak. :)"

 

??? 

Furcsa, mert meg mertem volna esküdni rá, hogy elvileg nem lehetséges, hogy egy sort kétszer másoljon át...

Előzmény: Delila10 (13297)
Delila10 Creative Commons License 2010.11.17 0 0 13298

Rájöttem a hibára, most már nem ad egyforma sorokat.

 

Sub veletlen_2()
    Dim db As Integer, sor As Integer, sor_1 As Integer
    Dim usor As Integer, f As Boolean, uoszlop As String
        
    Sheets(1).Select
    usor = ActiveSheet.UsedRange.Rows.Count
    db = InputBox("Hány sort akarsz másolni?")
    sor_1 = 2
    For i = 1 To db
        sor = Int(Rnd() * usor) + 2 'Címsort feltételezve
        Rows(sor).EntireRow.Copy Sheets(2).Rows(sor_1)
        sor_1 = sor_1 + 1
    Next
    
    Sheets(2).Select
    db = db + 1
    uoszlop = Chr(ActiveSheet.UsedRange.Columns.Count + 64)
    Do
        Range("A2:" & uoszlop & db).Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _
            xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
        f = False
        For i = 3 To db
            If Cells(i, 1) = Cells(i - 1, 1) Then
                sor = Int(Rnd() * usor) + 2
                Sheets(1).Rows(sor).EntireRow.Copy Rows(i)
                f = True
            End If
        Next
    Loop While f <> False
   
    Range("A2:" & uoszlop & db).Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
        
    'Ellenőrzés
    uoszlop = Chr(ActiveSheet.UsedRange.Columns.Count + 65)
    Range(uoszlop & "2:" & uoszlop & db + 1) = "=if(A2=A3, ""Egyforma"","""")"
 
End Sub

Előzmény: Delila10 (13297)
Delila10 Creative Commons License 2010.11.17 0 0 13297

Igazad van, be kell tenni a Do-Loop ciklusba a rendezést. Sok sor kiválasztásánál még így is előfordul ismétlés, pl. 60 sorból 2 azonos. Mentségemre szól, hogy Jimmynél is vannak azonosak. :)

 

Sub veletlen_1()
    Dim db As Integer, sor As Integer, sor_1 As Integer
    Dim usor As Integer, f As Boolean
        
    Sheets(1).Select
    usor = ActiveSheet.UsedRange.Rows.Count
    db = InputBox("Hány sort akarsz másolni?")
    sor_1 = 2
    For i = 1 To db
        sor = Int(Rnd() * usor) + 2 'Címsort feltételezve
        Rows(sor).EntireRow.Copy Sheets(2).Rows(sor_1)
        sor_1 = sor_1 + 1
    Next
    
    Sheets(2).Select
    db = db + 1
 
    Do
        Range("A2:B" & db).Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _
            xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
        f = False
        For i = 3 To db
            If Cells(i, 1) = Cells(i - 1, 1) Then
                sor = Int(Rnd() * Rnd() * usor) + 2
                Cells(i, 1) = Sheets(1).Cells(sor, 1)
                f = True
            End If
        Next
    Loop While f = False

  
    Range("A2:B" & db).Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
        
    'Ellenőrzés
    Range("I2:I" & db + 1) = "=if(A2=A3, ""Egyforma"","""")"
 
End Sub

Előzmény: wawabagus (13285)
Törölt nick Creative Commons License 2010.11.16 0 0 13296

 

Köszönöm szépen a gyors válaszokat!!

 

Kicsit megküzdöttem, de az fkeres függvénnyel úgy néz ki megoldódott! :)

 

Sokat segítettetek, könnyebb lesz a munkám, köszi még 1x!

 

Kr

Törölt nick Creative Commons License 2010.11.16 0 0 13295

Lehet,

Ugyanaz a gondolkodás mint nálad (A sor() számot kettővel elosztottam)

Előzmény: wawabagus (13294)
wawabagus Creative Commons License 2010.11.16 0 0 13294

De lehet más lapra vele utalni?

 

Előzmény: Törölt nick (13291)
wawabagus Creative Commons License 2010.11.16 0 0 13293

Fú rosszat másoltam be. Is error is kellett hozzá...

Index?

Letesztelem

:-D

 

Előzmény: Törölt nick (13291)
wawabagus Creative Commons License 2010.11.16 0 0 13292

Szia!

Hm

Abban az esetben, ha a munkalapokon az illetők nevei vannak, akkor ez a megoldás jut eszembe.

 

Persze az egész hasznossága attól függ mennyire sok adatot szeretnél összehozni.

 

Én ezt csinálnám:

 

Az összefoglaló lapon egy egéd sorba beírnám a lapok nevét egymás mellé plusz egy !

A1                B1

Jakab Pista Toth Mariska

 

PL ha többi lapon az a1-es cellában van az infó amit gyűjtögetsz akkor írd ezt:

 

=INDIRECT(A1&"!A1")

 

Ha ezt kopizol oldalra, akkor azt csinálja majd amit szerettél volna :-).

 

Előzmény: longbc (13286)
Törölt nick Creative Commons License 2010.11.16 0 0 13291

majdnem jó ;). Egyszerűbb az indirect nélkül szerintem (Index-szel) :)

Előzmény: wawabagus (13290)
wawabagus Creative Commons License 2010.11.16 0 0 13290

=INDIRECT("Sheet1!A"&(IF(MOD(ROW(A1),2)>0,ROW(A2)/2,"")))

 

hehehehe :-))))))))))

Előzmény: Törölt nick (13280)
boraka Creative Commons License 2010.11.16 0 0 13289

Mit szólnál a harmadik tabellán az FKERES függvény alkalmazásához, ahol a keresési érték a második tabella adott értéke, a tábla tartomány pedig az első tabella értékei?

Előzmény: Törölt nick (13287)
Törölt nick Creative Commons License 2010.11.16 0 0 13288

FKERES() függvénnyel

 

FKERES(A bolt nevének cellája ; Az adatok tartománya úgy, hogy a bolt neve legyen az első oszlopban; afányadik oszlop értékeit vissza akarod kapni előbbiből; 0)

 

(Én lehet hogy megpróbálnék ilyenreworld-ös körlevelet használni)

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

Sziasztok

 

Volna egy problémám, nagyon megköszönném, ha tudna valaki segíteni kicsit:

 

Van egy Excel adatbázis, ami boltok címét tartalmazza, az A oszlopban soronként a boltok neve Abc sorrendben lefelé, a B oszlopban a város, C oszlop utcanév , D irányítószám, stb.

Elég sokat postázunk és arra gondoltam, hogy a postai csomagok címzését megoldhatnám matricára nyomtatva, hogy csak fel kelljen ragasztani, rengeteg időt spórolhatnánk.

 

Egy új tabellán az ÉRVÉNYESÍTÉS paranccsal csináltam pár legördülő sort, amivel az első tabellán lévő A oszlopból a boltok neve választható.

 

Hogyan lehet megoldani, hogy a második tabellán egy bolt választása esetén, egy harmadik tabellára kiírja az elsőről a választott bolt nevét az A oszlopból, a várost a B oszlopból, utcát a C -ből és így tovább? (így a 3.-ra kiadná a választott bolt összes adatát, amit csak ki kellene nyomtatnom)

 

Már pár napja ezzel foglalkozom, a neten is sokat keresgéltem, de nem jövök rá a megoldásra.

 

Köszönettel: Kr

 

 

 

 

 

 

 

longbc Creative Commons License 2010.11.16 0 0 13286

Hm... Ezek szerint pontatlanul fogalmaztam, bocsánat. Szóval az összefoglaló munkalap A44-es cellájába akarom Kis Józsi E143-as celláját csatolva (mert függvény van benne), a B44-esbe Kovács Pisti E143-asát, a C44-esbe Tóth Imre E143-as celláját és így tovább az összes dolgozó E143-as cellájával. Tehát ezeket a cellákat nem akarom az összefoglalóban összeadottként megjeleníteni, ott csupán egy átláthatóbb formába öntöm azt, ami egyébként 16 munkalapon szerepel. Így hogy hangzik?

Előzmény: wawabagus (13282)
wawabagus Creative Commons License 2010.11.16 0 0 13285

Szia!

Én értem az ő logikáját.

Először én is a te megoldásodra gondoltam.

Hát nem tudom lehet, hogy átvariálom, mert nem tudok rájönni mi nem tetszik az excelnek abban, amit bekombináltam Delila kódjával.

Köszi a segítséget :-)!

Y

Előzmény: Jimmy the Hand (13279)
wawabagus Creative Commons License 2010.11.16 0 0 13284

Hát, ezt jól kitaláltad :-D...

Függvénnyel a munkalapon?

 

Előzmény: Törölt nick (13280)
wawabagus Creative Commons License 2010.11.16 0 0 13283

Természetesen kopizhatod is jobbra ballra ezt a függvényt!

Előzmény: wawabagus (13282)
wawabagus Creative Commons License 2010.11.16 0 0 13282

Szia!

Remélem erre gondolsz:

 

Példakéntez összeadja az A1-es cellákat sheet1 és 2-ről.

 

=SUM(Sheet2:Sheet3!A1)

 

Te példádon:

 

=Sum(JakabPista:TothOtto!A1)

 

Tehát az első és utolsó munkafüzet nevét adod meg.

 

Ezt én is itt tanultam meg :-)))!

 

Előzmény: longbc (13281)
longbc Creative Commons License 2010.11.16 0 0 13281

Sziasztok!

 

A következő kérdéssel fordulok a kedves szakértőkhöz:

Van egy excel táblázatom, amiben a cégünk dolgozóinak fizetését számolom. Minden dolgozónak külön munkalapja van és van egy összefoglaló munkalap is. Az összefoglalóba nyilván csak bizonyos eredményeket csatolok be az egyéni munkalapokról. Ezek az eredmények minden egyéni munkalapon ugyanabban a cellában vannak, pl. E143. Az összefoglaló munkalapba ezeket az értékeket egy sorban lévő egymást követő cellákba szeretném berakni lehetőleg nem egyesével. Tehát pl. az összefoglaló 44-es sorának A-B-C-D-E celláiba szeretném berakni az 5 egyéni munkalap A1-es celláiban szereplő eredményeket, amik természetesen különböznek egymástól. Ezt a műveletet pedig természetesen nem egyesével szeretném megcsinálni minden cellával, hanem ha lehet, akkor valamilyen szinten egyszerre. Van rá valami bevett lépés? Nagyon hálás lennék valami építő jellegű megoldásért!

 

Üdv: longbc

Törölt nick Creative Commons License 2010.11.16 0 0 13280

Hogy ne unatkozzatok :)

 

"A" munkalapon a2-a10-ig adatok.

Ezt kell visszaadni "B" munkalap "A" oszlopának minden második sorába. Beépített Függvénnyel úgy, hogy azokat csak kopipasztézni kell minden második sorba a "B" munkalapon.

Ti hogy csinálnátok?

Jimmy the Hand Creative Commons License 2010.11.16 0 0 13279

Nem egészen értem a Delila-féle algoritmus logikáját, szóval nem tudom megmondani, miért nem úgy megy, ahogy kellene.

 

Az enyém azt csinálja, hogy a munkalap utolsó (és remélhetőleg használaton kívüli) oszlopában véletlenszerűen elhelyez x-eket, és ezt addig csinálja, míg lesz összesen annyi x, ahány sort át akarsz másolni.

Utána az x-szel jelölt sorokat átmásolja egy új munkalapra, végül törli az x-eket a forrás és a cél munkalapról egyaránt.

 

Ahhoz, hogy a fejléc ne kerüljön bele a szórásba, az egyik sor módosítani kell, így:

 

i = Int(Rnd() * (XRange.Cells.Count - 1)) + 2

Előzmény: wawabagus (13278)
wawabagus Creative Commons License 2010.11.16 0 0 13278

Szia!

Köszi szépen :-). Megpróbálom értelmezni a kódot, de előbb lehiggasztom magam egy ebéddel.

 

Annyira idegesítő, mikor nem értem miért nem azt csinálja az excel amit akarok....

 

Előzmény: Jimmy the Hand (13275)
wawabagus Creative Commons License 2010.11.16 0 0 13277

Bocs, hogy ilyen hosszúra sikerült.

 

sor = Int(Rnd() * Rnd() * usor) + 2

 

Azért raktam 2 a végére, mert azt gondolom /így van :-D?/, hogy az jelenti, hogy 2 sortól számoljon...az 1-ben a fejlécem van...

Azt nem akarom hogy másolgassa/mint ahogy egyébként tette/.

 

hmm

 

wawabagus Creative Commons License 2010.11.16 0 0 13276

áááá...megőrülök.

 

Tök jól beraktam a ciklusba a sorbarakást. De előforul még mindig /igaz nagyon ritkán, hogy duplikál/.

MIÉRT TESZI EZT VELEM?

Nem értem.

 

    usor = ActiveSheet.UsedRange.Rows.Count


        db = Workbooks("ISD ReplacementOrders template.xls").Sheets("Filters").Range("ZA").Value


        sor_1 = 2



             For i = 1 To db



                sor = Int(Rnd() * usor) + 2



                Worksheets(1).Range(sor & ":" & sor).Copy


                ActiveSheet.Paste Destination:=Worksheets(2).Range(sor_1 & ":" & sor_1)

 


         sor_1 = sor_1 + 1


    
    Next


    
     Do



        For i = 3 To db



            If Cells(i, 1) = Cells(i - 1, 1) Then



                sor = Int(Rnd() * Rnd() * usor) + 2



                Worksheets(1).Range(sor & ":" & sor).Copy


                ActiveSheet.Paste Destination:=Worksheets(2).Range(i & ":" & i)



                f = True


            End If


         Sheets(2).Select


         db = db + 1



        Range("A2:AA" & db).Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _


        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _


        DataOption1:=xlSortNormal



        Next



   Loop While f = False

 

 

Előzmény: Delila10 (13246)
Jimmy the Hand Creative Commons License 2010.11.16 0 0 13275

Itt egy másfajta megközelítés:

 

Sub veletlen()

    Dim XRange As Range, c As Range, db As Long, i As Long
    Dim wsSrc As Worksheet, wsTgt As Worksheet
    
    Set wsSrc = ActiveSheet
    
    Set XRange = Intersect(wsSrc.Columns(wsSrc.Columns.Count), wsSrc.UsedRange.EntireRow)
    db = InputBox("Hány sort akarsz másolni?")
    If db > XRange.Cells.Count Then
        MsgBox "Az túl sok."
        Exit Sub
    End If
    While Application.WorksheetFunction.CountA(XRange) < db
        i = Int(Rnd() * XRange.Cells.Count) + 1
        XRange(i) = "x"
    Wend
    
    Set wsTgt = ThisWorkbook.Worksheets.Add
    For Each c In XRange
        If c = "x" Then c.EntireRow.Copy wsTgt.Range("A" & wsTgt.Rows.Count).End(xlUp).Offset(1)
    Next
    XRange.ClearContents
    wsTgt.Columns(wsTgt.Columns.Count).ClearContents
End Sub

Előzmény: wawabagus (13273)
Törölt nick Creative Commons License 2010.11.16 0 0 13274

szívesen

Előzmény: Bizakodóvagyok (13272)
wawabagus Creative Commons License 2010.11.16 0 0 13273

Szia Delila_1!

:-DDD...

 

Megint rájöttem valamire :-D :-D :-D.

 

Hiába rendezi az adatokat, semmi garancia nincs arra, hogy nem másol be megint egy olyan sort, ami volt már korábban.

 

Azt hiszem ezt azzal lehetne kivéden, ha a cikluson belül ismétli a sorbarakást.

 

Jól látom?

 

:-)

Előzmény: Delila10 (13246)
Bizakodóvagyok Creative Commons License 2010.11.15 0 0 13272

Szia!

 

 DateSerial helyre tette (nem ismertem) :))))

 

Köszönöm, jó éjt!

Üdv,

B.

 

 

Előzmény: Törölt nick (13269)
Törölt nick Creative Commons License 2010.11.15 0 0 13271

Még valami:

Szerintem felesleges ekkora Range, sokkal gyorsabb lesz, ha:

 

 

For Each rngCel In Columns("A:A").SpecialCells(xlCellTypeConstants, 23) 'Konstans cellatartalomhoz.

 

Módszerrel gyalogolsz végig.

A Columns helyett nyilván lehet Range is. Sőt. Neked az kell. És megspóroltál pár változót és sort.

 

Előzmény: Bizakodóvagyok (13257)
Törölt nick Creative Commons License 2010.11.15 0 0 13270

Azért csak F2-re frissül a tiéd, mert simán szöveget adsz át a celláknak. Ha F2-re (stb) enter ütsz, akkor az autmatikus dátumfelismerés helyreteszi. Szerintem.

Előzmény: Bizakodóvagyok (13267)
Törölt nick Creative Commons License 2010.11.15 0 0 13269

És asszem így formáznám meg:

rngCel.NumberFormat = "yyyy/m/d"

Előzmény: Bizakodóvagyok (13257)
Törölt nick Creative Commons License 2010.11.15 0 0 13268

én a "Format" helyett "DateSerial"-t használnám.

DateSerial(intEv, bytHonap, bytNap)

Előzmény: Bizakodóvagyok (13257)
Bizakodóvagyok Creative Commons License 2010.11.15 0 0 13267

Az a baj, h ez a kód egy nagyobb makró része, ezért futás közben kéne megcsinálnia a kivonást. De Type mismatch-csel tér vissza a VBA editor. :( Egyébként konkrét számértéket kellene kivonnom belőle, gondolom azért ez a hibaüzenet, mert minden áron szövegként kezeli a dátumom. Kipróbáltam több gépen, 2003-as Excellel is. Ugyanez történik :( Excel beállításait néztem, de nem találtam erre vonatkozóan semmit. Azt nem értem igazból, hogy mitől lesz jó, ha belekattintok (vagy F2), majd elhagyom a cellát (enter, tab vagy máshova klikk az mindegy, mindenhogy jó akkor már).

Előzmény: Or Kán (13265)
Bizakodóvagyok Creative Commons License 2010.11.15 0 0 13266

A makró nem csak ezt csinálja :)

Sok műveletet kell elvégeznem több adattáblával, amikből további riportokat csinálok. Úgy vagyok vele, h ha már nekiállok egy programnak, akkor a felhasználónak lehetőleg nem hagyok manuálisan elvégzendő feladatot. Szerintem ez a lényege a makróknak :)

 

 

Előzmény: Törölt nick (13264)
Or Kán Creative Commons License 2010.11.15 0 0 13265

Közben lefuttattam a programodat, és teljesen jónak tűnik. A kivonási művelet elvégezhető a programfuttatás után.

Előzmény: Bizakodóvagyok (13257)
Törölt nick Creative Commons License 2010.11.15 0 0 13264

Megbocsáss. Minek ehhez makró?

Előzmény: Bizakodóvagyok (13263)
Bizakodóvagyok Creative Commons License 2010.11.15 0 0 13263

Normális dátumformátum alatt azt értem, h a cella formátuma dátumformátum, az adat jobb oldalra igazodik, és lehet vele összeadást/kivonást végezni.

 

A J és K oszlopban vannak a számomra teljesen rossz dátumok. (nap.hó.év)

Ezt csak azért írtam oda, hogy ne kelljen átírnom a kódot a példa miatt...h egyértelmű legyen.

Elszámoltam magam ezek szerint :)

Előzmény: Or Kán (13261)
Bizakodóvagyok Creative Commons License 2010.11.15 0 0 13262

Szia!

 

 

"Miért nem ezt alkalmazod?

 

x = Range("A1").End(xlDown).Row"

 

Mert nem folyamatos az adat.

 

"(Nem is beszélve arról, hogy a 2007-es excelben már nem 65536 sor van egy munkalapon - ha már mindenképpen a végéről akarod kezdeni, hanem 1048576."

 

Az Excelem 2007-es, de az adattáblám 2003-ból van.

 

Azért köszi! :)

 

Előzmény: Or Kán (13260)
Or Kán Creative Commons License 2010.11.15 0 0 13261

Egyébként mit értesz "normális dátumformátum" alatt? És mi van a "J", illetve a "K" oszlopban?

Előzmény: Bizakodóvagyok (13257)
Or Kán Creative Commons License 2010.11.15 0 0 13260

Nem ez a probléma, de ezen a soron fennakadt a szemem:

 

x = Range("A65536").End(xlUp).Row

 

Ez olyan bal kézzel vakarom a jobb fülemet, nem?

 

Miért nem ezt alkalmazod?

 

x = Range("A1").End(xlDown).Row

 

(Nem is beszélve arról, hogy a 2007-es excelben már nem 65536 sor van egy munkalapon - ha már mindenképpen a végéről akarod kezdeni, hanem 1048576.)

 

Bocsánat, hogy közbeszóltam.

Előzmény: Bizakodóvagyok (13257)
Aata1 Creative Commons License 2010.11.15 0 0 13259

Nagyon köszönöm a segítséget, megoldódtak a gondok! :D

Előzmény: Jimmy the Hand (13256)
Bizakodóvagyok Creative Commons License 2010.11.15 0 0 13258

*Elakadtam egy feladattal, ezért fordulok hozzátok. :)

Előzmény: Bizakodóvagyok (13257)
Bizakodóvagyok Creative Commons License 2010.11.15 0 0 13257

Sziasztok!

 

 Elakadtam egy, ezért fordulok hozzátok.

 Excel 2007-ben készítek pár makrót. (igen, tudom… a 2003-at én is jobban szerettem :D)

 

 Ebből a formátumból kell normális dátumformátumot csinálnom („J” és „K” oszlopokban vannak):

26.8.2037

9.9.2037

22.11.2036

11.7.2037

12.9.2037

28.8.2037

24.8.2037

3.9.2037

 

Ehhez ezt barkácsoltam össze:

 

    Dim x As Integer

    Dim i As Integer

    Dim Rng As Range

    Dim rngCel As Range

    Dim strDatum As String

    Dim bytNap As Byte

    Dim bytHonap As Byte

    Dim intEv As Integer

 

x = Range("A65536").End(xlUp).Row

Set Rng = Range("J2:K" & x)

    For Each rngCel In Rng

        With rngCel

        strDatum = .Offset(, 0)

                  If InStr(strDatum, ".") > 0 Then

                bytNap = Trim(Left(strDatum, InStr(strDatum, ".") - 1))

                strDatum = Trim(Mid(strDatum, InStr(strDatum, ".") + 1))

                bytHonap = Trim(Left(strDatum, InStr(strDatum, ".") - 1))

                intEv = Trim(Right(strDatum, 4))

                .Formula = Format(intEv & "." & bytHonap & "." & bytNap, "yyyy/m/d")

            End If

        End With

    Next

 

 

 

A problémám:

Az eredmény a cella bal oldalához van igazítva, tehát olyan, mintha szövegformátum lenne. (A formátuma általános.) Emiatt raktam be a végére a Format-ot az eredménybe, ami teljesen felesleges amúgy (sztem).

A lényeg: ha átállítom szám- vagy dátumformátumra, akkor továbbra is ott marad a bal oldalán a cellának, ezért „Type mismatch” miatt nem tudok vele számolásokat végezni. Ha nyomok egy F2-t vagy duplaklikket a cellán, majd átkattintok másik cellára, akkor azonnal jó lesz a korábban beállított formátum. Nem tudok rájönni, hogy mi a baj, mert a makrórögzítés sem árul el semmit, mert a kód alapján egyszerű értékadásról van szó.

 

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

Üdv,

B.

 

Jimmy the Hand Creative Commons License 2010.11.15 0 0 13256

Nézd meg, hogy van-e a

C:\Documents and Settings\(user)\Application Data\Microsoft\Excel\XLSTART

mappában egy personal.xls fájl.

Ha van, töröld ki. Vagy talán jobb, ha átnevezve elmented valahová. Ez a fájl ugyanis általában úgy keletkezik, hogy makrót rögzítesz benne. Azokra meg még szükséged lehet.

Előzmény: Aata1 (13254)
wawabagus Creative Commons License 2010.11.15