-
Mobilarena
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
-
m.zmrzlina
senior tag
válasz
irodakukac #29599 üzenetére
Egy kicsit más megoldás, ha az eredeti munkafüzetben elnevezed a megnevezés oszlopot pl "original"-nak
A visszaküldött fájl egy szabad oszlopába pedig mehet a következő képlet: /persze csak ha a visszaküldöttben A1-ben kezdődik a megnevezés oszlop.
=HA(DARABTELI(EredetiMunkafüzet2.xlsx!original;A1)=1;"egyezik";"nem egyezik")
-
m.zmrzlina
senior tag
válasz
irodakukac #29599 üzenetére
Van képletes megoldás is.
Pl ha egymás mellé tudod másolni a két oszlopot /ha egyáltalán két oszlopról van szó/ akkor a C1 képlete lehet mondjuk:
=HA(A1=B1;"Egyezik";"Nem egyezik")
Ha volna egy szenzitív adatoktól mentes mintafájlod (vagy kettő) akkor többet lehetne mondani.
-
m.zmrzlina
senior tag
válasz
irodakukac #29588 üzenetére
Az én egyik munkafüzetemben egy nagyon hasonló feladatot a következő pár sor oldja meg. Ebben a formájában csak gondolatébresztő, egy az egyben nyilván nálad nem használható /még csak azt sem állítom, hogy hibátlan/.
Dim arr_Analist()
Dim arr_Digilist()
Dim int_Hibakszama As Integer
Dim str_Hibahely As String
Dim intI As Integer
' egyik listát tömbbe ír
arr_Analist() = ws_Kabelo.range(Cells(2, 1), Cells(int_usor, 1))
' másik listát tömbbe ír
arr_Digilist() = ws_Kabelo.range(Cells(2, int_uoszlop + 1), Cells(int_usor, int_uoszlop + 1))
'ciklus 1-től a tömb végéig(nálam ugyanannyi elemből áll a két tömb
For intI = 1 To UBound(arr_Analist)
'ha a két tömbelem nem egyezik akkor
If Trim(arr_Analist(intI, 1)) <> Trim(arr_Digilist(intI, 1)) Then
'változó értékét növeli
int_Hibakszama = int_Hibakszama + 1
'megjegyzi hanyadik sorban van a különbség
str_Hibahely = str_Hibahely & intI + 1 & ".sor, "
End If
Next
'ha talált hibát kiírja, hogy mennyit és mely sorokban
If int_Hibakszama > 0 Then
MsgBox "Összesen " & int_Hibakszama & " különbség a következő helye(ke)n: " & str_Hibahely
Else
'egyébként mindenki örül :-)
MsgBox "A kétlista azonos."
ws_Script.Activate
End If -
Delila_1
veterán
válasz
irodakukac #29236 üzenetére
Ny.janos javaslatára megírtam az új makrót.
Az Összes... lapodon jelöld ki a tartományodat. Beszúrás | Táblázat. A neve legyen Összes. A másik lapon a W1-be másold be az első lap H oszlopának a címét, a W2-be írd be: készpénz.
A makró (modulban) ennyi
Sub Spec_Szures()
Sheets("házipénztár").Select
Sheets("Összes könyvelési adat").Range("Összes[#All]").AdvancedFilter Action _
:=xlFilterCopy, CriteriaRange:=Range("W1:W2"), CopyToRange:=Range("A1:T1"), _
Unique:=False
End SubAhányszor indítod ezt a makrót, a házipénztár lapodon mindig a friss, kp-s sorok jelennek meg.
Ha az Összes... lapodra teszel indítógombot, azt is mindig átmásolja, ezért nem érdemes oda tenni. Tedd inkább a másik lapra. -
Delila_1
veterán
válasz
irodakukac #29236 üzenetére
Szívesen. Nehogy hamar megöregedj!
-
Delila_1
veterán
válasz
irodakukac #29233 üzenetére
A modulba írtat kiegészítettem azzal, hogy a házipénztár lap előző adatait törölje az új másolás előtt.
Sub Hó_Eleji_KpMásolás()
Dim usor As Long, ter As Range
usor = Range("A" & Rows.Count).End(xlUp).Row
'Előző adatok törlése a házipénztár lapon
Set ter = Sheets("házipénztár").Range("A1").CurrentRegion
ter.Offset(1, 0).Resize(ter.Rows.Count - 1, ter.Columns.Count - 1).ClearContents
'Szűrés készpénzre
ActiveSheet.Range("$A$1:$T$" & usor).AutoFilter Field:=8, Criteria1:="készpénz"
'Szűrt sorok másolása
Range("A2:T" & usor).SpecialCells(xlCellTypeVisible).Copy Sheets("házipénztár").Range("A2")
'Szűrés megszüntetése
ActiveSheet.Range("$A$1:$T$" & usor).AutoFilter Field:=8
End Sub -
Delila_1
veterán
válasz
irodakukac #29233 üzenetére
Szia!
Írtam egy másik makrót, ami megoldja a hóeleji másolást. Ezt a makrót modulba tedd (a Téma összefoglaló szerint). Most írtam bele néhány megjegyzést, hogy tudd, melyik sor mire való.
Sub Hó_Eleji_KpMásolás()
Dim usor As Long, usorHP
usor = Range("A" & Rows.Count).End(xlUp).Row
usorHP = Sheets("házipénztár").Range("A" & Rows.Count).End(xlUp).Row + 1
'Szűrés készpénzre
ActiveSheet.Range("$A$1:$T$" & usor).AutoFilter Field:=3, Criteria1:="készpénz"
'Szűrt sorok másolása
Range("A2:T" & usor).SpecialCells(xlCellTypeVisible).Copy Sheets("házipénztár").Range("A" & usorHP)
'Szűrés megszüntetése
ActiveSheet.Range("$A$1:$T$" & usor).AutoFilter Field:=3
End SubÉrdemes kitenni egy gombot. Lehet ez egy csinos alakzat a felső sorban. Jobb klikk rajta, Makró-hozzárendelés, majd kiválasztod – ha van választék
– a Hó_Eleji_KpMásolás-t. Ez a kényelmesebb módszer, de gomb nélkül is indíthatod pl. az Alt+F8-as megoldással.
Szerk.: A laphoz rendelt makróban lesz egy apró változás, hogy ne fusson hibára, mikor hó elején a sok adatot egyszerre bemásolod. A csillagos sor új.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ide As Long, sor As Long
If Target.Count > 1 Then Exit Sub '**********
If Target.Column = 20 Then
sor = Target.Row
If Range("H" & sor) = "készpénz" Then
ide = Application.WorksheetFunction.CountA(Sheets("házipénztár").Columns(1)) + 1
Range("A" & sor & ":T" & sor).Copy Sheets("házipénztár").Range("A" & ide)
End If
End If
End Sub -
FozzieBear
csendes tag
válasz
irodakukac #29188 üzenetére
Szia, bár azt nem írtad, milyen verzió az excel, de ha Excel 2016, akkor ez kb két egérkattintással, mindenféle makró nélkül megoldható. Ha korábbi (excel 2010 vagy 2013) , akkor is, de akkor fenn kell lennie a Power Query bővítménynek. Ha érdekel a makró nélküli megoldás, írj
-
Delila_1
veterán
válasz
irodakukac #29204 üzenetére
Nagyon szívesen.
A T oszlopot a
If Target.Column = 20 Then
sor figyeli, a 20 helyett annak az oszlopnak a számát írd be, amelyikre reagálnia kell az eseményvezérelt makrónak. A=1, B=2, .... T=20.
-
Delila_1
veterán
válasz
irodakukac #29201 üzenetére
A házipénztárban megmarad a rongyos régi (azt manuálisan kell törölnöd), a módosított bekerül az első üres sorba. Persze csak akkor, mikor a sorban a T oszlop adatát leenterezed a szerkesztőlécen.
Mindig csak az a sor kerül át a másik lapra, ahol a T oszlopba viszel be adatot.
-
Delila_1
veterán
válasz
irodakukac #29196 üzenetére
Akkor másol, mikor az utolsó (T) oszlopba beírod az adatot. Míg nincs kitöltve a teljes sor, addig nem érdemes másolni.
Jól csináltál mindent. A füzetet makróbarátként kell mentened.
-
Delila_1
veterán
válasz
irodakukac #29196 üzenetére
Az Összes...-be viszed be az adatokat, innen másolja a házipénztár lap első üres sorába azt az újonnan bevitt sort, ahol a H oszlopban készpénz szerepel. Azt írtad, az előzőleg bevitt sorokat már átmásoltad. Ha mégsem, legalább fejléc legyen a házipénztár lapon.
-
irodakukac
csendes tag
válasz
irodakukac #29194 üzenetére
Hozzárendeltem a programot a laphoz. (ahogy az elején az összefoglalóban leírtad.
Vittem be új sort az összes munkalapra, hogy lássam az eredményt, de a házipénztár munkalapra nem került át az új készpénzes sor.Gondolkodom, hogy mi lehet a hiba.
1. Összesen munkalaphoz rendeltem a makrót.
2. Ellenőriztem, h. a kifejezések biztosan megegyeznek-e. "készpénz"; házipénztár..... Egyeznek.Amikor a laphoz rendelésnél bemásolom a makrót, kell még vmit csinálni? Én visszamentem az Excel nézetbe (view microsoft excel)
Illetve, ha jól értem, akkor ha az összesen lapon bekerül egy új sor, amiben a H oszlopban készpénz szó szerepel, akkor ez a sor másolásra kerül a házipénztár munkalap első üres sorába? Vagy mindig az összes készpénzes kerül bemásolásra felülírva a korábbit?
Várom válaszod.
-
Delila_1
veterán
válasz
irodakukac #29194 üzenetére
A Rows(sor).Copy Sheets("házipénztár").Range("A" & ide) helyett inkább írj
Range("A" & sor & ":T" & sor).Copy Sheets("házipénztár").Range("A" & ide) -t.
Később jöttem rá, hogy a házipénztár lapod U oszlopában valami képlet szerepelhet.
Az első a teljes sort másolja, kitörölve ezzel az U képletét. -
Delila_1
veterán
válasz
irodakukac #29192 üzenetére
A lenti makrót az Összes könyvelési adat lapodhoz rendeld. Ennek a módja szerepel a Téma összefoglalóban.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ide As Long, sor As Long
If Target.Column = 20 Then
sor = Target.Row
If Range("H" & sor) = "készpénz" Then
ide = Application.WorksheetFunction.CountA(Sheets("házipénztár").Columns(1)) + 1
Rows(sor).Copy Sheets("házipénztár").Range("A" & ide)
End If
End If
End Sub -
Delila_1
veterán
válasz
irodakukac #29190 üzenetére
Még azt add meg, melyik az utolsó oszlop, amit az egyes sorokban kitöltötök.
Mikor ide beírjátok az adatot, a H oszlop tartalmától függően automatikusan átmásolódik majd a teljes sor a házipénztár lap első üres sorába. Melyiket (átutalás, vagy készpénz) másoljuk?
-
Delila_1
veterán
válasz
irodakukac #29188 üzenetére
Az Összes ... lap melyik oszlopa tartalmazza a fizetés módját?
A szöveg így szerepel: készpénz/átutalás , vagy készpénz, vagy átutalás?
-
Fferi50
Topikgazda
válasz
irodakukac #28276 üzenetére
Szia!
Ha legalább 2007-es exceled van, akkor adatok - szövegből oszlopok , elválasztójelnek beírod a / jelet, kijelölöd, hogy hova tegye és enter.
Ha ennél korábbi, akkor a bal(A2; szöveg.keres(A2,"/")-1) és a közép(A2,szöveg.keres(A2;"/")+1;20) a két szétválasztó képlet.
Üdv.
Új hozzászólás Aktív témák
Hirdetés
- Adobe Előfizetések - Adobe Creative Cloud All Apps - 12 Hónap - NYÁRI AKCIÓ!
- ROBUX ÁRON ALUL - VÁSÁROLJ ROBLOX ROBUXOT MÉG MA, ELKÉPESZTŐ KEDVEZMÉNNYEL (Bármilyen platformra)
- Számlás!Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Assassin's Creed Shadows Collector's Edition PC
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- ASUS Radeon RX 7600 V2 Dual OC 8Gb - Aqua gari 26.12.12 ig
- Új monitor állvány - csak össze lett szerelve
- BESZÁMÍTÁS! MSI B450 TomaHawk R5 5600X 32GB DDR4 512GB SSD RTX 3060 XC 12GB Rampage SHIVA 600W
- ÁRGARANCIA! Épített KomPhone i5 13400F 32/64GB RAM RX 7700 XT 12GB GAMER PC termékbeszámítással
- VÉGKIÁRUSÍTÁS - REFURBISHED - Lenovo ThinkPad 40A9 docking station
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest