Hozzászólások
-
SzerzőBejegyzés
-
Örülök, hogy sikerült segítenem.
Szívesen.
Figyelted, hogy a változók deklarálását kiegészítettem? Egyrészt nem szerepelt mindegyik a Dim sorban, másrészt a
Dim i, j As Long
sor az i változónak variantként foglal helyet a memóriában, aminek nagyobb a helyszükséglete, mint a Long-é. Mindegyiknél külön meg kell határozni a típust.
Érdemes a VBE-ben megadni, hogy tegye kötelezővé a változók deklarálását. A Tools | Option | Editor fülön jelöld be a Require Variable Declaration opciót. Ennek hatására minden újonnan megnyitott mudul tetején megjelenik az Option Explicit szöveg. Ha a modulban le nem foglalt változót használsz, a makró az indításakor jelez, és megáll. Így elkerülhető, hogy egy elírt karakter hatására fals eredményt kapj, aminek az okát keresgélheted.Például a makródban van két sor:
Xsum = WorksheetFunction.Sum(Arraytest) Cells(lRow + 2, j).Value = Xsum
Ha a 2. sorban véletlenül Xszum-ot íratsz be a megadott helyre, csodálkozhatsz, hogy minden esetben 0 értéket kapsz.
Szia!
Erre gondolsz?
Sub tomb_kigyujt() Dim i As Long, j As Long, lRow As Long, lCol As Long, Xsum As Single ReDim Arraytest(0) lRow = Cells(Rows.Count, 1).End(xlUp).Row lCol = Cells(1, Columns.Count).End(xlToLeft).Column For j = 2 To lCol For i = 2 To lRow - 1 On Error Resume Next 'Ez minek? Arraytest(UBound(Arraytest)) = Abs(Cells(i + 1, j) - Cells(i, j)) ReDim Preserve Arraytest(UBound(Arraytest) + 1) Xsum = WorksheetFunction.Sum(Arraytest) Cells(lRow + 2, j).Value = Xsum Next i ReDim Arraytest(0) Next j End Sub
üdv, Kati
Jó reggelt!
Mit szólsz a következő, pórias eljáráshoz?
A Ctrl-t nyomva tartod, közben a Bevitel fület jobbra húzod. Ez másolatot készít a lapról, aminek a Bevitel(2) nevet adja. Most már csak át kell nevezned az új lapot, és elrejtened az A oszlopot.Üdv, Kati
Szia Móni!
Írtam a füzet utolsó lapjára pár instrukciót. csatolom.Üdv,
KatiAttachments:
You must be logged in to view attached files.Szia!
Így elég nehéz segíteni. Tegyél fel egy füzetet mintaként, minden lapon pár sor adattal, amik lehetnek hamisak. Az viszont lényeges, hogy az egyes oszlopok a valódi füzetedben lévő típusokkal egyezzenek meg. Ott legyen a mintában dátum, szöveg, számérték, ahol az eredetiben.
Kati
Még annyit tegyél meg, hogy az első lapon a B2:B6 tartományt nevezd el, legyen pl. Nevek. Az általam kiállított lap A2 cellájában az érvényesítés forrása legyen =Nevek. Innen kezdve, ha bővül az első lapodon a tartomány, az érvényesítésben megjelennek az új nevek is.
Szívesen. 🙂
Szia Móni!
Hol maradt a csatolt fájl?
üdv,
KatiSzívesen.
Arról nem tudok.Ctrl+
A megjelenő párbeszéd ablakban 4 választási lehetőséget találsz. A Ctrl- -ra cellák törlésére van lehetőséged.Szívesen. 🙂
Kati
Az Excelben makró segítségével kétfelé választod a szöveget. A két részt viszed át a Wordbe egymás mellé, és ott formázod a mezőt félkövérre, ill. dőltre.
A példában a szövegek az A oszlopban vannak, ezeket teszi át a makró a stílus alapján a B és C oszlopba.Sub Felkover_Dolt() Dim sor As Long, betu As Integer, usor As Long, szoveg As String usor = Range("A" & Rows.Count).End(xlUp).Row For sor = 2 To usor szoveg = Range("A" & sor) For betu = 1 To Len(szoveg) If Range("A" & sor).Characters(Start:=betu, Length:=1).Font.FontStyle = "Dőlt" Then Range("B" & sor) = Left(szoveg, betu - 1) Range("C" & sor) = Mid(szoveg, betu, 100) Exit For End If Next Next End Sub
Attachments:
You must be logged in to view attached files.Az előbbihez: a sárga hátterű sorokat …
Szia!
Épp a napokban készítettem egy ilyen célú táblázatot. Csatolom.
Üdv,
KatiAttachments:
You must be logged in to view attached files.Nézd meg a Névkezelő 3 új tartományát, majd a B2:D2 cellák érvényesítési képletét.
Attachments:
You must be logged in to view attached files.A1-ben van a szöveged?
Lehet, hogy eltérő verziókat használunk. Nézz szét a függvényeid között, ott is a Szöveg kategóriában.Szia!
Míg nem kapsz jobb választ, próbáld így:
=NAGYBETŰS(BAL(A1;1))&JOBB(A1;HOSSZ(A1)-1)
Az átírást megelőző képletet másolhatod lefelé.
Az első sorban az A1:J1 tartományt figyeli, a másodikban az A2:J2-t.=INDEX(A:J;SOR();DARAB2(A1:J1))
Szívesen. 🙂
Igazad van. A C1-be, a C6-ba és C7-be fixen írtam be az értékeket, az alattuk lévő cellákba „húzással”.Az az Excel furcsasága, hogy a 8:30-nál elszámolja a növekményt.
Hasonlóan írtam az értékeket a B oszlopba is, de a H oszlopban nem okozott hibát a képlet, vagyis a B oszlopban nem állt elő hiba a húzással.Szia!
Vegyük, hogy a számok az A oszlopban vannak, A1-től kezdve. A B1 képlete: =HA(INT(A1)=A1;A1;A1*1000)
Ezt lemásolod végig a számok mellé, és már összegezheted is.Üdv, Delila
Szia!
Talán arra gondoltál, ami a csatolt fájlban van.
A B1 éc C1 cella tartalmazza a két időpontot. A H és I oszlopokban vannak a képletek.
Van egy hiba: az I37-ben 215-nek kellene lenni, ezt majd Imre feltehetően kideríti.Üdv,
KatiAttachments:
You must be logged in to view attached files.Szívesen.
Villámgyors vagy!Másik módszer, ahol csak az eltérő értékek szerepelnek a Munka3 lapon:
Sub Kulonbseg() Dim sor As Long, usor As Long, ide As Long usor = Sheets(1).Range("P" & Rows.Count).End(xlUp).Row ide = 1 For sor = 1 To usor If Sheets("Munka1").Range("P" & sor) <> Sheets("Munka2").Range("P" & sor) Then Sheets("Munka3").Range("A" & ide) = Sheets("Munka1").Range("P" & sor) Sheets("Munka3").Range("B" & ide) = Sheets("Munka2").Range("P" & sor) ide = ide + 1 End If Next End Sub
Valamikor régen kaptam a lenti makrót, amit ha a füzeted ThisWorkbook lapjához rendelsz, a füzeted minden lapján célkeresztbe teszi a kiválasztott cellát. 1 lap moduljába bemásolva csak azon a lapon működik.
Próbáld ki egy üres füzetben, és ha megfelel, alkalmazhatod a „cél” füzetben.Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Cells.FormatConditions.Delete With Target With .EntireRow .FormatConditions.Add Type:=xlExpression, Formula1:="1" With .FormatConditions(1) With .Borders(xlTop) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = 5 End With With .Borders(xlBottom) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = 5 End With .Interior.ColorIndex = 20 End With End With With .EntireColumn .FormatConditions.Delete .FormatConditions.Add Type:=xlExpression, Formula1:="1" With .FormatConditions(1) With .Borders(xlLeft) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = 5 End With With .Borders(xlRight) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = 5 End With .Interior.ColorIndex = 20 End With End With .FormatConditions.Delete .FormatConditions.Add Type:=xlExpression, Formula1:="1" .FormatConditions(1).Interior.ColorIndex = 36 End With End Sub
Szia!
Hogyne lenne. A Cellaformázás menüpontban, a Szegély fülön megadhatod a színt, a vonalvastagságot, és az elhelyezést is.
Kati
Szia!
Mivel egy cellából kell kiolvasni a dátumot, a cella címét kell megadnod forrásként.
A dátumokat az Excel egész számokként értelmezi. A mai dátumot – 2020.02.04-et – 43865-ként tárolja. Ahhoz, hogy a fájlnévben dátum formában jelenjen meg, meg kell adnod a megjelenítendő formátumot.Sub Mentes_pdf() Dim Ajanlat As String With ActiveSheet Ajanlat = ActiveWorkbook.Path & "\" & .Name & "_" & Format(Range("A2"), "yyyy-mm-dd") & ".pdf" .ExportAsFixedFormat Type:=xlTypePDF, Filename:=Ajanlat, _ Quality:=xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=False End With End Sub
Kati
Szia!
Makrórögzítéssel mindkét gombhoz létrehozhatod a makrót.
Egyszerű és nagyszerű!
A harmadik táblázatba hivatkozásokkal vittem be a két első adatait.
A K4 cella képlete =B4, ezt másoltam jobbra az M4 celláig, majd a 3 cella képletét le, a 21. sorig.
Az N4-be bevittem a hivatkozást: =F4, majd ezt másoltam jobbra és le.Egyszerűsítettem a feltételes formázásokon, nincs szükség az összefűzésekre. Kapcsos zárójellel jeleztem az egyes táblázatokat, amikre azonos formázást adtam. A harmadik tábla két felének formázása önálló, nem az első kettő szerint színeztem.
Az egyes táblákba beállva a Kezdőlap | Stílusok | Feltételes formázás | Szabályok kezelése menüpontban látszanak a megadott formátumok, mindegyik tartományhoz kettőt adtam meg. Mivel nem látszanak a teljes képletek, az egyiket kiválasztod, majd a Szabály szerkesztése gombbal láthatóvá teszed a teljes képletet.Attachments:
You must be logged in to view attached files.Szia!
Megállapítjuk, meddig kell másolni az adatokat. Ezt a D oszlop alsó sora mutatja. Egy For-Next ciklussal végig megyünk a D oszlop adatain, D5-től a D utolsó sorig. A mindenkori példányszámot az aktuális sor E oszlopa adja.
Sub Udskriv() Dim sor As Long, usor As Long, peldany As Integer usor = Range("D" & Rows.Count).End(xlUp).Row 'alsó sor a D oszlopban For sor = 5 To usor Range("D" & sor).Copy Range("C3") 'aktuális üzletnév másolása D-ből a C3-ba peldany = Range("E" & sor) 'példányszám az akt. sor E oszlopából If peldany > 0 Then Range("A1:C4").PrintOut Copies:=peldany, Collate:=True Next End Sub
Az összefűzés a két első táblázat feltételes formázásához kellett. Később a 3. táblázatnál másképp oldottam meg, amit be lehet vezetni az első kettőnél is.
A 3. táblázat adatait behivatkoztam az első kettőből. Az L4 cellára állva láthatod.Kijelöltem az L4:N21 tartományt, és a feltételes formázásnál megadtam az egyik képletet, színeztem, majd ugyanerre a tartományra megadtam a 2. feltételt, és formáztam.
Az O4:Q21 tartománynál szintén kétféle formázást adtam meg, szintén képletekkel.Szia!
Nem kell színezgetni, egyszerűbb megoldás is van. Nézd meg a csatolmányt.
Attachments:
You must be logged in to view attached files.Még egy megoldás a csatolt képen.
Attachments:
You must be logged in to view attached files.A két szélső érték legyen 0 és 54.
Private Sub SpinButton1_Change() If SpinButton1.Value = 0 Then SpinButton1.Value = 53 If SpinButton1.Value = 54 Then SpinButton1.Value = 1 End Sub
Nem állítottad be a Min és Max értékeket a tulajdonságoknál, pedig a képen kiemeltem sárgával.
Szívesen.
A késleltetést (delay) vedd nullára.
A csúszkánál (ScrollBar) látszik a változás. Lehet, hogy dugig van a füzeted képletekkel, amik minden mozgásra újra számolódnak.
Kevesebb csicsa, gyorsabb, jobb működés.Szia!
Nézd a mellékelt képet!
Üdv,
KatiAttachments:
You must be logged in to view attached files.Szia!
Az eredeti Sheet1 lapról készítettem egy másolatot. Ezen a lapon állva indíthatod az Osszevonas makrót, ami az E:I oszlopokba beírja az összevont adatokat.
Simi adataival baj van, azt meg kell nézned.Üdv, Kati
Attachments:
You must be logged in to view attached files.Hurrá!
Sajnos nem azonos mennyiség van az egyes típusokból, így nem lehet azonos képletet írni rájuk.
Írtam viszont egy makrót, ami megoldja a problémádat.
Az első lapról készítettem egy másolatot, ahol a Rendezés gombra kattintva elkészül az általad kívánt forma.
Tömörítem a fájlt, mert makrót tartalmazót másképp nem fogad el a fórummotor.Attachments:
You must be logged in to view attached files.Jó nagy legyen a kép, amit háttérként teszel ki.
Szia!
Ha a címet középre akarod tenni, érdemes az A oszlopba írni, majd az A1:D1 tartományt kijelölve Cellaformázás, Igazítás fül, Vízszintesen A kijelölés közepére.
Nézd meg az A2 képletét, amit lemásoltam A4-ig. Az A6-ban változik a hivatkozás, majd az A10-ben ismétAttachments:
You must be logged in to view attached files.Lapelrendezés, Háttér. A kép méretétől függően soxorozza. A rácsokat kikapcsolhatod.
Attachments:
You must be logged in to view attached files.Más nyelven beszélnek az Exceleink. Vessző az angolban kell, ott viszont az FKERES helyett a VLOOKUP használandó. Nem tudom, hogy jött össze nálad a kétféle nyelv.
Esetleg áthelyezted az A1:B4 cellák tartalmát?
Szia! A D9 cella képlete =FKERES(C9;$A$2:$B$4;2;0), ezt másolhatod lefelé.
2019-12-18-13:24 Hozzászólás: [Resolved] Értékek másolása fix cellából de a beillesztés mindig új sorba #6579Meg lehet oldani egymásba ágyazott ciklusokkal, de nem érdemes. Kevés az előállítandó szám, sok időbe kerül, míg mind az 5 szám eltérő lesz.
2019-12-18-13:13 Hozzászólás: [Resolved] Értékek másolása fix cellából de a beillesztés mindig új sorba #6577Nem szükséges a véletlen. A nebuló csak a számokat látja, abból választ. Ehhez az FKERES függvény megadja a szöveget.
2019-12-18-12:17 Hozzászólás: [Resolved] Értékek másolása fix cellából de a beillesztés mindig új sorba #6575Ott választásról volt szó, nem sorsolásról
2019-12-18-11:58 Hozzászólás: [Resolved] Értékek másolása fix cellából de a beillesztés mindig új sorba #6572Úgy rémlik, hogy erre már megkaptad a választ egy másik fórumon…
2019-12-18-11:45 Hozzászólás: [Resolved] Értékek másolása fix cellából de a beillesztés mindig új sorba #6570Mekkora számok kellenek, és mi az elrendezés?
A nevek esetleg külön-külön lapon vannak, vagy mindegyik egymás alatt valamelyik oszlopban 1 lapon? A kigyűjtés 1 lapra, vagy esetleg mindenkinek a saját lapjára történjen?2019-12-17-15:17 Hozzászólás: [Resolved] Értékek másolása fix cellából de a beillesztés mindig új sorba #6565Szívesen. Örülök, hogy végül összejött.
2019-12-17-14:11 Hozzászólás: [Resolved] Értékek másolása fix cellából de a beillesztés mindig új sorba #6562Pardon, csak becsomagolva lehet csatolni a makrós füzetet.
Attachments:
You must be logged in to view attached files.2019-12-17-14:10 Hozzászólás: [Resolved] Értékek másolása fix cellából de a beillesztés mindig új sorba #6561Csatolom az én füzetemet.
2019-12-17-12:20 Hozzászólás: [Resolved] Értékek másolása fix cellából de a beillesztés mindig új sorba #6559Szia!
A lapon, ahova beviszed az értékeket, az A:D oszlop ne legyen zárolt. Védd le a lapot. Nálam a „SzuperTitkosJelszó”-védi a lapot.
Másold be a makrót egy modulba, majd tegyél ki hozzá egy gombot. Az aktuális sor A:D tartományát másolja a Munka2 lap első üres sorába. Ha van, ha nincs fejléc a Munka2-n, az első másolat a 2. sorba kerül (üres lap esetén).
Másolás után a kiinduló munkalap kitöltött sora nem írható felül, zároltak lesznek a cellák.Sub Masolas() Dim ide As Long ActiveSheet.Protect Password:="SzuperTitkosJelszó", UserInterfaceOnly:=True ide = Sheets("Munka2").Range("A" & Rows.Count).End(xlUp).Row + 1 Range("A" & Selection.Row & ":D" & Selection.Row).Copy _ Sheets("Munka2").Range("A" & ide) Range("A" & Selection.Row & ":D" & Selection.Row).Locked = True End Sub
Én makróra gondoltam.
Sub cimkek() Dim doboz As Integer, db As Integer, sor As Integer sor = 1 For doboz = 1 To 800 For db = 1 To 8 Cells(sor, 1) = "AB-" & Right("000" & doboz, 3) & "/" & Right("00" & db, 2) sor = sor + 1 Next Next End Sub
Szívesen. 🙂
Azt hiszem, félreértetted. A Nyomtatni lap tartalmát konvertálja, magát az Excel fájlt nem.
Erre gondoltál?
Előbb írtam, mint gondolkoztam. Mégis szükség van a feltételnél is a HAHIBA függvényre, mint a próbánál kiderült nem létező dátum és időpont kiválasztásánál.
Szánom-bánom. 🙁Kicsit rövidebbre vettem a Munka2!A4 cella képletét, ami alapján a többit is módosíthatod. A feltételnél nincs szükség a HAHIBA függvényre.
=HA(INDEX(Táblázat1;HOL.VAN($H$1;Munka1!$L:$L;0)-1;OSZLOP()+2)=0;"";HAHIBA(INDEX(Táblázat1;HOL.VAN($H$1;Munka1!$L:$L;0)-1;OSZLOP()+2);""))
Szia Dani!
Csatolom zip-ben a makrós fájt. Kibontás után a Nyomtatni oldalon formázd meg a két első sort kedved szerint, utána a Munka1 lapon indíthatod a makrót.
Jelenleg abba a mappába menti a pdf-et, ahonnan megnyitottad a füzetet. Ezen módosíthatsz, ha indítás előtt az
utvonal = ActiveWorkbook.Path
sorban átírod az útvonalat.Attachments:
You must be logged in to view attached files.Az ÜRES függvényt Te juttattad eszembe.
Elég kacifántosra sikerült, hátha kapsz egyszerűbb megoldást. Az ilyen tengerikígyó képlettel az a baj, hogy egy újabb igény esetén nehéz követni.
Sok szerencsét hozzá!Több változat készült, és közben az idő is szépen telt.
Fel kellene tenned a jelenlegi változatot, hogy kiderüljön, hol állsz most.Szia!
A Munka1 laphoz rendeltem egy eseményvezérelt makrót. Mikor a H oszlopba beírod a dátumot, a TTC lap első üres sorába átmásolja a teljes sort.
Az új lapról töröld a próba sorokat, de a címsor maradjon meg.Attachments:
You must be logged in to view attached files.Egy üres oszlopban végig viszed a lenti képletet, majd ezt összegzed a SZUM függvénnyel.
=HA(HÉT.NAPJA(A6;2)<5;9;HA(HÉT.NAPJA(A6;2)=5;6;0))Horváth Imi írta, hogy tömörítve, zip-ként fel lehet tenni a makrót tartalmazó fájlt, kipróbálom.
Az új képletek csak a lapra érvényesek, a makróhoz semmi közük. Csak példa arra, hogy minden feladatra több megoldás létezik.
Próbáltam az utvonal változóban megadott helyen megnyitni a mappa választót, de nem jött össze, hátha valaki…Set FD = Application.FileDialog(4) utvonal = "F:\Otthoni\macros\Checklista\" ChDir utvonal With FD ...
Attachments:
You must be logged in to view attached files.Nálam a makrót tartalmazó fájl az F:\Otthoni\macros mappában van. A makró indításakor az a mappa nyílik meg, amit az Excel beállításakor a Mentés menüpontban a Helyi fájlok alapértelmezett helye rovatban megadtam. Az adataimat, fájljaimat soha nem mentem a C meghajtóra. A Te feladatodhoz F:\Otthoni\macros\Checklista fát készítettem, ezen belül vannak az évek – jelenleg csak egy, 2019.
Megnyílik a FileDialog, kiválasztom a megfelelőt, ezzel el is mentettem.Sub Pdf_mentes() Dim utvonal As String, FD, FN As String Sheets("Munka2").Select Set FD = Application.FileDialog(4) 'mappa választás With FD .AllowMultiSelect = False .Show If .SelectedItems.Count = 0 Then MsgBox "Nem választottál útvonalat, befejezzük.", vbInformation, "Értesítés" Exit Sub Else utvonal = .SelectedItems(1) & "\" End If End With FN = "Csekklista " & Format(Range("L1"), "yyyy.mm.dd hh_mm") & ".pdf" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=utvonal & FN, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False End Sub
Ördög vigye a más macskáját! Nem lehet makrót tartalmazó fájlt csatolni.
Lementem xlsx-ként, és bemásolom ide a modulba írt makrót.Sub Pdf_mentes() Dim utvonal As String, FD, FN As String Sheets("Munka2").Select Set FD = Application.FileDialog(4) 'mappa választás With FD .AllowMultiSelect = False .Show If .SelectedItems.Count = 0 Then MsgBox "Nem választottál útvonalat, befejezzük.", vbInformation, "Értesítés" Exit Sub Else utvonal = .SelectedItems(1) End If End With utvonal = utvonal & "\" FN = "Csekklista " & Format(Range("L1"), "yyyy.mm.dd hh_mm") & ".pdf" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=utvonal & FN, _ Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False End Sub
Attachments:
You must be logged in to view attached files.A kettőspontot nem lehet a fájlnévbe írni, marad az alsó kötőjel.
Csatolom az újabb verziót.Az első, dátumot tartalmazó cella az A2. Ide írod a kezdő dátumot. Az A3 képlete
=HA(MARADÉK(SOR()+2;4)=0;A2+1;A2)
Ezt már másolhatod.A pdf-es makróban a
Format(Date, "yyyy_mm_dd") & ".pdf"
-t írd át így
Format(Now, "yyyy_mm_dd hh-mm") & ".pdf"
mert itt az időpont is kell, ha több mentést készítesz naponta.
Ehhez a makróhoz tehetsz ki egy gombot.Sub Mentes() Dim utvonal As String utvonal = ActiveWorkbook.Path & "\" Sheets("checklist").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ utvonal & "termek_meres " & Format(Now, "yyyy_mm_dd hh_mm") & ".pdf", Quality:= _ xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _ OpenAfterPublish:=False End Sub
Nagyon jó, hogy foglalkoztál vele, mert amiket a kutatásod közben megtanultál, az fixen megmarad az emlékezetedben.
Két képlethez újabb magyarázatot írtam, remélem, érthetően.Attachments:
You must be logged in to view attached files.Csatolom az új füzetet, benne a hozzá tartozó mesével.
Attachments:
You must be logged in to view attached files.Jó reggelt!
Azt írtam, hogy mikor egy új sor utolsó adatát – a C mérést – beviszed, akkor végzi el a makró a feladatot.
Átalakítottam a füzetet makrók nélkülire. Ezzel csak az a baj, hogy nem végzi el a pdf-be mentést, de legalább tudom csatolni.Attachments:
You must be logged in to view attached files.Szia!
2 makrót írtam a füzetedbe. Az első az adatok laphoz van rendelve, ami meghívja a másikat (Masolas nevűt), ami egy modulban van.
A laphoz rendelt eseményvezérelt makró azt teszi, hogy mikor egy új sor utolsó adatát – a C mérést – beviszed, átadja az aktuális sor számát a Masolas-nak. Ez beírja a B oszlop dátumát, és a 3 mérési eredményt a megfelelő helyekre, majd menti a lapot termek_meres aktuális-dátum.pdf néven abba a mappába, ahonnan megnyitottad a füzetet. Adhatsz más útvonalat a modulban lévő makró utvonal= … sorban. Az útvonal végződjön „\”-re.
Mivel minden dátumhoz külön sor tartozik, folyamatosan vezetheted a méréseket ebbe a füzetbe akárhány sorban, nem kell választani 3 sor közül.Sajnos itt nem lehet makrót tartalmazó, xlsm kiterjesztésű fájlt csatolni, ezért beírom a két makrót. Az elsőt rendeld az adatok laphoz. Lapfülön jobb klikk, Kód megjelenítése. Ezzel bejutsz a VB szerkesztőbe. A jobb oldalon lévő nagy üres területre másold.
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 5 And Target.Row > 2 Then Masolas Target.Row End If End Sub
A másodikhoz modult kell beszúrnod. A VB szerkesztőben Insert menü, Module. Kapsz egy Module1 nevű modult, amit bal oldalon látsz, jobb oldalon újabb üres felület lesz, ide kell másolnod az újabb makrót.
Sub Masolas(sor) Dim utvonal As String utvonal = ActiveWorkbook.Path & "\" With Sheets("checklist") .Range("B2") = Cells(sor, 2) .Range("B3") = Cells(sor, 3) .Range("B4") = Cells(sor, 4) .Range("B5") = Cells(sor, 5) .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ utvonal & "termek_meres " & Format(Date, "yyyy_mm_dd") & ".pdf", Quality:= _ xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _ OpenAfterPublish:=False End With End Sub
Sok sikert, üdv Kati
Hol maradt a csatolás?
Az adatok lap C2 cellájának a képlete
=HAHIBA(FKERES(A2;árak!A:B;2;0)*B2;"Nem szerepel az árak lapon")
Újabban a data.hu sem fogadja az xlsm kiterjesztésű fájlokat. Bemásolom ide a makróját.
Sub Nyomtatas() Dim uzlet, sor As Integer, db, kimeno As String, x As Integer, oszlop As Integer Dim hol, szam As Integer, ide As Integer Sheets("Nyomtatandó").Select sor = 2 Do While Sheets("Munka1").Cells(sor, "A") <> "" Range("A:C").ClearContents uzlet = Sheets("Munka1").Cells(sor, "A") hol = Application.Match(uzlet, Sheets("Munka2").Columns(1), 0) kimeno = Sheets("Munka2").Cells(hol, 2) If Sheets("Munka1").Cells(sor, "B") <> "" Then hol = Application.Match(uzlet, Sheets("Munka1").Columns(1), 0) db = Application.WorksheetFunction.RoundUp(Sheets("Munka1").Cells(hol, 2) / 3, 0) szam = 1: ide = 1 Do While szam <= db For oszlop = 1 To 3 Cells(ide, oszlop) = "Üzlet száma: " & uzlet & vbLf & "Kimenő sor: " & kimeno _ & vbLf & Format(Date, "yyyy.mm.dd") Next ide = ide + 1 szam = szam + 1 Loop Range("A1").CurrentRegion.Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End If sor = sor + 1 Loop End Sub
- A hozzászólás módosításra került: 4 years, 6 months telt el-delila.
Nem volt nekem teljesen tiszta, mit is akarsz elérni. Úgy látom, címkéket szeretnél nyomtani, mindegyiket a Munka1 lap B oszlopában meghatározott darabszámmal.
Csatolok egy füzetet. A Nyomtatandó lapra tettem egy gombot, ami indítja a nyomtatást. Sorra veszi az üzleteket, összeállítja a címkéket, és kinyomtatja a megadott példányszámmal. Van ahol többet 1-2 darabbal, ami osztható maradék nélkül 3-mal. Pl. a 16 db helyett 18 címkéd lesz.
Ha csak 1-1 kiválasztott üzlethez nyomtatnál, nem az összeshez, akkor módosítom a makrót.Itt az automatikus javításhoz beírt szavakat lehet javíttatni. Pl. a hogz beírása után kijavítja hogy-ra.
Nem egészen ide tartozik, de érdemes rövidítéseket bevinni. Egy alkalommal sokszor kellett (volna) leírnom egy táblázatba a zöld/sárga vezeték kifejezést. A Módosítandó rovatba beírtam a zs-t (fontos, hogy ne legyen értelmes szó), a Jó szöveghez pedig a hosszú szöveget. Ebből kisebb galiba lett, mert a fájlt átadtam valakinek, és mint kiderült, vitte a kibővített szótárat magával. Mikor be akart írni rövidítve az egy nevet, Molnár Zsigmondot (Molnár Zs), Molnár zöld/sárga vezeték lett belőle. 🙂
Fájl | Beállítások | Nyelvi ellenőrzés.
Megoldás lehet a KEREKÍTÉS függvény.
=KEREKÍTÉS(SZUM(D2:D6462);0)
Ez könnyen megeshet. Szégyenlem, de nem figyeltem fel rá, milyen kicsi számról van szó. 🙁
Természetesen nem hasonlítottam össze a 644 cella adatait. Szűrtem a nem nulla, és nem 1,15961E-11 értékre, Kijelöltem a látható cellákat, mire a státuszsorban megjelent az összegük. Ez megegyezett a SZUM-os cella értékével.
Miért lenne nulla az összeg, mikor 644 sorban más érték van? Nézd meg a szűrő segítségével!
A szűrésből kihagyod a 0, és a SZUM értékét, összegezve a szűrt állományt látod, hogy megegyezik a képlettel.If Target.HasFormula = False Then ActiveCell.Value=ActiveCell.Value 'nem képlet
Szia!
Zárás előtt kijelölöd a tartományt, másolod, és saját magára értékként beilleszted.
Range("A1").CurrentRegion.Copy Range("A1").PasteSpecial xlPasteValues
Szia!
Másképp oldanám meg. A Névkezelőben új nevet vettem fel, a neve Képlet. A Hivatkozás rovatba írtam a képletet, ami az egyszerűség kedvéért egy szorzás. Ezt adtam meg a C1-ben állva. A C oszlopban =Képlet szerepel, ami összeszorozza az azonos sor A és B celláját. Nézd meg a H oszlopban állva a Névkezelő Képlet-ét, ott már az F és G cellákat szorozza össze, vagyis a tőle balra szereplő két oszlop tagjait.
Most a Névkezelőben írd át a szorzást pl. összegzésre, és csodálkozz rá az eredményre a csatolt fájlban.
Nem kell kijelölgetned és másolgatnod.Üd, Kati
- A hozzászólás módosításra került: 4 years, 7 months telt el-delila.
Attachments:
You must be logged in to view attached files.Nem sikerült a csatolás, de a DARABTELI függvény lesz jó ehhez a feladathoz, nézd meg a súgóban.
Keress rá ilyesmire: eseménykezelés, excel, vba. Jobban jársz, mintha én próbálnám elmagyarázni.
-
SzerzőBejegyzés