Keresés

Részletes keresés

wawabagus Creative Commons License 2010.10.15 0 0 12967
Nagyon köszönöm neked a segítséget!!!
Előzmény: SQLkerdes (12962)
wawabagus Creative Commons License 2010.10.15 0 0 12966

Szia!

Szerintem ennek működnie kell, ha jól értem a problémád:

 

Ha(A1="Teljesítve";A1&A2&A3&A4;"")

 

A függvény indig relíve fogj amegnézni a Ha függvény igaz-e, thea, ha ezt a füügvényt lehúzod, akkor az A 41-es cell mellé már automatikus ezt fogja írni az excel:

 

Ha(A41="Teljesítve";A41&A42&A43&A44;"")

 

 

Előzmény: pickkick (12964)
wawabagus Creative Commons License 2010.10.15 0 0 12965

Szia!

Ez pontosan az a lépés, ami hiányzott :-)!

Köszi szépen!!

És értem, amit mondotok, hogy hibát okoz, ha nem talál címet...de valahogy biztos ki lehet küszöbölni...

 

Nagyon köszön a segítséget!

 

Előzmény: Delila_1 (12963)
pickkick Creative Commons License 2010.10.15 0 0 12964
Sziasztok!

Olyat szeretnék csinálni, hogy miután megkerestem az egyik cellában lévő értéket, így: HA("Teljesítve"=A1;IGAZ;""). Az IGAZ helyére egy összefűz képletet akarok beilleszteni, de úgy, hogy fűzze össze az A1,A2,A3,A4 cellák tartalmát. Ezt így próbáltam megoldani: ÖSSZEFŰZ(A1;A1+1;A1+2), csak, hogy ilyen argumentumot nem ismer az excel. Hogyan tudom megoldani ezt a problémát. Ha a következő alkalommal pl. az A41 cellában kap IGAZ értéket a HA függvény, akkor az A41,A42,A43-as cellákat kell összefűzni.

Hogyan lehet ezt megoldani? A megoldás az lenne, hogy ÖSSZEFŰZ(A1;A2;A3) csak ez így ebben az esetben nem jó, tehát ez helyett valahogy tudatni kell az excel-el, hogy az adott cella, és az az alatti cellákat akarom összefűzni.

Üdvözlettel:
Kiss László
Delila_1 Creative Commons License 2010.10.14 0 0 12963

Némi magyarázattal a makró:

 

    Dim sor As Integer
    Dim OszlopNév As String
   
    Sheets("Sheet1").Select
    sor = 1
   
    'Itt adod meg, hogy addig tartson a ciklus, míg a Sheet2
    'lap A oszlopában nem talál üres cellát
    Do While Sheets("Sheet2").Cells(sor, 1) <> ""
        'Az OszlopNév változóba betöltöd a cella értékét.
        'A .Value elhagyható, mert ez az alapértelmezés
        OszlopNév = Sheets("Sheet2").Cells(sor, 1).Value
       
        'Keresés és törlés, ahogy előbb írtad
        Cells.Find(What:=OszlopNév, After:=ActiveCell, LookIn:=xlFormulas, _
            LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Activate
        Columns(ActiveCell.Column).Delete
       
        'A "sor" változó növelése
        sor = sor + 1
    Loop

SQL-nek igaza van, hibát okozhat az elgépelés. Egy hibakezeléssel ki lehet lőni (a hibát, nem SQL-t).

Előzmény: wawabagus (12961)
SQLkerdes Creative Commons License 2010.10.14 0 0 12962
Létrehozol egy String változót:

Dim OszlopNev as String

Utána a változó megkapja, pld a sheeet2-n az A1 cella értékét

OszlopNev = Range("A1").Value

Megkeresed a sheet1-es a fenti szöveget:

Cells.Find(what:=OszlopNev, after:=[A1], LookIn:=xlFormulas, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False).Activate

Látható, hogy bárhol használhatsz változót, csak vigyázzni kell, hgoy a változó olyan fajta legyen, amire az adott környezetben szükség van. Itt pld. az OszlopNev String kell legyen.

Én lebeszélnélek a Find használatáról, mert mi van ha nem talál meg valamit (pld elgépelés a Sheet2-n)? Akkor még simán továbblép a következő makro sorra és próbál törölni, de valszeg rosszat fog törölni.

wawabagus Creative Commons License 2010.10.14 0 0 12961

Örülök, hogy sikerült érthetően leírni a dologot :-D.

 

Egyedül szeretném megoldani /egy kis segtséggel :-d/ a makrót. Van egy kis időm és gondoltam elszórakozom vele. Igazából ez amit most kitaláltam csak egy szépítés már. Senki sem kért rá, csak magamat szórakoztatom :-)...

 

Ha jól értelmezem Delila_1 makrója az első sor első oszlopával kezd, de nekem ez pont mindig labilis, hoyg hol kezdődik...ezért is használtam ezt a FIND-os parancsot, ami mindig megtalálja bárhol is van a fejléc....

 

Azt valahogy én nis érzem, hoyg valami ciklusban kéne kiovasnom egy virtuális "memóriába" egymás után a törlendő neveket a listából...csak ez az amit nem tudom hoyg kell és hogyan kell behelyettesíteni a FIND után, nem konkrét oszlopcímként, hanem "virtuális változókén"...

 

Elég kezdő vagyok makróból...még sosem írtam ciklust....főleg olyat nem ami működöt :-DDDD...

 

De kísérletezgetek még egy kicsit...:-D

Köszi!!!

 

Előzmény: SQLkerdes (12960)
SQLkerdes Creative Commons License 2010.10.14 0 0 12960
Na, ez már érthető!

Mi a terved? Szeretnéd ha valaki készen megírná neked a kódot, vagy segítség kell ott ahol elakadsz?

Én személy szerint a másodikat javasolnám, mert arra aminek magad kutatsz utána, tuti emlékezni fogsz. Nyilván az első mellett szól ha sürgős a dolog.

A második szellemében:
- csinálni kell egy loop-ot (lásd Delila kódját), ami a Sheet2 összes releváns celláján végigmegy, hogy egyenként kiolvassa a törölni kívánt oszlopok nevét.
- ezt a nevet eltároljuk egy String tipusú változóban
- ezen a loop-on belül írunk vagy egy másik loop-ot vagy egy For/Next ciklust, ami végigmegy a Sheet1 összes releváns celláján és kiértékeli (If) hogy a két név megegyezik-e.
- ha igen, törlés
- ha nem, akkor tövábblép a ciklusban.

Előzmény: wawabagus (12959)
wawabagus Creative Commons License 2010.10.14 0 0 12959

:-) Szia Delila_1!!

Tetszik a megoldásod. Köszönöm szépenem.

Azért lenne praktikusabb nem kérdezgetni, mert nagyon sok oszlop van, majdnem 60...jobb lenne, ha magátol megcsinálná :-)....

De maga a törlés nem is gond már. Arra találtam tök jó kereső parancsot.

Jobb lenne, ha kiolvasná egy fix helyről és lehetne bővíteni/javítani a listát, hogy ne kelljen sokat gondolkodni a felhasználónak :-)...Ez egy fix template-ben lenne.

Köszi a segítséget!!

Y

Előzmény: Delila_1 (12956)
wawabagus Creative Commons License 2010.10.14 0 0 12958

Szia!

Nem kv hiány okozza:-).

Igazad van. Tök érthetetlen, amit írtam. Akkor megpróbálom kicsit érthetőbben :-D:

 

Sheet1 - egy adatbázis, aminek 3 oszlopát törölni kell, de változó melyik sorban kezdődnek a fejlécek és hogy milyen sorrendben.

 

Sheet2 - Lenne egy felsorolás egymás alatt azokkal az oszlopnevekkel, amiket törölni kell. Ha esetleg felmerül új oszlop név, amit törölni kell akkor elég ide beírni és a makro már azt is felhasználja. /A lényeg, ha változik az oszlopnév, akkor idegen ne turkáljon a makrómban...tehát hogy rugalmas is legyen a makró a felhasználó számára, mert nem csak én fogom használni/

 

Amit eddig sikerült megcsinálnom:

Makro, ami megkeresi a konkrét oszlopcímet és törli az oszlopot.

 

Sub DeleteColumns()
Cells.Find(what:="Time To Resolve (Discontd 3/08)", after:=[A1], LookIn:=xlFormulas, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False).Activate
Columns(ActiveCell.Column).delete
End Sub

 

Amit nem tudok hogy csináljak:

Hogyan oldjam meg, hogy a makróba ne közvetlenül kelljen beírni az olszlopnevet, hanem pl a sheet2-n lennének felsorolva /akár bővíthető listában/. Tehát a makro addig törölgetne adott oszlopokat a Sheet2-n megjelenő listában, míg talál ott nevet. Tehát maga a név helyett, egy változó lenne a makróban. Addig helyettesítgetné be a nevet egy ciklusban pl, míg talál törlendő oszlopnevet.

 

Remélem sikerül érthetőbben megfogalmaznom a dolgot :-D!!

Köszi a tippeket!!

Y

 

 

Előzmény: SQLkerdes (12951)
Törölt nick Creative Commons License 2010.10.14 0 0 12957

Az adott munkalap eseménykezelőjét kellene használnod pl. így:

 

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  MsgBox "Dupla klikk"
  Cancel = True
End Sub

