-
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
föccer
#31933
üzenetére
Szia!
Igen, a tömbképlet rendkívül hasznos jószág - én is csak nem túl régen jöttem rá az ízére, pedig elég hosszú ideje excelezek, de valahogy nem füllött a fogam hozzá (vagy nem értettem meg jó sokáig a működését), szinte minden olyan másik függvényhez felhasználható, ahol tömb (vektor) és/vagy tartomány az egyik paraméter.
A másik dolog, amivel "trükközni" lehet hasznosan, az a cellák címzése - $ használat sorra, oszlopra,illetve elhagyása, $ jellel lehet rögzíteni a sort, oszlopot ill. a konkrét cellát, ebben az esetben nem "csúszik tovább" a cella címe a képlet húzásakor.
Üdv.
-
Fferi50
Topikgazda
válasz
föccer
#31928
üzenetére
Szia!
Bocs, nem is az kell neked, amire az előbb hivatkoztam. Egy csaknem betűre hasonló feladatot priviben oldottam meg egy topiktársnak. Nem kell hozzá makró, elég egy tömbképlet:
=HAHIBA(NAGY(HA($C$12:$C12=$C12;SOR($C$12:$C12);"");32);12)Ez visszaadja annak a sornak a számát, amelyben visszafelé 32 azonos F vagy D értéket tartalmazó cellatartomány kezdődik (ha még nincs annyi, akkor 12 a sor száma).
A tömbképletet Shift+Ctrl + Enter billentyűkombinációval kell bevinni és az Excel kapcsos zárójelbe teszi. Az AD12 cellába beviszed a képletet, majd Ctrl+L használatával lehúzod az oszlopon, ameddig kell.Ha összegezni, vagy átlagolni szeretnél hasonló módon, arra is megvan a tömbképlet, csak írj - nem kell hozzá külön segédoszlop!
Üdv.
-
Fferi50
Topikgazda
Szia!
- Megoldható-e, hogy az Excel dokumentum megnyitásakor a kurzor már alapból a szövegbeviteli cellán legyen?
A Thisworkbook kódlapjára másold be az alábbi makrót:
Private Sub Workbook_Open()
Application.EnableEvents = False
Sheets("Munka1").Select 'Munka1 helyére írd be a kereső munkalapod nevét.
Range("C2").Select
Application.EnableEvents = True
End Sub
A VBA projektben a Thisworkbook összetevőre kattintasz kettőt és a megjelenő ablakba bemásolod.- Megoldható-e, hogy két keresési ciklus között (tehát amikor bevisz egy cikkszámot, amihez kapcsolódóan a makró megnyitja a hálózaton lévő fájlt, de újabb cikkszám bevitel még nem történt meg) ne az előzőleg bevitt cikkszám legyen
Application.EnableEvents=True elé írd be ezt a sort:
Range("C2").Value=0, vagy Range("C2").Value="Kérem, olvassa be a vonalkódot!"Viszont ez utóbbi elég hosszúnak tűnik, ha mellette levő cellában is van adat, akkor nem fog végig kiférni.
Üdv.
-
Fferi50
Topikgazda
válasz
föccer
#31914
üzenetére
Szia!
A link hozzáÜdv.
-
Fferi50
Topikgazda
válasz
Zola007
#31916
üzenetére
Szia!
Szerintem az INDEX - HOL.VAN függvény alkalmazása lesz a számodra hasznos:
A képlet:=INDEX($A$1:$A$7;HOL.VAN($E$1;$C$1:$C$7;-1)
A keresett érték az E1 cellában van.
A HOL.VAN függvény megkeresi a csökkenő sorrendben azt a legkisebb értéket, amely egyenlő vagy nagyobb, mint a keresési érték, ennek a sornak a számát adja vissza. Az INDEX pedig kiírja az A oszlopból az adott sorban levő értéket.
Javaslom hozzá még a Súgó tanulmányozását.Üdv.
-
Fferi50
Topikgazda
válasz
róland
#31906
üzenetére
Szia!
Ha jól látom, akkor a hónap az A2 cellában van. Szerintem az adatérvényesítéssel meg lehet oldani, hogy ne lehessen semmit írni, ha a hónap nem 31 napos.
Pl. a 31. napot tartalmazó oszlopra a következő adatérvényesítést lehet kiadni:
Adatok - érvényesítés - egyéni - a képlet mezőbe pedig ezt írod:=NEM(VAGY(A2="február";A2="április";A2="június";A2="szeptember";A2="november"))
A 29. 30. esetén elég a=NEM(A2="február")
képlet.
A figyelmeztető és hibaüzenetekben meg lehet adni az okát a beírás elutasításának.Hasonló képletekkel a feltételes formázással elérhető, hogy a cellák más színűek legyenek - értelmes felhasználó ebből már megérti, hogy ott nincs keresnivalója.
Üdv.
-
Fferi50
Topikgazda
válasz
Declare
#31884
üzenetére
Szia!
Közben megszületett az új verzió:
Sub FormatText2()
Dim i As Double, mycell As Range, myfind As Range, elso As String
Set myfind = Range("H:H").Find(what:="w", LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlNext)
If Not myfind Is Nothing Then
elso = myfind.Address
Do While True
Set mycell = Range("H:H").Find(what:="p", LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlPrevious, after:=myfind)
If Not mycell Is Nothing Then
i = myfind.Row
With Range("A" & i & ":H" & i)
.Font.Name = "Calibri"
.Font.FontStyle = "Italic"
.Font.Underline = xlUnderlineStyleSingle
End With
Range("E" & i).Value = Range("A" & i).Value & " " & Range("D" & i).Value
Range("E" & i).HorizontalAlignment = xlRight
Range("A" & i & ":D" & i).ClearContents
Range("F" & i).Formula = "=Sum(" & Range("F" & i - 1).Address & ":" & Range("F" & mycell.Row).Address & ")"
End If
Set myfind = Range("H:H").Find(what:="w", LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlNext, after:=myfind)
If myfind.Address = elso Then Exit Do
Loop
End If
End SubEnnek az az előnye, hogy nem kell végigpörgetni az összes cellát, hogy megtaláld a w betűket, ezt rá kell bízni az Excelre - azért találták ki.
Feltétlenül fontos, hogy az első csoportösszesítés kezdetéhez is tegyél egy p betűt.Üdv.
-
Fferi50
Topikgazda
válasz
Declare
#31884
üzenetére
Szia!
Menni fog, csak egy pici türelmedet kérem, mert most éppen mással foglalkozom.
Addig is próbálj annyit ki, hogy az első összesítendő csoport elé is tegyél egy p betűt a h oszlopba (kb. 12 sor) és ezt a sort másold be a régi helyére:If Range("H" & Selection.Row).Value = "w" Then Range("F" & Selection.Row).Formula = "=Sum(" & Range("F" & Selection.Row - 1).Address & ":" & Range("F" & Range("H" & Selection.Row).EntireColumn.Find(what:="p", LookIn:=xlValues, SearchDirection:=xlPrevious, lookat:=xlWhole, After:=Range("H" & Selection.Row)).Row).Address & ")"Annyi változott, hogy bekerült az After paraméter.
Üdv.
Ps: a ciklusod helyett egy find metódus használata sokkal gyorsabb lenne, ezt is próbálom majd.
-
Fferi50
Topikgazda
Szia!
Azt gondolom, hogy a két külön fájl megbonyolítaná a helyzetet. Ugyanazon fájlban két külön (akár elrejtett) munkalapon kétféle módon is működhet:
1. A cím megadásánál beírod azt a munkalapot, ahová az adatok kerültek:Address:=Sheets("Munka2").Range("$A$7:$A$1000").Find(What:=Target.Value, LookIn:=xlValues, lookat:=xlWhole).Offset(0, 1).Value2. Elnevezed az adatok tartományt (a keresőértéket tartalmazó oszlopot elég) a másik munkalapon, pld. kereso néven. Ebben az esetben:
Address:=ActiveWorkbook.Names("kereso").Referstorange.Find(What:=Target.Value, LookIn:=xlValues, lookat:=xlWhole).Offset(0, 1).ValueAz adatokat tartalmazó munkalapot elrejtheted úgy, hogy nem is jelenik meg a listában
Sheets("Munka2").Visible=xlSheetVeryhidden
Ezt csak kódból tudod láthatóvá tenni:Sheets("Munka2").Visible=xlSheetVisibleÜdv.
-
Fferi50
Topikgazda
válasz
Declare
#31864
üzenetére
Szia!
Akkor "csak" annyi a gond, hogy a feltételben a "p" helyett "w" amit be kell írni:
Csak az eleje változik:
If Range("H" & Selection.Row).Value = "w" then stb.Mivelhogy eddig a w csak érintőlegesen szerepelt. Hiba esetén
If Err <> 0 Then If Range("H" & i).Value = "p" Then Range("F" & i).Value = Application.Sum(Range("F" & i - 1, Cells(1, "F")))
helyett is nyilván képletet szeretnél:If Err <> 0 Then If Range("H" & i).Value = "w" Then Range("F" & i).Formula = "=Sum(" & Range("F" & i - 1, Cells(1, "F")).Address & ")"Üdv.
-
Fferi50
Topikgazda
válasz
Declare
#31861
üzenetére
Szia!
Íme a képletet beíró sor:
If Range("H" & Selection.Row).Value = "p" Then Range("F" & Selection.Row).Formula = "=Sum(" & Range("F" & Selection.Row - 1).Address & ":" & Range("F" & Range("H" & Selection.Row).EntireColumn.Find(what:="p", LookIn:=xlValues, SearchDirection:=xlPrevious, lookat:=xlWhole).Row).Address & ")"Üdv.
-
Fferi50
Topikgazda
Szia!
A hiba ebben az esetben "természetes", hiszen most abból indultam ki, hogy a keresési feltételben a fájl neve szerepel. Ha ez nem így van, akkor a Target.Value a Filename paraméterből elhagyandó
Workbooks.Open Filename:=Range("$H$1:$H$5").Find(What:=Target.Value, LookIn:=xlValues, lookat:=xlWhole).Offset(0, 1).Value
Ennyi marad - bár nyilván azt, hogy hol tárolod a fájlnevet és az elérési utat, Te tudod igazán, a példából én azt látom, hogy egy cellában van, a keresési feltétel mellett.Üdv.
Ps: "Ez nem lenne gond, de ez egy .pdf"
Bocsi, de ezt honnan kellett volna tudnom?
Ebben az esetben hyperlink követést kell programozni, most éppen nincs időm rá, hogy pontosan megnézzem. -
Fferi50
Topikgazda
Szia!
Túlságosan is excelesen gondolkodsz, ezt VBA (makró) sokkal egyszerűbben oldja meg.
A kiválasztott fájlnévhez tartozó elérési út alapján a Workbook.Open eljárással meg tudod nyitni az adott fájlt.
Tehát: van egy táblázatod, ami tartalmazza a kiválasztható fájlneveket és a hozzájuk tartozó elérési utakat. Egy cellára - keresőcella - csinálsz adatérvényesítést, ami a kiválasztható fájlneveket tartalmazza - csak ebből lehet választani, így nem lehet elrontani a keresést.
Pl: H1-H5 tartalmazza a listát, I1-I5 tartalmazza az elérési utat.
A1 legyen a kereső mező.
A1 adatérvényesítése lista - forrása $H$1:$H$5
Worksheet change eseménybe kerül a következő makró:Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
Application.EnableEvents = False
Workbooks.Open Filename:=Range("$H$1:$H$5").Find(What:=Target.Value, LookIn:=xlValues, lookat:=xlWhole).Offset(0, 1).Value & Target.Value
Application.EnableEvents = True
End If
End SubNe felejtsd el, hogy az elérési út végére kell egy backslash \
Az adott munkalaphoz úgy viheted be, hogy a munkalap fülre állva jobb egérgomb, kód megjelenítése, majd bemásolod a megjelent ablakba.Ha választható listát másik munkalapon szeretnéd tárolni, akkor el kell nevezned és a nevet kell beírni az adatérvényesítés forrásaként - valamint a makróba is.
Üdv.
-
Fferi50
Topikgazda
válasz
bteebi
#31845
üzenetére
Szia!
A függvényed első paramétere ne Range legyen, hanem Variant. Ebben az esetben tudsz tartományt és számot is beadni paraméternek, mindkettőt elfogadja.
A vezető ill. követő 0 számjegyeket az Excel cellaformázás egyéni számformátumban tudod beállítani, amit a Range.NumberFormat tulajdonsággal lehet makróban állítani, pl.Range("A2").NumberFormat="000000.000000"
a tizedesvessző előtt és után is 6-6 számjegyet jelenít meg, az üres helyiértékekre 0 kerül.Mivel a FIX függvény alapból szöveget ad vissza, ezért szám csak akkor lesz belőle, ha a VAL függvénnyel átalakítod számmá.
Function Sigdig(number As Variant, SigDigits As Integer) As Double
Sigdig = Val(WorksheetFunction.Fixed(number, SigDigits - Int(WorksheetFunction.Log10(Abs(number))) - 1, True))
End FunctionÜdv.
-
Fferi50
Topikgazda
válasz
Declare
#31802
üzenetére
Szia!
Ezt a sort írd be a makróba:
If Range("H" & Selection.Row).Value = "p" Then Range("F" & Selection.Row).Value = Application.Sum(Range("F" & Selection.Row - 1, Cells(Range("H" & Selection.Row).EntireColumn.Find(what:="p", LookIn:=xlValues, SearchDirection:=xlPrevious, lookat:=xlWhole).Row, "F")))Ha a "h" feltétellel együtt kell teljesülnie, akkor az End If sor elé.
Ha csak a "p" feltételnek kell teljesülnie, akkor egy kicsit átalakítva az End If utánIf Range("H" & i).Value = "p" Then Range("F" & i).Value = Application.Sum(Range("F" & i - 1, Cells(Range("H" & i).EntireColumn.Find(what:="p", LookIn:=xlValues, SearchDirection:=xlPrevious, lookat:=xlWhole).Row, "F")))Az első p esetében hibát okozhat, hogy nincs előtte még másik p az oszlopban, ebben az esetben a hibakezelésben az első sortól kell az összeadást csinálni.
On Error Resume Next
ide jön a képlet
If Err <>0 then If Range("H" & i).Value = "p" Then Range("F" & i).Value = Application.Sum(Range("F" & i - 1, Cells(1, "F")))
On Error Goto 0Üdv.
-
Fferi50
Topikgazda
válasz
Lajos.P
#31725
üzenetére
Szia!
A tábla végét jelző címet módosítanod kell ($21) helyett az utolsó adatot tartalmazó sorig, vagy addig, amíg úgy gondolod, hogy lesz még adat. Pl. $100 az első 100 sorig terjedő táblát nézi.
Tehát $A$2:$A$21 és $C$2:$C$21 képletben $A$100;$C$100. Az nem baj, ha a végén üres sorok vannak. A képlet módosítást elég az első sorra megtenni, utána lehúzható.Üdv.
-
Fferi50
Topikgazda
válasz
#02644736
#31711
üzenetére
Szia!
Tömbképletekkel lehet a problémádat megoldani:
FSZ tömbképlet az F12 cellába :=HA(C12="FSZ";HAHIBA(SZUMHA(INDIREKT("C" & SOR() & ":C"& KICSI(HA($C12:$C$1200="FSZ";SOR($C12:$C$1200);"");32));"FSZ";(INDIREKT("E" & SOR() & ":E"& KICSI(HA($C12:$C$1200="FSZ";SOR($C12:$C$1200);"");32))))/32;"NEM LEHET ÁTLAGOT SZÁMOLNI");"")
A tömbképletet Shift+Ctrl + Enter egyidejű lenyomásával viheted be, amikor elhagyod a cellát, az Excel kapcsos zárójelbe teszi a képletet.
A többi oszlopnál ("E" & SOR() & ":E"& részben az E cserélendő a megfelelő oszlopra.DSZ esetében az FSZ értékeket kell átírnod DSZ -re, illetve az eredmény oszlopokat.
A $C$1200 értéket a tényleges adathossznak megfelelően kell átírni.
A képletet folyamatosan húzhatod le az oszlopban, mindig 32 tagú mozgó átlagot számol.
Az adatsor végén fog megjelenni a hibaüzenet, amit szándékosan szövegként adtam meg, hogy feltűnő legyen, arra változtatod, amire szeretnéd.Remélem, használni tudod, ha kérdésed lenne, írj lsz.
Üdv.
-
Fferi50
Topikgazda
válasz
adamch4
#31712
üzenetére
Szia!
Nem tanácsos VBA foglalt neveket (Today, Copy) adni a saját makróinknak, mert abból csak baj lesz.
Az értékmásolást egyszerűen megoldhatod:
Sub MyCopy()
Worksheets("Output").Range("B1:B20").Value =Worksheets("Input").Range("A1:A20").Value
End SubHa valamitől függ, hogy melyik oszlopba menjen, akkor vagy select case vagy if utasításokkal lehet szétválasztani az eseteket:
Sub MyCopy()
If oszlop ="B" then
Worksheets("Output").Range("B1:B20").Value =Worksheets("Input").Range("A1:A20").Value
EndIf
If oszlop ="C" then
Worksheets("Output").Range("C1:C20").Value =Worksheets("Input").Range("A1:A20").Value
EndIf
If oszlop ="D" then
Worksheets("Output").Range("D1:D20").Value =Worksheets("Input").Range("A1:A20").Value
EndIf
'stb...
End SubÜdv.
-
Fferi50
Topikgazda
válasz
JagdPanther
#31680
üzenetére
Szia!
Private SUB Sortores()
A SUB kulcsszó hiányzik a makró elejéről.
Üdv.
-
Fferi50
Topikgazda
válasz
m.zmrzlina
#31651
üzenetére
Szia!
Szerintem az
Application.LanguageSettings.LanguageID(msoLanguageIDUI)=msoLanguageIDHungarian
lekérdezés megadja, hogy magyar vagy sem a beállítás, ettől függően állíthatod be a form paramétert "Szöveg" vagy "Text" értékre.
pl.
paramforma=iif(Application.LanguageSettings.LanguageID(msoLanguageIDUI)=msoLanguageIDHungarian,"Szöveg",'Text")
Activesheet.Pastespecial Format:=paramforma stb.Üdv.
-
Fferi50
Topikgazda
válasz
lenkei83
#31642
üzenetére
Szia!
Ha az eseménykezelő első (vagy valamelyik) sorába beírod a STOP utasítást, akkor ott megáll a program - viszont DEBUG módban nem hajtódik végre a ribbonra vonatkozó utasítás, helyette hibaüzeneteket kapsz, amíg végig nem fut a ribbonos rész.
Szerintem az lehet a probléma, hogy nyitáskor még nincs betöltve a RIBBON, ezért nem tudja végrehajtani a műveletet, később viszont már megvan a megfelelő objektum hozzá.A saját ribbont be kell tölteni egy általános modulba helyezett makróval, pl.
Sub RibbonOnLoad(ribbon As IRibbonUI)
Set rib = ribbon
End SubÜdv.
-
Fferi50
Topikgazda
válasz
Mindless
#31630
üzenetére
Szia!
"De ugye gépenként változhat az eladási ár és a beszerzési forrás alapján a beszer ár is."
Éppen ezért kérdeztem, hogy milyen értékelési elveket kívánsz érvényesíteni. Mert nem mindegy, hogy a 100 Ft-ért beszerzett árut adod el 120 Ft-ért, vagy a 130 Ft-on beszerzettet.
Választható lehetőségek:
FIFO: mindig a legkorábban beszerzett termékből történik az értékesítés (vagyis a legrégebben raktáron levőt tekintjük eladottnak).
LIFO: mindig a legutolsó beszerzésből értékesítünk (azaz a legfrissebb terméket adjuk el).
ÁTLAG: a készleten levő termékek alapján átlagárat számolunk és ezen az áron értékeljük az eladott terméket.Ebből következik, hogy az elszámolás módja befolyásolja az adott időszak eredményességét.
Üdv.
-
Fferi50
Topikgazda
válasz
Mindless
#31628
üzenetére
Szia!
Ha ez ilyen egyszerű lenne...
"kiadási oldalon a rendszernek össze kellene szednie soronként és a megfelelő mennyiséget a megfelelő árral összepárosítania"
Milyen elvet használtok a készlet kiadásnál FILO,FIFO,LIFO, ÁTLAGÁR???
Szerintem kellene egy egyértelmű termék azonosító oszlop mindkét táblába, mert név alapján nem feltétlenül lehet azonosítani (pl. Coca-Cola lehet 0,33, 1,5, 2 kiszerelés, de akár rekeszes is, sörről nem is beszélve).Üdv.
-
Fferi50
Topikgazda
válasz
lenkei83
#31585
üzenetére
Hali!
Ismerős néhány elnevezés a kódodban

A kívánt eredményhez a következőképpen juthatsz el:
If ujfka.Row > 4 Then
If Not IsEmpty(ujfka.Cells(2)) Then
set ujfka = Intersect(ujfka, ujfka.Offset(0, 1))
Print #xx, Replace(Join(Application.Transpose(Application.Transpose(ujfka.Value)), ";"), ",", ".")
End If
End IfA 001 exportálásban lemaradt a rows a usedrange mögül és én pont ezt a makrót kezdtem el nézni...
Szerintem nem kell 3 makró hozzá, elég egy, amit paraméterezetten hívsz meg.
Üdv.
-
Fferi50
Topikgazda
válasz
perfag
#31555
üzenetére
Szia!
Ebben az esetben az Összesítés funkciót lehet használni kis trükközéssel.
A trükk:
Minden munkalapra beszúrsz egy új A oszlopot.
A2 cella képlete:=B2&";"&C2&";"&D2&";"&E2
Ezt végighúzod az egész oszlopon, minden munkalapon.Beszúrsz egy új munkalapot, ahová az összesítés jön.
Ezen a munkalapon adatok, összesítés. A párbeszédpanelen kiválasztod az összeg függvényt. A hivatkozás mezőben szép sorban kijelölöd a hónapok adatait tartalmazó munkalapot (megnyitott fájl területét), hozzáad.
Bejelölöd a feliratokat vegye a felső sorból, bal oszlopból.
Az egyes fájlokat külön-külön is hozzáadhatod az összesítési területhez.Az összesítő munkalapon kijelölöd az A oszlopot (ahol a pontosvesszővel elválasztott értékek vannak),
Adatok - szövegből oszlopok - tagolt - pontosvesszőt bejelölöd, következő lapon a $B$2 cellát jelölöd ki egérrel. A Befejezés gombra megkérdezi, hogy felülirja-e az adatterületet, a kérdésre igen a válasz. Ki lesz bontva az A oszlop szépen.Ezután az A oszlopot ki is törölheted.
A 3 hónapot 3 külön fájlba tettem ki, mivel azt írtad, hogy egy-egy fájl nagy, utána összesítettem - ezt láthatod az Adatok összesítés lapon.
Ha kérdésed lenne, szívesen válaszolok.
Üdv.
-
Fferi50
Topikgazda
válasz
BlackDevil
#31553
üzenetére
Szia!
Akkor fel kell venned egy segédoszlopot, mivel az autoszűrőben nem érvényesíthetsz egyszerre két feltételt vagy kapcsolattal:
=VAGY(HIBÁS(SZÖVEG.KERES("HUF";A2));ÉS(NEM(HIBÁS(SZÖVEG.KERES("HUF";A2)));B2<-5000))
A SZÖVEG.KERES függvény azért van, ha lenne más karakter is a cellában. Ha biztos vagy benne, hogy nincs, akkor használhatod a következőt:
=VAGY(A2<>"HUF";ÉS(A2="HUF";B2<-5000))Ez a képlet akkor igaz, ha az A oszlopban nem HUF van, illetve A oszlopban HUF, B oszlopban -5000 -nél kisebb az érték.
Erre már használhatod az IGAZ autoszűrőt.Üdv.
-
Fferi50
Topikgazda
válasz
BlackDevil
#31551
üzenetére
Szia!
Bekapcsolod az autoszűrőt. 1-es oszlopon szűrsz a HUF-ra, 2-es oszlopon a -5000 alattiakra.
Üdv.
-
Fferi50
Topikgazda
válasz
robull5
#31508
üzenetére
Szia!
Ide feltöltöttem azt a mintát, ami megteszi, amit szeretnél.
A képleteket megtalálod külön is kimásolva.Üdv.
-
Fferi50
Topikgazda
válasz
robull5
#31508
üzenetére
Szia!
Ahogyan írtam, természetesen van arra - egy jóval bonyolultabb - képlet, hogy minden tételt kihozzon, csak meg kell keresnem a fájlt. Annyit még árulj el lsz. hogy az egymás alatt levő sorokban hogyan szeretnéd látni, az A oszlop marad üres, de B-F oszlopban annyi sor van kitöltve, ahány tétel van, vagy az A oszlop is legyen kitöltve?
Lehet kicsit hosszabb lesz a dolog, ezért légy türelmes.Üdv.
-
Fferi50
Topikgazda
válasz
bsasa1
#31506
üzenetére
Szia!
Ilyen lehetőség a VBA-ban szerintem nincs. (De igazából nem is látom a szükségességét, hiszen a "hagyományos" címzéssel is megtalálható a cella).
Ugyanakkor működik a Tartomány, vagy akár munkafüzet cells(x) = akármi értékadás, de a cells(x).address és minden tartományhoz kapcsolódó tulajdonság és metódus.Üdv.
-
Fferi50
Topikgazda
Szia!
A VBA nézetben (amelyre Alt+F11 visz át) a Properties ablakban (ha nem látod, akkor F4 előhozza) a munkalap Visible tulajdonságát xlVeryHidden -re kell állítani - ebben az esetben a felhasználó nem is látja a munkalap listákban sehol. Így felfedni is csak akkor tudja, ha tudja, hogy létezik ilyen munkalap.
Jelszavas felfedést csak makróval lehet megoldani: Írsz egy makrót, amiben bekéred a jelszót, ha egyezik, akkor felfeded a munkalapot. Jelszóbekérés az Inputbox tulajdonsággal lehetséges. Ezt a makrót egy vezérlőhöz, vagy billentyű kombinációhoz rendeled.
Viszont ha csak magadnak szeretnéd ezt a munkalapot használatra, akkor az első verzió szerintem megfelel. Más kérdés, hogy gyakorlott exceles ettől azt még gyorsan felfedi (a jelszós megoldásnál is!).
Persze nehezíthető a dolog munkafüzet védelemmel...Üdv.
-
Fferi50
Topikgazda
válasz
robull5
#31501
üzenetére
Szia!
A 2. és további oszlopok értékeit az FKERES függvény használatával rendelheted hozzá a találathoz:
A B2 cella képlete =FKERES($A2;Munka1!$A$1:$E$120;2;0)
A C2 cella képlete =FKERES($A2;Munka1!$A$1:$E$120;3;0)
és így tovább.Ha viszont van fejléc mindkét munkalapon, akkor egyszerűsödik a képlet a HOL.VAN függvény használatával:
A B2 cella képlete:
=FKERES($A2;Munka1!$A$1:$E$120;HOL.VAN(B$1;Munka1!$A$1:$E$1;0);0)
Ez végighúzható a többi oszlopon és a sorokon egyaránt.Ha viszont többször is előfordul a keresési érték és a mellette levő értékek esetenként mások, akkor bonyolultabb lesz a keresés, mert mindig az előző találat utáni tartományban kell a következő keresést indítani az FKERES 2. paraméterében. Ehhez a Darabteli függvénnyel meg kell számolni, hány találat volt már. Ma este már nem mennék bele ennek a képletnek a meghatározásba, de volt már ilyen mintám, majd körülnézek a gépen.
Üdv.
-
Fferi50
Topikgazda
válasz
Bjørgersson
#31495
üzenetére
Szia!
Örülök, hogy megtaláltad az x tengelyhez az adatforrást. Viszont az alsó ábrád nem volt pariban a felsővel - a mértékek tekintetében, ezért gondoltam a hányadosra, elő szokott fordulni, hogy "manipulálni" kell az adatokkal a kívánt eredmény eléréséhez. (Néha (elég sokszor) kicsit gondolatolvasónak is kell lenni ebben a topicban (is)).
Üdv.
-
Fferi50
Topikgazda
válasz
Bjørgersson
#31493
üzenetére
Szia!
Szerintem egyrészt a feszültség adatokat nem adatsorként kell használni, hanem x tengely forrásnak.
Másrészt az ábrázolandó adat az áramerősség - feszültség hányadosa lesz (fizika!).Üdv.
-
Fferi50
Topikgazda
válasz
Petium001
#31487
üzenetére
Szia!
Az ár oszlopban közvetlenül nem tudod megemelni. Ha jól gondolom, a % mértéke az eredeti ár nagyságától függ. Ebben az esetben valahol máshol a munkalapon kell csinálnod egy táblázatot(pl. x és y oszlopban (a táblázatban az ár határoknak növekedni kell és a kell egy "csillagos eget" írni a végére):.
x y
5000 1,3
9000 1,27
és így tovább.
A végén pl 200000 1Ezután egy másik oszlopban a képlet (ha D oszlopban van az ár):
=D2*FKERES(D2;X2
10000;2)
Az így kapott oszlopot átmásolhatod értékként az eredeti ár oszlopba, majd törölheted.Üdv.
-
Fferi50
Topikgazda
válasz
#02644736
#31483
üzenetére
Szia!
Az ELTOLÁS függvény 4. paraméterét - ami -7 mivel egy hétről van szó - át kell írnod -31 -re május, -30-ra június esetében.
SZUM(ELTOLÁS(D136;-1;0;-7;1)) helyett pl. SZUM(ELTOLÁS(D136;-1;0;-31;1));"")Gondolom, ezt a hónap utolsó napja után szeretnéd - a következő hónap első napján - megtenni, ezért a Ha függvénnyel azt kell megvizsgálnod, hogy az adott dátum napja elseje-e:
HA(NAP(E136)=1; SZUM(ELTOLÁS(D136;-1;0; -NAP(E135);1));"")Feltételezve, hogy E136 éppen elseje, akkor E135 az előző hónap utolsó napja és a fenti képletet lehúzva automatikusan adja a mindenkori előző havi összeget a következő hónap első napján!
Természetesen a havi és heti feltételek kombinálhatóak is.
A feltétel nélkül lehet az adott napot megelőző napig göngyölíteni az összeget:
SZUM(ELTOLÁS(D136;-1;0; -NAP(E135);1))Ezért ez a képlet minden hó elsején éppen az előző hónap összegét fogja megadni.
Üdv.
-
Fferi50
Topikgazda
válasz
#02644736
#31470
üzenetére
Szia!
"Valahogy képlettel kellene megoldani, hogy minden hétfőnél az előző heti értékeket összeadja"
Ehhez először is valamilyen módon tudatni kell az excellel az adott napi dátumot. Legegyszerűbben egy elrejtett segédoszlopba lehet betenni szerintem az adott hónap adott napjához tartozó dátumot, mert ebből a megjelenítésből nem látom át, hogyan lehetne képlettel kibogozni.
Mondjuk az E oszlopban van a dátum, E136-ban 2016.05.09 valamilyen dátumformátumban (nem szöveg).
A képlet a C136 cellába:
=HA(HÉT.NAPJA(E136;2)=1;SZUM(ELTOLÁS(D136;-1;0;-7;1));"")
Ezt a képletet húzod végig a C oszlopon.Üdv.
-
Fferi50
Topikgazda
válasz
#36268800
#31465
üzenetére
Szia!
A tengely formázásoknál a szám fület kell kiválasztani, egyéni beállítás [óó]:pp majd a forráshoz csatolva négyzetet bejelölni. De lehet, hogy a forráshoz csatolás bejelölése is elég. Esetleg a tengelyen az osztásközt kell 1/24 -re beállítani (ami egy órának felel meg az Excelben).
Ebben az esetben szerintem minden a kívánalmaknak megfelelő lesz. (És ezt az érettségiző diák biztosan tudja - ha a tanár a videóban nem is...)
Üdv.
-
Fferi50
Topikgazda
válasz
tgumis
#31458
üzenetére
Szia!
A makróban konkrétan meg van adva a mentési név " "C:\Users\tgumis\Desktop\Munkafüzet1.xlsm","
Ha te szeretnéd megadni a nevet, akkor
Application.Inputbox metódussal, vagy az Inputbox függvénnyel kérd be a nevet egy változóba:
ujnev=Application.Inputbox ' a paramétereit lsz. nézd meg
utána a név helyére beírod az ujnev változót.Üdv.
-
Fferi50
Topikgazda
Szia!
Mivel szöveges cellák is vannak, így módosítani szükséges az összegképletet:
Maradva az eredeti mintámnál:
=SZUM((MARADÉK(SOR(A1:A100);3)=0)*1*HA(SZÁM(A1:A100);A1:A100;0))
A magyarázat hozzá:
MARADÉK(SOR(A1:A100);3)=0Azt vizsgálja, hogy mely cellák sorszáma osztható 3-mal, mivel ekkor 0 a maradék.
Az Excelben a HAMIS és az IGAZ logikai értékeket 0 ill. 1 számértékként lehet kezelni (visszafelé igaz az, hogy minden 0-nál nagyobb szám Igaz logikai értékké konvertálódik), ezért a
(MARADÉK(SOR(A1:A100);3)=0)*1 kifejezés akkor 1, ha a sor száma 3-mal osztható, egyébként 0.
Amennyiben minden cellaérték szám, akkor elég csak az összeadandó tartománnyal megszorozni ezt az eredményt, ahogyan az eredeti képletemben van.
Ha viszont szöveges cellák is vannak, akkor azokat helyettesíteni kell 0 értékkel, erre szolgál a
HA(SZÁM(A1:A100);A1:A100;0) része a képletnek, vagyis amennyiben a cella számot tartalmaz, akkor azzal szorzunk, ha szöveg, akkor 0 a szorzó.
A tömbképlet pedig azért kell, hogy az adott tartomány minden sorára végrehajtsa az adott műveletet.Üdv.
-
Fferi50
Topikgazda
Szia!
Az alábbi tömbképletet próbáld ki lsz:
=SZUM((MARADÉK(SOR(A1:A100);3)=0)*1*A1:A100)
Ez minden 3. sorban levő tételt ad össze.
A DARABTELI helyett is SZUM a javaslat:
=SZUM((((MARADÉK(SOR(A1:A100);3)=0)*1*A1:A100)>0)*1)
Mindkét képlet tömbképlet, azaz shift+ctrl + enter kombinációval kell bevinni. Az Excel pedig kapcsos zárójelbe teszi a szerkesztőlécen.
Üdv.
-
Fferi50
Topikgazda
válasz
csferke
#31443
üzenetére
Szia!
Bocs, de programom volt a mai napra, így csak most értem vissza.
Nem az a probléma, hogy összevont cellák vannak benne (mert az összesítendő cella is ugyanúgy össze van vonva - ha nem lenne, valószínűleg problémát okozna), hanem az, hogy a dátum oszlopodban nem minden érték dátum!
Pl. van február 30-i érték is, ami nyilván lehetetlen, de néhány más, ránézésre helyes esetben is "panaszkodott" az ÉV képlet..
Ezért azt javaslom, az ÉV képlettel nézd meg egy segédoszlopban, mely dátumok nem jók, itt hibát fog adni a képlet, ezeket javítsd ki lsz. utána már mennie kell az összegképletnek is. (Vigyázz az ÉV képlet másolással, mert az összevont cellákat nem szereti, oda külön kell beírnod.)Üdv.
-
Fferi50
Topikgazda
válasz
csferke
#31429
üzenetére
Szia!
Próbáld ki lsz. ezt a tömbképletet:
=SUM(IF(YEAR(Munka2!D:D)=Munka1!$A$1,Munka2!G:G,0))(Tömbképletet shift+ctrl+ Enter együttes lenyomásával vihetsz be, az Excel kapcsos zárójelbe teszi.)
Még rövidebben:
=SUM((YEAR(Munka2!D:D)=$A$1*1)*(Munka2!G:G))
Szintén tömbképlet.Üdv.
-
Fferi50
Topikgazda
válasz
SzlobiG
#31423
üzenetére
Szia!
Itt van a jó képlet!
Próbáld meg ezt a tömbképletet pl. a B21 cellába:
=SZUM((A2:A20 & B2:B20<>A1:A19 & B1:B19)*1)
Ez akkor működik, ha az adatok nap és műszak szerint rendezve vannak - azaz egymás után következnek az adott napon a délelőtti - délutáni - éjszakai műszakok sorai ! a sorrend mindegy csak ne felváltva legyen ugyazon a napon pl. délelőtt-délután-délelőtt !
Ezt egy rendezéssel egyszerűen el tudod érni.
A tömbképletet shift+ctrl + Enter együttes lenyomásával tudod bevinni és arról ismered meg, hogy a képletet kapcsos zárójelekbe teszi az Excel.Bocs az előzőt nem teszteltem végig.
Üdv.
-
Fferi50
Topikgazda
válasz
SzlobiG
#31423
üzenetére
Szia!
Próbáld meg ezt a tömbképletet pl. a B21 cellába:
=SZUM(ÉS(A2:A20<>A1:A19)*1;(B2:B20 <>B1:B19)*1)
Ez akkor működik, ha az adatok nap és műszak szerint rendezve vannak - azaz egymás után következnek az adott napon a délelőtti - délutáni - éjszakai műszakok sorai ! a sorrend mindegy csak ne felváltva legyen pl. délelőtt - délután !
Ezt egy rendezéssel egyszerűen el tudod érni.
A tömbképletet shift+ctrl + Enter együttes lenyomásával tudod bevinni és arról ismered meg, hogy a képletet kapcsos zárójelekbe teszi az Excel.Üdv.
-
Fferi50
Topikgazda
válasz
róland
#31414
üzenetére
Szia!
Amennyiben a hahiba függvényben az üres sztringet átirtad hiba szövegre és nem a hiba szöveg jelenik meg a cellában eredményként, akkor az azt jelenti, hogy olyan cellát talált, ami "üres". Ezt tesztelheted úgy, hogy átmenetileg az üres cellákat feltöltöd értékkel a képlet helyett.
Üdv.
-
Fferi50
Topikgazda
Szia!
A Weeknum (HÉT.SZÁMA) rendelkezik egy második (opcionális) paraméterrel, amely megmondja, hogy milyen módszerrel számoljon. Ha elhagyod, akkor az első hét az, amelyikben a január 1-e van. Ha 21 a második paraméter, akkor az első hét az, amelyikben az első csütörtök van.
Ezért a képlet =Weeknum(today();21) adja az európai - általunk is használt - eredménytÜdv..
-
Fferi50
Topikgazda
-
Fferi50
Topikgazda
Szia!
Bocs, de ez akkor nem egy Gantt diagram, hanem egy azt imitáló munkafüzet. Valahol biztosan meg van adva benne, hogy milyen szabályok szerint töltse ki az egyes cellákat. Ezt innen a távolból nem lehet megmondani. Szerintem egyszerűbb lenne a készítőt megkérdezni (már ha elérhető).
Ha egy üres - vagy semleges - mintát fel tudnál tenni valahová, talán többet tudnánk segíteni. (Esetleg priviben.)Üdv.
-
Fferi50
Topikgazda
válasz
AMDaZERG_1
#31398
üzenetére
Szia!
Néhány kísérlet:
Ha az adott táblában új munkalapon hasonló jellegű tételt viszel be, ott milyen lesz a formátum? $-os vagy forintos?
Ha új Excelt indítasz és ott csinálsz ilyen jellegű tételeket, ott is $ szerepel?Ha igen, akkor rendszergizdát tetemre kell hívni, tegye rendbe amit elrontott.
Ha nem, akkor egy jól irányzott makróval át lehet írni a $ formátumú cellák formátumát Ft-os formátumúra... segítek benne, ha kell.
Üdv.
-
Fferi50
Topikgazda
válasz
Victoryus
#31394
üzenetére
Szia!
Mit jelent az, hogy alapállapotba kell állítani a listát? Részleteznéd egy kicsit jobban? Mely cellákba mi kerüljön?
Ha csak a tartalmát kívánod törölni, akkor a kijelölés után a makróban Selection.ClearContents utasítás a formázások érintetlenül hagyásával megteszi.Üdv.
-
Fferi50
Topikgazda
válasz
AMDaZERG_1
#31393
üzenetére
Szia!
Területi beállításokat nézted már?
Üdv.
-
Fferi50
Topikgazda
válasz
szőröscica
#31383
üzenetére
Szia!
"Autofilter makrót írok, és azt szeretném megoldani, hogy 37 dologra szűrjön rá"
Én a helyedben inkább az AdvancedFilter metódust használnám. Itt összeállíthatsz egy szűrőtartományt - ahová akár kézzel, akár makróval beírhatod a feltételeket, eldöntheted, hogy helyben szűrjön, vagy átmásolja egy másik helyre.
Szerintem nézd meg ezt a lehetőséget - makró rögzítéssel megkaphatod az alapot hozzá.Üdv.
-
Fferi50
Topikgazda
-
Fferi50
Topikgazda
válasz
róland
#31379
üzenetére
Szia!
Az "üres" cella amiatt keletkezett, mert a beágyazott függvényeid közül valamelyik hibát eredményez, a HAHIBA függvényben pedig hiba esetére "" (üres sztring) van megadva. Ha ide pl. azt írod, hogy "HIBA", akkor nem üres lesz a cella, hanem az jelenik meg, hogy HIBA.
Meg kellene nézned a beágyazott függvényeidet (belülről kifelé haladva), melyiknek az eredménye hiba.
Ezt F2 után a szerkesztőlécen az adott függvényre állva és az fx gombot megnyomva érheted el.Üdv.
-
Fferi50
Topikgazda
válasz
róland
#31377
üzenetére
Szia!
Szerintem csak annyi történt, hogy az INDEX függvényben felcserélted a sor és oszlop paramétereket.
=HAHIBA(INDEX($FA5:$HR5;HOL.VAN(0;DARABTELI($BZ5:BZ5;$FA5:$HR5);0);1);"")
helyett:
=HAHIBA(INDEX($FA5:$HR5;1;HOL.VAN(0;DARABTELI($BZ5:BZ5;$FA5:$HR5);0));"")
képletet kell végighúzni.Üdv.
-
Fferi50
Topikgazda
válasz
huliganboy
#31371
üzenetére
Szia!
Először is egy javaslat:
Az időzítőben levő időt érdemes változóba tenni, így egyértelműen meg lehet határozni a leállításnál a paraméterét (a NOW + time... folyamatosan változik, ezért nem biztos, hogy pont annyi lesz leállításkor, mint induláskor volt
)
pl
Public ido as date
Sub StartTimer()
ido = Now + TimeValue("00:00:01")
Application.OnTime ido, "Increment_count"
Sub stopTimer()
Application.OnTime ido, "Increment_count", Schedule:=False
End SubSzámláló érték resetelés vagy új érték adása:
Private Sub CommandButton1_Click()
Range("B10").value=0 ' ez reseteli a számlálót, Range("B10").value= 40 ez így 40 másodpercről folytatja a számolást (persze ez utóbbi nem azt jelenti, hogy 40 másodperc telt el az indítástól...)
StartTimer
End SubMiután a számláló a B10 cellában van, ezért a B10 cellaformátumát egyedi számformátumban [pp]:mm ként kell megadni, akkor nem fordul át a perc órára - viszont ekkor a számlálót másként kell állítanod, mert dátumformátum esetén 1 az egy egész napot jelent, a dátumformátumú B10 cella értéket így kell növelni:
Range("B10").value=Range("B10").value + TimeValue('00:00:01")Üdv.
-
Fferi50
Topikgazda
válasz
kopi.dll
#31342
üzenetére
Szia!
Az Excelben a cella az alapegység, azt nem tudod tovább osztani - viszont egyesíteni tudsz cellákat soron és oszlopon belül is, anélkül, hogy a többi cella mérete és formázása változna.
A szegély belül csak akkor használható, ha több cellát jelölsz ki egyszerre.
Azaz kicsit "ügyeskedni" kell, hogy a munkalap úgy nézzen ki, ahogyan szeretnéd.Üdv.
-
Fferi50
Topikgazda
válasz
tgumis
#31337
üzenetére
Szia!
Valami hibaüzenetet csak ír ki ugye? Azt kellene ide beírnod.
Elképzelhető, hogy az a probléma, hogy kétszer van benne a
"Dim oszlop As Integer "
sor az "összefűzés" után. Ezért a második ilyen sort ki kell törölni vagy kikommentelni (egy aposztróf az elejére).Én a Data.hu -ra szoktam feltenni a megmutatni szándékozott fájlokat, de rengeteg egyéb lehetőség is van, elég, ha csak végignézed a probléma felvetésekben szereplő linkeket...
Üdv.
-
Fferi50
Topikgazda
válasz
PowerBuldog
#31287
üzenetére
Szia!
Attól függően, hogy az SKU oszlop hol szerepel a német munkalapon, használható
-az FKERES függvény, ha az első oszlop az SKU vagy az áthozandó adatok az SKU oszloptól hátrább vannak,
- az INDEX és HOL.VAN függvény páros, ebben az esetben az SKU oszloptól előrébb is lehet az adat.Üdv.
-
Fferi50
Topikgazda
Szia!
Ez egyáltalán nem egyszerű szerintem.
Kombinált diagramot kell létrehoznod - halmozott oszlop, csinálni a két összegnek egy összegző sort, ezt betenni vonaldiagramként és láthatatlanná tenni a vonalat és a jelölőket, csak az érték legyen a pontok felett.
A "második oszlop" hozzávétele kicsit macerás lehet, nem biztos, hogy menni fog ugyanazon a diagramon más típusban. Erre megkerülő megoldás egy másik - ugyanolyan méretű diagram, amit átlátszóvá teszel és az első fölé húzol fedésben. Játszogatni kell vele, hogy rendesen összejöjjön, de ha megvan, akkor örömet fog okozni.Üdv.
-
Fferi50
Topikgazda
válasz
the radish
#31213
üzenetére
Szia!
Beleklikkre nem találtam megoldást, de egérmutató rávitele esetére az alábbi kis makró - amit a Textbox1 megfelelő eseménykezelőjébe írtam, aktiválja a Textbox1 -et és "bekékíti" a teljes szöveget - azaz gépelés elkezdésekor törlődik a benne levő szöveg.
Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Me.ActiveControl.Name <> "TextBox1" Then
TextBox1.SetFocus
Application.SendKeys "+({TAB})"
Application.SendKeys "{TAB}"
'Textbox1.Text="" 'is kitörli a szöveget, ha fölé viszed az egérmutatót, akkor nem kell az előző két sor (nyilván véletlen kitörlés ellen kell még egy rákérdezés ebben az esetben msgbox használatával)
End If
End SubÜdv.
-
Fferi50
Topikgazda
válasz
kozyadam
#31041
üzenetére
Szia!
Ha nyomsz neki egy újraszámolást, akkor "észreveszi", hogy már elmúlt az időpont.
Makróval pedig pl. a Worksheets(1).Calculate sor végzi ugyanezt, amit betehetsz pl. a munkalap Selection_Change eseményébe, illetve lehet időzítést is csinálni az Application.Ontime metódus segítségével.
Emlékeim szerint volt már ilyen jellegű kérdés itt a fórumon is megoldvaÜdv.
-
Fferi50
Topikgazda
válasz
Delila_1
#31033
üzenetére
Szia!
Nekem ez "sikeredett" mostanra:
Sub szuroget()
Dim sh1 As Worksheet, sh2 As Worksheet, usor As Integer, xx As Integer, szuro As Range, cel As Range, szurni As Range
Set sh1 = ActiveSheet
Set szuro = sh1.Range("BB1:BB2")
Set szurni = sh1.Cells(1).CurrentRegion
szuro.Clear
szuro.Cells(1, 0).Clear
szurni.Columns("Q").AdvancedFilter Action:=xlFilterCopy, criteriarange:=sh1.Range("Q1"), copytorange:=szuro.Cells(1, 0), unique:=True
szuro.Cells(1).Value = szuro.Cells(1, 0).Value
usor = szuro.Cells(1, 0).End(xlDown).Row
For xx = 2 To usor
szuro.Cells(2).Value = szuro.Cells(xx, 0).Value
On Error Resume Next
Set sh2 = Sheets(szuro.Cells(2).Value)
If Err <> 0 Then
Set sh2 = Sheets.Add(after:=Sheets(Sheets.Count))
sh2.Name = szuro.Cells(2).Value
Else
sh2.UsedRange.Clear
End If
Set cel = sh2.Range("A1")
szurni.AdvancedFilter Action:=xlFilterCopy, criteriarange:=szuro, copytorange:=cel, unique:=False
Next
sh1.Activate
End SubÜdv.
-
Fferi50
Topikgazda
válasz
Delila_1
#31031
üzenetére
Szia!
"A specszűréshez minden lapon kritérium tartományt és címsort kellene előre felvenni."
Ezt egyáltalán nem kell megcsinálni. Elég, ha makróval a "szétbontandó" munkalapon csinálunk egy kritérium tartományt. Kiszedjük az egyedi ÁFA kulcsokat, azokat egyesével beírjuk (ciklusban) a kritériumtartomány megfelelő helyére. Ha kell, adunk hozzá új lapot, majd erre a lapra leszűrjük az adatokat.
Ha már minden ÁFA kulcshoz van munkalapunk, akkor a szűrést lehet csinálni végig az eredeti munkalapon maradva.Üdv.
-
Fferi50
Topikgazda
válasz
Simba86
#31027
üzenetére
Szia!
Az Adatok - Speciális szűrővel egyből a másik helyre másolhatod a szűrt adatokat. Az a fontos, hogy arról a munkalapról indítsd, ahová másolni szeretnéd az adatokat. A párbeszéd ablakot értelemszerűen töltsd ki.
Ha makrórögzítővel felveszed, akkor csak a szűrőtartomány megfelelő értékeit kell változtanod, mielőtt elindítod a makrót.Üdv.
-
Fferi50
Topikgazda
Szia!
Szerintem ne a Windows hanem a Workbooks objektumot használd lsz:
Workbooks("Terv_HWP_" & Format(Date, "yyyy_mm_dd" & ".xlsm")).Activate , mivel az ablak neve nem biztos, hogy ugyanaz...
De írtam a hozzászólásban, hogy nem kell aktiválni a korábban megnyitott fájlt. Ide írom ismét a képletet, egy picit javítani kellett rajta:
Activesheet.Range("A1:C25").Value=Workbooks("Terv_HWP_" & Format(Date,"yyyy_mm_dd" & ".xlsm").Sheets(1).Range("A1:C25").ValueA Sheets(1) helyett azt a munkalapot írd be, ahol az adatok találhatóak.
Üdv.
-
Fferi50
Topikgazda
Szia!
A fájlnevet megadhatod így:
Windows("Terv_HWP_" & Format(date,"yyyy_mm_dd" & ".xlsm").ActivateDe magát a másolást is egyszerűbben tudod megtenni:
Workbooks("Terv.xlsx").Sheets("Terv").Range("A1:C25").Value=Workbooks("Terv_HWP_" & Format(Date,"yyyy_mm_dd" & ".xlsm").Sheets("Tény").Range("A1:C25").ValueMivel a Terv nevű fájlt utoljára nyitod meg, ha csak egy munkalapja van, akkor elég az
Activesheet.Range("A1:C25").Value=Workbooks("Terv_HWP_" & Format(Date,"yyyy_mm_dd" & ".xlsm").Range("A1:C25").Valuetekintettel arra, hogy megnyitás után az lesz az aktív munkalap.
Nem kell ide-oda ugrálni a két munkafüzet között. Figyelj rá, hogy a kódban a workbooks - worksheets forma van és nem a windows!
Üdv.
-
Fferi50
Topikgazda
válasz
DrojDtroll
#30975
üzenetére
Szia!
Egy szép tömbképlettel kaphatod meg az eredményt:
=INDEX(A2:A9;HOL.VAN(MAX(((B2:B9="a")*C2:C9));C2:C9);0))
A tömbképletet Ctrl+Shift + Enter kombinációval kell bevinni, arról ismered meg, hogy kapcsos zárójelek közé kerül. Ha nem így viszed be, akkor Hibát fogsz eredményül kapni.
Üdv.
-
Fferi50
Topikgazda
Szia!
A titok az szerintem, hogy a feltételben szereplő dátumokat a dátum függvénnyel kell megadni:
pl. B2 cella képlete:=">=" & DÁTUM(2016;1;1), amit az excel számmá fog alakítani >=42370 (de ez ne zavarjon!, mert így biztosan működik), de használhatod a Dátumérték függvényt is a megfelelő szövegformátumban megadott dátummal.
Makróval pedig a Dateserial ill. a Date függvényt haszálhatod:
Range("B2").Formula="="">="" & DATE(2016,1,1)
Ráadásul a makrónál biztos lehetsz benne, hogy minden nyelvi környezetben megfelelően működik, mert ebben így az angol nyelvű formulákat kell alkalmazni.Üdv.
-
Fferi50
Topikgazda
válasz
DrojDtroll
#30971
üzenetére
Szia!
Hozzáfűzöd a szó után a KARAKTER(10) függvényértéket (ami a sorvéget jelenti).
Az ÖSSZEFŰZ függvény helyett bátran használd a & (ampersand) karaktert, rövidebb és egyszerűbb is:=Összefűz("Kalap";Karakter(10);"Kabát") helyett ="Kalap" & Karakter(10) & "Kabát"
Üdv.
-
Fferi50
Topikgazda
Szia!
Igen, a dátum elég kacifántos, bár nálam 2010-es excel alatt szépen elfogadta.
Szerintem tedd fel pár sorral egy elérhető helyre és megnézzük.
Az excel a dátumot egyébként számként kezeli, a keresésekben általában az angol dátumformátum a nyerő, esetleg próbáld meg úgy... (Bár nálam a magyarral ment.)Üdv.
Új hozzászólás Aktív témák
- Teljes verziós játékok letöltése ingyen
- Milyen monitort vegyek?
- Xiaomi 15 - kicsi telefon nagy energiával
- Gyúrósok ide!
- Mikrokontrollerek Arduino környezetben (programozás, építés, tippek)
- VR topik
- Geri Bátyó: Agglegénykonyha különkiadás 2 – Kajás poénok
- Mesterséges intelligencia topik
- Kertészet, mezőgazdaság topik
- Fejhallgató erősítő és DAC topik
- További aktív témák...
- Játékkulcsok ! : PC Steam, EA App, Ubisoft, Windows és egyéb játékok
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- PC Game Pass előfizetés
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem.
- Game Pass Ultimate előfizetések 1 - 36 hónapig azonnali kézbesítéssel a LEGOLCSÓBBAN! AKCIÓ!
- ÁRGARANCIA! Épített KomPhone i5 10400F 16/32GB/64GB RAM RTX 5050 8GB GAMER PC termékbeszámítással
- Telefon felvásárlás!! Apple Watch Series 9/Apple Watch Ultra/Apple Watch Ultra 2
- Dell Latitude 5420 14" Touchscreen i5-1135G7 16GB 512GB 1 év garancia
- HP Pavilion 15 - 15,6" Full HD - Intel Pentium N3710 - 4GB - 500GB HDD - Win10 PRO - MAGYAR - DWD R
- HP ZBOOK Firefly 16 G10 /i7-1355U/16GB/1 TB SSD/FHD+/IPS/NVIDIA 4 GB Magyar bill
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


10000;2)
)
