- Megjelent a Poco F7, eurós ára is van már
- iPhone topik
- Milyen okostelefont vegyek?
- Xiaomi 15 - kicsi telefon nagy energiával
- Redmi Watch 5 - formás, de egyszerű
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Apple Watch Sport - ez is csak egy okosóra
- Magisk
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Xiaomi 14 - párátlanul jó lehetne
-
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
-
Delila_1
veterán
válasz
f(x)=exp(x) #48443 üzenetére
-
Delila_1
veterán
válasz
Lasersailing #48382 üzenetére
Jelentkezz, mindig lesz itt valaki, aki segít.
-
Delila_1
veterán
válasz
Lasersailing #48380 üzenetére
Egyszerűbb, ha ComboBoxot viszel a formra. A RowSource tulajdonságnál megadod a választható tételek helyét, pl. Munka1!A1:A20
Ezután a ComboBox1 értékére hivatkozhatsz a
Private Sub ComboBox1_Change()
makróban. -
Delila_1
veterán
válasz
Darth_Revan #48275 üzenetére
Egy kis makró:
Sub Csere_0_1()
Dim sor As Long, oszlop As Integer
sor = 1
Do While Cells(sor, "A") > ""
oszlop = Cells(sor, Columns.Count).End(xlToLeft).Column
If Application.WorksheetFunction.CountIf(Range(Cells(sor, 1), Cells(sor, oszlop)), "kettő") > 0 Then
Range(Cells(sor, 1), Cells(sor, oszlop)) = 1
Else
Range(Cells(sor, 1), Cells(sor, oszlop)) = 0
End If
sor = sor + 1
Loop
End Sub
-
Delila_1
veterán
válasz
zsoci0914 #48179 üzenetére
Szóval érvényesítést alkalmazol, és az adott sor valamelyik cellájába kell beírni a dátumot.
A makrót a laphoz kell rendelned, és majd makróbarátként kell mentened a füzetet.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Application.EnableEvents = False
Select Case Target.Value
Case "Beérkezve": Cells(Target.Row, "M") = Format(Now, "yyyy.mm.dd hh:mm:ss")
Case "Gyártás alatt": Cells(Target.Row, "N") = Format(Now, "yyyy.mm.dd hh:mm:ss")
Case "Kész": Cells(Target.Row, "O") = Format(Now, "yyyy.mm.dd hh:mm:ss")
Case "Kiszállítva": Cells(Target.Row, "P") = Format(Now, "yyyy.mm.dd hh:mm:ss")
End Select
Application.EnableEvents = True
End If
End Sub
-
Delila_1
veterán
válasz
zsoci0914 #48176 üzenetére
Nem írtad, hogy mi adja a lehetőségeket. Érvényesítés, ComboBox a munkalapon, esetleg ComboBox Userformon. Azt sem írtad, melyik sorba kéred a dátumot és időt.
Találomra vettem azt az esetet, mikor a munkalapon van egy ComboBox, és az A oszlopban folyamatosan vannak adatok.
A laphoz rendeltem egy makrót, ami az első üres sorba írja ki a választásnak megfelelően a B, C, D, ill. az E oszlopba. A választási lehetőségek "B oszlopba dátum", "C oszlopba dátum", ...
Megeshet, hogy egészen másról van szó, akkor írd meg pontosan, mit szeretnél.Private Sub ComboBox1_Change()
Dim usor As Long
usor = Range("A" & Rows.Count).End(xlUp).Row + 1
Select Case Left(ComboBox1, 1)
Case "B": Cells(usor, 2) = Format(Now, "yyy.mm.dd hh:mm:ss")
Case "C": Cells(usor, 3) = Format(Now, "yyy.mm.dd hh:mm:ss")
Case "D": Cells(usor, 4) = Format(Now, "yyy.mm.dd hh:mm:ss")
Case "E": Cells(usor, 5) = Format(Now, "yyy.mm.dd hh:mm:ss")
End Select
End Sub
-
-
Delila_1
veterán
válasz
KaliJoe #48152 üzenetére
Még mindig nem teljes. Mi van akkor, ha nincs 0-nál nagyobb értékű 5 oszlopod?
Átalakítottam úgy, hogy soronként jó eredményt kapj.A Z2 cella képlete
=HAHIBA(MAX(HA(HOL.VAN(0;A2:X2;0)<6;INDIREKT("A" & SOR()&":" & CÍM(SOR();HOL.VAN(0;A2:X2;0)-1;4;1)); INDIREKT(CÍM(SOR();HOL.VAN(0;A2:X2;0)-1;4;1) & ":" & CÍM(SOR();HOL.VAN(0;A2:X2;0)-5;4;1))));MAX(A2:X2))
ezt másolhatod lefelé.
Akkor is működik, mikor csakis nulla értékek vannak egy-egy sorban.
Zöld hátteret adtam a sorokban a MAX aktuális tartományának. -
Delila_1
veterán
válasz
phanfantom #48113 üzenetére
Feltöltöttem egy fájlt ide .
Akkor kell módosítani a makrón, ha a tartományod nem azA:F
tartományban van, vagy nem az F oszlop tartalmazza a lejárati dátumokat. -
Delila_1
veterán
válasz
phanfantom #48111 üzenetére
És még 2 sort. Az egyikben lejárt tétel legyen, a másikban nem.
Pl. a képmetszővel készíthetsz egy fotót róla, és azt illeszted be ide. A képen az oszlopazonosítóknak (A, B, stb.) is látszaniuk kell. -
Delila_1
veterán
válasz
phanfantom #48109 üzenetére
[link] Add meg ...
-
Delila_1
veterán
válasz
phanfantom #48106 üzenetére
Tegyél fel egy képet, ami tartalmazza a címsort, és még 2 sort, amik közül az egyik lejárt, a másik nem. Ezek nélkül csak találgatni lehet, és utólag át kellene írnod egy halom értéket a makróban.
-
Delila_1
veterán
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Application.EnableEvents = False
If Application.WorksheetFunction.CountA(Range(Target.Address)) = Target.Count Then
Range(Target.Address).Offset(, 1) = Date
Else
Range(Target.Address).Offset(, 1) = ""
End If
Application.EnableEvents = True
End If
End Sub
Ha nem az első oszlopba írsz adatot, akkor az
If Target.Column = 1 Then
sorban kell az 1-et átírnod az oszlop számára. Ha pedig a dátumot nem a következő oszlopba íratnád, akkor aRange(Target.Address).Offset(, 1) = ""
sorban kell az 1-et annyira átírni, ahány oszloppal jobbra szeretnéd megkapni. -
Delila_1
veterán
válasz
Fire/SOUL/CD #48099 üzenetére
"Ismerlek" annyira, hogy ne vegyem kekeckedésnek.
Nem valószínű, hogy egyetlen cellára gondolt a kérdező, mikor A1-et írt. Ha csupán 1-ről lenne szó, nem kérne segítséget, hanem Ctrl+0-val bevinné a dátumot.
A dátumot és az időt a síma Now is beviszi. Csak a formátumot kell helyesen megadni.Range("FIRE_RANGE").Offset(, 1) = Now
-
Delila_1
veterán
válasz
Fire/SOUL/CD #48096 üzenetére
Miért?
-
Delila_1
veterán
válasz
Fire/SOUL/CD #48090 üzenetére
Kiküszöbölve.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
If Target.Column = 1 And Target > "" Then Cells(Target.Row, 2) = Date
If Target.Column = 1 And Target = "" Then Cells(Target.Row, 2) = ""
End If
End Sub
-
Delila_1
veterán
-
Delila_1
veterán
-
Delila_1
veterán
-
Delila_1
veterán
Vegyük, hogy a telefonok az A oszlopban vannak, A2-től lefelé. Ezek szövegesen vannak eltárolva.
A B2-ben ellenőrizzük a számok elejét.
=VAGY(BAL(A2;4)="0620";BAL(A2;4)="0630";BAL(A2;4)="0670";BAL(A2;5)="+3620")
C2-ben vizsgáljuk a hosszat.
=VAGY(HOSSZ(A2)=11;ÉS(BAL(A2;1)="+";HOSSZ(A2)=12))
Végül D2-ben írjuk ki az eredményt.
=HA(ÉS(B2;C2);"Jó";"Hibás"
) -
Delila_1
veterán
Nem értettem, hogy "csak az utolsot kilistanzi". Nem lehet 1 adatot kilistázni. Azt hiszem, arra gondolsz, hogy a 150 szavazat végrehajtása után jelenjen meg a 150 eredmény.
A mostani makró ezt az A oszlopba írja ki, majd a B1 cellába beírja az egyik választás darabszámát, a C1-be a másikét.Sub Szavazas()
Dim x As Integer, veletlen As Integer
Dim almaDb As Integer, korteDb As Integer
For x = 1 To 150
Randomize: Calculate
veletlen = Application.WorksheetFunction.RandBetween(1, 2)
Select Case veletlen
Case 1: almaDb = almaDb + 1: Cells(x, 1) = "alma"
Case 2: korteDb = korteDb + 1: Cells(x, 1) = "körte"
End Select
Next
Cells(1, 2) = "alma " & almaDb & " db"
Cells(1, 3) = "körte " & korteDb & " db"
Columns("A:C").EntireColumn.AutoFit
End Sub
-
Delila_1
veterán
Ennek így nem sok értelmét látom. Ha csak az utolsó véletlent kell kiírni, az pontosan annyit ér, mintha csak egyszer szavaznál.
Írtam egy kis makrót arra, hogy 150 választás közül azt írja ki, amelyikre többen szavaztak.Sub Szavazas()
Dim x As Integer, veletlen As Integer
Dim almaDb As Integer, korteDb As Integer
For x = 1 To 150
Randomize: Calculate
veletlen = Application.WorksheetFunction.RandBetween(1, 2)
Select Case veletlen
Case 1: almaDb = almaDb + 1
Case 2: korteDb = korteDb + 1
End Select
Next
If almaDb > korteDb Then
Cells(1) = "alma = " & almaDb & " db"
Else
Cells(1) = "korte = " & korteDb & " db"
End If
End Sub
-
Delila_1
veterán
Nem írtad, melyik verziót használod. Azt hiszem, a 2016-os verziótól kezdve egyszerű a dolgod.
Az oszlopod melletti első cellába beírod a százalékot, majd a cellán állva Kezdőlap, Szerkesztés csoport, Kitöltés, Villámkitöltés. Ez minden alatta lévő cellába beírja a helyes eredményt. -
Delila_1
veterán
válasz
csferke #47944 üzenetére
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lapnev As String
If Target.Address = "$B$3" Then
Application.EnableEvents = False
lapnev = "Állandó " & Range("L1")
Sheets(lapnev).Name = "Állandó " & Range("B3")
Range("L1") = Range("B3")
Application.EnableEvents = True
End If
End Sub
Első futtatás előtt írd be az L1-be az állandó szöveg utáni részt.
-
Delila_1
veterán
válasz
Fferi50 #47918 üzenetére
Ez csak azt mutatja, hogy tabulálással jól lehet láttatni az összetartozó egységeket. Hibakezeléssel:
If Range("A1") > 0 Then
Go To Hiba
Else
Range("B1") = 20: Exit Sub
End If
Hiba:
MsgBox "..."
On Error GoTo 0
Egy rossz példa találomra erről a fórumról:
Select Case CStr(freq)
Case "4 weekly", "monthly"
nyomtatni = True
Case "2 monthly"
nyomtatni = Month(nextmonth) Mod 2 = 1
Case "3 monthly"
nyomtatni = Month(nextmonth) Mod 3 = 1
End Select
-
Delila_1
veterán
válasz
Fferi50 #47916 üzenetére
Szerintem semmi gond a Go To utasítással. Az áttekinthetőséget a tabulátorok adják. Az ugrás címe mindig a 0 pozícióban van, az összes többi ettől jobbra.
Nagy időt a feltételek vizsgálata igényel ismereteim szerint.Az összetartozó részek is szépen látszanak egy normális tagolásnál.
If Range("A1") > 0 Then
Range("B1") = 10
Else
Range("B1") = 20
End If
-
Delila_1
veterán
válasz
eszgé100 #47881 üzenetére
Gyorsíthatod a futást, ha nem állsz rá lépten-nyomon egyes cellákra. 5 ilyen feltételt láttam.
If CStr(dat) <> "" Then
Sheets(ssheet).Select
Range(dat).Select
ActiveCell.Formula = sDate
End If
helyett írd ezt
If CStr(dat) <> "" Then Sheets(ssheet).Range(dat).Formula = sDate
-
Delila_1
veterán
válasz
[CS]Blade2 #47801 üzenetére
Nálam is kétszer ki kellett javítani a felt. formázás tartományát, végül beletörődött.
-
Delila_1
veterán
válasz
[CS]Blade2 #47799 üzenetére
Írd vissza az eredeti tartományt a feltételes formázásnál, utána jó lesz.
-
Delila_1
veterán
válasz
[CS]Blade2 #47797 üzenetére
-
-
Delila_1
veterán
Feltöltöttem egy fájlt
A bal oldali táblázat bővítésekor a jobb oldali kimutatáson jobb klikk, frissítés. -
Delila_1
veterán
Teljes oszlophoz
Sub Nagy_Kicsi()
Dim szoveg As String, sor As Integer
For sor = 1 To 8
Range("A" & sor).Copy
Range("B" & sor).PasteSpecial xlPasteValues
szoveg = Range("B" & sor).Value
Range("B" & sor).Characters(Start:=1, Length:=InStr(szoveg, "(") - 1).Font.Size = 15
Range("B" & sor).Characters(Start:=InStr(szoveg, "("), Length:=20).Font.Size = 8
Next
End Sub
-
Delila_1
veterán
Képletet tartalmazó cellában nem tudod a karakterek egy részét módosítani.
Lehet viszont segédcellában, ahova értékként átmásolod a képletet tartalmazó cella adatát. Ezt teszi a lenti makró. Az utolsó előtti sor a zárójel előtti részt 15-ös karakterűre állítja a segédcellában, az utolsó a többi részt 8-asra. Nem kívánt törlendő, a két méret tetszés szerint módosítható.
Ciklusba is beteheted, hogy egy teljes oszlop adatait átmásolja, és formázza.Sub Nagy_Kicsi()
Dim szoveg As String, kezd As Integer
Range("A1").Copy
Range("B1").PasteSpecial xlPasteValues
szoveg = Range("B1").Value
kezd = InStr(szoveg, "(")
Range("B1").Characters(Start:=1, Length:=kezd - 1).Font.Size = 15
Range("B1").Characters(Start:=kezd, Length:=20).Font.Size = 8
End Sub
-
Delila_1
veterán
válasz
ReSeTer #47617 üzenetére
Betettem két soremelést az Else ágba, hogy feltünőbb legyen a sorszám.
Sub Talalat()
Dim talal
On Error Resume Next
Columns(2).ClearContents 'A későbbi beírás miatt törlöm a B oszlop adatait
talal = Application.Match(Range("G1"), Columns(1), 0)
If VarType(talal) = vbError Then
MsgBox "Nem található a G1 cella értéke az A oszlopban", vbInformation, "Hiányzó szöveg"
On Error GoTo 0
Else
MsgBox "G1 cella tartalmának sorszáma az A oszlopban: " & vbLf & vbLf & talal, vbInformation, "Sorszám"
'Itt felhasználjuk a talal változó értékét
Range("B" & talal) = "Ebben a sorban van a G1 cella értéke"
End If
End Sub
-
Delila_1
veterán
válasz
ReSeTer #47611 üzenetére
Sub Talalat()
Dim talal
On Error Resume Next
talal = Application.Match(Range("G1"), Columns(1), 0)
If VarType(talal) = vbError Then
MsgBox "Nem található a G1 cella értéke az A oszlopban", vbInformation, "Hiányzó szöveg"
Else
MsgBox "G1 cella tartalmának sorszáma az A oszlopban: " & talal, vbInformation, "Sorszám"
End If
On Error GoTo 0
End Sub
-
Delila_1
veterán
Felveszel egy segédoszlopot, ahol összefűzöd a előtte lévő oszlopok adatait.
=A2 & " " & B2 & " " & C2
Nálam 3 oszlop van, a negyedikbe kerül a képlet.
Kijelölöd az első három oszlopot, majd a felt. formázáshoz egyedi képletet viszel be.=DARABTELI($D$2:$D$35;$D2)>1
Persze nem 35-ig lesznek a sorok. -
Delila_1
veterán
A régi alá másolod az újat. Mindegyikben az A oszlopban vannak az azonosítók.
Kijelölöd az A oszlop sorait, majd a feltételes formázásnál a Csak az egyedi vagy ismétlődések formázása opciót választod, a Formázás minden-nél pedig az ismétlődőt jelölöd be.Szerk.: míg írtam, megjött a válaszod, hogy nem lehet bennük egyező azonosító.
-
Delila_1
veterán
Látom, régi verzióval (xls kiterjesztés) dolgozol.
Nálam a két füzet régi.xls, ill. új.xls névre hallgat, mindegyikben az első munkalapon vannak az adatok, és mindkettőben az első sor a fejléc.A makró:
Sub Frissites()
Dim sorRegi As Long, sorUj As Long, usor As Long, ide
usor = Workbooks("új.xls").Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
For sorUj = 2 To usor
On Error Resume Next
ide = Application.Match(Workbooks("új.xls").Sheets(1).Cells(sorUj, 1), Workbooks("régi.xls").Sheets(1).Columns(1), 0)
If VarType(ide) = vbError Then _
ide = Application.WorksheetFunction.CountA(Workbooks("régi.xls").Sheets(1).Columns(1)) + 1
Workbooks("új.xls").Sheets(1).Rows(sorUj).Copy Workbooks("régi.xls").Sheets(1).Range("A" & ide)
Next
End Sub
-
Delila_1
veterán
Lehet, hogy van egyszerűbb módja is, én ezt írtam:
Sub lapok()
Dim kezd As Integer, lap As Integer
For lap = 1 To Sheets.Count
If Sheets(lap).Name = "alma" Then kezd = lap
If Sheets(lap).Name = "körte" Then Exit For
Next
MsgBox "Az alma és a körte nevű lapok között " & lap - kezd - 1 & " másik lap van.", vbInformation, "Tájékoztatás"
End Sub
-
Delila_1
veterán
Szia!
Addig nem fog sikerülni, míg az egyik adat szám, a másik szöveg.
Valahonnan úgy lett másolva, hogy a tizedes törtek szövegként, balra igazítva kerültek a fájlba. 2-3 ilyen cellát együttesen kijelölve lent a státusz sorban csak a cellák darabszáma jelenik meg, az összegük és átlaguk nem.
Írd be újra az adatokat, és akkor lappy képletével tudsz számolni.=DARABTELI(D2:D8;">=50")
Új hozzászólás Aktív témák
Hirdetés
- Garancia kérdés, fogyasztóvédelem
- Megjelent a Poco F7, eurós ára is van már
- iPhone topik
- Anime filmek és sorozatok
- Milyen videókártyát?
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Autós topik
- Milyen okostelefont vegyek?
- OpenWRT topic
- ARC Raiders - Új előzetesen a hamarosan induló tech teszt
- További aktív témák...
- Microsoft licencek KIVÉTELES ÁRON AZONNAL - UTALÁSSAL IS AUTOMATIKUS KÉZBESÍTÉS - Windows és Office
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Gyermek PC játékok
- Eladó Steam kulcsok kedvező áron!
- Bomba ár! Dell Latitude E7240 - i7-4GEN I 16GB I 256SSD I 12,5" HD I HDMI I Cam I W10 I Garancia!
- LG 45GS95QE - 45" Ívelt OLED / 2K WQHD / 240Hz 0.03ms / NVIDIA G-Sync / FreeSync Premium / HDMI 2.1
- Telefon felvásárlás!! iPhone 11/iPhone 11 Pro/iPhone 11 Pro Max
- BESZÁMÍTÁS! Gigabyte A620M R5 7500F 32GB DDR5 512GB SSD RTX3070 8GB ZALMAN S2 TG Enermax 750W
- 0% THM részletfizetés, beszámítás! ÚJ 27% 3 év AMD RX 7900 XT / 7900 XTX készletről KAMATMENTESEN!
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest