- Motorola Razr 60 Ultra - ez a kagyló könnyen megfő
- Milyen okostelefont vegyek?
- Samsung Galaxy A54 - türelemjáték
- Ilyen lesz a Fairphone 6
- 45 wattos vezeték nélküli töltés jön az új iPhone-ba
- Motorola Edge 40 - jó bőr
- Magyarországon is kapható a Moto G85 5G
- Karaktere biztos lesz az első Nothing fejhallgatónak
- Netfone
- Motorola Edge 50 Neo - az egyensúly gyengesége
-
Mobilarena
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
-
Win-T
őstag
válasz
föccer #52770 üzenetére
Ez akartam is írni, hogy én 8 bites felhasználó vagyok, egyszerűbb képletekkel még elboldogulok, de a makrókhoz kábé annyira értek mint az atomfizikához (semennyire).
Semmi extra nincs a táblában, csak egy egyszerű munkalap, amin X2-be szeretném ha automatikusan nyomtatná a neveket egy listából. De ha ilyen bonyolult akkor megcsinálom Wordben inkább. -
lanszelot
addikt
válasz
föccer #52733 üzenetére
Huhhh, nagyon szépen köszönöm mindenkinek a segítséget.
Nem hangzik bonyolultnak
Persze át kell rágnom magam rajta, de szerintem nem lesz gond.Fferi50: a link is nagyon jó, köszönöm szépen.
Így már rá is tudok keresni.Access -ben tudtam, hogy van programozás rész (nem csináltam, csak tudtam róla) , de excel-ről nem tudtam.
-
föccer
nagyúr
válasz
föccer #52733 üzenetére
Ez alapján meg fogod tudni csinálni.
Sub Szorzas()
Dim Sor As Long
Dim Oszlop As Long
Dim S As String
Dim Szorzo As Double
S = "Munka2"
Szorzo = Sheets("Munka1").Range("A1").Value
For Sor = 1 To 20
For Oszlop = 1 To 20
Sheets(S).Cells(Sor, Oszlop).Value = Sheets(S).Cells(Sor, Oszlop).Value * Szorzo
Next
Next
End Sub
-
lanszelot
addikt
válasz
föccer #52727 üzenetére
Először is köszönöm szépen a válaszokat
Rengeteg munkalap van, és az extra semmit sem erő munkalapok csak zavaró, mint a felesleges sorok.
Ha csak a gyereknek oldasz meg egy szöveges feladatot excel-el akkor tényleg felesleges a makro.
De amikor 100 munkalap, és minden munkalapon rengeteg szám, ahol ugyanazt a műveletet kell újra és újra és újra bevinni.
És ez nekem nem munka. Csak hobbi.
Mi van ha valaki dolgozik is vele?
Tehát ez 2024-ben édes kevés.
Hamarabb írok meg egy honlapot.Fferi50:
+A1*(aktuális cella tartalma) - jelentése;
Ahol C1 cella értéke 24
+A1*24 -re valtozik a cella értéke
Ahol D1 cella értéke 47
+A1*47 -re valtozik a cella értéke
Ahol E1 cella értéke 63
+A1*63 -ra valtozik a cella értéke
Stb -
Fferi50
Topikgazda
válasz
föccer #52662 üzenetére
Szia!
Továbbá: a Watch window-ba beteheted a ciklusváltozódat és beállíthatod, hogy amikor az értéke 10,100 stb-vel osztható, akkor álljon meg a makró futása. Ez addig működik, amíg az adott munkafüzetet nyitva tartod, illetve ki nem törlöd a figyelőablakból a kifejezést.
Mentésnél természetesen nem megy a munkafüzettel, tehát a felhasználót nem zavarja. Tesztelésnél viszont nagyon hasznos tud lenni.
Üdv. -
Delila_1
veterán
válasz
föccer #52657 üzenetére
Ezt találtam, de nem próbáltam:
Makróval törölt adatok visszaállítása
1. elmented a munkalap másolatát:
Dim sh As Worksheet, msh As Worksheet
Set sh = ActiveSheet
sh.Copy after:=Sheets(sh.Index)
Set msh=ActiveSheet
msh.Name="Mentett"
sh.Activate
ha nincs már szükség a mentett munkalapra, akkor
msh.Delete vagy Sheets("Mentett").Delete
2. ha vissza szeretnéd hozni:
Dim msh As Worksheet, sh As Worksheet
Set msh = Sheets("Mentett")
Set sh = ActiveSheet
msh.UsedRange.Copy sh.Range(msh.UsedRange.Cells(1).Address)
-
Fferi50
Topikgazda
válasz
föccer #52488 üzenetére
Szia!
Egy lehetőség azEltolás (Offset)
függvény használata. Azt kell figyelembe venni, hogy az elnevezett tartomány első oszlopa a függvényben a 0. oszlop, így a második oszlop:=Eltolás(Név;0;1;;1)
A paraméterek:
1. paraméter: Ahonnan az eltolást számítjuk - itt az egész nevesített tartomány
2. paraméter: A sorok száma, amennyivel el kell tolni a tartományt - mivel maradunk a tartománynál, itt ez az érték 0
3. paraméter: Az oszlopok száma, amennyivel el kell tolni a tartományt - mivel a második oszlop az elsőtől 1 távolságra van ezért az érték értelemszerűen 1 (az első oszlop esetén 0)
Ez a 3 paraméter kötelező. A következő kettő opcionális:
4. paraméter: Az eltolás eredményeként létrejövő tartomány sorainak a száma. Ha nem adunk meg értéket - azaz kihagyjuk - akkor az eredeti tartomány sorainak száma marad. Ezért hagyjuk ki, mert nekünk minden sor szükséges.
5. paraméter: Az eltolás eredményeként létrejövő tartomány oszlopainak száma. Mivel egy oszlopot szeretnénk eredményként kapni, ez a paraméter 1
Így kaphatod meg a többi oszlopot is a megfelelő paramétereket használva. Így nem kell tudnod a nevesített tartomány címét.
Másik lehetőség: A tartományt nevesítés helyett Táblázattá alakítod (Beszúrás - táblázat )
Ez alapján a táblázat egyszerűsített hivatkozásait használhatod.
[link] Itt találod hozzá a súgót.
Üdv. -
-
Delila_1
veterán
válasz
föccer #52428 üzenetére
Az A oszlopban vannak értékek, a B oszlopot formáztam, 2019-es verzió.
Talán túl friss az Exceled.Sub Makró1()
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$A1<20"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 49407
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub
-
detroitrw
addikt
válasz
föccer #52348 üzenetére
Köszi, de ez is csak az oszlopnak a számát adja meg, viszont nekem a betű értéke kell
de megoldottam máshogy:
=CÍM(FKERES(I1;L:M;2;IGAZ);HOL.VAN(H1;'Ablak'!1:1);2)
-> BM$186
innen meg:=BAL(K4;SZÖVEG.KERES("$";K4)-1)
-> BMAmivel most sikerült 2 órát kidobni az az hogy a gépen lévő excel és a google drive -os excel más eredményre jut ezzel a paranccsal:
=HOL.VAN(H1;'Ablak'!1:1)
gépes excel: 65
google drive excel: 11 -
Fferi50
Topikgazda
válasz
föccer #52291 üzenetére
Szia!
Az egyes tartományokhoz rendelhetsz felhasználókat, akik jelszóval / vagy anélkül tudják módosítani a tartalmat - lapvédelem persze itt is kell az érvényesüléséhez (Tartományszerkesztés engedélyezése menüpont).
Makróból úgy tudod a lapvédelmet "megkerülni", azaz feloldás nélkül módosítani, ha a védelem bekapcsolásakor a UserInterfaceOnly paramétert True értékkel adod meg:Sheets("akarmi").Protect Password:="PW", UserInterfaceOnly:=True
Amire figyelned kell: amint a fájlt bezárod, ez a paraméter elveszti a hatását, ismételt megnyitáskor már nem érvényesül. Így minden megnyitáskor ki kell adni a lapvédelmi parancsot a fenti módon.
A zárolt tartalmakat makróból tudod módosítani, de a felhasználók nem.
Üdv. -
föccer
nagyúr
válasz
föccer #52285 üzenetére
Hm, asszem gordiuszi csomóként a hibakezelésben visszaíratom az elérési utat a helyére és a hibakezelésbe beraktam +-ba a napi mentés is. Így mindenképpen jó lesz.
Vagy a hiba nélküli ágon fut végig, vagy a hibakezelés ágán, miután a hibakezelés beerőszakolt valami elérési utat a B7 cellába.
Köszönöm, hogy végig gondolhattam így félhangosan
-
föccer
nagyúr
válasz
föccer #52285 üzenetére
Private Sub Workbook_Open()
Dim oFSO As Object
Dim oFolder As Object
Dim oFile As Object
Dim i As Integer
Dim Fileok_szama As Integer
Dim Fnev As String
Dim Kell_e_menteni As Boolean
Dim SFnev As String
i = 0
Filok_szama = 0
Fnev = ""
Kell_e_menteni = True
SFnev = ""
Sheets("Save_log").Range("T:U").ClearContents
Set oFSO = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
If Sheets("Save_log").Range("B7").Value <> "" Then
Set oFolder = oFSO.GetFolder(Sheets("Save_log").Range("B7").Value)
Else
Set oFolder = oFSO.GetFolder(Sheets("Save_log").Range("B8").Value)
End If
If Err = 0 Then
For Each oFile In oFolder.Files
If oFile.Name = Sheets("Save_log").Range("B5").Value Then
Kell_e_menteni = False
End If
Sheets("Save_log").Cells(i + 1, 20) = oFile.Name
Sheets("Save_log").Cells(i + 1, 21).Formula = "=IFERROR(MATCH(T" & i + 1 & ",M:M,0),0)"
i = i + 1
Next oFile
Filok_szama = i
For i = 1 To Filok_szama
If Sheets("Save_log").Cells(i, 21).Value = 0 Then
Fnev = oFolder & "\" & Sheets("Save_log").Cells(i, 20).Value
Kill Fnev
End If
Next
If Kell_e_menteni = True Then
SFnev = Sheets("Save_log").Range("B7").Value & Sheets("Save_log").Range("B5").Value
ActiveWorkbook.SaveAs Filename:=SFnev
End If
Else
If Sheets("Save_log").Range("B7").Value <> "" Then
MkDir Sheets("Save_log").Range("B7").Value
Else
MsgBox "Nem találom a biztonsági mentés helyét. Kérlek add meg a biztonsági mentés helyét."
Call XBUP_mentesi_hely_Valasztas
MkDir Sheets("Save_log").Range("B7").Value
End If
End If
On Error GoTo 0
End Sub
-
Fferi50
Topikgazda
válasz
föccer #52261 üzenetére
Szia!
"kódjába beraktam így, de futtatta."
Most akkor futtatta vagy nem?
Egyébként ha a Listbox jobb egérgomb View Code-ra kattintasz, majd a jobb oldali lenyílóból kiválasztod a DblClick eseményt, ezt kapod:Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
End Sub
Itt találhatsz rá egy kis helpet.
Itt pedig némi példát.Üdv.
-
Fferi50
Topikgazda
-
Fferi50
Topikgazda
válasz
föccer #52074 üzenetére
Szia!
A hálózati elérésnél használja a "/" karaktereket, helyinél a "\'" járja.
Az onedrive egyébként szivat, igen, mert ráadásul még helyben is menti.
Szerintem a Chdir(...) jó lehet.milyen dialoggal tudok csak egy könyvtár útvonalat beszedni?
Így :Sub konyvtarvalaszt()
Dim konyvtar As String
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show Then
konyvtar = .SelectedItems(1)
MsgBox konyvtar
Else
MsgBox "Nem választottál"
End If
End With
End Sub
Utána érdemes megnézni az aktív könytárat - nálam mindig az eggyel feljebbi lett az aktív könyvtár.
Üdv. -
Delila_1
veterán
válasz
föccer #52074 üzenetére
Egy régebbi makró:
Sub Mappa_Valasztas()
Dim FD, utvonal As String
MsgBox "Válasszunk magunknak útvonalat"
Set FD = Application.FileDialog(4) 'mappa választás
With FD
.AllowMultiSelect = False
.Show
If .SelectedItems.Count = 0 Then
MsgBox "Nem választottál útvonalat, befejezzük.", vbInformation, "Értesítés" Exit Sub
Else
utvonal = .SelectedItems(1)
End If
End With
MsgBox "A kiválasztott mappa: " & utvonal utvonal = utvonal & "\" 'jöhet a mentés, vagy megnyitás
End Sub
Nem jó amit Fferi, vagy én írtunk?
-
Fferi50
Topikgazda
válasz
föccer #52071 üzenetére
Szia!
Lehetséges, hogy másik könyvtárból indítottad a fájlt, nem abból ahol egyébként van. Így nem az adott munkafüzet könyvtára az "aktív" könyvtár. (pl. a fájlkezelőből lett indítva a munkafüzet...)
A tényleges könyvtárat a Curdir() függvény adja vissza.
Delila segített.
Vagy Chdir(ActiveWorkbook.Path) és akkor nem kell az utvonal nevű változó
Üdv. -
föccer
nagyúr
válasz
föccer #52070 üzenetére
No, ehhez tartozó érdekesség.
Mivel nem adok be a fájl nevénél elérési utat, így mindig a fájl mellé mentette a pdf-eket. Sokszor megcsináltam már, mindig hiba nélkül ment.
2 napja viszont nem rakja oda a fájlokat. INFÓ függvénnyel lekérdeztem, hogy mégis honnan gondolja, hogy meg lett nyitva a fájl és egészen más könyvtárt adott vissza és ott meg is találtam a lementett pdf-eket.
konkrétan 3 könyvtárszinttel fentebb, mint ahol ténylegesen az xlsm megnyitásra került. :-/
Ez hogy lehet? Illetve hogyan tudnám ezt kiküszöbölni? A cél, hogy mindig a fájl megnyitási könyvtárába legyen lementve a pdf, a megadott néven.
A fájl neve egy több darabból történő összefűzés eredménye és csak a tényleges fájl nevet tartalmazó string.
-
adDis
csendes tag
válasz
föccer #52055 üzenetére
Köszi a tippet, de sajnos így sem jó nekem.
Úgy képzeld el, hogy van A, B, C, D táblázat mondjuk egy munkalapon. B táblázat az A adataiból dolgozik, D a C-ből. Mivel sokat kell már görgetni vízszintesen, ha valamit meg akarok nézni (és szélesíteni, bővíteni is akarom még mindegyiket), a fejembe vettem, hogy megnézem, milyen lenne úgy, ha A, B, C és D táblázat is eleve külön-külön munkalapokon lenne. Most elsőként azt szeretném tehát kipróbálni, hogy a B-t hogy tudnám átrakni úgy egy másik munkalapra, hogy attól még az eredeti munkalapon levő A-ra mutassanak a hivatkozásai (aztán ha ez sikerül, ugyanezt kell eljátszanom majd a C-vel, D-vel). Sima control c/v-vel ugye most HIV! hibajelzéseket kapok a képletekben. Aztán az is lehet, hogy csak az az egy "gyors megoldás létezik", hogy a HIV! hibajelzéseket valahogy átírogatom a CSERE funkcióval - hogy mégse egyenként kelljen átírogatnom a hasonló képleteket használó oszlopokban - nem tudom...
-
szergejj
csendes tag
válasz
föccer #51892 üzenetére
Nem tudom mi okozta ezt. De meguntam és nyitottam egy új excel táblát, majd minden lapot atmasoltam abba. Ezt követően a form-okat és a kódokat. Utána kiszedtem belőle a külső hivatkozásokat. És most működik
bárhova tudom menteni és bárhol működik.
Úgyhogy végre újra nekiallhatok kódolni -
KubanitoS
veterán
válasz
föccer #51870 üzenetére
Igazából ilyesmi, mint amit te csináltál, csak nálam egy db oszlop van.
A te példádból:
- van a "B" oszlop, ahová beírod az 50-et
- utána a kettő és öt közötti értékeket kell kivonni az ötvenből, de úgy, hogy ne mindig az alapszámból indulon ki, hanem a levont értékből...Egyszerűbb ha leírom: készletfogyásról van szó...
Van 50 liter anyag és annyival csökkenjen ez az érték, amennyi szám alá van írva.
Viszont ami fontos: az értékek nem feltétlenül egymás alatt vannak, lehetnek kimaradt sorok is, ahol nincs semmi.
Delila_1: köszi neked is, de sajnos előre nem tudom melyik lesz az utolsó sor
-
szergejj
csendes tag
válasz
föccer #51850 üzenetére
Nem is makroval mentek, a hálózati elérés stabil. Ha egy másik makrós fájlt mentek abba a könyvtárba minden jól működik. Gondoltam már arra is, hogy van egy mappa ellenőrzés benne és okozhatja e a hibát. De a másik makrós táblámban ugyanúgy benne vans az ellenőrzés és azt tudom oda menteni.
BagyiAti: biztos hogy nem jogosultság probléma. Én hoztam a könyvtárat létre, a benne lévő fájlokat én másoltam oda, Excel táblat létre tudok hozni ebbe a mappába.
-
andreas49
senior tag
válasz
föccer #51733 üzenetére
Sajna mégsem jó ez a képlet. Ha azon évről van szó, akkor továbbra is #SZÁM hiba, ha nem azonos, akkor csak a napok különbségét adja és nem veszi figyelembe, hogy más év szerepel az adatsoron. Valamit rosszul vettek át az angol fordítás során.
A sima kivonás a legegyszerűbb!
-
válasz
föccer #51712 üzenetére
Akkor a megoldás, amit adtam, pont azt csinálja, amit szeretnél...
(csak nyilván Én nem neveztem el a tartományokat)UI: Gondolom nem láttad a végleges hsz-t, mert közben szerkesztettem a hsz-t, mert olybá tűnik, a beépített képmetsző megmarhult W11 alatt, aztán furcsa méretű/eltolású stb. képet mentett...
-
-
karlkani
aktív tag
válasz
föccer #51682 üzenetére
Köszönöm szépen!
=HA(INDEX(A8:B1000;HOL.VAN(ÖSSZEFŰZ("*";D8;"*");B8:B1000;0);1)=0;"";INDEX(A8:B1000;HOL.VAN(ÖSSZEFŰZ("*";D8;"*");B8:B1000;0);1))
Ezt sikerült összehozni. Tartományként A
-t az INDEX-hez illetve B
-t a HOL.VAN-hoz nem tudok használni, az első 7 sort ki kell hagynom a keresésből (ott is lehet találat). Ha A cella üres, eredménynek 0-t ad, ezért használtam a HA függvényt is.
#51683 lappy
Azt nem írtam, le vagyok ragadva még a 2013-as verziónál, nincs ilyen függvény...
Azért köszönöm! -
föccer
nagyúr
válasz
föccer #51621 üzenetére
Jah, még annyit elfelejtettem írni, hogy csak úgy működik helyesen, ha minden adat és a kilistázás is az első sortól indul, mert a függvény a sorazonosítókat használja fel arra, hogy kiszámolja, hogy éppen hányadik embernél jár és melyik szakaszát kell kiszedni a feladatlistának.
-
oke
senior tag
válasz
föccer #51610 üzenetére
Köszi, elsőre ezek nekem elég "megfoghatalanok" hírtelen, értelmeznem kell még
.
Végül némileg manuálisan és FKERES-el oldottam meg, az első javaslatod segítségével.
Beraktan egy segédoszlopot a fő táblába, ahol 1-től kezdődően sorszámoztam a sorokat az utolsóig. Egy másik fülön pedig hozzárendeltem a nevekhez egy-egy egész számot az alapján amennyi az össz sor és hogy hány embernek akarom kiosztani. Így kijött az, hogy 20 sor jut egy embernek, így 20-asával rendeltem hozzá neveket:1 - Géza
21 - Attila
41 - István
...Majd a fő táblába beraktam még egy oszlopot és FKERES-sel a számok alapján hozzárendeltem a neveket, a függvényben a nem pontos egyezést beállítva.
Nem tudom mennyire érthető, amit írtam...
-
Mutt
senior tag
válasz
föccer #51276 üzenetére
Szia,
Ha van időd, akkor nézz rá a Power BI-ra. A mondottak alapján jobb megoldás lehet, beépített time-inteligence funkciója segít az eltérő időintervallumok kezelésében, Power Query része makrót tud helyettesíteni és a DAX megoldja a számításokat viszonylag kis fájl méretben. Nálam 3 év adata kb. 1,5 millió sor és 30 oszlop 98 MB.
Hátrányt is mondok: DAX szivat ahol tud, Microsoft minden hónapban újabb változattal jön, amiben minden máshol van mint korábban, Power Queryben a legkisebb módosítás is újraszámolást eredményez ami miatt percekig nézem a homokórázó kurzort.
üdv
-
Fferi50
Topikgazda
válasz
föccer #51276 üzenetére
Szia!
"De mivel tudom biztosítani, hogy 1 for-on belül a 4 sub úgy fut le, hogy szépen, megvárja az egyik a másik futását, és minden rendben kiszámolódik és lementődik."
Egyrészt - ugye egymás után indítod a subokat, tehát a következő csak az előző után futhat. Persze értem, a számolás végrehajtását is ellenőrizni kell, erre a következő utasítás sorozat lehet jó:
Do While Application.CalculationState=xlCalculating : Loop
Ez addig "áll", amíg a számolás be nem fejeződik . A ciklus belsejébe tehetsz egy várakozási üres ciklust is - pl. For x=1 to 5000 : Next - , hogy ne azonnal ismétlődjön a számolási állapotra a rákérdezés.
Üdv. -
Fferi50
Topikgazda
válasz
föccer #51277 üzenetére
Szia!
Ha a terület egyforma, akkor az lehet a gond, hogy annak a munkalapnak kell aktívnak lenni, amelyikbe az értéket be szeretnéd illeszteni.
Egyébként használható a With utasítás is:Dim Akt_datum_oszlop As Integer
With Workbooks("Tech_elemzo_recet_mintavetel_v4_3.xlsm")
Akt_datum_oszlop = .Sheets("KEZELŐ").Range("H19").Value
MsgBox (Akt_datum_oszlop)
.Sheets("MBO_haladás").Activate
Range(Cells(4, Akt_datum_oszlop), Cells(37, Akt_datum_oszlop)).Value = .Sheets("KEZELŐ").Range(Cells(2, 20), Cells(35, 20)).Value ' MBO KPI
End With
MsgBox ("KÉSZ")
'Ha szükséges, akkor vissza aktíválhatod a.Sheets("KEZELŐ").Activate sorral az End With előtt a kezelő munkalapot. De magához az értékek kiolvasásához nem kell aktívnak lennie.
Üdv. -
Fferi50
Topikgazda
válasz
föccer #51274 üzenetére
Szia!
Ha nem adod meg a munkafüzetet, akkor az éppen aktuális munkafüzetben fogja keresni a KEZELŐ nevű munkalapot, ha nem talál ilyet, akkor hibaüzenettel megáll.
Ilyen esetekben célszerű a munkafüzetet tartalmazó hivatkozást is megadni, tehát Workbooks("valami").Sheets("Kezelő").Range("H19").Value
Az előző kérdésedre egy kérdés: Melyik munkafüzetben van a második munkafüzetet feldolgozó makró? Szerintem annak is az első munkafüzetben kell lennie és akkor kell egy átpakoló makró - utána feldolgozó makró - utána kövekező lépés, kb. így:
For ciklus indul
átpakoló makró
feldolgozó makró
next
Ne felejtsd el, ha új munkafüzetet nyitsz, akkor az lesz az aktív munkafüzet, ha új munkalapot adsz hozzá, az lesz az aktív munkalap.
Üdv. -
föccer
nagyúr
válasz
föccer #51273 üzenetére
Illetve még annyi a kérdés.
Ha munkafüzet1-ben call-al meghívok egy sub-ot, ami a munkafüzet 2-ben fut és a futó sub-ban csak annyi van, hogy Akt_datum_oszlop = sheets("KEZELŐ").Range("H19").Value, akkor a munkafüzet1-ben keresi az értéket (ahol az első sub indult) vagy a munkafüzet 2-ben (ahová a call mutat)?
Köszi!
üdv, FG
-
13128814
tag
válasz
föccer #51237 üzenetére
Először is köszönöm a válaszodat!
Hazudnék ha azt mondanám hogy teljesen értelek.Ha jól értem, akkor jobb lenne megnyitni azt a fájlt amire eddig próbáltam "hegeszteni" az FKERES függvényt?
Viszont akkor lehetne úgyis, hogy mondjuk azt mondom (szintaktikát engedjük el):
aktualisDatum = today()
elozoDatum = aktualisDatum - 1
És akkor a for ciklusban nem is csinálok listát, hanem végig léptem visszafelé az
elozoDatum
változót, addig a pontig amíg nem talál egyezést és nem nyitja meg valamelyiket.(Sima if ággal ezt le lehet kezelni, nem?)
És mivel megtudta nyitni valamelyik
elozoDatum
-nál akkor mi megtudjuk határozni mi a fájl neve. És akkor mondjuk megtehetjük hogy:Dim megnyitottWb
set = elozoDatum &
excelMaradekNev
És innentől kezdve tudunk könnyen hivatkozni erre a füzetre vagy a másikra.Vagy nagyon félreértettelek?
-
Fferi50
Topikgazda
válasz
föccer #51121 üzenetére
Szia!
Szerintem ez alapján FKERES (XKERES) függvénnyel is megoldható a feladat.
A hasonlítani kívánt két hónap azonosítóit egy munkalap oszlopba áttenni - ezután Adatok - Ismétlődések eltávolítása - majd a két havi FKERES függvény eredményének összehasonlítása kerül az eredmény oszlopba.
Üdv. -
Fferi50
Topikgazda
válasz
föccer #51119 üzenetére
Szia!
Azt még mindig nem értem, miért kell egyedi sorazonosító és honnan tudod azokat?
Mielőtt nagyon belemélyednél, van egy olyan menüpont az Adatok csoportban, hogy összesítés -> ez arra szolgál, hogy külön-külön munkalapon levő azonos struktúrájú adatokat egy munkalapra hozzon össze. Talán érdemes lenne végiggondolni ezt is.
Üdv. -
Fferi50
Topikgazda
válasz
föccer #51117 üzenetére
Szia!
Tehát fejlécek (oszlop azonosítók) és oldallécek (sor azonosítók) vannak az első sorban ill. első oszlopban? Jól értem?
" kimutatást készítsek, hogy hónapról-hónapra mennyi sorban volt változás az előző hónaphoz képest"
Hány hónapot kell összehasonlítani egy kimutatásban?
Lekérdezések sorozata szerintem lehetővé teszi a megoldást. PowerPivot szerintem jó lehet.
Talán több lehetne a segítség, ha szűkített és nem valódi adatokkal egy mintát feltennél valahova. Miből mit szeretnél létrehozni.
Üdv. -
-
Fferi50
Topikgazda
válasz
föccer #51081 üzenetére
Szia!
Talán érdemes megfontolni a következő gondolatot:Dim nyomtatni
Const sheetek = "Kezelő,TOP LISTÁK,TOPELEMZES,VCBE,EE_1,EE_2,EE_3,EE_4,EE_5,EE_6,EE_7,EE_8,EE_9,EE_10,EE_11,EE_12,EE_13,EE_14,EE_15,EE_16,EE_17,EE_18,EE_19,EE_20"
EE_szama = Sheets("KEZELŐ").Range("D23").Value
nyomtatni = Split(Left(sheetek, InStr(sheetek, "EE_" & EE_szama) + IIf(EE_szama < 10, 3, 4)), ",")
Sheets(nyomtatni).Select
Mivel egyben definiáltuk az összes nyomtatási szükségletet, az EE_szám alapján mindig le tudjuk vágni a megfelelő darabot belőle. A Split függvény pedig tömböt csinál a levágásból.
Üdv. -
föccer
nagyúr
válasz
föccer #51073 üzenetére
A select case az szépen működik. Nem túl elegáns, de hibátlan. Szépsége a dolognak, hogy ahogy pörgetem a for-t, az EE_szama ugye lehet több vagy kevesebb, ugyan akkor az új kijelölési array felülírja az előző ciklusban használt kijelölést. Tehát nem hozzáadja az előző kijelölésekhez, hanem új kijelölést állít be, így nem kell azzal foglalkozni, hogy a korábbi kijelölést megszüntessem.
Nyomtatással viszont félsikert értem el. Kipróbáltam ez aze ExportAsFixedFormat-ot. Szépen le is generálja nekem a pdf-et és fel is rakja oda ahová kell, de hiába van beparaméterezve hogy vegye figyelembe az oldaltöréseket, nem úgy jön le a doksi, ahogy az a MS pdf printerével megszoktam és beállítottam.
-
Delila_1
veterán
válasz
föccer #51071 üzenetére
Jó ötlet.
Esetleg a kötelező 3 lap nyomtatása után egy for-next ciklust indíthatnál.Db = Sheets("Kezelő").Range("D23")
For lap = 5 To 24
If Mid(Sheets(lap).Name, 4, 2) * 1 <= Db Then
'nyomtatás
Else
'exit for
End If
Next
Biztosan van ennél egyszerűbb VBA-s megoldás az együttes lapok kijelölésére.
-
Delila_1
veterán
válasz
föccer #51068 üzenetére
Kicsit tovább vittem az előzőt, de megállt a tudományom. Addig jutottam, hogy összeáll az együttesen kijelölendő lapok listája. Hátha valaki tovább jut, esetleg egészen más úton.
Sub arr()
Dim lapszam As Integer, lap As Integer, lapok As String, tomb(29)
For lap = 2 To 4
tomb(lap - 2) = Sheets(lap).Name
Next
lapszam = Sheets("Kezelő").Range("D23")
For lap = 5 To lapszam + 4
If Mid(Sheets(lap).Name, 4, 2) * 1 <= lapszam Then
tomb(lap - 2) = Sheets(lap).Name
End If
Next
For lap = 0 To 29
If tomb(lap) = "" Then Exit For
lapok = lapok & """" & tomb(lap) & """"
lapok = lapok & ","
Next
lapok = Left(lapok, Len(lapok) - 1)
lapok = """" & lapok
lapok = Right(lapok, Len(lapok) - 1)
Debug.Print lapok
End Sub
-
Delila_1
veterán
válasz
föccer #51068 üzenetére
Eddig jutottam el:Sub arr()
Dim lapszam As Integer, lap As Integer
Dim tomb(29)
For lap = 2 To 4
tomb(lap - 2) = Sheets(lap).Name
Next
lapszam = Sheets("Kezelő").Range("D23")
For lap = 5 To lapszam + 4
If Mid(Sheets(lap).Name, 4, 2) * 1 <= lapszam Then
tomb(lap - 2) = Sheets(lap).Name
End If
Next
End Sub
Innen valahogy be kell olvasnod az array-ba a tomb neveit, de most el kell rohannom, késésben vagyok.
Ú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!
- ROBUX ÁRON ALUL - VÁSÁROLJ ROBLOX ROBUXOT MÉG MA, ELKÉPESZTŐ KEDVEZMÉNNYEL (Bármilyen platformra)
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Adobe Előfizetések - Adobe Creative Cloud All Apps - 12 Hónap - NYÁRI AKCIÓ!
- Windows 10/11 Home/Pro , Office 2024 kulcsok
- AKCIÓ! MSI B450M R7 5700X 16GB DDR4 512GB SSD RX 5700 XT 8GB Rampage SHIVA Zalman 600W
- Eladó ÚJ BONTATLAN Honor Magic6 Lite 8/256GB fekete / 12 hónap jótállással!
- BESZÁMÍTÁS! Asus ROG Flow Z13 + ROG XG RTX 3070 - i9 12900H 16GB DDR5 RAM 1TB SSD + RTX 3070 8GB WIN
- HP Rack szerverek és tartozékok egyben vagy külön-külön
- ÁRGARANCIA! Épített KomPhone Ryzen 5 7600X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest