- Kábeleket és csövezést rejtő "kirakatház" a GameMax logójával
- Felvarrták az Arctic rackmount rendszerekhez szánt CPU-hűtőjének ráncait
- Háromféle kivitelben, és nem kis kapacitásokkal jönnek a Micron 6550 ION SSD-i
- Már a Samsung sem szolgálja ki modern AI lapkákkal Kínát
- Havazáshoz igazított kiadás kap a Steam Deck OLED
-
PROHARDVER!
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
-
föccer
nagyúr
válasz Polllen #30850 üzenetére
Bár nem teljesen értem, hogy mi a feladat, de a =KEREKÍTÉS() függvény erre jó. Meg lehet adni benne, hogy 50-re kerekítsen. Ehhez tartozik még a =PLAFON() illetve a =PADLÓ() függvény is (vag lehet, hogy kerekít.le és kerekít.fel néven van, erre most nem emlékszem.
(#30849) Gyufaaa: Mondtam, hogy formázni kell a megjelent értéket.
üdv, föccer
[ Szerkesztve ]
Építésztechnikus. Építőmérnök. Ingatlan adás-vétel vevő oldali támogatása. Mérnök tanácsadás, felújításhoz, átépítéshez. Excel feladatok megoldása. Lézergravírozás. Mindent IS csinálok: www.jatekosfejlodes.hu
-
sztanozs
veterán
válasz róland #30852 üzenetére
Ja, hogy a forrás listának range-et adsz meg - azt nem tudod megoldani, csak dinamikus range-dzsel.
Csináltam már ilyet, de kell hozzá néhány plusz oszlop és egy-két plusz bonyolultabb named range.
Array formula a Controls worksheet A oszlopban levő elemek deduplikálására (a D oszlop header-je ne szerepeljen egyszer se a deduplikált oszlopban), feltételezve, hogy az adatok 2-15 között vannak:
=IFERROR(INDEX(Controls!$A$2:$A$15, MATCH(0, COUNTIF(D$1:$D1, Controls!$A$2:$A$15), 0),1),"")Array formula, D2-be kel beírni (és CRTL+ENTER-rel bevinni) és célszerű lehúzni a deduplikált tábla aljáig
A headernek (D1) 0-t célszerű beállítani, mert így távolítja el az adatok között levő üres cellákat is.És utána egy olyan named range kell, ami levága az utolsó üres cellákat:
=OFFSET(Controls!$D$2,0,0,COUNTIF(Controls!$D$2:$D$15,">""""")-1,1)Ez kell beállítani egy Workbook-érvényességű named-range-be, és ezt a range-et adod meg a listába érvényesítésre.
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
róland
veterán
válasz sztanozs #30853 üzenetére
Jól magyarítottam a függvényeket?
HAHIBA(INDEX($A$2:$A$20;HOL.VAN(0;DARABTELI(D$1:$D1;$A$2:$A$15);0);1);"")
OFSZET($D$2;0;0;DARABTELI($D$2:$D$20;">""""")-1;1)
A "Controls" munkalap helyett azonos munkalapon lévő listára átírva.
[ Szerkesztve ]
http://logout.hu/cikk/mi_is_az_a_htpc/teljes.html; Három emeleten át egy teljes liftrapszódiát játszik!
-
MegaNorby
tag
Sziasztok,
Hogyan lehet megoldani a következőt? Az A oszlopban nevek vannak, valamejik többször is, a B oszlopban számok vannak. Nekem a mondjuk a C oszlopba írja ba a megfelelő névhez tartozó összdarabszámot.
valahogy így kellene a C oszlop:
A B C
a 1 1
b 2 2
c 3 3
d 2 2
e 1 3
e 2 3
f 5 5
g 2 2
h 1 10
h 4 10
h 5 10
i 2 2
j 1 1a segítséget előre is köszönöm.
ui: lehet hogy képet kellett volna beillesztenem, bocsi.
[ Szerkesztve ]
Northlight music
-
Carasc0
őstag
Sziasztok!
Tavaly nyáron sok segítséget kaptam itt. Azt a bizonyos segítséget mai napig használom, de most kellene némi kiegészítés/módosítás. Lényegre térek! Adott egy kód:
Sub Kever()
Dim sor As Integer
Application.ScreenUpdating = False
Range("A1:A20").Copy Range("B1")For sor = 1 To 20
Cells(sor, "C") = "=RAND()"
Cells(sor, "C") = Cells(sor, "C").Value
NextActiveWorkbook.Worksheets("BÓNUSZ GENERÁTOROK").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("BÓNUSZ GENERÁTOROK").Sort.SortFields.Add Key:=Range("C120"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("BÓNUSZ GENERÁTOROK").Sort
.SetRange Range("B120")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End WithRange("C120").ClearContents
Application.ScreenUpdating = True
End SubAz A1:A20-ba ha megadom 1-20-ig a számokat, akkor azt nekem összekeverje kiadja a C120-ba. Ez teljesen jó eddig.
Na most a jön a neheze:
Adott 2db cellatartomány. Az egyik az A1:A25 Ebbe ugyanúgy 1-25-ig kerülnek bele a számok. A másik cellatartomány legyen a C150.
Feladat:Az A1:A25-ben lévő számokat úgy keverje össze, hogy kihagyás nélkül feltöltse a C125 tartományt, a maradék 5db szám pedig a C2650-ben elszórtan! kerüljenek. Tehát a fenti kódot kéne így még megspékelni.Nagyon hálás lennék!
Gondolkodj globálisan és tegyél lokálisan!
-
the radish
senior tag
Sziasztok!
Userform textboxban szeretnék adószám formátumot megadni, azaz a bevitt adatot ne csak a cellában lássam adószám formátumban, hanem az userformban is.
Hol tudom ezt megadni?
Előre is köszönöm.[ Szerkesztve ]
-
Delila_1
veterán
válasz the radish #30860 üzenetére
Private Sub TextBox1_AfterUpdate()
Application.EnableEvents = False
If Len(TextBox1) <> 11 Or Not IsNumeric(TextBox1) Then
MsgBox "Hibás adószám", vbOKOnly + vbInformation
Exit Sub
Else
TextBox1 = Format(TextBox1,"00000000-0-00")
End If
Application.EnableEvents = True
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
the radish
senior tag
-
Fferi50
Topikgazda
válasz the radish #30858 üzenetére
Szia!
Örülök, hogy sikerült adaptálnod. Pár éve egy másik fórumon volt egy kis vitánk, hogyan lehet excel - word körlevél együttműködést "optimalizálni". A VBA help alapján - no meg a Word makrórögzítés segítségével - akkor sikerült összeraknom ezt a viszonylag egyszerű megoldást. Az akkor munkafüzetet már nem találtam, de a helpek a "helyükön voltak" és az "emlékfoszlányok" is segítettek.
Remélem, nem lesz a későbbiekben sem probléma.Üdv.
-
YAN0U
csendes tag
Sziasztok,
Segítségetekre lenne szükségem.
Másolás probléma. Egyik excel táblából a másikba szeretnék másolni makró segítségével adatokat.
A másolt táblában elméletileg már csak az értékek vannak köztük üres cellák. A problémám az, hogy ebből a file-ból olvas a vb2010 el készített progi. A bemásolt adatokkal teli cellával nincs is gond, de az üressel igen, azt jelzi hogy nem konvertálható single típusra. Megnyitom az excel filet és az üres cellákra nyomok egy del-t mindjárt működik. Már az összes irányított beillesztést próbáltam de semmi.Köszönöm a választ
-
the radish
senior tag
válasz Fferi50 #30863 üzenetére
Biztosan nem, már jócskán benne vagyok a melóban, de eddig jól működik.
Viszont szeretném azt megoldani, hogy bizonyos esetekben csak a 3. oldal nyomtatódjon ki.
Ezzel próbálkozok, de nem jön össze, kilöki az összes oldalt:
wddoc.PrintOut Copies:=1, Pages:="3"
Van valami megoldás rá?
-
YAN0U
csendes tag
válasz the radish #30865 üzenetére
From, To esetleg?
From:=3, To:=3, Copies:=1
-
Carasc0
őstag
Meghívom egy sörre az egész fórumot csak léccike ezt oldjátok meg nekem!
Gondolkodj globálisan és tegyél lokálisan!
-
Delila_1
veterán
válasz Carasc0 #30867 üzenetére
"Az A1:A25-ben lévő számokat úgy keverje össze, hogy kihagyás nélkül feltöltse a C1:C25 tartományt."
Hol van itt 5 maradék? Ess neki újra a feladat megfogalmazásának, hátha akkor kapsz segítséget.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Carasc0
őstag
válasz Delila_1 #30869 üzenetére
Igazad van! Rosszul írtam! No akkor még egyszer.
Adott 2db cellatartomány. A1:A25 és C1:C50.
A1:A25 = Ide gépelem be a számokat 1-25-ig.
A program keverje össze az 1-25 számokat randomra, majd az összekevert számokkal töltse fel a C1:C20 tartományt. De ugye marad még 5db szám. Azt pedig randomra szórja el a C21:C50 tartományra.
[ Szerkesztve ]
Gondolkodj globálisan és tegyél lokálisan!
-
bteebi
veterán
válasz the radish #30868 üzenetére
Idézőjelek nélkül szerintem működnie kellene.
From:=3, To:=3, Copies:=1
Valószínűleg korábban is csak annyi volt a baja. A Copies meg minden bizonnyal felesleges, mert az 1 lehet a default.
#30872: "Hol a söröm?"
A postán .[ Szerkesztve ]
Cancel all my meetings. Someone is wrong on the Internet.
-
Delila_1
veterán
válasz Carasc0 #30870 üzenetére
Sub Kever()
Dim sor As Integer
Application.ScreenUpdating = False
With Sheets("BÓNUSZ GENERÁTOROK")
.Range("C1:C50").ClearContents
.Range("A1:A20").Copy Range("C1")
.Range("B1:B20") = "=RAND()"
.Range("B1:B20").Copy
.Range("B1").PasteSpecial xlPasteValues
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:= _
.Range("B1:B20"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With .Sort
.SetRange Range("B1:C20")
.Header = xlGuess
.Orientation = xlTopToBottom
.Apply
End With
.Range("A21:A25").Copy Range("C21")
.Range("B21:B50") = "=Int(Rand() * (50 - 21)) + 21"
.Range("B21:B50").Copy
.Range("B21").PasteSpecial xlPasteValues
.Sort.SortFields.Add Key:= _
.Range("B21:B50"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With .Sort
.SetRange Range("B21:C50")
.Header = xlGuess
.Orientation = xlTopToBottom
.Apply
End With
.Range("B1:B50").ClearContents
.Cells(1).Select
End With
Application.ScreenUpdating = True
End SubHol a söröm?
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
the radish
senior tag
-
Carasc0
őstag
válasz Delila_1 #30872 üzenetére
Szia!
Sör útban van! De a programod olyan funkciót csinál, amit én is megtudtam oldani a korábbi hozzászólásban megadott kód alapján. Tehát ez is azt csinálja, hogy 20-at összekever amit el is helyez 20 cellába, és a maradékot pedig szétszórja. Igen ám, de a szétszórás az csak a 21-25 számokkal történik.
Lehet még mindig nem pontos a megfogalmazásom!
A Program generáljon egész számokat 1-25 között (1 és 25 is lehet).. amit szétszór a C1:C20-ban illetve a maradékot pedig a C21:C50-be. 1db számot csak 1x generálhat.
Tehát ha feltöltöm az A1:A25 tartományt, abból válogasson kedvére 20db számot amivel feltölti a C1:C20-at, a maradék pedig szóródjón a C26:C50 tartományba.
Lehet hogy így még világosabb hogy mit szeretnék!
[ Szerkesztve ]
Gondolkodj globálisan és tegyél lokálisan!
-
bteebi
veterán
válasz the radish #30873 üzenetére
Hát ez baromi érdekes. Idézőjelek nélkül el se indul, idézőjellel pedig nem azt csinálja, amit kellene... Excellel pedig biztos, hogy idézőjelek nélkül megy (ki is próbáltam), sőt változókkal is működik.
Cancel all my meetings. Someone is wrong on the Internet.
-
Delila_1
veterán
válasz Carasc0 #30874 üzenetére
Tartományhoz (pl. C1:C25) használd a Konvertálatlan gombot.
Sub Kever()
Dim sor As Integer, sor1 As Integer
Application.ScreenUpdating = False
With Sheets("BÓNUSZ GENERÁTOROK")
.Range("C1:C50").ClearContents
.Range("A1:A50").Copy Range("C1")
Randomize
.Range("B1:B50") = "=RAND()"
.Range("B1:B50").Copy
.Range("B1").PasteSpecial xlPasteValues
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:= _
.Range("B1:B50"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
With .Sort
.SetRange Range("B1:C50")
.Header = xlGuess
.Orientation = xlTopToBottom
.Apply
End With
For sor = 1 To 20
If Cells(sor, "C") = "" Then
sor1 = Cells(sor, "C").End(xlDown).Row
Cells(sor1, "C").Copy Cells(sor, "C")
Cells(sor1, "C") = ""
End If
Next
sor1 = Cells(sor, "C").End(xlDown).Row
If Application.WorksheetFunction.CountA(Range("C23:C" & sor1 - 1)) = 0 Then _
Range("C21:C" & sor1 - 1).Delete Shift:=xlUp
sor1 = Cells(Rows.Count, "C").End(xlUp).Row
For sor = sor1 To 21 Step -1
Cells(sor, "C").Insert Shift:=xlDown
Next
sor1 = Cells(Rows.Count, "C").End(xlUp).Row
If sor1 > 50 Then
For sor = 50 To 45 Step -1
If Cells(sor, "C") = "" Then
Cells(sor, "C") = Cells(sor1, "C"): Cells(sor1, "C") = ""
End If
Next
End If
.Range("B1:B50").ClearContents
.Cells(1).Select
End With
Application.ScreenUpdating = True
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Carasc0
őstag
válasz Delila_1 #30877 üzenetére
Szia! Ez már működne, de most meg azt csinálta az Excel, hogy ha átváltok egy másik munkalapra, és vissza arra, ahol az általad írt kód fut, befagy és tölt 2-3 percig, majd lefut normálisan és visszatérhetek a munkához.
Juj ez kegyetlen. Újabb kódfutás 2-3 perces gondolkodást igényel neki!
Tartományhoz (pl. C1:C25) használd a Konvertálatlan gombot. <--- Ezt nem értem.
A program teljesen jól működik, de miért fagy meg 2-3 percig...
[ Szerkesztve ]
Gondolkodj globálisan és tegyél lokálisan!
-
Delila_1
veterán
válasz Carasc0 #30878 üzenetére
Lehet, hogy a lapodhoz van rendelve egy eseményvezérelt makró. Nálam nincs, nem is fagy le.
Kijelölöd a C1:C25-öt, és megnyomod a Konvertálatlan gombot. Akkor nem ugrik be semmiféle smile.
Szerk.: az általam írt makrót ne a laphoz rendeld, hanem modulban helyezd el.
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Carasc0
őstag
válasz Delila_1 #30879 üzenetére
Hát itt elakadtam!
Szóval!
Private Sub Worksheet_Activate()
Kever
End SubIgen ez nekem munkalap General részében van. Mit írjak és hogyan hogy az a modulban legyen?
Excel 2010-em van, nekem semmiféle Konvertálatlan gomb nincs. Pedig azért jól ismerem már az Excel-t. Nem találtam sehol. Miféle smile? Nekem nem jelent meg. A kód lefut, csak a fagyások nem kellenének!
Gondolkodj globálisan és tegyél lokálisan!
-
Carasc0
őstag
válasz Delila_1 #30881 üzenetére
LOL!
Én a Programkódot szoktam használni. Amúgy kijelöltem a kódot és CTRL+C majd CTRL+V-vel teljesen jól bemásolta. Bár megjegyzem hogy első futtatásakor valamit kiírt de már nem emlékszem. Lehet azért fagy meg? Azóta nem írja ki.
Hogy kell modulba tenni? De mit tegyek pontosan oda? Kéne a pontos szintaxis.
[ Szerkesztve ]
Gondolkodj globálisan és tegyél lokálisan!
-
Fferi50
Topikgazda
válasz the radish #30876 üzenetére
Szia!
Van egy olyan paramétere a PrintOut- ami megmondja, hogy mit nyomtasson ki, ez a Range.
Pl: ActiveDocument.ActiveWindow.PrintOut _
Range:=wdPrintFromTo, From:="1", To:="3"
This example prints the first three pages of the document in the active window.Üdv.
-
Carasc0
őstag
válasz Delila_1 #30886 üzenetére
Bekapcsoltam a bővítményeket! Ha a modulban van a kód, akkor nem fut le automatikusan, amikor rámegyek a szükséges munkalapra. A generátor lényege az lenne, hogy akárhányszor lépek rá a megfelelő munkalapra, akkor generáljon új keverést. A programod működik, de továbbra is FAGY!
Szerintem (nem akarok okos lenni), de jó helyen van a kód azon a lapon, amin generálni kell. Hiszen, ekkor lefutna mégy egyszer amint visszatérek az érintett munkalapra. Viszont a súlyos fagyás miatt használhatatlan. Amit korábban linkeltem neked teljes kódot ami csak simán kever, az tökéletesen működik!
Itt vagyunk a célnál bakker de FAGY!
[ Szerkesztve ]
Gondolkodj globálisan és tegyél lokálisan!
-
-
the radish
senior tag
válasz Fferi50 #30885 üzenetére
Igen, csakhogy abban a pillanatban, amikor nem a munkafüzetet, hanem a word doksit szeretném nyomtatni, leáll a makró:
Sub Macro1()
Dim objWord
Dim objDoc
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Open("d:\xxx.docx")
objWord.Visible = True
ActiveDocument.ActiveWindow.PrintOut _
Range:=wdPrintFromTo, From:="1", To:="3"
objWord.Quit
End SubVagy valamit rosszul írtam?
-
Delila_1
veterán
válasz Carasc0 #30890 üzenetére
A csatolt képeken nem látszik, hova tetted a makrókat, csak az, hogy egymás alá.
Újra leírom: az eseményvezérelt makrót ahhoz a laphoz rendeld, ahol futtatni akarod, a másikat modulba.
Azt látom, hogy az első With-nél átírtad – helyesen – a lap nevét arra, amelyiken éppen futtatod.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Carasc0
őstag
válasz Delila_1 #30891 üzenetére
Hát én nekem mikor tavaly nyáron megcsinálták (lehet pont te voltál!) azt a makrót amit jóval fentebb melllékeltem, azt is így csináltam. Bemásoltam ahhoz a laphoz amelyiken futnia kell. Meghívtam a függvényt és fut. Most ezt megtettem ezzel is. Fut is, de előtte 2-3 percig fagy. A kérésed sajnos továbbra is magas nekem.
Igen átírtam. Máshol is át kell? Ha igen, hol? Itt totál leakadtam.
[ Szerkesztve ]
Gondolkodj globálisan és tegyél lokálisan!
-
Fferi50
Topikgazda
válasz the radish #30889 üzenetére
Szia!
Szerintem az a gond, hogy nem a word objektumra hivatkozol.
Próbáld így lsz.
objDoc.ActiveWindow.PrintOut _
Range:=wdPrintFromTo, From:="1", To:="3"Mivel két alkalmazás több különböző objektuma van benn, ezért pontosan meg kell mondani, melyiknek szánod a parancsot.
Üdv.
-
Fferi50
Topikgazda
válasz the radish #30895 üzenetére
Szia!
Milyen hibaüzenettel akad el a makró?
Azt gondolom, hogy az objword.objdoc hivatkozás lesz az igazi, az is elképzelhető, hogy az activewindow kihagyható/kihagyandó belőle.Üdv.
-
-
Fferi50
Topikgazda
válasz the radish #30897 üzenetére
Szia!
Este már nem jutottam hozzá a géphez/internethez.
Nem szeretnélek elkeseríteni, de nálam szépen lefut és nyomtat - sima doksit és körlevelet is, ha a körlevelesbe beleteszem a megfelelő sort. A hozzászólásodból másoltam ki direkt a makrót és egyáltalán nem panaszkodott (persze fájlneveket átcseréltem...).
Nálam 2010-es Office van fent, nem tudom Nálad mi fut.
Nézd meg légy szíves az immediate ablakban a wdPrintFromTo értékét. Ha nem 3, akkor a változó helyett lsz. írd be a 3-as számot, idézőjelek nélkül.
Korábbi verziókban lehet, hogy nem így kell megadni, akkor viszont a word help tud segíteni. Ha mégsem megy/nem találod a megoldást, menjünk át privibe.Üdv.
-
PistiSan
addikt
Sziasztok!
Meg lehet oldani függvénnyel a "szövegból oszlopok" procedúrát?A1-ben ez van: kacsa,liba,ketto,harom,nyolc,bakancs,excel,macro,stb
Simán a ","-nél fel tudom osztani a szövegből oszlopok eszköz segítségével, de még szeretnék majd más képleteket is használni, egyszerűbb lenne ha én beillesztem a fenti szöveget az A1-be (hosszabbat is akár) és mondjuk A2-től folyamatosan szét darabolná oszlopokra.
A2 kacsa
B2 liba
C2 ketto
stb -
föccer
nagyúr
válasz PistiSan #30899 üzenetére
Egyesével le lehet vágni a bal, vagy a jobb oldalon lévő szavakat. Ehhez meg kell kerestetni a vesszőnek a helyét, és a teljes karakterhosszból levonva a vessző pozícióját, megkapod a vessző utáni karaktersornak a hosszát. =BAL() függvénnyel elrakod az első szót, =JOBB() függvénnyel a maradékot. Következő sorban újra... a karakter hossz paraméterrel játszani kell, hogy a vessző ne okozzon gondot.
Nincs előttem excel, hogy pontosan összerakjam neked a függvényt, de ebből már ki lehet silabizálni. Ha nem megy, akkor holnap este megcsinálom.
üdv, föccer
Építésztechnikus. Építőmérnök. Ingatlan adás-vétel vevő oldali támogatása. Mérnök tanácsadás, felújításhoz, átépítéshez. Excel feladatok megoldása. Lézergravírozás. Mindent IS csinálok: www.jatekosfejlodes.hu
Új hozzászólás Aktív témák
Hirdetés
- Milyen notebookot vegyek?
- Sorozatok
- Autós topik látogatók beszélgetős, offolós topikja
- Black Friday november 29. / Cyber Monday december 2.
- Filmvilág
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- HDD probléma (nem adatmentés)
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Építő/felújító topik
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- További aktív témák...
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: HC Pointer Kft.
Város: Pécs