-
IT café
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
őstag
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
őstag
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
őstag
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
őstag
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.
[ Szerkesztve ]
-
Fferi50
őstag
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.
[ Szerkesztve ]
-
Fferi50
őstag
válasz JagdPanther #31680 üzenetére
Szia!
Private SUB Sortores()
A SUB kulcsszó hiányzik a makró elejéről.
Üdv.
-
Fferi50
őstag
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
őstag
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
őstag
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
őstag
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.
[ Szerkesztve ]
-
Fferi50
őstag
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.
[ Szerkesztve ]
-
Fferi50
őstag
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.
[ Szerkesztve ]
-
Fferi50
őstag
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.[ Szerkesztve ]
-
Fferi50
őstag
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
őstag
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
őstag
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).Value
2. 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).Value
Az 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.
[ Szerkesztve ]
-
Fferi50
őstag
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
őstag
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
őstag
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.
[ Szerkesztve ]
-
Fferi50
őstag
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
őstag
-
Fferi50
őstag
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.
[ Szerkesztve ]
-
Fferi50
őstag
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.
[ Szerkesztve ]
-
Fferi50
őstag
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
őstag
Szia!
Ha van a sorokban egyedi azonosító,akkor meg lehet próbálni az FKERES, vagy a HOL.VAN függvényekkel megkeresni mindkét lapon a másikra vonatkozó értékeket.
Esetleg egy munkalapra összemásolni mindkét adathalmazt és feltételes formázással az ismétlődő értékeket színezni (2007--es Exceltől működik, de csak egy oszlopra).
Az ismétlődő adatokat el lehet távolítani - ez akár az egész sor ismétlődését is nézheti.Ha nincs egyedi azonosítód, akkor trükközni kell. Mindkét munkalapon az utolsó oszlop után össze kell fűzni az egész sor adatát és ez alapján kell keresni a másik munkalap hasonló oszlopában.
Az összemásolt adatokon is ezen az oszlopon kell az ismétlődést feltételes formázással színezni.Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz alfa20 #31951 üzenetére
Szia!
Nekem úgy tűnik, kevered a makrót (VBA-t) a képletekkel. Változókat csak VBA-ban tudsz használni, a Range.Formula és annak különböző változataiban tudod a képleteket megadni a definiált változókkal, de az bonyolultabb egy kicsit.
Pl. Range("A1").Formula="=" & lapSH.Range("C1").Address(External:=True) makró sor beírja az aktuális munkalap A1 cellájába az =[Munkafüzet1.xlsx]Munka1!$C$1 képletet.A változók használatának és érvényességi körének is megvannak a maga szabályai, ezt javaslom olvasd el a Help-ben.
Szerintem egyszerűbb, ha neveket használsz a munkafüzet1-ben és azt használod a munkafüzet2-ben.
De a példádban egyszerűen egy másik munkafüzet adott tartományára hivatkozol és ez működik akkor is, ha a hivatkozott munkafüzet éppen nincs nyitva(!).Üdv.
-
Fferi50
őstag
válasz alfa20 #31954 üzenetére
Szia!
Amint az előző példából láthatod, a munkalap változó maga "tudja", hogy melyik munkafüzethez tartozik, tehát a hozzá tartozó tartományok is tudják a teljes címet. Ebből következik, hogy nem szükséges külön definiálni munkafüzet változót is.
A példád szerintem a következőképpen "fordítható le":
"=VLOOKUP(RC[-1],'[" & makroWB & "]" & makroWB_netto & "'!C1:C2,2,0)""=VLOOKUP(RC[-1],"& lapSH.Range("C1:C2").Address(External:=True) & ",2,0)"
Azt pedig Te döntöd el, hogy ez egyszerűbb, vagy bonyolultabb, mint amit eddig használtál.
Üdv.
-
Fferi50
őstag
válasz Zola007 #31993 üzenetére
Szia!
Ahhoz, hogy az általad kívánt forma kialakuljon, át kell szerkeszteni az adatokat, sajnos nem is egy, hanem több lépésben.
Először az időtengelyt kell közösíteni, amit a következőképpen javaslok:
Egy oszlopba egymás alá minden dátumot másolj le (ez egy sima másolás - beillesztés értékként - transzponálás ha az időértékeid sorokban vannak).
Ezután az Adatok -ismétlődések eltávolítása menüpottal eléred, hogy csak egy-egy időpont maradjon, majd rendezed az időt növekvő sorrendbe.
Ezzel megvan az "időskálád".
Az adatsorok hozzárendelése: Ha sorban vannak az adataid (mint a mintában), akkor a HAHIBA(VKERES) függvénnyel megkeresed az időponthoz tartozó adatokat.
Képlet pl. =HAHIBA($A$70;$A$1:$H$2;2;0);"") az első adatsornál, a második adatsornál a 3-4. sort használod és így tovább.
Ha minden adatsorod beképletezéssel megvan, akkor tanácsos a képleteket átalakítani értékké: kijelölöd az adatokat, másolás - irányított beillesztés értéket.Mostmár kész a diagramod alapadatainak tartománya. Ezután kijelölöd a tartományt, majd beszúrás, diagram - vonaldiagram jelölőkkel. Jobb egérgomb a diagramon - adatok kijelölése - rejtett és üres cellák gombra kattintasz - bejelölöd az adatpontok összekötése vonallal opciót, majd ok amíg ki nem lépsz a formázásból.
Elvileg ezzel meg is született a diagramod.
Üdv.
-
Fferi50
őstag
válasz Fferi50 #31998 üzenetére
Még egy kiegészítés az előbbihez:
Nagy eséllyel a képlet miatt az egyébként üresnek látszó cellákat a diagram nem fogja üresnek kezelni (még azután sem, hogy értékként visszamásoltad), emiatt még egy nem túl nagy kézi erőt igénylő műveletre van szükség:
Az adattáblára ráteszel egy autoszűrőt, majd minden egyes adatsornál (oszlopnál) kijelölöd az üres megjelölésű cellákat - egyben ütsz rájuk egyet a delete gombbal. Ezt végigcsinálva már valóban rendben lesz a diagram is. Természetesen utána törlöd a szűrőt.
(Sajnos azt nem tudom, miért van ez a mániája az Excelnek... )Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz w.miki #32024 üzenetére
Szia!
Az a probléma, hogy a DARABHATÖBB függvény akkor számolja csak az értéket, ha minden feltételnek megfelel a cella.
Amikor a név a második oszlopban van, a függvény nem számolja hozzá, ezért azt külön meg kell számoltatni:
=DARABHATÖBB($A:$A;$G5;$D:$D;H$1)+DARABHATÖBB($A:$A;$G5;$E:$E;H$1)Üdv.
-
Fferi50
őstag
válasz bandus #32028 üzenetére
Szia!
A probléma megoldásához tudnod kell, hogy az Excel a dátumokat és időt is számként tárolja, a következőképpen:
A szám egész része jelenti a dátumot ( 1900. 01. 01-től eltelt napok számát). míg a törtrész jelenti az időt. Ennek megfelelően 0,5 jelenti a 12 óra 0 percet. Ha a percet le szeretnéd valóságosan is vágni, nem csak a megjelenítésben, akkor a törtrészt kell megmanipulálni.
Az alábbi képlet az A1 cellában levő dátumértéket arra az órára kerekíti, amelyikben éppen van az időpont:
=INT(A1)+INT((A1-INT(A1))*24)/24
Tehát pl. 12:00-tól 12.59-ig a törtrész értéke 0,5 lesz - azaz 12 órát fog megjeleníteni a megfelelő cellaformátum (éééé.hh.nn óó).Üdv.
-
Fferi50
őstag
válasz Pityke78 #32034 üzenetére
Szia!
Beállításoknál az Értékek beillesztése parancsot felteheted a menüszalagra egyéni menücsoportba, vagy a gyorselérési eszköztárba, ahol akkor aktiválódik, ha a másolás megtörtént.
A Ctrl+V letiltása, illetve "átprogramozása" makróval működik csak.
(Munkalap védelme esetén eldöntheted, hogy a zárolt cellák formázása lehetséges-e, vagy sem, viszont ebben az esetben nem lehet megváltoztatni a cella értékét.)
Üdv.
-
Fferi50
őstag
válasz aviator #32043 üzenetére
Szia!
Az Excel nem tud ilyet, csak a VBA (a makró).
Makróban a Control.Parent tulajdonsága visszaadja, hogy melyik objektum az adott vezérlő "szülője".
Pl, ha egy Userformon létrehozol egy Frame-et, majd abba beleteszel vezérlőket, akkor
Userform1.Controls(1).Parent is Userform1.Controls(0) igaz értéket ad vissza, mert az első (0 indexű) vezérlő a Frame és a második (1 indexű) vezérlő a Framen belül van.Ezzel kicsit még ügyeskedve, minden vezérlőről megtudhatod, hova tartozik.
A vezérlők különböző tulajdonságai - mérete, színe, rajta levő vezérlők száma stb.szintén lekérdezhető a VBA-ban. Javaslom a HELP tanulmányozását.
Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz aviator #32045 üzenetére
Szia!
"Összefüggő" irodalmat én még nem találtam (igaz,nem is nagyon kerestem) a Kovalcsik könyvön kívül. Sokat segít a makrórögzítés - bár abba elég sok felesleges művelet is bekerül, van pár jó fórum, A Microsoft MSDN, MS expertek fórumai.
Keresni kell a neten és találsz biztosan használhatót kérdés specifikusan.Üdv.
-
Fferi50
őstag
válasz alfa20 #32061 üzenetére
Szia!
Ha a munkalap visible tulajdonságát xlVeryHidden-re állítod, akkor semmilyen felhasználói listában, sem jobb egérgombos listában nem látszik.
Felfedni is csak makróból/VBA-ból lehet. Mivel a projekt közös használat esetén nem nyitható ki a VBA nézetben sem, ezért gyakorlott felhasználó is csak akkor tudja megnézni, ha a közös használatot feloldja - az pedig jelszóval (bár nem túl erősen, de) védhető.A közös használatnak - főleg a mentésekkor - lehetnek problémás helyzetei, erre figyelj oda nagyon.
Üdv.
-
Fferi50
őstag
válasz Nowitzki #32071 üzenetére
Szia!
A Szumhatöbb/Darabhatöbb függvények hányadosa lehet jó:
=SZUMHATÖBB(Sheet2!K:K;Sheet2!D:D;A35;Sheet1!L:L;">=" & $B$34;Sheet2!L:L;"<=" & $C$34)/DARABHATÖBB(Sheet2!D:D;A35;Sheet2!L:L;">=" & $B$34;Sheet2!L:L;"<=" & $C$34)
Ha A35 cellában van a cikkszám. A képlet pl. az E35 cellába és húzhatod lefelé az oszlopon.
Szóba jöhet még a kimutatás, ahol állíthatod a szűrőket tetszés szerint.
Üdv.
[ Szerkesztve ]
-
Új hozzászólás Aktív témák
- [SoP] Rövid előzetesn az Alien: Rogue Incursion (PS5/PSVR2, PC, MQ3)
- Suzuki topik
- Háztartási gépek
- Politika
- Exkluzív funkcióval tenné vonzóbbá az ARM-os PC-ket a Microsoft
- Destiny 2 (Xbox One, PS4, PC)
- Vírusirtó topic
- Genshin Impact (PC, PS4, Android, iOS)
- Apple iPhone 15 - a bevált módszer
- Kerékpárosok, bringások ide!
- További aktív témák...
- Windows, Office licencek a legolcsóbban, egyenesen a Microsoft-tól - 2990 Ft-tól!
- Bitdefender Total Security 3év/3eszköz! - "Tökéletes védelem most kedvező áron..."
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! LEGOLCSÓBB! Automatikus 0-24
- Vírusirtó, Antivirus VPN kulcsok
- Canva Pro előfizetés - 1 éves
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Ozeki Kft.
Város: Debrecen