Előzmény: O. Kán (12933)
Delila_1 Creative Commons License 2010.10.14 0 0 12956

Ha a kérdés az, amit a #948-ban írtam, a

 

Sub ColumsDelete()
    Dim oszlop As Integer
    Dim v As Variant
    Dim sz As String
   
    oszlop = 1
    Do While Cells(1, oszlop) <> ""
        sz = "Törli a(z) " & Cells(1, oszlop) & " című oszlopot?"
        v = MsgBox(sz, vbYesNo)
        If v = vbYes Then
            Columns(oszlop).Delete
            oszlop = oszlop - 1
        End If
        oszlop = oszlop + 1
    Loop
End Sub

segédlap nélkül megoldja.

Előzmény: wawabagus (12949)
Törölt nick Creative Commons License 2010.10.13 0 0 12955
Egyébként Jogos.
Előzmény: tagore72 (12954)
tagore72 Creative Commons License 2010.10.13 0 0 12954
Sziasztok!

Én viszont szeretem kontrollálni, hogy mit is frissítek,
no meg vannak olyan esetek (elég gyakran), hogy nem
kell a fájlban lévő összes kimutatást egyszerre frissíteni,
hanem csak azok egy csoportját.

Nem kötekszem ám, csak én így látom.

Józsi
Előzmény: Törölt nick (12944)
tagore72 Creative Commons License 2010.10.13 0 0 12953
Sziasztok!

Szerintem elbeszélünk egymás mellett, mert ez működik.

A c terméket átírtam 3-ról és 30-ra és frissítettem a kim1
kimutatást és frissült a kim2 is.

A 2 db kép a kim2 kimutatás beállítása a kimutatás-varázsló segítségével.



Józsi
Előzmény: SQLkerdes (12943)
Delila_1 Creative Commons License 2010.10.13 0 0 12952
Azt akarod megoldani, hogy a makró dobjon fel egy üzenetet, amiben egymás után felsorolja az oszlopok neveit, és a felhasználó mindegyiknél választhasson, hogy törli-e, vagy nem?
Törli az x nevű oszlopot, IGEN, NEM formában?
Előzmény: wawabagus (12949)
SQLkerdes Creative Commons License 2010.10.13 0 0 12951
Lehet elmúlt a reggeli kávé hatása, de én nem vélem érteni a megoldandó problémát.

De ez a name range már lapon lenne.
Ezt itt nem értem biztos, hogy jól használod a name range kifejezést? Egy name range nem tud más lapon lenni, mert a name range nem más, mint egy excel tábla olyan része, aminek a könnyebb hivakozás miatt nevet adtunk.

Tegyük fel a Sheet1-en az A1 cellában van az első oszlopnév...ha nem üres, akkor helyettesítse be.

Mit helyettesítsen be? És hova? Hisz azt írod előtte, hogy nem üres (gondolom itt az A1 cellára gondoltál).
Előzmény: wawabagus (12949)
SQLkerdes Creative Commons License 2010.10.13 0 0 12950
Nem vagyok számfetisiszta (jobban mint az excel fórumok átlagos látogatói), de enyém a 12000-ik hozzászólás :-)
Előzmény: SQLkerdes (12943)
wawabagus Creative Commons License 2010.10.13 0 0 12949

Huh...:-)

Köszi.

Igazából lenne még egy kérdésem.

Leírom a szitut. Van egy adatbázis, ami nem mindig az első sorban kezdődik és 3 vagy több oszlopot ki kell belőle törölni.

 

Azt már szuperul megcsináltam, hogy kitörölje a nem kellő oszlopot.

 

Sub DeleteColumns()
Cells.Find(what:="Time To Resolve (Discontd 3/08)", after:=[A1], LookIn:=xlFormulas, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False).Activate
Columns(ActiveCell.Column).delete
End Sub

 

Viszont arra gondoltam, hogy jobb lenn, ha a felhasználó által látható felületen lenne a name range stb,ha esetleg változik az oszlop neve, vagy új jön hozzás.

De ez a name range már lapon lenne.

 

Azt kéne megoldanom, hogy amíg talál kitörölendő oszlopnevet addig helyettesítgesse be a fento macróba az oszlopnevet.

 

Jelenleg ezen gondolkozom ezt hogyan tudnám megoldani.

Tegyük fel a Sheet1-en az A1 cellában van az első oszlopnév...ha nem üres, akkor helyettesítse be. Aztán, ha lejebb megy és ott sem üres a cella, akkor azt is helyettesítse be...

 

Sub rangeteszt()
Sheets("Sheet2").Activate
range("torol").Select
If ActiveCell.Offset(-1, 0) <> "" Then
    a = ActiveCell.Offset(-1, 0).Value
    Sheets("Sheet1").Activate
    Cells.Find(what:="a", after:=[A1], LookIn:=xlFormulas, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False).Activate
Columns(ActiveCell.Column).delete
End Sub

 

Itt tartok, de persze ez nem nagyon működik meg még nincs is kész...de valami ilyen vonalon kén indulnom :-)...

Van valami javaslatotok?

:-)

Köszi!

 

Előzmény: Törölt nick (12947)
rabko Creative Commons License 2010.10.13 0 0 12948
Köszi a segítséget
Előzmény: E.Istvan (12935)
Törölt nick Creative Commons License 2010.10.13 0 0 12947
Lehet h érdekes, de a Range-nak van egy Address metódusa is:

MsgBox Range("A1:A3").Address
Az Address paraméterezhető is:

by helpl:
Set mc = Worksheets("Sheet1").Cells(1, 1)
MsgBox mc.Address() ' $A$1
MsgBox mc.Address(RowAbsolute:=False) ' $A1
MsgBox mc.Address(ReferenceStyle:=xlR1C1) ' R1C1
MsgBox mc.Address(ReferenceStyle:=xlR1C1, _
RowAbsolute:=False, _
ColumnAbsolute:=False, _
RelativeTo:=Worksheets(1).Cells(3, 3)) ' R[-2]C[-2]
Előzmény: wawabagus (12936)
Törölt nick Creative Commons License 2010.10.13 0 0 12946
Egy segédtábla kell hozzáa tól-ig dátumokkal. Ebből keres egy fkeres, aminek az utolsó argumentuma = 1 (IGAZ)
(A segédtábla nem is annyira fontos, meg lehet oldani anélkül is)
Ez az fkeres kell egy külön oszlopba és végighúzni a dátumok mellé.
Erre rá egy pivottábla és azt már úgy húzod össze magadnak ahogy akarod.
Előzmény: Törölt nick (12945)
Törölt nick Creative Commons License 2010.10.13 0 0 12945
Tök egyszerűen lehet. Leírjam?
Előzmény: deny79 (12918)
Törölt nick Creative Commons License 2010.10.13 0 0 12944
Ahogy SQL mondja.
Egyébként meg használd az "Összes Frissítése" funkciót :)
(2007-ben az "Adatok" menüpont alatt van.)
Makróban Application.RefreshAll - vagy valami ilyesmi.
Előzmény: tagore72 (12941)
SQLkerdes Creative Commons License 2010.10.13 0 0 12943
Szerintem a frissüléstől független a kimutatás forrása.
Más szóval, hiába ugyanaz a forrás, ha az egyiket frissíted, a másik nem fog frissülni magától.
Előzmény: tagore72 (12941)
wawabagus Creative Commons License 2010.10.13 0 0 12942

Szia!

Istenem

Megőrülök mindig, hogy mindig olyan egyszerűnek tűnik a megoldás, én meg nem tudok rájönnni .-D...

Ezer köszönet!!!

:-)

Előzmény: SQLkerdes (12940)
tagore72 Creative Commons License 2010.10.13 0 0 12941
Szia!

Egy fájlban vannak külön füleken a kimutatások és azt szerettem volna elérni, hogy ha az egyik fülön frissítek, a többin is frissüljön.

Józsi
Előzmény: Törölt nick (12932)
SQLkerdes Creative Commons License 2010.10.13 0 0 12940
A Columns(4).Delete kitörli a D oszlopot.

Szóval a te esetedben: Columns(oszlop).delete a megoldás.

Javaslat: ne használd a Select-et, mert csak feleslegesen belassítja a kódodat, VBA-ban ritkán van szükség a Select utasításra, főleg akkor látni ha valaki makró rekorder-ből csinál kódot, mert ott a rekorder felvesz mindent akár kell akár nem.
Előzmény: wawabagus (12938)
SQLkerdes Creative Commons License 2010.10.13 0 0 12939
Hát, Delila a Change tipusú kódok guruja, de nekem nem világos a kérdés.

Normál makróban használod ezt a parancsot? Mert szerintem egy adott munkalap kódlapján kellene.

Másold be ide a teljes kódot, hogy láthassuk mit akarsz csinálni.
Előzmény: O. Kán (12933)
wawabagus Creative Commons License 2010.10.13 0 0 12938

Most arra nem tudok rájönni, hogy ha egyszer kiszámoltam melyik oszlopot kell törölnöm, akkor nevet adva neki hoygan tudom kitörölni...

 

oszlop = ActiveCell.Column

 

innentől ez az az oszlopszám, amit törölni szeretnék.

 

Normálisan ez így nézne ki:

 

Columns("BC:BC").Select
Selection.delete

 

Hogyan tudom behelyettesíteni az "oszlop" változót a fenti sorokba?

Remélem értitek mire gondolok.

Köszi szépen!!

Y

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