-
GAMEPOD.hu
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
-
Sanyi.mTs
addikt
segítséget kérnék.
Van 2 lap (L1, L2)
Az L1 lapon a C2 cellát kellene megvizsgálni. Ha XC2 az értéke, akkor BC2-t, ha XC3, akkor BC3-at, ha XC4 az érték, akkor BC4-et írjon az L2 lap B2 cellába.köszi.
szerk.: Excel 2013, magyar
[ Szerkesztve ]
-
DeFranco
nagyúr
-
-
Sanyi.mTs
addikt
köszi, a "ha" függvény jó lesz.
a példában valóban az X-et kellett csak változtatni, de valójában nem csak azt. -
bumlet
csendes tag
Sziasztok!
A következőben szeretnék segítséget kérni. Egy olyan excel táblát szeretnék készíteni, melyben hetekre bontva vezetném, hogy a dolgozok milyen projektekre vannak beosztva. Valahogy így nézne ki:
Jelenleg úgy oldottam meg, hogy egy külön formon kell bevinni hogy adott dolgozó adott napon mit csinál, és ebben a táblában csak visszanézni lehet az adatokat. Viszont szeretném ezt egyszerűbben megoldani egy táblában lehetőleg. Bármilyen ötletet szívesen fogadok, előre is köszönöm
-
Sanyi.mTs
addikt
adott két lap. Az elsőre külső helyről másolok adatokat.
meg lehet oldani, h az első lap K oszlopa automatikusan "szövegből oszlopok" szerkesztéssel jelenjen meg a 2es lap A....D oszlopaiban? -
lappy
őstag
válasz Sanyi.mTs #32362 üzenetére
Option Explicit
Public Function LastRowWithData(ByRef sht As Excel.Worksheet, Optional colName As String = "A") As Long
LastRowWithData = sht.Range(colName & sht.Rows.Count).End(xlUp).Row
End Function
Sub SplitToColumns(ByRef sColNames As String, ByRef strSeparator As String, ByRef rngDest As Excel.Range)
Dim arrColNames As Variant, i As Long
arrColNames = Split(sColNames, strSeparator)
For i = LBound(arrColNames) To UBound(arrColNames)
rngDest.Offset(0, i).value = arrColNames(i)
Next i
End Sub
Sub PerformTheSplit()
Dim totalRows As Long, i As Long, sColNames As String
totalRows = LastRowWithData(Munka1, "K")
For i = 1 To totalRows
sColNames = Munka1.Range("K" & i).value
Call SplitToColumns(sColNames, ",", Munka2.Range("A" & i))
Next i
End SubBámulatos hol tart már a tudomány!
-
b3n1t0
csendes tag
-
bumlet
csendes tag
Köszi szépen, közben kitaláltam egy másik megoldást és úgy néz ki ez jobb lesz nekem. A két nyílgombhoz hozzárendelt makrókat bővítem tovább, úgy hogy egy másik munkalapon rögzített adatbázisból adja vissza az adatokat, ha pedig van változás akkor beleírja őket az adatbázisba. Viszont ehhez biztos lesz még egy-két kérdésem
-
Delila_1
Topikgazda
válasz b3n1t0 #32365 üzenetére
A makrót modulba kell tenned.
Sorra veszi az A oszlop dátumait. Ha van azoknak megfelelő lap a füzetben, akkor annak az első üres sorába másol. Ha nincs létrehozza a lapot.
Mivel lapnévben nem szerepelhet a törtjel, helyette alsó kötőjelet ír. Az A oszlopban maradhat a törtjeles dátum, nem kell módosítanod.
Sub Kulon_Lapra()
Dim sor As Long, lapnev As String, a, hova As Long
sor = 1
Do While Cells(sor, 1) <> ""
lapnev = Cells(sor, "A")
lapnev = Left(lapnev, 2) & "_" & Mid(lapnev, 4, 2) & "_" & Right(lapnev, 2)
On Error Resume Next
Set a = Sheets(lapnev)
If Err.Number <> 0 Then
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = lapnev
Sheets(1).Activate
End If
On Error GoTo 0
hova = Application.WorksheetFunction.CountA(Sheets(lapnev).Columns(1)) + 1
Rows(sor).Copy Sheets(lapnev).Cells(hova, 1)
sor = sor + 1
Loop
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.
-
bumlet
csendes tag
válasz Delila_1 #32370 üzenetére
Jelenleg így néz ki:
https://drive.google.com/file/d/0B7b59Ad833pDTDgtQUhEU2tkcUVjX2llREJXUms5Y05tdi1v/view?usp=drivesdk
Ebből szeretném az első munkalapot kihagyni, mivel eléggé bonyolult a használata és jelen formában nagyon macera a bővítése. Nem sikerült dinamikussá tennem, és közben arra gondoltam hogy egyszerűbb lenne csak a 2. és 3. munkalap használata, még pedig úgy hogy lényegében csak a 3. munkalapot használnám, a 2. csak adatbázisként funkcionálna. A kettő közé kellene egy olyan makró, ami megjeleníti a 3. munkalapon a 2. munkalapról a dátumoknak megfelelő adatokat, viszont ha a 3. munkalapon módosítok egy adatot, akkor azt tárolja le a 2. munkalap adatbázisában (pl egy save gomb vagy enter leütés).
Az elmélet meglenne hozzá, problémám csak azzal van, hogy nem tudom hogyan hivatkozzak adott cellákra. Ha range-ket adok meg oké a dolog, viszont minden napra létre kell hozzak egy range-t, ami nem értelemszerű, pláne ha egyszerűsíteni akarok.
[ Szerkesztve ]
-
Delila_1
Topikgazda
válasz bumlet #32371 üzenetére
Ez így rengeteg.
Kiválaszthatnád a nevet és a hónapot 1-1 érvényesítésből.
A hónapnak megfelelő userform indulna a 12 közül. Ezen egy label címe a kiválasztott dolgozó neve lenne. Most nem látszik, hogy kinek a hónapját indítottad.Az adatfelvitelnél a sort a dolgozó neve adhatná, amit egy MATCH függvénnyel kikereshetsz, az oszlopot pedig a dátum. Az utóbbi az aktuális év, a form neve (december) számmá alakítva (pl. egy fkeressel), a nap pedig a kiválasztott combobox nevéből adódik.
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 Teo.papa #32355 üzenetére
Próbálgattam kicsit.
Nekem 2013-as van ugyan de win 10.Kiraktam vagy 30 ikont a gyors elérésre, amiből kb 25 látható is volt egyszerre. Ha vagy a monitor felbontását változtattam vagy a a képernyő beállításoknál a szöveg, az alkalmazások és más elemek méretét változtató csúszkát állítottam akkor változott a látható ikonok száma.Ha ez a két érték nálad mindkét laptopon egyforma akkor sajna más ötletem nincs.
-
Sprite75
tag
válasz Delila_1 #32352 üzenetére
Átolvasgattam mindent amit annak idején Fferi50 - el írogattatok ezzel kapcsolatban, és végül is sikerült úgy, hogy a munkalapon tudok használni feltételes formázást úgy hogy a "célkereszt" is jól működik.
Egy kis összefoglaló ha valakinek később kellene
Ezt a kódot kell a Munka1 kódlapjára
Public fmtcondis As New Collection
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ujfmtr As FormatCondition, ujfmtc As FormatCondition, ujfmtt As FormatCondition
On Error Resume Next
If IsError(Target.Cells.Count) Then Exit Sub
On Error GoTo 0
If Target.Cells.Count <> 1 Then Exit Sub
If fmtcondis.Count > 0 Then
On Error Resume Next
For Each fmt In fmtcondis
fmt.Delete
fmtcondis.Remove 1
Next
On Error GoTo 0
End If
With Target
With .EntireRow
Set ujfmtr = .FormatConditions.Add(Type:=xlExpression, Formula1:="1")
With ujfmtr '.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
.SetFirstPriority
End With
End With
fmtcondis.Add ujfmtr, "fmt1"
With .EntireColumn
Set ujfmtc = .FormatConditions.Add(Type:=xlExpression, Formula1:="1")
With ujfmtc '.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
.SetFirstPriority
End With
End With
fmtcondis.Add ujfmtc, "fmt2"
Set ujfmtt = .FormatConditions.Add(Type:=xlExpression, Formula1:="1")
ujfmtt.Interior.ColorIndex = 36
ujfmtt.SetFirstPriority
fmtcondis.Add ujfmtt, "fmt3"
End With
End SubEzt pedig a ThisWorkbook -ra
Public kilepo As Boolean
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
If kilepo Then Exit Sub
Application.ScreenUpdating = False
ActiveCell.Offset(0, 1).Select
ActiveCell.Offset(0, -1).Select
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If MsgBox("Valóban kilép?", vbQuestion + vbYesNo, "Bezárás") = vbNo Then
Cancel = True
Else
valasz = MsgBox("Menti a változásokat?", vbQuestion + vbYesNoCancel, "Bezárás")
If valasz = vbCancel Then Cancel = True: Exit Sub
If Munka1.fmtcondis.Count > 0 Then
For Each fmt In Munka1.fmtcondis
fmt.Delete
Munka1.fmtcondis.Remove 1
Next
End If
If valasz = vbNo Then
ThisWorkbook.Saved = True
kilepo = True
Else
kilepo = True
ThisWorkbook.Save
End If
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Munka1.fmtcondis.Count > 0 Then
For Each fmt In Munka1.fmtcondis
fmt.Delete
Munka1.fmtcondis.Remove 1
Next
End If
End Sub
Private Sub Workbook_Open()
Application.ScreenUpdating = False
ActiveCell.Offset(0, 1).Select
ActiveCell.Offset(0, -1).Select
Application.ScreenUpdating = True
End SubÍgy ez a célkereszt a kijelölt cellára a Munka1 nevű lapon működik.
Ha pedig ugyanezen a lapon feltételes formázást is kell használni akkor az itt leírtakat kell alkalmazni.
Még egyszer köszönöm Delila_1 és persze Fferi50
-
bumlet
csendes tag
válasz Delila_1 #32372 üzenetére
Köszi a tippeket
Abban tudnál esetleg segíteni, hogy vb-ben hogyan tudok cellatartományra hivatkozni? Nem a rangre gondolok, hanem pl: A2:A16 az első munkalapon, legyen egyenlő a második munkalap A5:A19-el? (A második munkalapon változóval szeretném megadni, hogy hanyadik oszlop adott értékeivel legyen egyenlő) Vagy lehet ezt egyáltalán? Esetleg más megoldás?
Előre is nagyon köszönöm
-
Delila_1
Topikgazda
válasz bumlet #32377 üzenetére
Ilyesmire gondolsz?
Sub mm()
Dim oszlop As Integer, sor As Long
oszlop = 6: sor = 10
Sheets(1).Range("A2:A16").Copy Sheets(2).Cells(sor, oszlop)
End SubNézd meg a privátodat!
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 Fferi50 #32381 üzenetére
És ezt is bonyolult megcsinálni hogy a C4 AY108 területen ha már van adat (1-300 ig) akor azt ne lehessen módosítani csak ha egy figyelmeztetést le ok-z a felhasználó. Ezen a területen csak az üres cellékat lehessen módosítani figyelmeztetés nélkül.
Ui
ha valakinek sikerül megoldani vendégem egy jó tyúk pörire.
Cím privátban
Pöri -
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 ]
-
róland
veterán
Adatérvényesítést hogy lehet másolni? (Nincs kedvem 300-szor egyedileg elkészíteni.)
http://logout.hu/cikk/mi_is_az_a_htpc/teljes.html; Három emeleten át egy teljes liftrapszódiát játszik!
-
excelproblem
újonc
Sziasztok!
Az adatsoromra (X;Y) illesztett függvény képletével egész más x értéket kapok az új oszlop cellájában, mint amit a grafikonon lévő görbe alapján vártam:
Miért van ez, ill. mi lenne a helyes cellaképlet, amivel a mellékelt ábrán látható módon valóban az adatsort "kiegyenlítő" függvénygörbe értékeit kapnám?
Előre is köszönöm a választ a kedves segítőnek!
-
Delila_1
Topikgazda
válasz excelproblem #32388 üzenetére
Az A oszlop helyett a B-re hivatkozol.
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 excelproblem #32390 üzenetére
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
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.
-
Sprite75
tag
válasz Fferi50 #32392 üzenetére
Hello
Az ez előző összefoglaló írásomban nem írtam, hogy egy ilyent is raktam bele
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [C4:AY108]) Is Nothing Then
Cells(Target.Row, 52).Value = Time
End If
End SubEzt a Munka 1 kódlapjára írtam, de most , hogy bemásoltam azt is amit csináltál hibát ír, ha oda akarom berakni.
Próbálgattam többféle módon de nem sikerült. Össze tudnád hegeszteni a két kódot?
E nélkül működik amit írtál, nagyon szuper, de arra lenne lehetőség hogy úgy jelenjen meg a figyelmeztetés, hogy azért valahogyan tudja módosítani a cella értékét ha pl hibás éréket írt be a felhasználó vagy pl a megrendelő módosítaná a rendelését.
Eddig volt érvényesítés is beállítva a C4 AY108 területre de most azt kivettem, mert ha jól látom akkor a kód ezt is figyeli.
Viszont ha pl tévedésből szöveget írokilyen hibát ír kiBocsi hogy ennyit akadékoskodok de te nem ismered mire képes a munkahelyemen Pali bácsi aki majd használná ezt a táblát
Köszi előre is
[ Szerkesztve ]
-
excelproblem
újonc
Még egy Exceles feladat, az előzőnél sokkal nehezebb. Ha erre valaki megtalálja a megoldást, aranyba foglalom a nevét!
A feladat definiálása:
Egy lejtős területre eső hullik, a vizet csatorna vezeti el. A vízmennyiség (Q) változását műszer mérte a csatorna egy kiválasztott keresztszelvényében, diszkrét időközönként, az ábrán látható adatsort eredményezve:Az apadó szakasz monoton csökkenő, ahol az adatsor trendje egy helyen enyhén megváltozik, mert a víz egy része a felszínen lefolyva került a csatornába, a másik része pedig beszivárgott a talajba és késleltetve jelent meg a mederben. Mivel a felszínalatti vizek kiürülése elvileg exponenciális görbét követ, a logaritmikus hálózaton kiegyenesedő Q(t) görbén egy töréspont kéne, hogy jelezze a felszíni lefolyás végét, de nem teszi. Mégis, valahogy az apadó ág szabályosan csökkenő ívében kéne megkeresni a keresett töréspontot valamilyen módszerrel. Több ötletem is volt, pl. az apadó ág egy távoli pontjától visszafelé diszkrét időközönként (szukcesszíven) növeltem a szakaszhosszakat, melyek korrelációs együtthatójának változása jelezhette volna ezt a helyet, de nem tette, egyenletesen változik az R-négyzet. Nem vezetett eredményhez a loess-féle lokális regresszióval simított adatsoron a logaritmált adatok differenciáinak vizsgálata se. Nyilván a megoldásához szükség lesz az adatsort tartalmazó .xlsx fájlra, de itt sajnos nem lehet csatolni. Annak a kedves zseninek, aki ezt megoldja, Nobel-díjat adok, és előre is nagyon köszönöm!
[ Szerkesztve ]
-
Bjørgersson
félisten
óó:pp formátumú cellákat hogyan tudok összegezni úgy, hogy a végeredményt is óó:pp formában kapjam meg? Próbáltam a múltkori 24-gyel szorzós trükkel, viszont nem akar sikerülni.
[ Szerkesztve ]
As if all this was something more than another footnote on a postcard from nowhere, another chapter in the handbook for exercises in futility...
-
lappy
őstag
válasz excelproblem #32396 üzenetére
A görbe felbontásán (kirajzolás) nem lehet változtatni, mert ebből semmi sem utal rá hogy valahol törés lenne.
Bámulatos hol tart már a tudomány!
-
lappy
őstag
válasz Bjørgersson #32398 üzenetére
egy egyszerű összeadás a formátum pedig [ó]: mm; @ ez legyen így mutatja a 24 órán túli időt is.
Bámulatos hol tart már a tudomány!
Új hozzászólás Aktív témák
- Milyen TV-t vegyek?
- Gördeszka topic
- Az NVIDIA szerint a partnereik prémium AI PC-ket kínálnak
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Xbox Series X|S
- Anglia - élmények, tapasztalatok
- Konzolokról KULTURÁLT módon
- BestBuy ruhás topik
- Milyen billentyűzetet vegyek?
- 3D nyomtatás
- További aktív témák...
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! LEGOLCSÓBB! Automatikus 0-24
- Adobe Creative Cloud - 2024. 04. 05 - 2025. 04. 05-ig
- Windows, Office licencek a legolcsóbban, egyenesen a Microsoft-tól - 2990 Ft-tól!
- Eladó Steam kulcsok kedvező áron!