-
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
-
-
-
-
-
earthy
újonc
válasz
Delila_1 #28209 üzenetére
Sziasztok!
Hála Nektek, sikerült beillesztenem a képletet a saját táblázatba is. Miután itt nem az első oszlopba várom eredményül a sor utolsó értéket tartalmazó cellájának tartalmát, így a
=HAHIBA(INDIREKT(CÍM(SOR(J2);HOL.VAN("";J2:JA2;-1)+9));"üres")
képletre írtam át, hogy a 9. oszlop a kimeneti cella, és ezzel bővítettem a vízszintes tartományhosszt is.
Csak még egy kérdés, habár így is tökéletes, azt tapasztaltam, hogy amennyiben kizárólag számokat írok be, úgy figyelmen kívül hagyja a képlet az utolsó cellát, mármint azt amiben számadat található... Egyszerű megoldás, hogy a cellát szöveges tartalmúra formáztam - habár gyanítom ez a barbárabbik módszer...
Mindenesetre köszönöm a segítségeteket!
-
spe88
senior tag
válasz
Delila_1 #28130 üzenetére
működik köszi szépen!
most már csak azt kéne meg tudnom, hogy hogyan tudok erre hivatkozni egy másik lapról!
szóval van ez a sorom:
C:\abc mappa\xy\[proba.xlsx] a munka 1 lapon
hogyan tudnám azt megadni a munka 2 lapon, hogy a jelölt elérési úton lévő fájlból kinyerje az adatokat
ezzel próbálkoztam:
='Munka1!C12Munka1'!$A$1
Itt az elején lévő munka1!c12 az első lapon található cellát jelzi ahol a fájlnév van
a második Munka1'!$A$1
pedig a "linkelt" fájl munka 1 lapjának A1 cellájának az értékétEzek már nem mennek nekem
Köszi
-
poffsoft
veterán
válasz
Delila_1 #28076 üzenetére
picit faragtam a makrót, ha a feladatot jól értettem:
Sub SorTorles()
Dim sor As Long, usor As Long
Dim lapsor As Integer
Dim fejlec As Integer
Dim aktsor As Integer
usor = Range("A" & Rows.Count).End(xlUp).Row
lapsor = 10
fejlec = 3
aktsor = fejlec + 1
For sor = aktsor To usor
If (sor - 1) Mod lapsor = 0 Then sor = sor + fejlec
Do While Application.WorksheetFunction.CountA(Rows(aktsor)) = 0 And aktsor <= usor
aktsor = aktsor + 1
If (aktsor - 1) Mod lapsor = 0 Then aktsor = aktsor + fejlec
Loop
If Application.WorksheetFunction.CountA(Rows(sor)) = 0 Then
Rows(aktsor).Select
Selection.Copy
Application.CutCopyMode = False
Selection.Cut
Rows(sor).Select
ActiveSheet.Paste
End If
aktsor = aktsor + 1
If (aktsor - 1) Mod lapsor = 0 Then aktsor = aktsor + fejlec
If aktsor >= usor Then Exit For
Next
End Sublapsor: hány soronként jön a fejléc
fejlec: hány soros a fejléc -
csongi
veterán
válasz
Delila_1 #27994 üzenetére
Méretektől függően kiválasztani a megfelelő alkatrészt.
De az adott alkatésznek mint a képen is látszik az egyik szára hosszabb min a másik, ebből van két méret, illetve a harmadik, aminek egyforma mind két szára. Na mármost az aszimmetrikus alkatrészek, szélességi és magassági értéktől függően állhatnak vízszintesen illetve függőlegesen.
PL Szélesség*magasság: 400*400 méretbe az A3 alkatrész kell de a 500*400 ba már az A2 de 400*500-ba már A2.
Leírom a méret tartományokat.
szélesség: 280-400 magasság: 350-450: A3
szélesség: 401-600 magasság: 451-600 A2
szélesség: 601-1600 magasság: 601-2350 A1És pl egy 500*500 méretnél az eddigi képletek alapján hamis volt, vagyis mindegyik függvénybe hamis állítás volt.
Szeretném ha megmaradhatnának ezek a sima függvények, mert eddig Openofice és a Libre office is szépen kezeli a táblázatom. -
csongi
veterán
válasz
Delila_1 #27989 üzenetére
Ez működik, köszönöm!
De annyira komplikált hogy le sem tudom írni. van kb 6 feltétel és ezek keresztezik is egymást.
Mit tegyek, hogyan tudnám én ezt elmagyarázni?
ez az akhilleusz pontja. 95% ban meg csináltam mindent, ha ez működne akkor lenne boldogság.Hamarosan mutatom grafikusan mit is kellene
-
csongi
veterán
válasz
Delila_1 #27972 üzenetére
Mégis sikerült a p*fára esés
Nem jó az elképzelt logikám.Nehéz jól leírnom. Megpróbálom mire is keresek egy logikai számolást.
Van egy szélesség és magassági érték.
Amennyiben a1 280-350 között van akkor egy meghatározott cella értéke legyen 1 de ez függjön a magassági értéktőll is, a fenti feltétel akkor legyen igaz ha függőleges érték b1 350-400 között van.
Ha bármelyik, vízszintes(a1) meghaladja a 350et vagy a függőleges(b1) érték meghaladja a 400-at akkor a cella értéke legyen 0-a -
gdodi
csendes tag
válasz
Delila_1 #27923 üzenetére
Kedves Delila!
Sajnos csak most jutottam a fórumhoz, ezért a késedelmes válasz.
A lapok száma 3-tól 23-ig változhat, egymás után következnek, nevük előre nem ismert. A sorok száma változó.
Arra gondoltam, hogy a makrót valahogy úgy lenne jó megoldani, hogy egy olyan lapról billentyűkóddal indítható legyen, ahol kell a kimutatás. (Ha ezt akár 23-szor meg kell csinálni, az is sokkal gyorsabb, mint laponként a kimutatást megcsinálni.)
A kimutatás makrója nálam így néz ki:Sub kimutatás()
'
' kimutatás Makró
''
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"24!R1C11048576C13", Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="24!R1C14", TableName:="Kimutatás1", DefaultVersion:= _
xlPivotTableVersion14
Sheets("24").Select
Cells(1, 14).Select
With ActiveSheet.PivotTables("Kimutatás1").PivotFields("Anyag")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Kimutatás1").PivotFields("Anyag rövid szövege")
.Orientation = xlRowField
.Position = 2
End With
With ActiveSheet.PivotTables("Kimutatás1").PivotFields("Sarzs")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("Kimutatás1").AddDataField ActiveSheet.PivotTables( _
"Kimutatás1").PivotFields(" Mennyiség"), "Mennyiség / Mennyiség" _
, xlCount
With ActiveSheet.PivotTables("Kimutatás1").PivotFields( _
"Mennyiség / Mennyiség")
.Caption = "Összeg / Mennyiség"
.Function = xlSum
End With
Columns("A:M").Select
Selection.EntireColumn.Hidden = True
Range("N4").Select
ActiveSheet.PivotTables("Kimutatás1").PivotFields("Rendelés").Subtotals = Array _
(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("Kimutatás1").PivotFields("Berendezés").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("Kimutatás1").PivotFields("Rögz.indít").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("Kimutatás1").PivotFields("Anyagbizl.").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("Kimutatás1").PivotFields("Könyv.dát.").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("Kimutatás1").PivotFields("MNE").Subtotals = Array( _
False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("Kimutatás1").PivotFields("Anyag").Subtotals = Array( _
False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("Kimutatás1").PivotFields("Anyag rövid szövege"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Kimutatás1").PivotFields("Sarzs").Subtotals = Array( _
False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("Kimutatás1").PivotFields(" Mennyiség"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Kimutatás1").PivotFields("BME").Subtotals = Array( _
False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("Kimutatás1").PivotFields(" SP-összeg"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Kimutatás1").PivotFields("Pnem").Subtotals = Array( _
False, False, False, False, False, False, False, False, False, False, False, False)
ActiveSheet.PivotTables("Kimutatás1").ColumnGrand = False
ActiveSheet.PivotTables("Kimutatás1").RowAxisLayout xlTabularRow
Columns("N:T").Select
Columns("N:T").EntireColumn.AutoFit
End SubHA van "rám" szánható időd, akkor kérlek segíts. Sajnos már hétfőig valószínűleg nem jutok gép közelbe, de amint lesz rá lehetőségem rögtön keresni fogom reménykedve a válaszodat!
-
#20368384
törölt tag
válasz
Delila_1 #27947 üzenetére
Hogyan lehet elérni, hogy több oszloppal egyszerre végezze el a kijelölést?
Ugye azt mondtad, hogy :
Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row).Select
én egy statikus megállapítást fogalmaztam meg (mivel 2500 sortól több nem lesz az adott táblában):Range("H2:H2500,I2:I2500,J2:J2500,T2:T2500,V2:V2500,W2:W2500,Y2:Y2500").Select
Ha az általad épített kódra akarnám alkalmazni, hogy a H, I, J, T, V, W, Y oszlopokban egyszerre történjen a kijelölést, azt, hogyan lehet elérni? Az már technikásabb?
-
azopi74
addikt
válasz
Delila_1 #27902 üzenetére
Az igaz, oda kell figyelni, mert sajnos globális beállítás, nem lehet munkalaponként vagy munkafüzetenként állítgani és ha úgy marad véletlenül a beállítás, akkor annak nem várt hatása lehet más munkafüzetekre ...
Makrót nem lustaságból kerülöm, ha lehet, nekem a VBA-val csak az a bajom, hogy makróképes munkafüzetként kell elmenteni, ami nem minden környezetben járható . Ja meg, az, hogy nem kedvelem a VB szintaktikáját, C#-on nőttem fel, de persze ez egyéni szoc probléma
-
azopi74
addikt
válasz
Delila_1 #27899 üzenetére
Carasc0:
Igen, ez a másik megoldás, valamiért Delila irtózik a körkörös hivatkozásoktól, jobban szereti a VBA-t
Nálad ugyanezt így írd át :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$V$3" And Target > "" Then Range("D7") = Range("D7") + Target
End SubElmentettem neked ide makrós munkafüzetként :
-
poffsoft
veterán
válasz
Delila_1 #27840 üzenetére
Nem az érvényesítésre kér üzenetet, hanem pl. ha a legördülőből az "1"-et választják, kell egy figyelmeztetés, hogy pl. "Az m1, m3 és n5 cellát is ki kell tölteni!", de ha a "3"-ast, akkor "Csak az O5 cellát kell kitölteni!", ha a "2"-t, akkor nem kell üzenet.
Ez makróval fog menni szerintem (a felugró ablak miatt). Egyébként a cellaérték alapján íratnám a következő oszlopba a megfelelő szöveget
-
Vladek83
tag
-
Carasc0
őstag
válasz
Delila_1 #27602 üzenetére
Szia!
Még egyszer köszönöm (meg a többieknek is) a kódot. #27602. számú hozzászólás kódját alkalmazom, mert a céljaimnak ez bőven jó. Annyi hogy kiterjesztettem 36 sorra és csináltam egy mátrixot ami a kevert számokat kirakja nekem randomra (FKERES-el megoldottam könnyedén). Egyedüli kis mütyürke problémám hogy egy picit lassú. Tegnap még tök gyorsan dutott a makró. Ma meg indítom a makrót hogy csináljon egy új keverést és olyan 3-5 másodpercet várnom kell legalább. Nem értem mi a gondja. Tehát 1-36 közötti számokat rendez a kódod szerint. Nem hiszem hogy ilyen lassan kéne futnia.
És egy másik kérdés. Azt hogy lehet megoldani hogy ha elindítom az Excel dokumentumot, akkor a Makró automatán egyszer fusson le. Bár igazából az lenne a legtutibb ha ez az automata makrófutás annyiszor következne be, ahányszor arra a munkalapra kattintok amelybe megvan írva a VBA kód.
Egy másik (nehezebb) kérdés. Excel-be VBA segítségével programozható animált Progressbar?
-
poffsoft
veterán
-
Polllen
félisten
válasz
Delila_1 #27631 üzenetére
Sziasztok!
Nekem kellene egy hasonló megoldás, csak kicsit bonyolítva.
4 oszlopban vannak adatok, az első a szállítólevélszám.
Minden szállítólevélhez kell egy worksheet a szállítólevélszámmal és oda kellene másolni a hozzátartozó sorokat fejléccel.
Természetesen a szállítólevelek darabszáma változó.
-
RedHarlow
aktív tag
válasz
Delila_1 #27629 üzenetére
Ha a 6. oszlopban az ügyintéző X1 vagy X2 akkor másolja át a sort az első fülre.
Ha a 6. oszlopban az ügyintéző X3 vagy X4 akkor másolja át a sort a második fülre.Ha a 6 oszlop üres, de az 5. sorban a képzés Y1, vagy Y2, vagy Y3 akkor másolja át az első fülre.
Ha a 6 oszlop üres, de az 5. sorban a képzés Y4 vagy Y5 vagy Y6 akkor másolja át a második fülre.A lényeg tehát hogy a fő táblázatban minden kar adata ott van és nekem szét kell válogatnom karonként, úgy hogy nekem az ügyintéző nevei vannak megadva egy listában (karonként 2-5) de sajnos vannak olyan sorok ahol nincs megadva ügyintéző.
8 ilyen táblázatot kell 7 felé vállogatni.
-
RedHarlow
aktív tag
válasz
Delila_1 #27626 üzenetére
Nem ügyintéző szerint, hanem az egyetem 7 "karja" szerint kell szétválogatni. Tehát lesz 7 fül.
A 6. oszlopban vannak az ügyintézők nevei:
X1, X2, X3, X4 = A karon ügyintéző
X5, X6 = B karon ügyintéző
X7 = C karon ügyintézőEz az első fontos szűrés. De mivel vannak olyan sorok ahol nincs megadva ügyintéző, így a képzéskódok szerint kell ezeket tovább szűrni.
Az 5. oszlopban pedig a képzéskódok.
Y1, Y2, Y3 = A kar képzése
Y4, Y5, Y6 = B kar képzése -
scott_free
senior tag
-
scott_free
senior tag
válasz
Delila_1 #27498 üzenetére
köszi, most így van megadva:
Private Sub UserForm_Initialize()
Dim lista1 As Range
Set lista1 = Worksheets("Munka1").Range("A1:A10")az egyik választógombnál meg így:
Private Sub OptionButton1_Click()
Set lista1 = Worksheets("Munka1").Range("A1:A10")akkor ehelyett elég lenne az elsőnél Public-ként megadni?
-
zodo
nagyúr
válasz
Delila_1 #27453 üzenetére
Köszönöm!
Időközben kb 3 óra alatt sikerült kreálnom egy elfogadható táblázatot.
Nagyon keveset de már találkoztam táblázatkezelővel és azért volt némi fogalmam csak nem tudtam mit hol és milyen néven keressek ill. adjam meg a paramétereket.
Igaz nem MS hanem OpenOffice de talán elfér itt ez a kép róla.Napi 3 bejegyzés lehetőség / fő és ezek D oszlopban, napi szinten összeadva.
F és G oszlop kettőnk havi kiadásának összege.
H oszlop előzőek különbözeti értéke, rám vetítve.
Feltételes formázással plusz esetén zöld háttér vagy negatív értéknél piros színű cella háttérszínnel.
I oszlop a lakással kapcsolatos kiadások értéke (csekkek, közös költség, biztosítás) (ezeket a párom fizeti)
J oszlop, szintén rám vetítve (=H2-I2) adja meg a havi különbözet értékét. -
m.zmrzlina
senior tag
válasz
Delila_1 #27424 üzenetére
Érdekes mert egy korábbi verziójában a makrónak ez az értékadés csont nélkül lefut:
Dim arrAnalist() As Variant
Dim arrDigilist() As Variant
Dim intHibakszama As Integer
Dim strHibahely As String
Dim intI As Integer
Set wbSpss_kod = ThisWorkbook
Set wsSyntax = wbSpss_kod.Worksheets("SPSS_syntax")
Set wsKabelo = wbSpss_kod.Worksheets("kabelo")
intDigitlista_oszlop = wsSyntax.Range("AB3").Value
intListahossz = wsSyntax.Range("AC3").Value
arrAnalist() = wsKabelo.Range("A2:A" & intListahossz)
arrDigilist() = wsKabelo.Range(wsKabelo.Cells(2, intDigitlista_oszlop), wsKabelo.Cells(intListahossz, intDigitlista_oszlop))Próbáltam igy is átírni az újat de az sem működik.
-
m.zmrzlina
senior tag
válasz
Delila_1 #27424 üzenetére
Ez igaz csak többféle listáról van szó és az összehasonlítani kívánt tartományok hossza változhat illetve a második oszlop mindig máshol van.
Ezért van változóban a tartományok határainak egy része. Ráadásul a munkalapokon (sok-sok)minden mást makró csinál ezért gondolkozom makróban. Valamint az ellenőrzést a makró többi részétől függetlenül is le kell tudni futtatni és nem akarok minden munkaapot felképletezni (nincs is rá lehetőség illetve nem egyszerű.
Ez most makrós feladat.
-
-
sedyke
tag
válasz
Delila_1 #27392 üzenetére
Eleg nagy munkafuzet, 17MB, 33 munkalappal.
Eddig az osszesitom a masodik volt, de atraktam az elso helyre. A ket munkalap, amit ki szeretnek hagyni a keresesbol, a 29. es 33. (leszamoltam 3x).A leirasod alapjan igy egeszitettem ki. Fut a makro, a problema annyi, hogy megis minden egyes sorba beirja, hogy az adott termek hasznalatban van, pedig ha kihagyna a ket szoban forgo lapot, akkor nem lenne.
Sub Van_e()
Dim talal, sor As Long, usor As Long, nev, lap As Integer
Dim WS As WorksheetSet WS = Sheets(1)
usor = WS.Range("A" & Rows.Count).End(xlUp).Row
For sor = 4 To usor
nev = WS.Cells(sor, "A")For lap = 1 To Sheets.Count
If lap = 29 Or lap = 33 Then Exit For
Sheets(lap).Select
Set talal = Cells.Find(nev, LookIn:=xlValues, lookat:=xlWhole)
If talal Is Nothing Then
GoTo Tovabb
Else
WS.Cells(sor, "W") = "in use"
Exit For
End If
Tovabb:
Next
Next
End Sub
Új hozzászólás Aktív témák
Hirdetés
- Számlás!Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Vírusirtó, Antivirus, VPN kulcsok
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem, Most kedvező áron!
- BESZÁMÍTÁS! MSI B450 TomaHawk R5 5600X 32GB DDR4 512GB SSD RTX 3060 XC 12GB Rampage SHIVA 600W
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7700X 32/64GB RAM RTX 5070Ti 16GB GAMER PC termékbeszámítással
- LG 48C2 - 48" OLED EVO - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - A9 Gen5 CPU
- AKCIÓ! Dell Optiplex 5050 SFF asztali számítógép - i5 7500 8GB DDR4 256GB SSD HD630 Win10
- Fém, összecsukható és kihúzható fotó állvány eladó
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest