-
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
-
Delila_1
Topikgazda
válasz Sprite75 #17936 üzenetére
Mi a cél?
Az, hogy a B táblázat adatait kétfelé szortírozza az A1 és A2 táblázatba?
Esetleg az, hogy a rendszám és a sofőr neve szerint összesítse a mennyiségeket (K oszlop) ?Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
mr.nagy
tag
válasz Sprite75 #17939 üzenetére
Sziasztok!
Egy olyan makróra lenne szükségem ami a következő műveletet végzi:
A munkafüzet "Munka2" fülén változó sor hosszúságú adatok vannak ebből az A oszlopban cikkszámok, a B oszlopban darabszámok. Ebből makrónak az első cikkszámot annyiszor kellene átmásolni a "Munka1" fül megadott celláiba, amennyi a darabszám a B oszlopbanm. Majd így tovább amíg van adat az alábbiak szerint.
A "Munka1" fülön 12 cellába írhatja a cikkszámokat: C3; C13; C23; C33; C43; C53; L3; L13; L23; L33; L43; L53. Miután a cikkszámok a helyükre kerültek jön egy nyomtatás, majd jöhet a következő 12 cikkszám a fentiek szerint.
Megoldható ez?
HMNote10Pro
-
Delila_1
Topikgazda
-
Delila_1
Topikgazda
válasz Sprite75 #17953 üzenetére
Feltételezve, hogy minden lapon az első címsor, a lenti makró elvégzi a szortírozást.
Sub Szortiroz()
Dim lapnev$, sor As Long, usor As Long, usorLap As Long
Application.ScreenUpdating = False
Sheets("szerkeszt").Select
usor = Range("A" & Rows.Count).End(xlUp).Row
For sor = 2 To usor
lapnev$ = Cells(sor, "A")
usorLap = Sheets(lapnev$).Range("A" & Rows.Count).End(xlUp).Row + 1
Range(Cells(sor, "A"), Cells(sor, "E")).Copy Sheets(lapnev$).Range("A" & usorLap)
Next
Application.ScreenUpdating = True
End Sub[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz Sprite75 #17979 üzenetére
Küldd el a füzetet, mert nem látom, miért állhatott le hibával. Ha a "szerkeszt" lap A oszlopában nincsenek adatok, akkor sem futhat ennél a sornál hibára, csak az usor változó értéke 1 lesz.
A címet megtalálod az adataimnál.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
wjani
tag
válasz Sprite75 #17981 üzenetére
Szia!
Annyit vettem, észre, hogy Delila_1-nél Ő külön kiválasztja a munkafüzet lapját, majd azon hivatkozik az "usor"-ra.
Te pedig a változóba a lap.cella értéket teszed bele.
Itt kérdés, hogy a lap mögötti dollár jel minek kell oda.Üdv.
WjaniCoViA Online könyvkereskedés,
-
Sprite75
tag
válasz Sprite75 #19062 üzenetére
Valami megoldásfélét találtam, bár nem teljesen jó:
{=MAX(HA($G:$G=J14;$D:$D))-(M8+M9+M10+M11+M13+M12+$K$2)}A havi legnagyobb km-ra állásból kivonja ez előző havi értékeket minusz az előző évi záró km-óra állást.
Ez majdnem jó megoldás akkor ha van minden hónapban tankolás, de pl ennél az autónál is a februárnál minusz érték jönne ki ha a semmiből kivonja a januári futott km-ert. Ja és még azoknál a hónapoknál is hülyeséget számol ami még hátra van az évből. (8,9,10,11,12 hó)Szóval finomítani kellene a dolgon, vagy ha valakinek teljesen más ötlete van azt is szívesen fogadom
-
Sprite75
tag
válasz Sprite75 #19063 üzenetére
Bonyolítás
{=HA(MAX(HA($G:$G=J14;$D:$D))=0;0;MAX(HA($G:$G=J14;$D:$D))-(M8+M9+M10+M11+M13+M12+$K$2))}
Ha a D oszlop vizsgálatának eredménye 0 mert nincs abban a hónapban tankolás akkor az adott hónap cellaértéke 0 egyébként pedig elvégzi az előbbiekben leírtakat.
Kicsit hosszú a képlet de működik -
-
Mutt
aktív tag
válasz Sprite75 #19062 üzenetére
Hello,
...a hónapok száma alapján kellene az adott hónap utolsó tankolási Km-ét kivonni az előző hónap utolsó tankolási Km-éből....
Ez az én képletem az M8-as cellába:
=(HAHIBA(INDEX(D:D;ÖSSZESÍT(14;6;SOR($G$2:$G$19)/($G$2:$G$19=J8);1));0)-HA(J8=1;$K$2;HAHIBA(INDEX(D:D;ÖSSZESÍT(14;6;SOR($G$2:$G$19)/($G$2:$G$19=J8-1);1));0)))*SZÁM(HOL.VAN(J8;G:G;0))*SZÁM(HA(J8=1;1;HOL.VAN(J8-1;G:G;0)))A működése:
1. ÖSSZESÍT(14;6;SOR($G$2:$G$19)/($G$2:$G$19=J8);1)) kikeresi a hónap utolsó km sorának számát. pl. Április hónapnál 9-es sor.
Az ÖSSZESÍT ezen felhasználását itt mutattam be, de ugyanerre juthatunk ezen képletekkel is,:
=SZORZATÖSSZEG(MAX(($G:$G=J8)*SOR($G:$G)))
{=MAX(HA((G:G=J8);SOR(G:G);0))}2. Ezt a sorszámot felhasználva INDEX függvénnyel kiolvassuk a D-oszlopból az értéket. Áprilisban ez 45205 lesz.
3. Az egészet becsomagoljuk egy HAHIBA-ba, ahol hiba esetén 0-t kérünk vissza.
4. Az első három lépést ugyanúgy lejátszuk, de eggyel korábbi hónappal (ugyanaz a képlet csak J8 helyett J8-1 -et használunk). pl. Március esetén az érték 43444 lesz.
5. Itt még figyelembevesszük, hogy január esetén az előző évi óraállás kell K2-ből; ezt a HA(J8=1;K2;....) rész csinálja.
6. A két számot kivonjuk egymásból. pl. 45205-43444=1761Kész is lennénk, ha minden hónapban és megelőző hónapban lenne érték, de ez nem garantált.
7. Megnézzük, hogy a vizsgált hónap száma G oszlopban megtalálható-e a HOL.VAN függvénnyel. Ez egy számot add vissza ha ott van a keresett hónap. A SZÁM függvény tehát vagy IGAZ vagy HAMIS-ra fordítja le az eredményt.
8. Ugyanezt megcsináljuk a megelőző hónapra, de itt még figyelünk arra hogy január előtti hónap is kezelve legyen.
9. A 6-os lépésben kapott számot megszorozzuk a 7 és 8-as eredménnyel. pl. 1761*1*1=1761Március esetén a számok így jönnek ki:
Március végi eredmény: 43444
Február végi eredmény: 0 (mivel hibára fut a függvény és ekkor 0-t kapunk vissza).
Március bent van a G oszlopban: IGAZ (1)
Február bent van a G oszlopban: HAMIS (0)
Az eredmény: (43444-0)*1*0 = 0üdv.
[ Szerkesztve ]
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Delila_1
Topikgazda
válasz Sprite75 #19074 üzenetére
Sokkal egyszerűbben M8-ba:
=HA(DARABTELI(G:G;J8)=0;0;INDEX(D:G;HOL.VAN(J8;G:G;1);1)-K2)
M9-től:
=HA(DARABTELI(G:G;J9)=0;0;INDEX(D:G;HOL.VAN(J9;G:G;1);1)-INDEX(D:G;HOL.VAN(J8;G:G;1);1))
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Mutt
aktív tag
válasz Sprite75 #19074 üzenetére
Hello,
Nem egyszerű a képlet, így nem kell érteni azonnal, ezért próbáltam meg levezetni. A lényeg, hogy lásd máshogy is el lehet érni, és hogy lehessen ötletet meríteni belőle.
1 hiba van benne: fixen $G$2:$G$19-re hivatkozom, mert ennyi adat volt, helyette G:G hivatkozás kell, de mivel van már más megoldás nem kell ezzel foglalkoznod..
Márciusra azért nem ad értéket, mert február hónapban nem volt kilóméteróra-állás rögzítve.Így nem tudja mihez viszonyítson. Ezért van a levezetésemben a 7 és 8-as pont, ilyenkor 0-t ad vissza.
A lényeg, hogy neked működő képletet tudott a közösség adni.
üdv.
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
lappy
őstag
válasz Sprite75 #30046 üzenetére
Első körben a rendszámhoz vagy a típushoz rendelned kellene egy listát amiből kitűnik, hogy milyen típusú a jármű. Ha ez megvan akkor már egy egyszerű képlettel meghatározható és automatikusan kitölthető a táblázat.
Amíg nincs adatbázis addig marad a manuális megoldás.u.i:
eléggé vicces hogy egy ifa személyszállító egy busz meg hússzállító (bár az embereken is van hús csak nálunk nem fogyasztja senki )[ Szerkesztve ]
Bámulatos hol tart már a tudomány!
-
Delila_1
Topikgazda
válasz Sprite75 #30448 üzenetére
Nem szeretnék egy halom adatot bevinni. Elküldenéd a fájlt?
Ha nem emlékszel a címemre, privátban megadom.Szerk: Nem kell elküldeni, megtaláltam a régit.
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz Sprite75 #32318 üzenetére
A feltételes formázást is elhagyhatod, ha az Excel beállítási | Speciális | Beállítások megjelenítése ehhez a munkalaphoz menüpontban kiveszed a pipát a "Nulla megjelenítése a nulla értékű cellákban" elől.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Sprite75
tag
válasz Sprite75 #32336 üzenetére
Delila egy korábbi írását felhasználva használva
[link]csináltam egy olyan oszlopot ahová kiírja egy sorban történt utolsó módosítás idejét.
Így:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("C4:AY108"), Target) Is Nothing Then
Cells(Target.Row, 52).Value = Time
End If
End SubAztán ezt továbbgondolva szerettem volna megoldani hogy az épp kijelölt cella más színű legyen (a cellába íratott 1-est felhasználva a feltételes formázással) de nem teljesen jó a dolog.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("C4:AY108"), Target) Is Nothing Then
Cells(Target.Row, 54).Value = "1"
End If
End SubVagy teljes nem jó az elképzelés?
[ Szerkesztve ]
-
Delila_1
Topikgazda
válasz Sprite75 #32337 üzenetére
Minek külön feltételes formázás? Ha már ír valamit a makró, egyúttal a színt is módosíthatja.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [C4:AY108]) Is Nothing Then
Cells(Target.Row, 52).Value = Time
Cells(Target.Row, 52).Interior.Color = vbRed
End If
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz Sprite75 #32347 üzenetére
Fferi tovább fejlesztette, ami a 2010-es verziótól kezdve műxik.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Sprite75
tag
válasz Sprite75 #32376 üzenetére
Még egy apróság.
Azon a munkalapon amin fut ez a célkeresztes dolog nem működik a visszavonás gomb.
Fferi50 vagy Delila_1 szerintetek leht ezzel valamit kezdeni?
A gomb szürke lesz amit beírok valami adatot és ütök egy entert.
Az én esetemben azon a lapon ahol ezt szeretném használni a célkeresztes makrót a fejléc és az első két oszlop zárolva lenne arra a területre ahová pedig a rendeléseket írná a kolléga csak számokat írhat. Tulajdonképpen nem tud olyan cellát módosítani ami fontos lehet, (pl szumma a lap alján stb) így nem is biztos hogy valaha szükség lenne a visszavonás gombra, de ha mégis működne az is az lenne az igazi.
-
Fferi50
őstag
válasz Sprite75 #32380 üzenetére
Szia!
Sajnos, amint makró módosítja egy cella tartalmát, azonnal "elvész" a visszavonási automatizmus az Excelben... gondolom azért, mert 2 különböző módszerű eljárásról van szó.
Elvileg nem lehetetlen a változtatások nyomon követése makróban és ehhez kapcsolódóan saját makrót írni a visszavonásra - saját parancsgombbal ill. billentyű kombinációval - de most sajna nincs energiám hozzá, hogy belefogjak. Hátha valakinek van már ilyen megoldása korábbról vagy talonban.Üdv.
-
Sprite75
tag
válasz Sprite75 #32380 üzenetére
Átgondoltam. Mégis lehet hogy jó lenne a visszavonás gomb, mert mi van akkor ha a kedves koléga tévedésből egy már előzőleg beirt rendelést módosít de nem tudja hogy mi volt abban a cellában, akkor jól jönne a visszavonás. Vagy esetleg olyat lehet már egy előzőleg beítr adatot csak egy figyelmeztető ablak megjelenése után lehessen átírni?
-
Sprite75
tag
válasz Sprite75 #32383 üzenetére
Ilyet már találtam de ez ugye minden változáskor figyelmeztet jelenleg A1 és C10 között. Ez lehet úgy átírni hogy csak akkor figyelmeztessen ha az adott cellában már volt valami szám 1-300ig?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("A1:C10")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
' Display a message when one of the designated cells has been
' changed.
' Place your code here.
MsgBox "Cell " & Target.Address & " has changed."
End If
End SubEz a táblázat minden reggel egyébként üres lenne, úgy vennék fel az aznapi rendeléseket.
[ Szerkesztve ]
-
Fferi50
őstag
válasz Sprite75 #32384 üzenetére
Szia!
A Worsheet_SelectionChange eseménykezelőbe az End Sub előtti End With elé írd be
.Activate
Ezután használhatod ezt az eseménykezelést:Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range, ujertek As Integer
Set KeyCells = Range("C4:AY108") ' ez a vizsgálandó terület
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
ujertek = Target.Value
Application.EnableEvents = False
Application.Undo 'visszaállítjuk a változás előtti értéket
If Target.Value >= 1 And Target.Value <= 300 Then 'ha a régi érték jó
MsgBox "A(z) " & Target.Address(rowabsolute:=False, columnabsolute:=False) & " cella már tartalmazott egy helyes értéket: " & Target.Value, vbCritical, "Ellenőrzés"
Else
If ujertek < 1 Or ujertek > 300 Then 'ha a beírt új érték nem jó
MsgBox "Ez az érték nem felel meg a követelményeknek: " & ujertek, vbCritical, "Ellenőrzés"
Else
Target.Value = ujertek
End If
End If
Application.EnableEvents = True
End If
End Sub
Szépséghibája, hogy nem áll vissza arra a cellára, amelyikbe az értéket írták be, hanem mindig abba az irányba "ugrik", amerre a cellából kiléptek (hiszen többféle módon - pl. enter,tab, nyíl billentyűk - is el lehet hagyni a cellát).Üdv.
-
Fferi50
őstag
válasz Sprite75 #32397 üzenetére
Szia!
Íme a makró:
Ellenőrzi, hogy ne szöveg legyen beírva, érvényes legyen a számérték amit beírtak, illetve rákérdez, hogy felülírható-e az egyszer már bevitt számérték. Beírja az utolsó módosítás időpontját az AZ oszlopba (tehát, ha sikeres az új érték beírása a cellába, akkor ír időpontot az AZ oszlopba, egyébként nem).Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range, ujertek As Integer
Set KeyCells = Range("C4:AY108") ' ez a vizsgálandó terület
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
Application.EnableEvents = False
If Not IsNumeric(Target.Value) Then
MsgBox "Nem számot írtál be, kérlek javitsd ki!", vbCritical, "Ellenőrzés"
With Application
.Undo
.EnableEvents = True
End With
Exit Sub
End If
If Target.Value < 0 Or Target.Value > 300 Then
MsgBox "Ez az érték nem felel meg a követelményeknek: " & Target.Value, vbCritical, "Ellenőrzés"
With Application
.Undo
.EnableEvents = True
End With
Exit Sub
End If
ujertek = Target.Value
Application.Undo 'visszaállítjuk a változás előtti értéket
If Target.Value >= 1 And Target.Value <= 300 Then 'ha a régi érték jó
If MsgBox("A(z) " & Target.Address(rowabsolute:=False, columnabsolute:=False) & " cella már tartalmazott egy helyes értéket: " & Target.Value & vbLf & "Kicseréli erre: " & ujertek, vbYesNo, "Ellenőrzés") = vbYes Then
Target.Value = ujertek
End If
Else
Target.Value = ujertek
End If
Cells(Target.Row, 52).Value = Time
Application.EnableEvents = True
End If
End SubÜdv.
-
Fferi50
őstag
válasz Sprite75 #32868 üzenetére
Szia!
2013-as excelben már 255 paramétere lehet az összefűz függvénynek. Nézd meg lsz. a szerkesztősoron a függvényre kattintva, hogy hány paramétert enged meg. (Beírod az =Összefűz( szöveget, rákattintasz az Fx szimbolra, az előugró ablakban ott a szöveg.)
Másik lehetőség: Szürő az oszlopra, nem üresre állítva a szűrőt megkapod azokat a cellákat, amelyekben van érték. Ezeket egyben kijelölheted, átmásolhatod egy másik munkalap összefüggő tartományába. Máris csak pár cellát kell összefűzni, arra meg jó a & műveleti jel is.
Üdv.
[ Szerkesztve ]
-
Pakliman
tag
válasz Sprite75 #32881 üzenetére
Szia(sztok)!
"Elegánsabb" megoldás, de kell a VBA:
Public Function MyÖsszefűz(terület As Range, Optional elválasztó As String = ";") As String
Dim cella As Range
Dim temp
For Each cella In terület
If cella <> "" Then temp = temp & IIf(temp <> "", elválasztó, "") & cella
Next cella
MyÖsszefűz = temp
End Function -
sztanozs
veterán
válasz Sprite75 #34736 üzenetére
Sub PDFment()
'
' PDFment Makró
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="\\TICKETNYOMTATO\Megosztott\Rendelés\" & Format(Now(),"yyyy.mm.dd.hh.mm") & ".pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True
End Sub[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
Új hozzászólás Aktív témák
- Eladó Steam kulcsok kedvező áron!
- Steam, Windows, Origin kulcsok, előfizetések közvetlenül a kiadótól, a LEGJOBB ÁRON!
- Windows, Office licencek a legolcsóbban, egyenesen a Microsoft-tól - 2990 Ft-tól!
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- The Witcher Enchanced Edition PC
- Régi PC Játékok - Rome Total War/Barbarian Invasion/SpellForce/Simcity 4
- The Witcher 2: Assassins of Kings - nagydobozos, komplett, gépben sem volt
- World of Warcraft 15th Anniversary Collectors Edition - BONTATLAN - shipper barna kartonban - ÚJ
- Win 11 pro coa matrica