- Magga: PLEX: multimédia az egész lakásban
- Luck Dragon: Asszociációs játék. :)
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Argos: Adjátok vissza a netet! - szeretnék elaludni!
- MasterDeeJay: Alacsony fogyasztású házi szerver a korábbi projektekből összeépítve
- Geri Bátyó: Megint tahó voltam – SZEMÉLYISÉGFEJLŐDÉS
- Elektromos rásegítésű kerékpárok
- bambano: Bambanő háza tája
-
LOGOUT
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
Telda
addikt
Hali!
Lenne egy nagyon amatőr kérdésem.
Hogy tudom a cella formátumát beállítani, hogy én csak a számot írom be, de mögé íródik hogy "perc" "mm" stb?
Pl. beírom a cellába hogy 36 és az enter leütése után mögé teszi hogy "mm".
Illetve ugyan ez percre.Köszi!
-
Mutt
senior tag
válasz
nova001 #18973 üzenetére
Hello,
...akarok egy lenyiló listát amibe abc sorrendbe vannak a nevek és ha elkezdek gépelni kidobja a javaslatot ?? vagy valami ehhez hasonlo...
Ha fontos, hogy gépeléskor már feljöjjön a javaslat, akkor csakis ActiveX combobox-al oldható meg a feladat.
VBA-val megoldható, hogy dinamikus tartományból ABC sorrendben legyen feltöltve a combobox.Ha elég hogy egy legördülő listából válasszon a felhasználó, akkor viszont az Adatérvényesítés is működik.
Ehhez az eredményhez kell pár előkészület:
1. Javasolt dinamikus tartományokat létrehozni, hogy a képletek rövidebbek legyen és kezeljék az újonnan bevitt adatokat.
A példámban 3 db dinamikus tartományt definiáltam.
Az első a bementi listát adja vissza, neve EredetiLista.
Képlete: =ELTOLÁS(Munka1!$B$2;0;0;DARAB2(Munka1!$B:$B)-1)
A második a bemeneti lista ABC sorrendjét adja vissza, neve ABCSorrend.
Képlete: =ELTOLÁS(Munka1!$C$2;0;0;DARAB2(Munka1!$B:$B)-1)
A harmadik pedig a végeredményt, ABC sorrendben az egyedi értékeket mutatja, neve: ABCLista
Képlete: =ELTOLÁS(Munka1!$D$2;0;0;DARABTELI(Munka1!$D:$D;">""")-1)2. Ezek után kezdhetjük az ABC sorba rendezést, ehhez a DARABTELI függvény használható.
A képlet ennyi: DARABTELI(bemeneti tartomany;"<"&vizsgált cella).
Ez megmondja hogy a vizsgált cella hanyadik a tartományban ABC sorrend szerint. pl. 2 azt fogja jelenti, hogy van előtte 2 találat.
A C2-es cellába ez a képlet menjen: =MAX(DARABTELI(EredetiLista;"<"&EredetiLista))
Ezt a képletet jó sokszor le kell másolni, hogy minden elem biztosan le legyen ellenőrzíve.3. A C-oszlopban tehát visszakapjuk a sorrendet, de mivel az eredeti listában is lehet ismétlődés ezért a sorrendben is lesznek azonos értékek. Ezért mielőtt megkeressük a legkisebb sorszámot ezt a listát ismétlődés mentessé kell tenni. Ehhez a Gyakoriság függvény használható fel többek között, a megoldásban a ABCSorrend/(GYAKORISÁG(ABCSorrend;ABCSorrend)>0) állítja elő a kívánt eredményt.
Megvan az egyedi sorrend, így már csak sorban ki kell olvasni növekvő értékben a számokat, Ez tipikusan a KICSI függvénnyel oldható meg. A megoldásomban az ÖSSZESÍT függvény paraméterezésével hívtam meg a KICSI függvényt, ennek az az előnye, hogy a hibás adatokat az ÖSSZESÍT függvény ki tudja automatikusan hagyni nem kell plusz képleteket beírnom.
Végre tehát megvan a sorrend, vagyis {0;1;2;3;4;5}. Innen már könnyen csak ki kell iratnom azt a cégnevet amely a 0 mellett található a B oszlopban. Ehhez az INDEX függvényt és a HOL.VAN-t használtam.
A fentiek alapján állt elő ez a hosszú képlet a D2-es cellában:
=HAHIBA(INDEX(EredetiLista;HOL.VAN(ÖSSZESÍT(15;6;ABCSorrend/(GYAKORISÁG(ABCSorrend;ABCSorrend)>0);SOROK(D$2:D2));ABCSorrend;0));"")
Ezt is jó sokat le kell másolni a D-oszlopban.Készen is vagyunk, már csak egy adatérvényesítést kell megadnunk az egyik cellára, a listának a ABCLista függvényt használva.
A fentiek egyrésze Mike Girvin ötletén alapul!
üdv
-
gaben1117
senior tag
-
Mutt
senior tag
Egy másik helyen hangzott el a kérés, de szerintem itt is hasznos lehet ennek az egyik megoldása:
Azt hogyan lehetne szerintetek megoldani, hogy egy legördülő listából ki lehessen választani, hogy jóváhagyva vagy megtagadva de csak akkor ha egy "kódot" ami sima szám egy cellába beír.
Pl A1-ben a legördülő lista "Jóváhagy/Megtagad" de csak akkor lehet rányomni bármelyikre is ha a B cellába beírja, hogy 20130917
Adatérvényesítésnél Lista típust használva és forrásnak ezt a képletet megadva ez megoldható:
=HA(SZÁM(B1);ELTOLÁS(D1;0;0;DARAB2(D:D));)A D1 cellában a Jóváhagy, D2-ben pedig a Megtagad szöveg legyen.
-
hallgat
csendes tag
Khm...
Nagyon köszönöm!!!!!
Holnap nekifutok, hogy meg is értsem
A feladatot már megoldottad, de itt a remek alkalom számomra, hogy elkezdjem megtanulni a tömböket használni.
Azt hiszem megadtad a kezdő, vagy inkább végső lökést, ezért külön hála.
Össze sem lehet hasonlítani a tempót.
Nem nélkülözhető bizonyos pont után ez az ismeret.Még egyszer köszi!
-
hallgat
csendes tag
válasz
m.zmrzlina #18985 üzenetére
Szerintem sem úszom meg a tömböket
Mindent el kell egyszer kezdeniMost néztem épp Mutt válaszát...
Eljött az ideje a tanulásnak
Köszönöm a segítséget!!!!
-
Mutt
senior tag
válasz
gaben1117 #18986 üzenetére
Hello,
A http://www.vbaexpress.com/kb/getarticle.php?kb_id=139 oldalon található makró Word-höz van.
Nekem rendesen megy is ott.
A lényeg, hogy ne Excelben használd, hanem vagy beleteszed Normal.dotm-be vagy a körlevél eredményébe és szépen szakasztörésenként sorszámozva új fájl készít.üdv.
-
Mutt
senior tag
válasz
hallgat #18980 üzenetére
Hello,
A megoldásom egy másik módszert használ, az eredeti lapból csak a hasznos (ahol a cella nem üres vagy 0) adatokat átemeli egy másik lapra (a neve output, de lent állíthatod ezt).
Egyszerre 3 sor hasznos adatát egy tömbben tárolja. A sor végén pedig kiíratja a másik lapra a tömböt. Utána 3 sorral feljebb megy és azon is végig megy és kiír.
Nekem 11-16 másodperc alatt lefut egy 1422x190-es táblán, remélem nálad is rendben fog menni.
Kommenteltem, hogy könnyen javítható legyen.Sub Torol3asaval()
Dim arrEredmeny() 'dinamikus tömb az értékek tárolásához
Const LastRow As Integer = 1422 'utolsósor
Const LastColumn As Integer = 190 'utolsóoszlop
Dim vRow As Long 'változó a vizsgált sorok nyomonkövetéséhez
Dim vColumn As Long 'változó a vizsgált oszlopok nyomonkövetéséhez
Dim vHits As Long 'változó a soronként a feltételeknek megfelelő eredményekhez
Dim i As Long
Dim vStartTime
Dim wsOutput As Worksheet
Const wsName As String = "output" 'ide tesszük az eredményt
Dim wsActiveSheet As String
'nézzük meg mennyi idő alatt fut le
vStartTime = Time
'elmentjük az eredeti lapot
wsActiveSheet = ActiveSheet.Name
'megnézzük hogy van-e a keresett névvel munkalap a füzetben
For i = 1 To Sheets.Count
If Sheets(i).Name = wsName Then vHits = 1
Next i
'ha nincs akkor létrehozzuk a lapot, különben megnyitjuk
If vHits <> 1 Then
Set wsOutput = Sheets.Add
wsOutput.Name = wsName
Else
Set wsOutput = Sheets(wsName)
wsOutput.Cells.Clear
End If
'visszamegyünk az eredti lapra
Sheets(wsActiveSheet).Activate
'kikapcsoljuk a képernyő frissítést hogy gyorsabb legyen
Application.ScreenUpdating = False
'utolsó sortól elindulunk vissza
For vRow = LastRow To 1 Step -3
'töröljük a tömb tartalmát
Erase arrEredmeny
'ide gyűjtük hogy hány oszlop van ahol nem üres vagy 0 van az utolsó sorban
vHits = 0
'végig megyünk a sor oszlopain
For vColumn = 1 To LastColumn
'ha az érték nem üres vagy nulla akkor egy tömbbe elmentjük a sor és feletti 2 értéket
If Cells(vRow, vColumn).Value <> 0 And Cells(vRow, vColumn).Value <> "" Then
'növeljük a sikeres találatok számlálóját
vHits = vHits + 1
'átméretezzük a tömböt hogy új találatokat is tudjon tárolni
ReDim Preserve arrEredmeny(1 To 3, 1 To vHits)
arrEredmeny(1, vHits) = Cells(vRow - 2, vColumn).Value
arrEredmeny(2, vHits) = Cells(vRow - 1, vColumn).Value
arrEredmeny(3, vHits) = Cells(vRow, vColumn).Value
End If
Next vColumn
'kiírjuk a találatokat, ha van mit
If vHits Then
'az első 3 sor elé újabb 3 sort szúrunk be
wsOutput.Rows("1:3").Insert Shift:=xlDown
For i = 1 To vHits
With wsOutput
'az első 3 sorba beírjuk a korábbi találatokat
.Cells(1, i) = arrEredmeny(1, i)
.Cells(2, i) = arrEredmeny(2, i)
.Cells(3, i) = arrEredmeny(3, i)
End With
Next i
End If
Next vRow
'visszakapcsoljuk a frissítést
Application.ScreenUpdating = True
Debug.Print "Futási idő: " & Format(Time - vStartTime, "s") & " sec"
End Subüdv
-
Outlander
addikt
Üdv.
Kiegészítés: 2010-es verzió, illetve mindegy a végkifejlet, kördiagram vagy akármi..
Köszi.
-
gaben1117
senior tag
Valaki rá tudna kukkantani, hogy mi lehet a baj? Valmiért nem fut le a makró, asszem syntax errort ír. A módszer amit próbálok abban a hszben van, amire most válaszoltam.
Ezt írja a visual basic:
"Sub AllSectionsToSubDoc()
Dim x As Long
Dim § As Long
Dim doc dokumentumApplication.ScreenUpdating = False
Application.DisplayAlerts = FalseÁllítsa doc = ActiveDocument
§ = doc.Sections.Count
Az x = szakasza - 1 az 1-Step -1
doc.Sections(x).Range.Copy
Documents.Add
ActiveDocument.Range.Paste
ActiveDocument.SaveAs (doc.Path & "\" & x & ". Doc")
ActiveDocument.Close Hamis
Következő xApplication.ScreenUpdating = True
Application.DisplayAlerts = TrueEnd Sub
"A cél az lenne, hogy amikor létrejön a körlevél, akkor rekordonként külön fájlba lehessen darabolni vagy eleve úgy mentse. (4 oldalanként kéne szabdalni) Bármilyen megoldás jó lenne.
-
m.zmrzlina
senior tag
válasz
hallgat #18983 üzenetére
A két egymásba ágyazott ciklusban kb 95000 olvasás-írás van. ((1400/3)*190) ez rengeteg időt visz el. Nem a belső ciklusban lévő kiértékelés a sok hanem a feladat végrehajtása a 95000-szeri olvasás-írás. Ezen már csak apró szépségtapasz az egy felesleges sor kihagyása és az Application.ScreenUpdating=False(True) bár néha ez is tud látványos eredményt hozni.
Esetleg a For-Each-Next használata a For-Next helyett segíthet valamit.
A tömböket... No igen, egyszer rá kéne már szánni magam.
Van az a feladat amikor nem tudod megkerülni. -
hallgat
csendes tag
válasz
m.zmrzlina #18981 üzenetére
Köszönet!
Ezt nem most fogom átrágni, de hasznos lesz
A tömböket... No igen, egyszer rá kéne már szánni magam.
Köszönöm!!!
-
m.zmrzlina
senior tag
válasz
hallgat #18980 üzenetére
Nézd át ezt az oldalt! Főleg attól a résztől, hogy: Read/Write Large Blocks of Cells in a Single Operation
Esetleg ez is segíthet. Vagy ez.
Szerintem nem fogod megúszni a tömbök használatát.
-
hallgat
csendes tag
válasz
hallgat #18947 üzenetére
Sziasztok!
Sikerült túlesnem a szintaktikai bénázáson
, DE...
Tudtok erre gyorsabban lefutó megoldást?
Ez így már tisztességes ideig elszórakozik egyetlen oszloppal is, nem 190-nelSub Makró1()
Dim o As Integer
Dim s As Integer
For o = 190 To 2 Step -1
For s = 1422 To 3 Step -3
Sheets("Munka2").Cells(s, o).Select
If IsEmpty(Sheets("Munka2").Cells(s, o)) Or (Sheets("Munka2").Cells(s, o)) = 0 Then
Sheets("Munka2").Range(Cells(s, o), Cells(s - 2, o)).Delete Shift:=xlToLeft
End If
Next s
Next o
End SubKöszi!!!
-
lappy
őstag
-
m.zmrzlina
senior tag
-
m.zmrzlina
senior tag
válasz
nova001 #18973 üzenetére
Nekem is volt egy hasonló problémám. Az erre adott válaszok közt nézz körül!
Kell hozzá egy ActiveX Combobox. Nálam az egyszerűsíti a dolgokat, hogy egy jól körülhatárolható tartományba (B oszlop) írja egymás alá a Comboboxban (Automatikus kiegészítéssel) bevitt értékeket.
-
nova001
senior tag
hello
kövi a problémámvan egy exel abba igy nézki az adatok
335 VELEKEY SZERELVÉNYGYÁRTÓ
336 VENTAS COFFEE HUNGARY KFT
337 VILATI GYÁRTO ZRT
338 VILLEROY & BOCH
339 VÖRÖSKŐ KFT – EURONICS
340 VÖRÖSKŐ KFT – EURONICS
stbstbakarok egy lenyiló listát amibe abc sorrendbe vannak a nevek és ha elkezdek gépelni kidobja a javaslatot ?? vagy valami ehez hasonlo kéne nekem
-
gaben1117
senior tag
Sziasztok!
Nem teljes mértékben excel a probléma, de szorosan összefüggésben van.
Hogyan tudom azt megoldani körlevélnél, hogy az elkészült leveleket egyesítésnél külön dokumentumba mentse el? (rekordonként külön fájl, mert alapból ugye egy doksiba hozza létre őket külön oldalon)
Előre is köszi!
-
tPedro_
őstag
Sziasztok!
Az alabbi problemara keresek excel-es megoldast, ha letezik ilyen persze:
Adott egy fa adatszerkezet, minden csomopontjaban az ott levo elemek darabszama. Ezt kene egy diagrammal abrazolni ugy, hogy a csomopontok merete a darabszamtol fuggoen lenne kisebb/nagyobb.
Lehet ilyet kesziteni excelben? Vagy van esetleg mas megoldas fa adatszerkezet abrazolasara?
Remelem ertheto volt, mire lenne szuksegem, koszi elore is.
Udv,
-
alfa20
senior tag
Sziasztok,
Most az órabérrel küzdök és elakadtam kicsit:
D2: 8:00 - (munkakezdés ideje)
E2: 17:00 - (munkaidő vége)
F2: 1:00 - (ebéd idő)
G2: =SZUM(E2-D2-F2) - (ledolgozott órák száma eredmény:8:00)
H2: =SZUM(G2:G6)*24 - (heti ledolgozott órák szám)
I2: 8,50 € - (órabér)
K2: =SZUM(G2*J2)*24 - (Napi bér
L2: =SZUM(K2: K6) - (heti bér)A fenti dolog addig szépen is működik amíg a ledolgozott órák száma egész óra, vagy fél óra (pl.: 8:00 vagy 8:30), de ha valahol negyed vagy háromnegyed óra jön ki eredményül (pl.: 8:15 vagy 8:45), akkor nem jól számolja napi illetve a hetibért.
tudna valaki segíteni a problémámban?
Köszönöm előre is!
-
hallgat
csendes tag
Szia!
Ha 2010 Excelt használsz, a következő módon meg tudod oldani:
1., A cellának alap esetben zároltnak kell lennie a cellaformázás -> védelem fülön.2., Ne legyen bekapcsolva a lapvédelem.
3., Menj a Korrektúra eszköztárra, azon belül a változások blokkhoz és válaszd a Tartományok szerkesztésének engedélyezése gombot.
4., Itt megadhatod, hogy ha védett lesz a lap, akkor mely cellák szerkeszthetők mégis, ha tudja a felhasználó a jelszót.
5., Kapcsold be a lapvédelmet
-
rtom
senior tag
Helló,
azt meg lehet oldani, hogy a táblázatom egy adott oszlopába csak jelszóval lehessen beírni? A lap formátuma lapvédelemmel ellátott, attól eltérő védelemre lenne szükség. Pl. olyanra gondolok, hogy a laphoz rendelek egy makrót, ami mondjuk a kurzor G oszlopra mozgatása esetén eggyel balra mozgatja azt, de hogyan lehetne ezt jelszóval feloldani?
-
Delila_1
veterán
válasz
#05304832 #18955 üzenetére
Nálam a másik tábla a Munka2 lapon van. Ez kétszer szerepel a makróban, írd át a saját lapod nevére. Segédoszlopként a Munka2 lap Z oszlopát használja, amit a másolás után töröl. Ha ezt az oszlopot használod, írd át a makróban mind a 4 helyen.
A módosítások után kijelölöd az első lap B oszlopban a másolandókat, és indítod a makrót.
Sub mm()
Dim elso As Long, utolso As Long
utolso = Sheets("Munka2").Range("C" & Rows.Count).End(xlUp).Row + 1
If utolso = 2 Then utolso = 12
Selection.Copy Sheets("Munka2").Range("Z" & utolso)
Sheets("Munka2").Select
elso = utolso: utolso = Range("Z" & Rows.Count).End(xlUp).Row
Range("C" & elso & ":C" & utolso) = "=VLOOKUP(Z" & elso & ",Munka1!B:D,3,0)"
Range("C12:C" & utolso).Copy
Range("C12").Select
Selection.PasteSpecial Paste:=xlValues
Columns("Z").Delete
End Sub -
Pá
addikt
Vlookup függvényt szeretnék használni, de úgy hogy a táblázat fordítva van, szóval mintha transponsálva lenne.
Tehát oslzopok helyett a sorokat szeretném nézni.szerk: Hlookup
-
válasz
superecneB #18949 üzenetére
irányított beillesztés az üresek átugrása funkcióval
-
superecneB
őstag
Üdv,
Kifogytam az ötletekből.
Hogyan tudnám a képen illusztrált "parancsot" kiadni?
Szeretném a jelenleg a "B" oszlopban lévő nevek mellet ("C" oszlop) lévő számokat a nevek alá a "B" oszlopba illeszteni. Lényegében össze szeretném fűzni a két oszlopot, vagy összefésülni, ha úgy jobban tetszik.
Van erre Excelen belül valami parancs, vagy valami egyéb "kényelmes" megoldás? -
rtom
senior tag
válasz
kovalasz #18939 üzenetére
Nem biztos, hogy segít, de nálam a nyelv/karaktertábla állítgatásával teljesen más karaktersort olvas be a kódolvasó, mivel ezeket az eszközöket billentyűzetként kezelik a PC-k.
Egyébként furcsa élményeim vannak scanner-ekkel, az egyik típusnál beolvasok A1-be, akkor a karaktersort automatikusan másolja B1-be is, illetve gondolom, ha az excel lefelé léptetésre lenne beállítva, akkor az A2-be kerülne. A fele annyiba kerülő, "buta" típussal viszont vígan, gond nélkül dolgoznak. Ugyanez az olvasó ma lepett meg azzal, hogy a lapvédett oldalamon a cellát, amibe beolvastam, zárolta és így a következő beolvasás persze már nem működik
-
hallgat
csendes tag
Sziasztok!
Segítséget szeretnék kérni egy egyszerűbb makróban, ami mégis kifogott rajtam
Van egy 190 oszlopból és 1422 sorból álló Excel 2010 táblám.
Minden harmadik sora tartalmaz, vagy nem tartalmaz adatot.Törölni szeretném az adatot nem tartalmazó cellákat a fölöttük lévő további két cellával egyetemben úgy, hogy a fennmaradó cellákat tolja el balra.
Úgy indultam el, hogy egy ciklusba betettem i= utolsó sornak az ellenőrizendő utolsó sort (1422), végnek a 3. sort (azaz az utoljára ellenőrizendőt), lépésköznek pedig -3-at, mert csak minden 3. sorban kell cellákat ellenőrizni.
Ezt követően ellenőriztetem az értékét 1422.sor, GH cellájának (190. oszlop), ami ha üres, vagy nulla, akkor törölni kellene cellák balra tolásával GH1422:GH1420 3 cellát, majg ugrani a következő ellenőrizendő cellára, azaz GG1422-re.
Ha ezzel a sorral végzett, kéne kezdenie GH1419 ellenőrzésével és szépen végig az egész soron és felfelé a táblázatban.Sajnos a szintaktikán elvéreztem, nagyon béna vagyok...
A segítséget előre is köszönöm!!!!!!!!!!!!!!!!!!!!
-
rtom
senior tag
-
rtom
senior tag
Még egy kérdés: makróból lehet a nyomtatást úgy paraméterezni, hogy egy bizonyos nevű hálózati nyomtatóra printeljen?
-
rtom
senior tag
Sziasztok,
újfent elakadtam, van egy makrós excel táblám, ami a bevitt adat függvényében választja meg, hogy melyik sheetre kell másolni. Mivel előtte pár dolgot lecsekkolnék, így szükségem lenne egy fkeres-re is, de azt nem tudom, hogy lehet hivatkozni a függvényben egy sheetnévre.
Tehát e helyett
=HA(HIBÁS(FKERES(D2;'Munka3'!B21:B34;1;HAMIS));"OK";"NOK")
lenne szükségem egy olyan megoldásra, ahol a sheet nevét ami jelenleg Munka3 mondjuk a G2 cellából veszi a függvény. Remélem érthető.
-
kovalasz
újonc
Sziasztok!
Vonalkód olvasó vs Excel 2003 laptopon! Symbol vonalkód olvasó USB csatlakozással bármely asztali gépen többféle op. rendszeren több féle excel verzión is tökéletesen olvassa a vonalkódokat, a kereső ablakba is, majd utána a találati cellára kerül a fókusz. De laptopon (eddig már 6 különböző eszközön) ha az excel aktuális cellájába jól is olvassa be a vonalkódot, a keresőablakban már nem. Pl. 326Y000715 helyett csak ennyit: 326715. De, hogy cifrázzam, a laptopokon notepad, wordpad és bármilyen egyéb szövegbeviteli mezőben tökéletesen olvas, csak az excel keresés mezőjébe nem.
Ha valaki tud erre megoldást, nagyon megköszönöm, mert többen vagyunk a témán már napok óta... -
Poctar
senior tag
m.zmrzlina
Készítettem egy példa táblázatot, ahol az A és B oszlopban található szöveges adatott szövegként tüntettem fel (a gyorsabb kitöltés miatt).
Íme a kép.A lényeg, hogy az A oszlop frissebb, mint B. Azaz a B-ben régi adatok (sorok) vannak, melyek már A-ban nincsenek. De a megmaradt adatok ugyanazok. Ez érthető?
lappy:
Az Fkeres függvénnyel nem sikerült megoldani, ahogy a képen is látszik. -
Poctar
senior tag
Sziasztok!
Rég használtam már az excelt és szükségem lenne egy kis segítségre
.
A problémám a következő:
Adott 3 oszlop több száz sor fix adattal.
B oszlopban szöveges adatok találhatóak, míg a C-ben számok (Ezek a B-hez vannak "társítva" értelemszerűen...).
A oszlop egyezik B oszloppal annyi különbséggel, hogy jó néhány adatsor eltávolításra került.
A feladat az lenne, hogy a C oszlopban található számokat kellene társítani az A oszlopban található adatokkal (a B-nek megfelelően).Azaz ha B-ben xy=100 akkor írja ki A oszlop xy adata mellé, hogy 100 (pl D oszlopba).
-
nimmy001
csendes tag
Sziasztok!
Excel makróban lehet olyat csinálni, hogy egy cellába beírt értéktől függően fusson le egy makró (pl. megnyit egy másik fájlt attól függően, mi a cella értéke)? Nem akarunk gombokat meg billentyűkódot használni, automatikusan kéne működnie, ha nincs a cellának tartalma, ne csináljon semmit, ha kerül oda tartalom, akkor meg csináljon.
-
Delila_1
veterán
válasz
m.zmrzlina #18925 üzenetére
próbáld meg, hogy az
ActiveWorkbook.Worksheets(2).Range("C1:C51")
sorban az aktív füzet helyett a másikra hivatkozol, útvonallal és kiterjesztéssel.
Nem hiszem, hogy sikerülne, mert a nevet a másik fájlban kell bejegyezni, ahhoz pedig meg kell nyitnod.
Egy megnyitatlan fájlból lehet olvasni, de írni bele nem valószínű. -
m.zmrzlina
senior tag
válasz
Delila_1 #18924 üzenetére
Köszi a választ.
Időközben született egy megoldás ami úgy látszik működik:
Workbooks.Open Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\")) & "forrásadatok.xlsx"
Mostmár csak az a kérdés, hogy mindenképpen meg kell-e nyitnom ezt a fájlt ahhoz, hogy definiáljak benne egy tartományt,
Set rngTartomány = ActiveWorkbook.Worksheets(2).Range("C1:C51")
vagy lehet-e másképp is?
-
Delila_1
veterán
válasz
m.zmrzlina #18922 üzenetére
Mit szólsz ahhoz, ha kitallózhatod a megnyitandó fájlt?
Private Sub Megnyit()
Dim FN As String
FN = Application.GetOpenFilename(filefilter:="Microsoft Office Excel 97-2003 munkalap(*.xls),*.xls", FilterIndex:=2, Title:="Select Database file", MultiSelect:=False)
If Not FN = "False" Then
Workbooks.Open Filename:=FN
MsgBox "Megnyitottad a fájlt, és aktív"
Else
MsgBox "Nem nyitottad meg a fájlt"
End If
End SubNem tudom, melyik verziót használod, a 2003-as, xls kiterjesztésűt tettem bele.
-
m.zmrzlina
senior tag
Létezik a ThisWorkbook.Path ami visszaadja makrót tartalmazó munkafüzet elérési útját.
Nekem azonban az eggyel felljebb lévő alkönyvtár elérési útjára lenne szükségem, illetve egy abban az alkönyvtárban lévő fájlra szeretnék hivatkozni. Az nem megoldás, hogy fixen megadom az elérési utat mert az mindig változik.
Az a kérdésem, hogy van-e a képletek relatív hivatkozásához hasonló módszer erre a célra, vagy bűvészkedjek azzal, hogy a ThisWorkbook.Path által visszaadott sztringben az utolsó "\" utáni részt lecserélem a hivatkozni kívánt munkafüzet nevére?
-
markusok
csendes tag
Sziasztok!
Szakdolgozatomhoz egy makrós Magyarország térképet szeretnék elkészíteni Excelben. Angol oldalon láttam hozzá elkészítési vázlatot, meg is tudtam csinálni, de nekem a makró futtatásánál hibát ír ki Run-time error '-2147024809 (80070057)'. Erre a sorra ír hibát: ActiveSheet.Shapes(Range("actReg").Value).Select
Kezdő vagyok makrók terén, ha valaki meg tudná oldani ez a hibát vagy megoldási javaslata van, akkor azt szívesen venném.
A fájl publikus, itt érhető el: [link]Köszönöm előre is!
-
Delila_1
veterán
Ahogy Föccer írta, indirekt függvénnyel oldható meg.
Az L... lapjaidon használd segédcellaként a T1 és T2 cellákat.
T2-be az egyes lapokon azt a számot írd be, ahonnan a sorszámot kell vennie az M34-nek, tehát az L22 lapon 30, L23-ban 31 legyen.
A T1 cella mindegyik lapon az első lapod neve, Havi leolvasás. Ezt egyszerűen, egyszerre beviheted az összes lapra. Kijelölöd az L lapjaidat együtt – L22-re katt, Shiftet nyomva tartva L55 fülére katt –, és az éppen aktuálisba beírod a lapnevet.
Még mindig együttes kijelölésben az M34 cellába írd be a képletet: =INDIREKT("'" & T1&"'!U"&T2)
Leírom szóközökkel, úgy jobban látszik.
=INDIREKT(" ' " & T1 & " ' !U" & T2)Ezzel kész, de feltétlenül oldd fel az együttes kijelölést úgy, hogy a jelöletlen, Havi leolvasás lap fülére kattintasz, másképp minden beírás, törlés az összes L lapodon végrehajtódik.
-
vioo
csendes tag
Kedves ExcelGuruk!
Segítségeteket szeretném kérni a következő problémámra: hogyan lehet megoldani egy másolás során, hogy az relatív legyen, vagyis minden következő beillesztés eggyel több legyen az előzőnél?
Konkrétan: vagy egy 56 munkalapos excel fájlom. Az első, Havi leolvasás fülön az U oszlopban 30-tól 84-ig azok a számok, melyeket az összes többi munkalap (L22, L23, L24, .... L55) M33-as cellájába szeretném átmásolni úgy, hogy az
L22 munkalap M33-ba a Havi leolvasás fül U30-as összegét, az
L23 munkalap M33-ba az U31, a
L24 munkalap M33-ba az U32... és így tovább, az utolsó, vagyis
L79 munkalap M33-ba az U84 cella tartalma.Tkp. azt szeretném, hogy az L22 lap M33-ba beírom, hogy ='Havi leolvasás'!U30 és a következő lapon, az L23 M33 cellájába bemásolom ugyanezt a képletet, de már U31 legyen és így tovább.
Azt nem írhatom, hogy =('Havi leolvasás'!U30)+1, mert azt az U30 cella értékéhez adja hozzá és nem a képlethez.
Eddig azt csináltam, hogy a fenti képletet bemásoltam az összes lap M33 cellájába, majd manuálisan javítottam minden egyes lapon az U30-at 31-re, 32-re, stb., de ez így nagyon hosszadalmas, ráadásul sokszor van rá szükség. Biztosan van rá okos megoldás, esetleg függvény; netán lehet variálni valamit a S1O1 formátummal? -
atila4
senior tag
Köszi! Sokat segítettél
-
atila4
senior tag
Sziasztok! Segítséget szeretnék kérni.
Van egy excel táblázatom. Nem nagy dologról van szó, csak vezetek egy nyeremény listát napi bontásban.
1 cella: tét
2 cella: a szorzó
3. cella: a nyeremény
4. cella: nyereség
5 cella: nyert/vesztett
6 cella: +-ba vagy -ba sikerült a nap
7 cella: eddig nyert pénzNa már most ez megvan oldva úgy, hogy beírom a tétet és a szorzót akkor kiszámolja a napi nyereséget és a nyereményt. Itt akarok egy olyant, hogy csak akkor számolja ki ezeket az adatokat ha én az 5-ös cellába beírom azt, hogy Nyert. Ha vesztett akkor ne számoljon semmit csak vonja le a tét-et az eddig nyert pénzből(7 cella)
Remélem értitek is és tudtok is segíteni!
Előre is köszönöm!
Üdv! -
Mutt
senior tag
Hello,
...miért áll meg a debug a Range("B21:B" & usor). Select sornál....
Az egyik probléma, hogy az usor-t rosszul határozod meg.
A .Range("B21:B" & Rows.Count).End(xlDown).Row + 1 azt mondja, hogy menjen el az utolsó sorba és használja a következőt, az utolsó után már nincs sor.Ha a B21 után használt utolsó cella sora kell, akkor xlDown helyett xlUp-ot használj.
A másik probléma itt, hogy a .Range("B21:B" & Rows.Count).End nem jó, mivel azt csinálod hogy B21:B1048576-os tartományt kijelölöd, a kurzor továbbra is B21-ben van, de nyomsz egy END-et vagyis elugorsz végre B1048576-re. Ez így felesleges, egy lépésben csináld: Range("B" & Rows.Count).End
A kódban a Selectek miatt nem lehet követni, hogy éppen hova akarsz dolgozni. Valójában az aktív lapod nem változik, maradsz a beolvas-on, ezért javaslom, hogy rendesen írd ki, hogy éppen hol akarsz módosítani.
pl. Range("B21:B" & usor).Select helyett
ThisWorkbook.Sheets(lapnev).Range("B21:B" & usor).SelectVégül pedig lehet pár dolgot egylépésben is csinálni.
Range("D2").Select
Selection.Copyhelyette:
Range("D2").CopyVagy a végén:
Sheets("beolvas").Select
Range("A2").Select
Selection.Clearhelyette:
Sheets("beolvas").Range("A2").ClearItt van a javított változat:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim usor As Long
Dim lapnev As String
If Range("A2") <> Empty And Range("A4") = "OK" Then
Range("D2").Copy
lapnev = Range("F2")
Sheets(lapnev).Select
usor = ThisWorkbook.Sheets(lapnev).Range("B" & Rows.Count).End(xlUp).Row + 1
ThisWorkbook.Sheets(lapnev).Range("B21:B" & usor).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("beolvas").Range("A2").Clear
End If
End Subüdv
-
rtom
senior tag
Szevasztok!
Egy makróm nem akar működni, de nem értem miért áll meg a debug a Range("B21:B" & usor). Select sornál.
A kód:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim usor As Long
Dim lapnev As String
If Range("A2") <> Empty And Range("A4") = "OK" Then
Range("D2").Select
Selection.Copy
lapnev = Range("F2")
Sheets(lapnev).Select
usor = ThisWorkbook.Sheets(lapnev).Range("B21:B" & Rows.Count).End(xlDown).Row + 1
Range("B21:B" & usor).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("beolvas").Select
Range("A2").Select
Selection.Clear
End If
End SubSzerk.: a kiemelés nem látszik programkódban...
-
brumollis
csendes tag
Sziasztok! A következőkben szeretnék segítséget kérni.
Van egy excel tábla: az első oszlop a képeké, a második a kódoké, a harmadik a megnevezéseké. Szeretném, ha minden kódhoz a megfelelő képet illesztené be a cellába. A képek hálózaton vannak, de a képek elnevezései azonosak a kódokkal.A kép elérési útvonala ilyesmi( ActiveSheet.Pictures.Insert( _
"L:\XXXXX\YYYY\ZZZZZ\WWWW\300049.jpg").Select
Selection.ShapeRange.ScaleHeight 0.2, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleWidth 0.2, msoFalse, msoScaleFromTopLeftHa tudtok segíteni az megköszönöm, ha nem hát kutakodok tovább.
-
rii
nagyúr
ügyfél volt szives elb.szni az excel-t
rossz oszlopot osztottak rossz oszloppal
hogy lehet átírni a Q-t R-re 570 soron át egyszerre?
-
Delila_1
veterán
válasz
basaharc502 #18903 üzenetére
Akkor tudod megnézni, ha a beíráskor rögzítetted a dátumot. Ezt megteheted billentyűzetről, de a laphoz rendelt makró be is írhatja.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then 'A oszlop változása
Range("B" & Target.Row) = Date 'dátum a B oszlop azonos sorába
End If
End SubEz a makró az A oszlop – Columns(1) – változását figyeli, és a B oszlop azonos sorába írja be az aktuális dátumot.
-
kopogo
tag
válasz
basaharc502 #18903 üzenetére
hello
az nem elég hogy maga a doksi mikor lett utoljára mentve,és ki mentette?
-
basaharc502
aktív tag
Hali!
Van egy excel táblázatom, amibe folyamatosan írkálok adatokat. Azt meg tudom nézni, hogy egy cellába, vagy sorba az adott adatot mikor (tehát dátum szerint) írtam be? Vagy ilyenre esély sincs...
-
nimmy001
csendes tag
Sziasztok!
Volna egy kérdésem:
Tegyük fel, hogy van egy 200 soros táblázatom, de nem biztos, hogy végig van adat. Ahol van adat, azokban a sorokban jobboldalon jelöljük a különféle folyamatokat jelölőnégyzettel (több oszlopban), ha valamelyik el van végezve. Ez rendben működik is szépen.
Meg lehet-e azt csinálni, hogy ha leszűrünk néhány sorra (AutoFilter), akkor ezeket a leszűrt sorokat egy kattintásra jelöljük, hogy az adott folyamat el van végezve? Nem akarom az összes folyamatot és az összes sort egyszerre jelölni, ez 1-1 folyamat oszlopához kellene csak, mert van, amit összesítve lehet nézni, de nem mindegyiket, van, amit csak egyenként, viszont amit összesítve lehet jelölni, arra jó lenne egy ilyen. Aztán ha másik sorokat is le akarnék szűrni és együttesen jelölni, akkor ugyanígy csak azokat jelöljük be, ami meg nem látszik, ahhoz ne nyúljon. Én valami gombos megoldásra gondoltam. A táblázatba minden nap más adatok kerülnek, úgyhogy mindig üresen indul és nem lehet tudni, hogy hányféle azonos típusú sor kerül bele és azokból hány sor lesz a végén. 200 sornál nincs több, de van, amikor pont ennyi, van, amikor kevesebb. Ha üres sor van, azt nyilván nem akarjuk jelölni sehol.
Szóval az a lényeg, hogy ha leszűrnénk azonos típusú sorokat, azokat egy kattintásra be lehessen jelölni, mondjuk elsőre csak az egyik oszlopban (de ha több oszlopba is kell, akkor oszloponként) és mindig csak a láthatókat.Remélem, érthetően írtam. :-)
-
tau83
csendes tag
Sziasztok.
Lenne egy olyan problémám amire nem találok megoldást, pedig biztos egyszerű és valószínű én vagyok a huje is...
Annyi lenne a lényeg, hogy ha teszem azt egy weblapról vagy akárhonnan valamit kimásolok és azt utána beillesztem excelbe akkor ne html meg unicode meg ilyen marhaságokkal illessze be hanem csak sima szövegként. Word-be megtaláltam, illetve az excelbe is irányított beillesztéssel, de az nem jó. CTRL+V -re kellene, mert nincs idő jobbklikkelgetni meg még listából válogatni hogy mit is akarok a beillesztéssel. (Office 2007 amúgy)
Köszönöm!
Új hozzászólás Aktív témák
Hirdetés
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- PC Game Pass előfizetés
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- LG 65C3 - 65" OLED evo - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox!
- IPhone 12 Mini 64GB Szép Állapot! Akku:100% 6 hó jótállás
- HIBÁTLAN iPhone 11 64GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS2132
- Eladó szép állapotban levő Apple iPhone 8 Plus 64GB / 12 hónap jótállás
- Prémium PC házak akár 20-40% kedvezménnyel eladók garanciával, számlával!
Állásajánlatok
Cég: FOTC
Város: Budapest