-
Fototrend
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
-
Fferi50
Topikgazda
válasz
ReSeTer
#45446
üzenetére
Szia!
Ez a makró az olyan cellákat veszi figyelembe, amelyekben konstans vagy képlet van. Remélem mindkettő megtalálható a munkalapodon:Sub erd()
Dim ter As Range, maxrow As Integer, maxcol As Integer
Application.EnableEvents = False
For Each ter In Union(ActiveSheet.UsedRange.Range(Cells(5, 1), ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell)).SpecialCells(xlCellTypeFormulas), ActiveSheet.UsedRange.Range(Cells(5, 1), ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell)).SpecialCells(xlCellTypeConstants)).Areas
maxrow = Application.Max(maxrow, ter.Row + ter.Rows.Count - 1)
maxcol = Application.Max(maxcol, ter.Column + ter.Columns.Count - 1)
Next
ActiveSheet.Range(Cells(5, 1), Cells(maxrow, maxcol)).Select
Application.EnableEvents = True
End Sub
Ezután kijelöli azt a területet, amelyben ezek a cellák találhatóak.
Ha nincs képleted vagy beírt konstansod, akkor Nincs ilyen cella hibával meg fog állni. Akkor jelezz vissza légy szíves.
És akkor is ha nem ezt akartad, vagy ezt akartad és sikerült.
Köszi. -
Fferi50
Topikgazda
válasz
andreas49
#45440
üzenetére
Szia!
Kijelölöd a kimutatás alá és elé eső első cellát. Pl kimutatás vége H8, akkor az I9 cellát.
Ezután Nézet-Panelek rögzítése - Ablaktábla rögzítése.
Ebben az esetben az A-I oszlop és felső 8 sor mindig látható, a többi görgethető.
Számolj azzal. ha a rögzített oszlopok nem férnek el a képernyőn, akkor nem láthatod az elől levő oszlopokat láthatóvá görgetni.
A görgetés csak a rögzített cellától lefelé és jobbra működik.
Próbáld ki, aztán eldöntöd, hogyan kell elhelyezni a kimutatást a munkalapon, hogy jó legyen a görgetés.
A rögzítést ugyanezen az úton tudod megszüntetni az Ablaktábla feloldása menüponttal.
Üdv.
Üdv. -
Fferi50
Topikgazda
válasz
repvez
#45435
üzenetére
Szia!
Talán most már sikerült teljesen megfogalmazni a feladatot. Próbáld ki ezt az eseménykezelőt:Private Sub Worksheet_Change(ByVal Target As Range)
Dim cel As Variant
If Intersect(Target, Range("H2:H20")) Is Nothing Then Exit Sub
With Sheets("Munka2")
cel = Application.Match(CLng(Date), .Range("A:A"), 0)
If IsError(cel) Then
cel = .Range("A10000").End(xlUp).Row + 1
.Cells(cel, 1).Value = Date
End If
.Range(.Cells(cel, 2), .Cells(cel, 20)).Value = Application.Transpose(Target.Parent.Range("H2:H20").Value)
End With
End Sub
A H2-H20 tartományba bármit változtatsz, az egész H2:H20 tartományt átmásolja a másik munkalapra. Sőt akkor is, ha csak visszaírod ugyanazt az értéket a tartomány valamelyik cellájába.
Üdv. -
Fferi50
Topikgazda
Szia!
Még valami jutott eszembe:
AzApplication.Volatileutasítás az elején. Azt jelenti, hogy valahányszor változik egy cella értéke, a függvény újraszámol(ná) az értékét. Ez okozhat gondokat, hiszen elég sok helyen változtatsz cellaértékeket.
Én kivenném ezt az utasítást az elejéről.
Üdv. -
Fferi50
Topikgazda
Szia!
Annyi minden van azon a munkalapon a kép alapján, hogy (számomra legalábbis) lehetetlen reprodukálni, hiszen nem látszanak, hogy itt-ott milyen függvények vannak még, stb.
Ezért kértem, hogy tegyél elérhetővé egy mintafájlt, ne várd el, hogy kitaláljuk, hova - mit helyeztél el.
Mivel leginkább számok vannak, talán még hadititkot sem sértesz a közreadással.
A megnevezések stb. megadhatóak "álnévvel" is. Csak a számítások megértéséhez szükségesek legyenek jók.
Üdv -
Fferi50
Topikgazda
-
Fferi50
Topikgazda
válasz
repvez
#45415
üzenetére
Szia!
Próbáld ki ezt az eseménykezelő makrót, a Munka1 munkalapod kódlapjára kell bemásolni.Private Sub Worksheet_Change(ByVal Target As Range)
Dim cel As Variant
If Target.Address = "$H$2" Then
With Sheets("Munka2")
cel = Application.Match(CLng(Date), .Range("A:A"), 0)
If IsError(cel) Then
cel = .Range("A1000").End(xlUp).Row + 1
.Cells(cel, 1).Value = Date: .Cells(cel, 2).Value = Target.Value
Else
.Cells(cel, 1).End(xlToRight).Offset(0, 1).Value = Target.Value
End If
End With
End If
End SubÜdv.
-
Fferi50
Topikgazda
Szia!
mi az a privi?
Privát üzenet - amit csak te látsz a belépés után a levél ikonra kattintva.
Tehát NEM tudja végrehajtani a cellába írást?
Nem feltétlenül ott van a hiba, amit nem hajt végre. Máshol is lehet.
Nézd meg a privát üzeneted légy szíves.
Üdv.
Ps. Bocs, de itt általában tegeződünk... kortól és nemtől függetlenül. És ez nem a tiszteletlenség jele, sőt. -
Fferi50
Topikgazda
Szia!
Mutatom a </> gombot:
És az eredménye:Function Poisson2(Feltétel2 As Range) As Long
Call kep_ki
Application.Volatile ’Prohardver Delila_1 nyomán
k = 0
Kezd = Cells(8, 7) 'Feltétel kezdete oszlop
Kezd5 = Kezd + 5 'Javasolt számok terület előtti oszlop száma
Kezd22 = Kezd + 22 'Feltételek a javaslat válogatásához
a = Cells(12, Kezd) 'A munkatábla kezdő előtti oszlop száma
Előford = Kezd + a 'K(i) táblázat kezdő előtti oszlop száma
Valószín = Előford + 90 'P(x=1) táblázat kezdő előtti oszlop száma
Várak = Valószín + 90 'n(i) táblázat kezdő előtti oszlop száma
Us = Cells(4, 7) + Cells(2, 7) 'Táblázat utolsó sora
Cikl = Cells(5, Előford + 1) 'A számolás kezdete sor
Cells(6, Előford + 1) = Cikl 'Ez lesz a Ciklusváltozó kezdete
Range(Cells(Cikl + 1, Kezd + 1), Cells(Us, Kezd + 15)).ClearContents 'számítása sorok törlése
Range(Cells(Cikl, Előford + 1), Cells(Us, Valószín)).ClearContents 'K(i) táblázat törlése
Range(Cells(8, Előford + 1), Cells(8, Valószín)).Value = _
Range(Cells(Cikl - 1, Várak + 1), Cells(Cikl - 1, Várak + 90)).Value 'Az n(i-1) sor feltöltése
Cells(14, Előford + 1).Formula = Cells(14, Kezd + 49).Formula
Cells(14, Előford + 1).Select 'Kijelölés kitöltéshez
Selection.AutoFill Destination:=Range(Cells(14, Előford + 1), Cells(14, Valószín)), Type:=xlFillDefault
'Feltételek
Range("AF11:AJ11").Value = Range("AF4:AJ4").Value 'Manuális számítás
'Calculate 'A munkalapfüggvények számolása
For Cikl = Cells(6, Előford + 1) To Us 'Az utolsó + 1-ig
'1. : 'Az n(i-1) és az előző ciklusban kitörölt képletek újrafelépítése a Tartalék raktárcellából BF14
Range(Cells(8, Előford + 1), Cells(8, Valószín)).Value = _
Range(Cells(Cikl - 1, Várak + 1), Cells(Cikl - 1, Várak + 90)).Value 'Az n(i-1) sor feltöltése
Cells(14, Előford + 1).Formula = Cells(14, Kezd + 49).Formula 'Képlet
Cells(14, Előford + 1).Select 'Kijelölés kitöltéshez
Selection.AutoFill Destination:=Range(Cells(14, Előford + 1), Cells(14, Valószín)), Type:=xlFillDefault
'[P(x=1) 13-dik sor]
For i = 1 To 5
For j = 1 To 90
Calculate 'A munkalapfüggvények kiszámolják a 14-dik
If Cells(13, Előford + j) <= Cells(11, Kezd22 + i) _
And Cells(14, Előford + j) Then
For k = 1 To 5
If Cells(14, Előford + j) = Cells(Cikl, Kezd5 + k) Then GoTo Köv
Next k
Cells(Cikl, Kezd5 + Cells(17, Kezd5 + i)) = Cells(14, Előford + j)
Cells(Cikl, Kezd + 10 + Cells(17, Kezd5 + i)) = Cells(13, Előford + j)
Cells(14, Előford + j) = ""
j = 90
End If
Köv: Next j
Next i
'2.
Cells(6, Előford + 1) = Cikl
'Calculate 'A munkalapfüggvények számolása
If Cells(Cikl, 4) Then
For j = 1 To 5
Cells(Cikl, Kezd + j) = Cells(12, Előford + Cells(Cikl, 3 + j))
Next j
Else
End If
'Calculate 'A munkalapfüggvények számolása
Range(Cells(Cikl, Előford + 1), Cells(Cikl, Valószín)).Value _
= Range(Cells(Cikl - 1, Előford + 1), Cells(Cikl - 1, Valószín)).Value
For j = 1 To 90
Cells(8, Előford + j) = Cells(8, Előford + j) + 1 'n(i) cellasor munkatáblában(i) cellasor
Next j
If Cells(Cikl, 4) Then
For j = 1 To 5
Cells(Cikl, Előford + Cells(Cikl, 3 + j)) _
= Cells(Cikl, Előford + Cells(Cikl, 3 + j)) + 1
Cells(8, Előford + Cells(Cikl, 3 + j)) = 0 'n(i) cellasor
Next j
End If
'Calculate
Range(Cells(Cikl, Valószín + 1), Cells(Cikl, Várak)).Value _
= Range(Cells(12, Előford + 1), Cells(12, Valószín)).Value
Range(Cells(Cikl, Várak + 1), Cells(Cikl, Várak + 90)).Value _
= Range(Cells(8, Előford + 1), Cells(8, Valószín)).Value
Next Cikl
Call CountCcolor 'Prohardver nyomám Színes cellák számolása**** Modul3 lapon
Poisson2 = WorksheetFunction.Sum(Range("O14:S14")) 'Solver Célcella
Call kep_be
End Function
Amint látod, sokkal olvashatóbb.
Érdekes lenne még az a munkalap, amin futtatod ezt a makrót. Legalább egy kép a használt területről.
Üdv. -
Fferi50
Topikgazda
Szia!
Ez a makró azt tudja, hogy az M1,N1 cellákba beírt címek alapján megszámolja a színek számát és kiírja az O1 cellába.Sub CountCcolor1()
Dim cel As Range, cminta As Range, cter As Range, countcl As Long
Dim xcolor As Long
Set cter = Range(Range("M1").Value)
If cter.Cells.Count = 1 Then
Set cminta = cter: Set cter = Range(Range("N1").Value)
Else
Set cminta = Range(Range("N1").Value)
End If
countcl = 0
xcolor = cminta.DisplayFormat.Interior.ColorIndex
For Each cel In cter.Cells
If cel.DisplayFormat.Interior.ColorIndex = xcolor Then
countcl = countcl + 1
End If
Next cel
Range("O1").Value = countcl
End Sub
Az M1-be kell a vizsgálandó terület címe (Pl. A1 : D5), az N1-be kell a mintacella címe (pl.K4), vagy fordítva, fontos, hogy a mintacella egy cella legyen.7
Természetesen mindhárom cella címét (M1, N1, O1) átírhatod a neked megfelelőre. Fontos még, hogy ezek a cellák azon a munkalapon legyenek, ahol számoltatni szeretnél és onnan indítsd a makrót - amit természetesen akár egy gombhoz is hozzárendelhetsz.
Üdv.
Üdv. -
Fferi50
Topikgazda
válasz
szricsi_0917
#45380
üzenetére
Szia!
Kicsit jobban ránéztem és az alábbiakat találtam:
1. Jó a Column, nem kell többesszám.
2. Az Index 2 dimenziós legyen és 0,0 val indul, ez az első oszlop első értéke
3. Első az oszlop index, második a sor index.
Tehát .Column(0,0) az első elem, .Column(0,1) az első oszlop második eleme.
Üdv. -
Fferi50
Topikgazda
válasz
szricsi_0917
#45380
üzenetére
Biztos, hogy jó a Control neve? Mert az is "indexnek" számít. Bár arra más hibaüzenet jönne.
-
Fferi50
Topikgazda
válasz
szricsi_0917
#45378
üzenetére
Szia!
Az index 0-val kezdődik szerintem, az egy oszloposnál Columns(0), úgy gondolom.
Üdv. -
Fferi50
Topikgazda
Szia!
Ha nem munkalap függvényként szeretnéd használni, akkor meg lehet oldani a megszámolást anélkül, hogy az eredeti feltételeket figyelni kellene.
Ahogy korábban írtam, ki kell jelölni a területet és a minta színt, ezután kell elindítani egy makrót.Sub CountCcolor1()
Dim cel As Range, cminta As Range, cter As Range,countcl As Long
Dim xcolor As Long
If Selection.Areas.Count <> 2 Then MsgBox "Nem megfelelő a terület kijelölése", vbCritical: Exit Sub
If Selection.Areas(1).Cells.Count = 1 Then
Set cminta = Selection.Areas(1): Set cter = Selection.Areas(2)
Else
Set cminta = Selection.Areas(2): Set cter = Selection.Areas(1)
End If
countcl = 0
xcolor = cminta.Interior.ColorIndex
For Each cel In cter.Cells
If cel.DisplayFormat.Interior.ColorIndex = xcolor Then
countcl = countcl + 1
End If
Next cel
MsgBox countcl
End Sub
Hogyan használható? Ki kell jelölnöd azt az összefüggő területet, ahol szeretnéd a színt összeszámolni. Ezután a CTRL nyomva tartásával ki kell hozzá jelölni a minta színt tartalmazó cellát - ami ne legyen a megszámolandó területen.
Ezután a Fejlesztőeszközök - Makrók menüpontban kiválasztod a CountColor1 -et és elindítod. Egy üzenetben kiírja a mintacella színének megfelelő cellák darabszámát.
Természetesen azt is meg lehet adni, hogy melyik cellába írja ki. Akkor az Msgbox sor helyett a Range("X3").Value=countcl sort kell beírnod - X3 helyett azt a címet, ahová szeretnéd az eredményt megkapni.
Megoldható továbbá az is, hogy egy vagy két cellába (ami mindig fix) beírjuk a vizsgálandó terület és a minta szín címét a makró futtatása előtt -- persze ahhoz módosítani kell a fenti makrót, de ez nem nagy probléma.
Amit Delila írt, az is megoldás, egy olyan makrót is lehet írni, ami megnézi, hogy a feltételes formázás feltételeinek melyik szín felel meg és azt a feltételt vizsgálja cellánként.
Erre még visszatérnék, csak azért írtam viszonylag gyorsan, hogy ne menjen el a kedved az egyébként hasznos feltételes formázás használatától.
Üdv. -
Fferi50
Topikgazda
válasz
szricsi_0917
#45374
üzenetére
Szia!
.Columns(1)
Üdv. -
Fferi50
Topikgazda
válasz
Delila_1
#45367
üzenetére
Szia!
Azért az tiszta őrület, hogy amikor végre megalkották a DisplayFormat -ot, hogy ne kelljen a feltételes formázással küzdeni pl. a színek vizsgálatánál, akkor felhasználói függvénnyel nem működik. Normál eljárással - paraméterezve is - működik - , de abban az esetben, ha ezt függvényből hívnánk meg a munkalapon, azonnal hibát okoz.
Mivel a Cella.Interior.Color(index) működik felhasználói függvény formában is, a Cella.DisplayFormat.Interior.Color(index) viszont nem, feltételezhetően valami apró bug lehet a megalkotásában. Elhatároztam, hogy jelezni fogom a MS oldalon. Kíváncsi vagyok, mit válaszolnak majd.
(Nálam 2016-os Excel fut, de a magasabb verzióban is fennáll a jelenség....)
Üdv. -
Fferi50
Topikgazda
Szia!
Nemrég volt egy hasonló "házi" problémám, most "emlékeztettél" rá.
Sajnos úgy néz ki, hogy függvénnyel nem lehet megoldani a problémát, mert a DisplayFormat tulajdonságot ebben a formában nem tudja "megemészteni" a VBA.
Normál eljárással (SUB) megy, de akkor meg kell oldani a paraméter átadást.
Már későre jár, ezért inkább holnap folytatnám.
Üdv. -
Fferi50
Topikgazda
Szia!
"azt hittem mindegy a sorrend, hisz a VBA nevek szerint tudja azonosítani öket"
Ez igaz, de akkor másként kell meghívni a függvényt és csak VBA-ban működik, pl.CountCcolor CellaSzín1:=Range("A1"), range_data:=Range("X2:Z13")
Munkalapon nem lehet így meghívni. Ha nevet szeretnél használni, akkor a Képletek - Névkezelő menüpontban kell hozzárendelni neveket a kívánt tartományokhoz.
Ekkor viszont csak azokkal a tartományokkal fog működni - ha más tartományt szeretnél használni, akkor a nevet kell módosítani.
"ha pl. átlagot akarok számolni VBA-ban For-Next ciklussal nagyon-nagyon lassabb mint a beépített ÁTLAG() függvény"
Ez természetes, hiszen a beépített függvények gépi kódban futnak. Ezért is indokolt és célszerű az Excel beépített eszközeit használni, amikor csak lehetséges - VBA-ból is meghívva azokat.
"a Set sor azért került bele, mert később, sok-sok futás után VBA szinten módosítani (növelni) akarom a terület nagyságát. Ez gondolom felülírja az induláskor Excel táblán manuálisan beállított értékeket"
Igen, felülírja a meghíváskor megadott értéket - de mindig fixen arra, amit beírtál a makróba. A terület nagyság változtatását a makróhoz való hozzányúlás nélkül, a paraméter változtatásával tudod megoldani. (A terület paraméterhez pl.X2 : Y7 helyett X2 : AA72 kerül a meghíváskor.)
Azért vannak a paraméterek, hogy ne a (makró)függvényt kelljen módosítani, ha mást is szeretnél vele számoltatni.
Üdv.
Ps. Unokához gratula. -
Fferi50
Topikgazda
Szia!
Van némi gond azzal, amit leírtál. Először:
a függvényFunction CountCcolor(range_data As Range, CellaSzín1 As Range)
Azaz az első paraméter a vizsgálandó terület, a második a mintaszín cellája.
A hívásnál pedig ezt írod:CountCcolor(CellaSzín1;range_data)
azaz fordítva adod meg a paramétereket!
Másodszor:
Magába a függvénybe bekerült ez a sor:Set range_data = Application.Range("Munka1!O3183:S3284")
Ez tehát minden alkalommal felülír(ná) az általad megadott területet. A vizsgálandó terület ott van az első paraméterben, ez a sor káros. (Azért írtam feltételes módban, mert a hívásnál rosszul adod meg a paramétereket.)
Harmadszor:
Feltételes formázás esetén a cella interior.color színe marad az eredeti és nem a formázott. Ebben az esetben a Range.DisplayFormat tulajdonságát kell használni.If cel.DisplayFormat.Interior.Colorindex=xcolor
Negyedszer:
Mit értesz táblafüggvény alatt? A felhasználói függvény szintén VBA-ban íródik és ha jól látom akkor For Each -..... -Next ciklus van ebben is (ez is kell bele). Ez mitől is gyorsabb mint a VBA ciklus...
Üdv. -
Fferi50
Topikgazda
válasz
Sprite75
#45344
üzenetére
Szia!
Azért nem működik az automatikus mentés, mert az sNev változó a régi munkafüzet nevét tartalmazza.
A Thisworkbook kódlapján az AfterSave eseménykezelőbe írd be, hogy változzon meg az sNev tartalma.Private Sub Workbook_AfterSave(ByVal Success As Boolean)Mentes.sNev = ThisWorkbook.NameEnd Sub
Így a mentés után már az új név lesz érvényes.
Elképzelhető, hogy az időzítőket is újra kell indítani, de ezt egy próba után már látni fogod, akkor ugyanide kell beírni az elindításukat.
Üdv. -
Fferi50
Topikgazda
válasz
lrobertoc
#45330
üzenetére
Szia!
Két "izgalmas" kérdés is van:
1. Hogyan lehet konvertálni a Munkatéri 2020. január stb. adatokat Ténybeli 2021. január stb. adatokká ...
2. Honnan szedjük a Munkatér táblában nem szereplő, de a Tény táblában ott levő tórzskód adatot a konvertáláshoz
Komolyra fordítva: Milyen szűrőként szeretnéd az időszak adatot használni a Munkatér táblában? Hiszen minden oszlop külön időszak, mit kell azon még szűrni?
PowerPivot és kimutatás nélküli konvertálás a Tény munkalapra:
Tény munkalap első sora marad.
A2 cellájába írd be a következő képletet:=ELTOLÁS(Munkatér!$A$2;MARADÉK(SOR()-2;DARAB2(Munkatér!$A$1:$A$1000)-1);OSZLOP()-1;1;1)
Ezt elhúzhatod lefelé és oldalra a D oszlopig.
Az E2 cellába írd be a következő képletet:=ELTOLÁS(Munkatér!$A$2;-1;3+INT((SOR()-2)/(DARAB2(Munkatér!$A$1:$A$1000)-1));1;1)
Ezt pedig lehúzhatod végig a sorokon.
Az eredmény minden dolgozó minden hónapi adata konvertálásra kerül ami a Munkatér táblázatban szerepel, a 0 értékek is.
A képletek működnek a szűrő használata esetén is.
Ha tovább szeretnél az adatokkal dolgozni, akkor célszerű értékké átalakítani a képleteket (másolás - irányított beillesztés értékként ugyanarra a területre).
Üdv. -
Fferi50
Topikgazda
válasz
m.zmrzlina
#45328
üzenetére
Szia!űjEsetleg csak a feltétel tartományokat beolvasni:
Arra gondoltam, hogy csak azokat az oszlopokat olvasd be külön-külön tömbökbe, amelyekre a feltételt meg kell vizsgálni. Így lesz 2-3 (esetleg több) egydimenziós(nak tűnő) tömböd, amelyeknek azonos sorában lesznek az egy sorhoz tartozó vizsgálandó elemei, tehát egy ciklussal elég végigmenni a vizsgálat során.
A feltételnek megfelelő sorok számát egy szövegváltozóban gyűjteném összePe Pl.dim sorkell as stringsorkell="1:1"sorkell=sorkell & ",5:5")sorkell=sorkell & ",9:9")
Persze ezeket a feltétel megfelelősége esetén.
A hasonlítás megtörténte után pedig:Sheets(forrás).Usedrange.Range(sorkell).Copy Sheets(eredmény).Range("A1")
egy lépésben átmásolja a teljes szűrt tartományt.
Üdv. -
Fferi50
Topikgazda
válasz
m.zmrzlina
#45324
üzenetére
Szia!
Mi lenne, ha a kimenő tömböt csak 1 dimenziósra definiálnád. Ez a dimenzió így dinamikusan növelhető. Az elemeket elválasztójellel olvasnád be a tömb adott helyére.
Amikor kész vagy, akkor bemásolod az eredményt és az elválasztójel alapján a szövegből oszlopok (TextToColumns) függvénnyel tennéd át az oszlopokba az adatokat.
Persze kérdés, hogy ez mennyivel változtatja meg a futásidőt.
Esetleg csak a feltétel tartományokat beolvasni - akár külön-külön tömbbe - és akkor csak egy ciklusváltozó kell a vizsgálathoz.
Üdv.
Ps. Talán az AdvancedFilter függvény is érdekes lehet. -
Fferi50
Topikgazda
válasz
D4rkm4n
#45315
üzenetére
Szia!
Kicsit macerás, de az alábbi lépésekkel megoldható:
1. Az A oszlop cellaegyesítéseit szüntesd meg.
2. A cégnevekkel töltsd ki a termékek mellett üresen maradt cellákat az A oszlopban lehúzással.
3. Az A-B oszlopot rendezed az A szerint.
4. Az A oszlopba visszateszed a cellaegyesítéseket - ekkor az egyesített cellákban csak az első név fog megmaradni.
Így visszajutottál a kiinduló állapotodhoz, rendezett céges listával.
De kérdés az, miért jó ez így neked, hiszen az egyesített cellákat nem tudja rendesen kezelni az Excel.
Talán érdemesebb lenne meghagyni a cégneveket minden A oszlopbeli cellában és akkor nem lenne ilyen gondod.
Üdv. -
Fferi50
Topikgazda
válasz
Norbika1493
#45285
üzenetére
Szia!
Úgy nem műxik. Csináld úgy, ahogyan Delila mutatta.
Üdv.
Ps. Érdemes az FKERES helpjét hozzáolvasni. -
Fferi50
Topikgazda
-
Fferi50
Topikgazda
válasz
genlog
#45279
üzenetére
Szia!
Eseménykezelő makróval meg lehet oldani. Minta:
Az A-D oszlopban van a lista.
Az F-I oszlopban a kiválasztott konfiguráció (csak azért sárga az alap, hogy kitűnjön), az I6 cellában a konfiguráció ára.
Az eseménykezelő makró:Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)Dim cl As Range, keres As RangeIf Target.Column < 5 ThenApplication.EnableEvents = FalseSet keres = Cells(Target.Row, 1)Set cl = Range("$F$2:$F$5").Find(what:=keres.Value, LookIn:=xlValues, lookat:=xlWhole)cl.Offset(0, 1).Value = keres.Offset(0, 1).ValueApplication.EnableEvents = TrueEnd IfCancel = TrueEnd Sub
Ezt a munkalap kódlapjára kell bemásolni. (Lapfülön jobb egérgomb - kód megjelenítése).
A makró a G oszlopba teszi a kiválasztott márkát. A H és I oszlopban képleteke vannak.
H2 képlete:=HAHIBA(FKERES($G2;$B$1:$D$12;2;0);"")
I2 képlete:=HAHIBA(FKERES($G2;$B$1:$D$12;3;0);"")
I6 cella képlete:=SZUM(I2:I5)
A tartományokat természetesen mind a makróban, mind a képletben saját adataid szerint változtasd meg.
DuplaKattintással az 1-4 oszlop celláin lehet választani. Ha máshova kattintanak, az nem hatásos.
A kiválasztott konfiguráció elemeit a G oszlopban lehet törölni, csak ott, mert a többi oszlopban képlet van.
Remélem, valami ilyesmire gondoltál.
A munkafüzetet makróbarátként (xlsm) vagy binárisként (xlsb) kell mentened. Engedélyezni kell a makrókat is a biztonsági beállításoknál.
Üdv. -
Fferi50
Topikgazda
válasz
astradejo
#45277
üzenetére
Szia!
Szerintem az egész táblázatodat (A:G oszlop) rendezed a G oszlop szerint és máris megvan az eredmény az A oszlopban. Ha új napi adatot írsz be, akkor ismét rendezed.
Ha aztán akarod, akkor átmásolhatod a két oszlopot külön.
Kicsit nem értem, miért kell bonyolítani a dolgot.
Üdv. -
Fferi50
Topikgazda
válasz
astradejo
#45271
üzenetére
Szia!
Pillanatnyilag két dolgot nem értek:
1. Az 5. oszlopban a számok egyedi értékkel szerepelnek - azaz itt már nincs ismétlődés?
2. A 6. oszlopban a nem ismétlődő számokhoz kell az adott 5. oszlopbeli számhoz tartozó összes előfordulást felsorolni?
Mert ha nem ez a feladat, akkor kvázi hiába görcsöltünk eddig rajta, hiszen ezt egyszerű rendezéssel meg tudod oldani: 1. és 3. oszlopot kimásolod az új helyre, majd a két oszlopot kijelölve rendezed az 1. oszlop csökkenő sorrendje szerint - esetleg a 2. oszlopot pedig második szintként betűrendben.
Mit értesz az alatt, hogy az első oszlop számait képlet számolja? Milyen képlet?
Továbbá a mintában nem kell a céges adatokat feltenni, a nevek legyenek légből kapottak és szerintem bőven elég egy 20 sorból álló minta, amiben benne van a kiinduló és az elérni kívánt állapot egyaránt (mondjuk a számok képletestől, ha lehet).
Üdv. -
Fferi50
Topikgazda
válasz
astradejo
#45263
üzenetére
Szia!
Próbáld meg a következőt:
Egy segédoszlopba tedd be a számok mellé a sornak a számát. Ezt a SOR() függvénnyel tudod megtenni. Ezután a segédoszlopot jelöld ki -- másolás -- majd ugyanoda irányított beillesztés értéket.
Ezután a számokat és a sorszámot tartalmazó segédoszlopot együtt rendezd a számok szerint. Tehát az 5. oszlopba kerülnek a rendezett számok és mellé a 6. oszlopba a hozzájuk tartozó sorszámok.
Ezután az INDEX(2. oszlop;6. oszlop) képlet megadja a keresett nevet, mert minden számhoz egyedi sorszám fog tartozni.
A végén a segédoszlopot és a 6. oszlopot eltávolíthatod.
Üdv. -
Fferi50
Topikgazda
válasz
m.zmrzlina
#45258
üzenetére
Szia!
Ha "kézzel" nem lehet normálisan beállítani, akkor szerintem makróból sem menne.
Talán meg kellene nézni, hogy a nyomtató kezelési könyve miket mond a vezérlési lehetőségekről illetve a driverről. Esetleg Windows parancssorral rá lehet venni a kétoldalas nyomtatásra, ha a driver vezérelhető így.
Üdv. -
Fferi50
Topikgazda
válasz
m.zmrzlina
#45254
üzenetére
Szia!
Szerintem sajnos makróból nem lehet ezt a beállítást szabályozni. Tudom, nehéz ügy de én megpróbálnám első körben az Excel nyomtató menüben a nyomtató beállításait kézzel megcsinálni, ha ott lehet kétoldalas nyomtatást beálítani, akkor megtenném. Utána ellenőriztetném egy próbanyomtatással, hogy valóban kétoldalast nyomtat-e.
Ha igen, akkor csak annyit kell tenned, hogy te beállítod kézzel a nyomtatási makró futása előtt ezt az opciót. (Illetve talán meg is őrzi a beállítást az Excel, ezt nem tudom, ellenőrizni kell.)
Egyébként pedig gondolom a printerdrivert kellene tudni programozni.
Üdv. -
Fferi50
Topikgazda
válasz
m.zmrzlina
#45252
üzenetére
Szia!
Bocs, de miért nem jó az, ha eleve kétoldalas nyomtatást állít be a user? Egy-egy lista után nem érzékeli a nyomtató, hogy ezt már új lapra kellene nyomtatnia?
Üdv. -
Fferi50
Topikgazda
Szia!
Az előző választ kiegészítve:
Előkerestem a mintámat, a következőt találtam: A körlevél mintában minden lehetséges mező fel van tüntetve. Ahol nincs az Excelben érték, ott természetesen nem hoz adatot, üres marad a mező.
Néhány kép:
Az Excel munkalap
A Word körlevél mezőkkel:
A Word körlevél feltöltve (majdnem) minden mező:
A körlevél hiányos mezőfeltöltéssel:
Üdv.
-
Fferi50
Topikgazda
Szia!
Az Excelben az egy szerződéshez tartozó tételeket egy sorban kellene felvinni. A körlevél sablonban pedig minden tétel helyét meg kell határozni. Természetesen nem árt egy maximális tételszámot megadni, aminél több egy rendelésben nem lehet - vagy ilyenkor 2/több sorban kell rögzíteni a rendelést.
El lehet érni, hogy az üres tételek ne jelenjenek meg a körlevélben. Erre volt egy példám, de időbe telik előkeresni.
Üdv. -
Fferi50
Topikgazda
válasz
Lokids
#45235
üzenetére
Szia!
Képlet szerintem nincs erre. Viszont az adatok - ismétlődések eltávolítása megoldja a feladatot. Először átmásolod egy új oszlopba az egészet és azon hajtod végre.
Másik lehetőség a Speciális (lánykori nevén Advanced) szűrő, ahol lehetőség van az egyedi adatok kiszűrésére és más helyre áthelyezésére is.
Üdv. -
Fferi50
Topikgazda
válasz
Misi_D
#45226
üzenetére
Szia!
Egy lehetőség, logikai szinten leírva:
Az első előfordulást beteszed a munkalap következő sorába. A következő előfordulásnál megkeresed, hol van a munkalapon, megnézed a másik változó értéke milyen, ha nagyobb, akkor kicseréled a sort az újra, ha nem, akkor hagyod békében.
Ezt csinálod végig a fájlon.
Előny, hogy akkor is használható, ha a csv fájlban nem sorban vannak az ID-k.
A munkalapon kereshetsz a Range.Find metódussal vagy kereső függvényekkel egyaránt.
A beolvasásnál a kinput változóban a teljes sor kerül. Ebből neked kell meghatározni, hol az id és a számodra szükséges változó adata. Ha tudod, hogy hanyadik oszlopban van, akkor pl. használhatod a Split függvényt, amelyik a megadott határoló (pl. pontosvessző - ; - ) szerint egy tömbbe transzformálja a szöveget. A tömb indexe 0-val indul. Innen már meg tudod kapni a keresett adatokat.
Egy példa:Sub beolvaso()Dim utja As String, fnev As String, kinput As String, fc As Byte, cl As Range, bejott, holvan As Rangeutja = "C:\Users\user\Documents"fnev = "\xxx.csv"fc = FreeFile()Open utja & fnev For Input As #fcSet cl = ActiveSheet.Cells(1, 1) 'az aktív munkalap első cellájába kerül az első adat'ha nem ide szeretnéd, akkor változtasd meg a Cells paramétereitDo While Not EOF(fc)Line Input #fc, kinputbejott = Split(kinput, ";") 'egy tömbbe transzformáljuk a bejött adatot'megkeressük az azonosítót az első oszlopban. Ha nem ide tetted, akkor írd át az oszlop számát'ha nem az input első adata az ID akkor bejott(0) paraméterét írd át a megfelelő oszlopraSet holvan = ActiveSheet.Columns(1).Find(what:=bejott(0), LookIn:=xlValues, lookat:=xlWhole)If holvan Is Nothing Then 'ha még nincs, akkor bejegyezzük az első szabad sorba'cl.Value = kinput 'ez a sor egy cellába tenné a teljes inputotRange(cl, cl.Offset(0, UBound(bejott))).Value = bejott ' így viszont külön cellába kerülnek az értékekSet cl = cl.Offset(1, 0) 'ez lesz a következő üres sor első cellájaElseIf holvan.Offset(0, 2).Value < bejott(2) Then 'ha a változó nem a második az adatok között, akkor'mindkét 2-est írd át megfelelőre - az offset és a tömb paramétere is 0-tól indul.Range(holvan, holvan.Offset(0, UBound(bejott))).Value = bejott 'kicseréljük az újraEnd If'MsgBox kinputEnd IfLoopClose #fcMsgBox "Az input kész!"End SubRemélem, sikerül.
Üdv. -
Fferi50
Topikgazda
válasz
Misi_D
#45224
üzenetére
Szia!
Excelben van lehetőség arra is, hogy egy fájlt direkt eléréssel nyiss meg és olvass be. Így megoldható, hogy csak azt a rekordot tedd be a munkalapra, amelyikre szükséged van.
Itt a példa:Sub beolvaso()Dim utja As String, fnev As String, kinput As String, fc As Byteutja = "C:\Users\user\Documents"fnev = "\xxx.csv"fc = FreeFile()Open utja & fnev For Input As #fc ' file megnyitásaDo While Not EOF(fc)Line Input #fc, kinput 'egy teljes sor beolvasása a fájlbólMsgBox kinput 'itt megnézheted, mit olvastál be, ennek a helyére ill. ez után jöhet feldolgozásLoopClose #fc ' fájl bezárásaEnd Sub
Ez csak a fájlművelet, természetesen az excel munkalap kezelését is meg kell oldanod előtte illetve közben.
Remélem hasznos lesz neked.
Itt találsz a Line Input-ról súgót, illetve innen megtalálod a direkt fájlkezelés példáit is. [link]
Üdv. -
Fferi50
Topikgazda
válasz
the radish
#45196
üzenetére
Szia!
A konstansnak nem adhatsz változó tartalmat pl. cellaértéket sem, a deklaráláskor pontosan meg kell adni az értékét.
Ha változó értékeket szeretnél, akkor valódi változót kell használnod és pl. a Workbook_Open eseményben beolvasni az értékét - vagy az adott makróban, mielőtt használni kezdenéd.
Üdv. -
Fferi50
Topikgazda
válasz
the radish
#45183
üzenetére
Szia!
Mi van az eseménykezeléssel? Le van tiltva?
Megmutatnád azt a kódrészletet, amelynél ez bekövetkezik?
Üdv. -
-
Fferi50
Topikgazda
válasz
Aventador91
#45154
üzenetére
Szia!
Tedd fel elérhető helyre, aztán megnézzük.
Üdv. -
Fferi50
Topikgazda
válasz
Aventador91
#45150
üzenetére
Szia!
Szerintem előbb rendezd időrend szerint (későbbi előbb), utána a másik oszlopot pedig Z-A (fordított) sorrendben.
Üdv. -
Fferi50
Topikgazda
-
Fferi50
Topikgazda
válasz
lrobertoc
#45119
üzenetére
Szia!
A pozícióra leosztott - nem munkavállalóra szabott - tervet ebben a riportban még nem tudtam megjeleníteni.
A dolgozó sokszorozást viszont a sorok alábbi sorrendjében sikerült kiküszöbölni:
Terület - Pozíció neve - Pozíció betöltője.
Ez az eredmény egyenlőre:
Elképzelhető, hogy a terv-tény összehasonlítás ebben a formában nem megoldható...
Üdv. -
Fferi50
Topikgazda
Szia!
Ha le van védve a projekt, akkor nem tudsz újabb makrókat hozzáírni.
Az Adatérvényesítés megoldható több szinten is, a választástól függően, nem feltétlenül kell egy listában lennie minden lehetőségnek. A kategóriákhoz tartozhatnak külön-külön alkategóriák.
A színezés lehetséges feltételes formázással.
Ha lenne valami egyszerűbb mintafájlod - ami csak ezeket a dolgokat tartalmazza - talán többet is tudnánk segíteni.
Üdv. -
Fferi50
Topikgazda
válasz
pero19910606
#45043
üzenetére
Szia!
Szerintem arról van szó, hogy a diagram első sorozat színe kék, második sorozaté narancs és így tovább. Tehát amikor csak 1 sorozatot választasz ki, akkor az első sorozat színével jelenik meg.
Ha narancsnak szeretnéd látni, akkor át kell rendezned, hogy a budapesti telephely legyen az első.
Tehát nem telephelyhez, hanem a sorozat helyzetéhez van köze a megjelenítés színének.
Üdv. -
Fferi50
Topikgazda
-
Fferi50
Topikgazda
-
Fferi50
Topikgazda
válasz
dogpatch06
#44945
üzenetére
Szia!
Ez a képlet jó lehet:=VAGY(ÉS($B4<>"";F4<>$B4;F4<>"");ÉS($B4="";$F4<>""))
Elképzelhető, hogy egyszerűbben is lehetne, de most ez jutott eszembe.
Üdv.
(Bocs, hogy magyar szintaxist használok.) -
Fferi50
Topikgazda
válasz
dogpatch06
#44939
üzenetére
Szia!
Talán nézd meg ezt a képletet:=VAGY(ÉS($A1<>"";B1<>$A1;B1<>"");$A1="")
Ez az A oszlopot hasonlítja a mindenkori oszlophoz. Ha az A oszlop üres, de a B-ben van érték akkor is színez, de ha a B oszlop üres, akkor nem.
Legegyszerűbben úgy tudod bevinni, ha a B1 cellát kijelölöd, ennek a formázására beírod ezt a képletet és kiválasztod a színt. Ezután a szabályok kezelésében kiválasztod ezt a szabályt és az érvényességi területre megadod az általad használt területet.
Ezen a területen belül minden oszlopot(!) az A oszlophoz fog viszonyítani.
Csak azt az oszlopot kell $ jellel ellátni, amihez viszonyítasz - nálad ez úgy látom, a B oszlop, akkor az F4 cellát jelöld ki és úgy add meg a képletet, természetesen a 4 sorra hivatkozva.
Üdv.
Ps. mi volt a hibaüzenet? Gondolom angol exceled van, ott pedig nem pontosvessző a paraméter elválasztó, hanem sima vessző.
-
Fferi50
Topikgazda
-
Fferi50
Topikgazda
válasz
dogpatch06
#44939
üzenetére
Szia!
Nem lehet tartományokat megadni, csak 1-1 cellát, tehát az első sorokat a $ jellel és csak az oszlopok elé kell a $ jel. Úgy, hogy ki van egyébként jelölve a teljes tartomány.
=OR($F4<$B4;$F4>$B4)
De ez nem egyenértékű szerinted azzal, hogy F4<>B4?
Üdv. -
Fferi50
Topikgazda
válasz
dogpatch06
#44932
üzenetére
Szia!
"a kettőt együtt - tehát kisebb és nagyobb - nem."
Elvileg valami vagy kisebb vagy nagyobb, egyszerre nem lehet kisebb is meg nagyobb is szerintem.
Esetleg úgy gondoltad, hogy az egyik oszlopban kisebb, a másikban pedig nagyobb az érték, mint az A oszlopban?
Ebben az esetben a Vagy függvényt kell használnod: =Vagy(B1<A1;C1<A1;B1>A1;C1>A1), ez akkor igaz, ha a négy reláció közül bármelyik igaz.
Tartományra:
Kijelölöd a tartományt, amit formázni szeretnél. Ezután Kezdőlap - Feltételes formázás - Új szabály - a formázandó cellák kijelölés képlettel - Értékek formázása, ha ez a képlet igaz kockába a képlet:
=Vagy($B1<$A1;$C1<$A1;$B1>$A1;$C1>$A1)
Így mindig az A-B-C oszlopot hasonlítja össze a $ jel miatt.
Kiválasztod a megfelelő formázást, majd OK.
Ha rosszul gondoltam, kérlek pontosítsd a kérdést, esetleg mutass mintát.
Üdv. -
Fferi50
Topikgazda
válasz
body007
#44929
üzenetére
Szia!
FKERES (Angolul VLOOKUP) függvénynek nagyon jó a súgója, érdemes elolvasni.
Paraméterei:
1. Amit keresni kell
2. Amelyik tartományban keresni kell - mindig a tartomány első oszlopában keres
3. A tartomány azon oszlopa, ahonnan a találathoz tartozó sorból az adatot ki kell venni
4. A keresés formája - 0 teljes egyezőség, 1 közelítő egyezés (nem nagyobb a keresett értéknél - ebben az esetben az első oszlopnak nagyság szerint rendezettnek kell lennie).
Más: a keret árat is beteheted egy cellába pl. L2 -be. Akkor a G2 cella képlete:=F2*$L$2
Ez a képlet végighúzható a G oszlopon. Ha változik az egységár, csak az L2 cellát kell átírnod, az átárazás megtörténik automatikusan.
Üdv. -
Fferi50
Topikgazda
válasz
body007
#44926
üzenetére
Szia!
Az ártáblázatot módosítsd a következők szerint (én a J2 -től javaslom, hogy a régi is megmaradjon):
Ezután a D2 cella képlete:=FKERES(C2;$J$2:$K$8;2;1)
Az Fkeres függvény negyedik paramétere szabályozza, hogy pontos vagy közelítő legyen a találat. Az 1 a keresett értéknél nem nagyobb legutolsó értéket adja vissza. Ezért kell a határértékeket így megadni. Ha 0,1-nél kevesebbhez más árat szeretnél, akkor azt írd a 0 mellé.
Ha a keret ár is mérettől függ, akkor ugyanilyen táblát csinálhatsz. Ha keretfajtától (pl. anyag, minta stb.) akkor kell egy fajta oszlop és az FKERES tábla negyedik paramétere legyen 0, ami pontos egyezést ad vissza.Üdv.
-
Fferi50
Topikgazda
válasz
DeFranco
#44923
üzenetére
Szia!
" az nem világos, hogy ebben az esetben {1,1,1,1,1,#,#,#,#} miért pontosan az utolsó találat pozícióját adja, miért nem az elsőét vagy bármelyik másikét a (szükségszerűen) egyenlő értékek közül"
A 3. paraméter elhagyása (ami alapértelmezésben az 1 értéket adja át a függvénynek) azt jelenti, hogy az utolsó kisebb vagy egyenlő találatot adja vissza és nem az elsőt.
Ha 0 lenne a 3. paraméter (a pontos egyezés keresése), akkor az első egyező találat helyét adná vissza.
Üdv. -
Fferi50
Topikgazda
válasz
Sprite75
#44917
üzenetére
Szia!
Bocs, azt hiszem én írtam el valamit...If kovido > Now Then Application.OnTime kovido, "idozit", , False ' ide a saját időzítő makród nevét írdNem az időzítő makró, hanem az időzített makró neve kell oda. A te esetedben az egyik
a PDFautoment, a másik pedig a Savethis makró.
Tehát ugyanazokkal a makrónevekkel kell meghívni, mint ami az időzítő makróban van, csak a vége True helyett False.
Sajnálom, hogy félrevezető voltam.
Üdv. -
Fferi50
Topikgazda
válasz
zsolti_20
#44893
üzenetére
Szia!
Szerintem 2 malomban őrölünk. A képlet akkor is működik, ha 2, akkor is ha 12 a sorok száma. A lényeg, hogy az altáblák első oszlopa legyen egyenlő a főtábla első oszlopával, valamit az első sorok tartalmazzák a számokat.
Csak mindig a tartományokhoz kell igazítanod a legelsőt és utána húzhatod ameddig szükséges.
Ha felteszel egy mintafájlt két munkalappal, különböző kiindulási táblákkal, akkor szívesen megmutatom, hogyan gondoltam.
Üdv. -
Fferi50
Topikgazda
válasz
Tybee21
#44892
üzenetére
Szia!
FKERES függvény gondolom ott is van. Nézd meg a súgóban, hogyan működik.
Persze az gond lehet, hogy csak az első találatot adja vissza. Ha az is fontos, hogy darabra meglegyen, mert nem egyszer fordulhat elő az adószám/számlaszám (ez utóbbiból talán csak egy lehet), akkor a Darabteli függvényt használhatod.
Üdv. -
Fferi50
Topikgazda
válasz
Sprite75
#44890
üzenetére
Szia!
"Szóval az kivitelezhető, hogy a rendelős táblázat bezárásakor leálljon az időzítő ha az excel továbbra is nyitva marad egy máik táblázat miatt?"
Természetesen. Ehhez egy leállító makrót kell meghívni a fájl bezárásakor.
A kovido változód legyen Date típusú.
Az időzítés indításakor meg kell nézni, hogy a korábban beállított időzítés élő-e még, hogy ne indítson rá egy újabbat.
Tehát az első sor az időzítő makróban:
If kovido>Now Then Exit Sub ' azaz nem indítunk újabb időzítést, ha még nem futott le.
A leállító makró:Sub idoleall()If kovido > Now Then Application.OnTime kovido, "idozit", , False ' ide a saját időzítő makród nevét írdEnd SubA makrót a Thisworkbook modulba a Workbook_BeforeClose eseménykezelőbe kell betenni:
Private Sub Workbook_BeforeClose(Cancel As Boolean)idoleallThisWorkbook.Saved = TrueEnd Sub
Remélem sikerül.Üdv.
-
Fferi50
Topikgazda
válasz
Sprite75
#44886
üzenetére
Szia!
Próbáld ki a következőt:
A mentési makrót tartalmazó modul elejére, eljáráson kívül vegyél fel egy publikus változót.
Public sNev As String 'ez fogja tartalmazni a mentendő munkafüzet nevét.Private Sub Workbook_Open()Modul1.sNev=Thisworkbook.Name 'Itt Modul1 helyére annak a modulnak a nevét írd, amelyikben definiáltad az sNev változót.TimerStartApplication.OnTime Now + TimeValue("00:02:00"), "SaveThis"End SubA mentési makrót módosítsd így:
Sub PDFautoment()' PDFment Makró automataIf ActiveWorkbook.Name<> Modul1.sNev Then Timerstart: Exit Sublapnev = ActiveSheet.NameÍgy a mentés csak akkor fog lefutni, ha az adott munkafüzet aktív, de az időzítőt továbbra is bekapcsolja.
Üdv. -
Fferi50
Topikgazda
válasz
zsolti_20
#44887
üzenetére
Szia!
Bocs, de mégis azt mondom, hogy próbáld meg a következőképpen:
A mindenkori oldalrovatot másold át mindkét altáblához.
Ha az 1-12 és a bontás fix, akkor a mutatott képlet továbbra is jó lesz, csak a főtábla sorainak a számát kell megváltoztatnod (az INDEX első paraméterének az utolsó száma, illetve az első HOL.VAN függvény második paraméterének az utolsó értéke. -- $A$1:$M$12 ill. $A$1:$A$12 -- az eredeti mintában, a 12-t kell átírnod a tényleges hosszra.)
Üdv. -
Fferi50
Topikgazda
válasz
zsolti_20
#44882
üzenetére
Szia!
A két szétválasztó tábládat alapból ugyanolyan oldalrovattal kell megnyitni, mint amilyen a főtábládban van.
Ezután az INDEX - HOL.VAN párossal meg tudod keresni az odavaló adatot.
=INDEX(Főtábla, HOL.VAN(altábla második sor első cella (pl. a),Főtábla első oszlop,0),HOL.VAN(altábla.első sor második cella,Főtábla első sor,0))
Pl.
A képlet húzható lefelé és oldalt is.
Üdv. -
Fferi50
Topikgazda
válasz
#42308056
#44881
üzenetére
Szia!
Egy próbát megér szerintem:
Nevezd át a kiterjesztést txt-re. Ezután próbáld megnyitni. Ha minden igaz, akkor a szövegvarázsló fog előbukkanni. Itt beállítod, hogy tagolt, majd az oszlopok adattípusát is beállítod. A számokat szerintem ne általánosra vedd, hanem szövegre. Utána átalakítható majd számmá pl. 1-el való szorzással (Egy cellába beírsz egy db 1-est. CtrlC - kijelölöd a számoszlopot - irányított beillesztés értéket szorzással.)
Talán segít.
Üdv. -
Fferi50
Topikgazda
válasz
scha_vagyok
#44875
üzenetére
Szia!
Mi lenne, ha a fájlt feltennéd valahova, ahol meg tudjuk nézni?
Vagy priviben elküldenéd?
Üdv. -
Fferi50
Topikgazda
válasz
scha_vagyok
#44871
üzenetére
Szia!
Van mások makró is a modulban?
Mert ebben nem látok hibát. Megmutatnád a modult. Esetleg máshol is van még makró? Mert a fordításkor mindent néz az interpreter.
Viszont, ha feltételes formázás van, akkor nem ad jó eredményt az Interior.Color, Helyettes a DisplayFormat.Interior.Color tulajdonságot kell használni.
Üdv. -
Fferi50
Topikgazda
válasz
scha_vagyok
#44869
üzenetére
Szia!
Elvileg jó a makró (már amit ide feltöltöttél). Nem lehet, hogy van benne valahol nem látható karakter valamelyik sor végén?
Definiáld légy szíves az nColor és nResult változókat is. (Persze ennek hiánya nem okozhatja ezt a problémát, de érdemes hozzászokni, mert a hibakeresésben segít. Modul elejére Option Explicit parancsot írj, akkor mindig kiköveteli az előzetes deklarálást.)
Üdv.
Új hozzászólás Aktív témák
- Garmin Venu 4 - a nagy ugrás
- MWC 2026: Bajnoki címre pályázik a Xiaomi Watch 5
- GoodSpeed: Mutasd magad topic!
- Battlefield 6
- Trollok komolyan
- Kávé kezdőknek - amatőr koffeinisták anonim klubja
- Samsung Galaxy Felhasználók OFF topicja
- Kerékpárosok, bringások ide!
- EarFun Air Pro 4+ – érdemi plusz
- MWC 2026: Kezünkben a Vivo V70, megvan a magyar ára is
- További aktív témák...
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- Microsoft és egyéb dobozos retro szoftverek
- PC Game Pass előfizetés
- ÁRGARANCIA! Épített KomPhone Ultra 7 265KF 32/64GB RAM RX 9070 XT 16GB GAMER PC termékbeszámítással
- Katonai Rugged laptopok Panasonic Toughbook és Getac S410 5-6. gen gar.
- Apple iPad Air 2 128GB, Wi-fi, 1 Év Garanciával
- CÉGEK FIGYELEM!! iPhone 11 64GB Black -1 ÉV GARANCIA - 27% ÁFA-S SZÁMLA Kártyafüggetlen, 100% Akksi
- HIBÁTLAN iPhone 12 Pro 256GB Graphite-1 ÉV GARANCIA - Kártyafüggetlen, MS4518, 100% Akksi
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

Szóval MS-ék ezt direkt így csinálták....




