Az „Excel” fórum célja, hogy keretet adjon az Excel felhasználók széles táborának tapasztalataik megosztására, és lehetőséget a segítséget kérőknek. Az alábbi összefoglaló azért készült, hogy segítse a helyes kérdésfeltevést.
– Írd le szabatosan a problémát. Úgy fogalmazz, hogy ne csak te magad, de a szakértő is megértse, mire szeretnél választ kapni.
– Írd le, hogy milyen verziójú Excellel dolgozol. (Vagy ha nem – ill. nem csak – Excel, akkor micsoda?)
– Írd le, hogy milyen úton indultál el, és hol akadtál el rajta.
– A kérdés megértése szempontjából sokat segíthet, ha feltölteszt egy képet, amin látszik, hogy mit szeretnél, vagy illusztrálja azt.
– Még jobb, ha feltöltesz egy minta munkafüzetet valahová (pl. data.hu). Feltöltés előtt távolítsd el belőle a nem publikus adatokat.
– Ha a feladat jellege olyan, célszerű az "előtte" és "utána" állapotokat bemutatni. (Miből kellene csinálni mit?)
– Ha VBA kódon kell javítani, másold be a releváns kódrészt. Rövid kód mehet hozzászólásba, hosszú kód inkább ide: http://pastebin.com/
– Ha valami nem úgy működik, ahogy kellene, add meg a rendellenes viselkedés jellemzőit, a hibaüzenetet, és a hibát okozó programsort.
Valószínűleg a diagramon más a sorrendje az egyes évek adatainak. Próbáld meg a következőt:
Kiválasztod a 2023 évi "vonalat" adatot. Ezután a szerkesztőlécen megjelik az adatsor forrása:
pl. =ADATSOR(áram!$F$29;áram!$A$30:$A$186;áram!$F$30:$F$186;4)
Ha 4 adatsorod van, akkor feltételezhetően a 4-es lesz a zárójel előtti szám. Ezt írd át itt a szerkesztőlécen 3 -ra és Enter. Ezáltal megváltozik a megjelenítési sorrend és jelmagyarázat sorrendje is.
Tudnál küldeni egy mintát, ahol látszanak a forrásadatok, valamint az adatfotrrás kiválasztásánál megjelenő lista?
Valahogy így, mivel a saját mintámon elképzelni sem tudom, hogyan oldhatnán meg, hogy két év felcserélődjön a jelmagyarázqatban. Hátha a te mintádból kiderül:
'reggelt! Van egy vonaldiagramom, ami 4 év havi forgalmi adatait jeleníti meg. Az "Adatforrás kiválasztása" ablakban jó a sorrend: 2021, 2022, 2023, 2024. A diagram jelmagyarázatában viszont 2021, 2022, 2024, 2023. Hogy rendezhetném át?
Azt próbáltad már, hogy beszúrod a lapra háttérként és a kívánt néhány cella kivételével az összes többit zárolod? Mondjuk lehet, hogy valami képszerkesztőben még ügyeskedni is kell a kép köré üres területek szerkesztésével a pontos pozícionáláshoz. A rácsvonalak ugye kikapcsolhatók, a cellaformázás pedig ad számos lehetőséget az aktív cellák megjelölésére.
Az én ötletem, hogy felrakod az antenna képét jobb oldalra, de úgy, hogy a változókat egy-egy betűvel helyettesíted. A képernyő bal részén ezeket szépen, egymás alatt bekéred a usertől. Kevésbé elegáns, mert plusz egy hivatkozás van értékenként, amit követnie kell a felhasználónak, de gyors eredményt ad.
Ha nem olyan a kép formátuma, hogy legyen rajta átlátszóság, akkor is meg lehet oldani.
Ha rákattintasz a képre, akkor a menü szalagon megjelenik a képformátum. Annak a legelső pontja a "Háttér eltávolítása". Ott ki lehet jelölni, hogy mi az a terület, amit átlátszóvá szeretnél tenni. Ha sok benne a vékony vonal, akkor kicsit nehézkes az Excelben megoldani.
Ilyenkor én GIMP-ben szoktam. Ha megnyitod a képet szerkesztésre a GIMP-ben, akkor először hozzá kell adni a réteg átlátszóságot is. A varázs kijelölő eszközzel ki kell jelölni az eltávolítandó részeket. Én ennek olyan 20-as értéken szoktam állítani a "durvaságát", akkor elég jól kijelöli az elkülönülő hátteret. Majd ha jó a kijelölés, akkor delete gombbal törlöd a hátteret. Ilyenkor a GIMP-ben ez kockás háttérrel lesz jelölve. Utána simán kijelölheted az egészet és visszamásolhatod az Excelbe.
Én úgy látom, hogy kép mögötti cellába nem tudsz írni. Azon cella helyén, amelybe írni szeretnél, "lyukat" kell hagyni a képen, tehát azt a cellát nem fedheti le a kép! Ez nyilván könnyen megoldható, ha a kép szélei felé vannak az írni tervezett cellák, mert akkor szépen körül lehet vágni a képet, viszont a közbe - hátul levő cella esetében már szét kell vágni a képet és több darabban felrakni a cella kihagyásával.
Szerintem egyszerűbb lenne, ha a képet egy Userformra tennéd fel, arra lehet tenni Textboxokat és azok értékével lehet számolni, a textboxok értékét hozzá tudod kapcsolni egy cellához a ControlSource tulajdonsággal, ha változik a textbox értéke, változik a hozzá csatolt cella értéke is.
sziasztok. Lenne egy kérdésem. Hogyan lehetne egy képet úgy beszúrni az excelbe, hogy mögötte eg pár cella látszódjon, amelybe értéket beírva, akár képletre is bírható.
Mire gondolok?
tehát a cellákba értéket írok be, s így a többi cellában a képlettel kiszámoltérték kerül
Már minden lehetőséget megnéztem, de nem jöttem rá, hogyan oldható meg.
Itt egy példa 06830 betétlap esetében a Sheet 1 dátumformátumok átvitele után a Summary lapfülön Bontási dátumban 1900.01.00 értéket kapok vissza. Ez csak egy példa de több ilyen eset is előfordul:( Mi miatt lehet ez?
Ezzel minden bontást meg fogsz találni, sőt, a végeredmény még több is lesz 1 db-bal... mivel a betétlap meint azonosító szerintem nem elegendő, kell még mást is figyelni.
Új munkalap létrehozása: Az Épít típusú rekordokat átmásolja az eredeti munkalapról egy új, "Summary" nevű munkalapra.
Bontási dátumok hozzáadása: Megkeresi a bontási rekordokat és hozzáadja a bontási dátumot a "Summary" munkalaphoz. a megfelelő sorhoz:) Betétlap alapján de ez valami miatt nem minden rekord esetén kerül be
Összegzés és ellenőrzés: Összegzi a térfogatokat, majd összehasonlítja az eredeti és a summary adatok számait, és jelzi az eltéréseket, ha vannak.
Miért nem megy át a Bont sorokból a summary lapfülre az adat?
Nem fontos a makrós megoldás sem a lényeg az lenne hogy egy sorban legyen az építési dátum és a bontási dátum.
Sub FilterAndSummarizeData() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") ' Eredeti munkalap
Dim lastRow As Long lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' Szűrjük az Épít sorokat és másoljuk a Summary lapra Dim newSheet As Worksheet On Error Resume Next Set newSheet = ThisWorkbook.Sheets("Summary") On Error GoTo 0 If Not newSheet Is Nothing Then Application.DisplayAlerts = False newSheet.Delete Application.DisplayAlerts = True End If Set newSheet = ThisWorkbook.Sheets.Add newSheet.Name = "Summary"
' Másoljuk az Épít sorokat a Summary lapra Dim i As Long For i = 2 To lastRow If ws.Cells(i, 13).Value = "Épít" Then newSheet.Cells(newRow, 1).Value = ws.Cells(i, 1).Value newSheet.Cells(newRow, 2).Value = ws.Cells(i, 2).Value newSheet.Cells(newRow, 3).Value = ws.Cells(i, 3).Value newSheet.Cells(newRow, 4).Value = ws.Cells(i, 4).Value newSheet.Cells(newRow, 5).Value = ws.Cells(i, 5).Value newSheet.Cells(newRow, 6).Value = ws.Cells(i, 6).Value newSheet.Cells(newRow, 7).Value = ws.Cells(i, 7).Value newSheet.Cells(newRow, 9).Value = ws.Cells(i, 8).Value newSheet.Cells(newRow, 10).Value = ws.Cells(i, 9).Value newSheet.Cells(newRow, 11).Value = ws.Cells(i, 10).Value newSheet.Cells(newRow, 12).Value = ws.Cells(i, 11).Value newSheet.Cells(newRow, 13).Value = ws.Cells(i, 12).Value newSheet.Cells(newRow, 14).Value = ws.Cells(i, 13).Value newRow = newRow + 1 End If Next i
' Keresés és bontási dátumok hozzáadása Dim betetlapId As Variant Dim bontCount As Long bontCount = 0 For i = 2 To newRow - 1 betetlapId = newSheet.Cells(i, 6).Value Dim foundRow As Long foundRow = 0 For j = 2 To lastRow If ws.Cells(j, 6).Value = betetlapId And ws.Cells(j, 13).Value = "Bont" Then foundRow = j Exit For End If Next j If foundRow > 0 Then newSheet.Cells(i, 8).Value = ws.Cells(foundRow, 7).Value bontCount = bontCount + 1 End If Next i
' Szűrő hozzáadása a fejlécekhez newSheet.Range("A1:N1").AutoFilter
' Adatok kijelölése newSheet.Range("A2:N" & newRow - 1).Select
' Teljes m3 összegzése és formázása Dim totalSum As Double totalSum = Application.WorksheetFunction.Sum(newSheet.Range("L2:L" & newRow - 1)) newSheet.Range("O1").Value = totalSum With newSheet.Range("O1") .Font.Bold = True .Font.Italic = True .Font.Color = RGB(255, 0, 0) .Font.Size = 14 .Font.Name = "Calibri" End With
' Eredeti bontás rekordok száma Dim originalBontCount As Long originalBontCount = Application.WorksheetFunction.CountIf(ws.Range("M2:M" & lastRow), "Bont")
' Eredmények ellenőrzése és megjelenítése Dim checkSheet As Worksheet On Error Resume Next Set checkSheet = ThisWorkbook.Sheets("Check") On Error GoTo 0 If Not checkSheet Is Nothing Then Application.DisplayAlerts = False checkSheet.Delete Application.DisplayAlerts = True End If Set checkSheet = ThisWorkbook.Sheets.Add checkSheet.Name = "Check"
' Az értékek megjelenítése és formázása With checkSheet.Range("A1:B4") .Font.Bold = True .Font.Size = 12 .Font.Name = "Calibri" End With checkSheet.Columns("A:B").AutoFit
' Hibaüzenet, ha a bontási rekordok száma nem egyezik If originalBontCount <> bontCount Then MsgBox "A bontási rekordok száma nem egyezik meg! Eredeti bontási rekordok: " & originalBontCount & ", Átmásolt bontási rekordok: " & bontCount, vbExclamation End If End Sub
Azt nem tudod megoldani, hogy bemásolás/törlés helyett kvázi "görgeted" a listát? Ha jól látom, alul van a legfrissebb adat, és a lista elején a legrégebbi. A görgetés ebben az esetben azt jelentené, hogy a Körte, szőlő, barack sorokkal felülírod az Alma, körte, szőlőt, amivel a barack sor megduplázódik. És a legalsó sorban lévő Barack adatokat írod felül az új adatsorral.
Én például egy évente frissülő jelentésben szereplő 5 éves grafikonsorokat szoktam ezzel a technikával frissíteni, így nem kell grafikonokat mindig újra rajzoltatni, hanem azzok autoatikusan aktualizálódnak.
Ebben igazad van, viszont ez a táblázat az éppen folyamatban lévő munkákat "monitorozza". Amikor valami elkészül kikerül a rendszerből, ha valami új jön akkor pedig értelemszerűen be. Ha nem törlődne, nem lenne már átlátható, túl nagy lenne.
Az én célom pedig, hogy 1 vagy 2 hetes bontásban mindig rátudjak szűrni az éppen aktuális megrendelésekre és csak azt lássam, hogy milyen készültségben van. A tőbbi jövőben gyártandó termék ne keverjen be, csak a heti-két heti aktuális.
Azért a folyamatos törlés/bővítés nem nagyon tesz jót a képleteknek... inkább bővüljön folyamatosan és ne törölj belőle. A második munkalapra akkor is ki tudod szedni az adatokat, ha a "régiek" benne maradnak az elsőben.
A munkalapok stílusát te határozod meg, olyan lesz mindegyik, amilyenre beállítod.
Mit gondoltok, az is megoldható, hogy amilyen stílusban néz ki az egyik munkalap, ugyanolyanra csinálja a másikat is?
A célom az lenne egyébként, hogy az Munkalap1 adatokból mindig előre szűrjem határidő szerint 1 v. 2 héttel előre a munkákat. És ezekkel az adatokkal dolgozni, diagramok stb.