-
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 Esterka #21259 üzenetére
Sikerült összehozni a véletlen helyeket.
A makró szazalek = 14.8 sorában a 14.8 helyett beírod azt a számot, ahány százalékban legyen 1-es a kijelölésedben. Tizedes törtet is írhatsz, tizedes ponttal, mint most.
Kijelölöd a tartományt, és indítod a makrót.
Sub XEgy()
Dim Cellaszam As Long, sor As Long, oszlop As Long, Db As Long
Dim CV, szazalek As Single
Selection = ""
Cellaszam = Selection.Cells.Count
sor = Selection.Rows.Count
oszlop = Selection.Columns.Count
szazalek = 14.8
Db = 1
Do While Db <= Round(szazalek * Cellaszam / 100, 0)
sor = Int(Selection.Rows.Count * Rnd) + 1
oszlop = Int(Selection.Columns.Count * Rnd) + 1
If Selection(sor, oszlop) <> 1 Then
Selection(sor, oszlop) = 1
Db = Db + 1
End If
Loop
For Each CV In Selection
If CV <> 1 Then Range(CV.Address) = 0
Next
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
Szép hosszú képlet adja meg az értéket.
=HA(HÓNAP(MA())>=HÓNAP(A1);(ÉV(MA())-ÉV(A1))*12+HÓNAP(MA())-HÓNAP(A1);12-HÓNAP(A1)+(ÉV(MA())-1-ÉV(A1))*12+HÓNAP(MA()))
Az A1 tartalmazza az eszköz beszerzési idejét. Ez a cella dátumot tartalmazzon, a formátum lehet éééé.hh, hogy a napot ne mutassa.
Az eredmény (képlet) formátuma szám, vagy általános lehet.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 alfa20 #21285 üzenetére
Sub LapKereses()
Dim lap As Integer, f As Boolean
For lap = 1 To Worksheets.Count
If Sheets(lap).Name = "Ez a lap kell" Then
f = True
Exit For
End If
Next
If f = False Then Worksheets.Add.Name = "Ez a lap kell"
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 bteebi #21292 üzenetére
A Select Case utasítás a többirányú, tetszőleges számú elágazásokat teszi lehetővé az összetett, egymásba ágyazott If feltételek helyett, átláthatóbban.
Pontosan kell meghatároznod az értékeket.
Sub forma()
Select Case Sheets("Adatok").Range("B17")
Case 0.0011 To 0.0099
Selection.NumberFormat = "0.00000"
Case 0.011 To 0.099
Selection.NumberFormat = "0.0000"
' Case ...
' ...
End Select
End SubA feltételes formázás színét nem lehet alapul venni, mert akár teljesül a feltétel, akár nem, a szín lekérdezése a cella alapbeállításának megfelelő színkódot adja.
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 glocker #21300 üzenetére
Az ünnepnapokat tartalmazó területnek nevet adsz, legyen Ünnepek.
Kijelölöd az első lap dátumait, és megadod a feltételes formázásokat.
Szombat:
=HÉT.NAPJA(A1;2)=6Vasárnap:
=HÉT.NAPJA(A1;2)=7Ünnepnap:
=NEM(HIBÁS(FKERES(A1;Ünnepek;1;0)))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 glocker #21305 üzenetére
Időnként bosszantóan önállóskodik az Excel. A fejlesztők arra törekedtek, hogy maximális mértékben kiszolgálják a felhasználókat. Ezt persze nem lehet végrehajtani, hiszen mindenki a saját céljaira akarja használni a programot. Nálad valamiért szöveg formátumra átíráskor a cella. Meg kell adnod az általános cellaformátumot, majd beírnod az új képletet. Nem vagyok biztos benne, hogy ettől megjavul ez a hiba.
Tagolásnál a legkisebb egységgel kezdj, ezek az azonos hónap adatait tartalmazó sorok. Az első kép szerint kijelölöd a sorokat, majd csoportba foglalod (egyenként minden hónapnál). Látod, a hónap nevét nem vettem bele a kijelölésbe.
Következő lépés az első félév csoportosítása, ami a 4 – 20. sorig tart. Utoljára a 3 – utolsó, adatot tartalmazó sorok csoportosítása következik a teljes évhez.
Szerk.: nem gondoltam, hogy ilyen nagyok lesznek a képek.
[ 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 glocker #21307 üzenetére
A képen jelzett nyílra kattintva megkapod az alatta behívott ablakot, ahol bejelölheted, hogy az összegzés a részletsorok alatt legyen. Vedd ki a pipát a felső négyzetből.
[ 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
-
Delila_1
Topikgazda
válasz bandus #21323 üzenetére
Szia!
Nyiss meg egy almappát pl. a Total Commanderben. Látod, hogy az első tétel [..]. Ha erre kattintasz, a szülő (eggyel fentebbi) mappába jutsz. A TC nem jeleníti meg a [.]-ot, de ha látszana, azt választva egyenesen a főkönyvtárba jutnál bármelyik almappából. Mikor megnyitjuk a mappát, első lépésben a [.]-ra, majd a [..]-ra áll. Ezek nem fájlok, nem lehet őket megnyitni, ezért kell az IF, hibakezelésként.
Ha lépésenként futtatod a makrót (F8), az FN = Dir(utvonal & "*.xls", vbNormal)
sor végrehajtása után vidd a kurzort az FN változó fölé. Láthatod, hogy a mappában lévő első fájlod nevét tartalmazza. A fenti sor a Do – Loop ciklus előtt van. A ciklus végén be kell olvastatni a következő fájl nevét, ezt végzi az FN = Dir(). Ezt is lekérdezheted, az FN fölé mutatva, a soron következő fájl nevét tartalmazza.A ciklus befejező sora Loop Until FN = "". Ez azt mondja, hogy addig folytatódjon a ciklus, amíg az FN (nálam a fájlnévre alkalmazott változó neve) tartalmaz valamit, nem egyenlő üres stringgel.
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 csongi #21334 üzenetére
Nem írtad, melyik cellában van az érvényesítés, én az A1-be tettem.
A B1 képlete=HA(ÉS(A1="ZN";C2=1050);K5;HA(ÉS(A1="M";C2=1100);K6;""))
Ha egyik feltétel sem igaz, üres stringet ír a B1-be.
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
Nem derül ki a leírásodból, hogy hány formod van, és melyiken milyen elemek vannak.
Ha minden 1 formon van, akkor nem kell átadni az értékeket, ha viszont többön, akkor a szülő formnak is szerepelnie kell az elemek neve előtt.UserForm1.CheckBox_All = True
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
Nem értem, miért akarod külön modulokban futtatni a makrókat. Mikor egy párbeszéd elemen duplán klikkelsz, létrejön a hozzá tartozó makró első, és utolsó sora. A form modullapján az elemek neve szerinti abc rendben helyezkednek el a makrók. A legördülőből (kép) könnyen kiválaszthatod, amire szükséged van, azzal a kiválasztott elem makrójára ugrasz.
A form és a makrók között is könnyedén válthatsz a bal oldali 2 ikonnal.
Ha mégis mindenképp külön modulokban helyeznéd el a makróidat, a meghívásuk (a Meghívom nevű makrót hívod meg):
Meghívom CheckBox_All, CheckBox_Yes, CheckBox_No
A hívott makró paramétereit meg kell adnod:
Private Sub Meghívom(CheckBox_All, CheckBox_Yes, CheckBox_No)
End SubAz elemek sorrendje egyezzen meg a két helyen.
Szívesen megnézném a fájlodat.[ 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 macilaci78 #21349 üzenetére
=HA(SZÁM(E8);KEREKÍTÉS((E8*I5*I6+2000)/500;0)*500;"")
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 macilaci78 #21351 ü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.
-
Delila_1
Topikgazda
válasz ritterkrisz #21370 üzenetére
A h2 cella képlete =fkeres(g2;b:d;3;0), ezt kell lemásolnod a h oszlopban.
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 nebulo0128 #21372 üzenetére
Nézet menü, Új ablak, Elrendezés.
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 nebulo0128 #21374 üzenetére
Mikor megnyitottad a több fájlt az új ablak menüben, egyenként lecsukhatod kis méretűre, és ebből az ikon állapotból azt nyitod fel az eredeti méretre, amelyiket éppen használni akarod.
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 PindurAnna #21395 üzenetére
Címsort feltételezve a 2. sorban kezdjük a képletet. Ha az AT oszlop üres, akkor az AT2-be, ha nem, az első üres oszlopba írd be:
=HA(VAGY(N2=AA2;N2=AJ2;N2=AS2);1;0)
Ezt lemásolva azokban a sorokban, ahol a 3 jelzett oszlop valamelyike megegyezik a N oszlop értékével, 1 lesz az eredmény, a többiben nulla.
Most már csak szűrnöd kell a képletet tartalmazó oszlopot 1-re, és törölheted a sorokat.
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 PindurAnna #21400 üzenetére
Szívesen.
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 alfa20 #21402 üzenetére
A Select Case sorban adod meg, hogy mit figyeljen. Mivel előtte már az L1 változóba beadtad a Cells(a,1) értéket, itt a sort így is írhatod:
Select Case L1
A Case sorokban már nem kell megadni az L1-re történő hivatkozást, mert azt már tudja. Elég a
Case >L1 (és itt automatikusan átíródik a sor Case Is >L1 -re)A helyfoglalásnál minden változóhoz meg kell adni a típust, ennek hiányában Variant-nak veszi, és nagyobb helyet foglal le a memóriában.
A With - End With párost akkor szokás alkalmazni, mikor a With sorban meghatározott objektumra több paramétert adunk meg. 1 paraméternél, mint most a szín megadásánál, felesleges.
A Select utasítást is kerüljük, ha lehet, mert lassítja a futást, anélkül is lehet hivatkozni egy cellára, sorra, bármire.
Ezeknek megfelelően átírtam a makrót.
Sub szelekt1()
Dim c As Integer, i As Integer, a As Integer
Dim L1 As Integer, L2 As Integer
c = 4
For i = 1 To 5
Cells(i, 1) = i
Cells(i, 2) = i + c
c = c - 2
Next
For a = 1 To i - 1
L1 = Cells(a, 1)
L2 = Cells(a, 2)
Select Case L1
Case Is > L2
Cells(a, 1).Interior.Color = 65535
Case Is < L2
Cells(a, 1).Interior.Color = 5287936
End Select
Next
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 alfa20 #21404 üzenetére
Szívesen.
Még egy apró tanács: a kulcsszavakat - for, next, do, loop, if, then, else, case, exit, open, stb. - érdemes kisbetűkkel írni, a makró szerkesztő átírja nagyra, amit kell. Ha látod, hogy kisbetűs maradt egy kulcsszó, azonnal tudhatod, hogy elütöttél egy billentyűt.
Majdnem minden kulcsszóra igaz, néhányat kisbetűkkel is elfogad.Ilyen például az
ActiveSheet.Protect userinterfaceonly:=TrueA fenti sor makróból engedélyezi a védelemmel ellátott lapon a zárolt cellákba történő írást.
[ 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 macilaci78 #21485 üzenetére
A címsoron állva bekapcsolod az autoszűrőt, pontosan erre találták ki.
Kezdőlap | Szerkesztés | Rendezés és szűrés | Szűrő.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 littleNorbi #21494 üzenetére
Vegyük, hogy a Munka1 lapon van a hosszabb-, és a Munka2-n a rövidebb névsorod, mindegyiken az A oszlopban, és mindkét lapon van címsor.
A Munka1 B2 cellájának képlete =DARABTELI(Munka2!A:A;A2)
Ez nullánál nagyobb értéket ad, ha a név szerepel a Munka2 lapon, és nullát, ha nem.
Autoszűrővel kiszűröd a nullánál nagyobb értéket tartalmazó sorokat, és az összeset törlöd.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 bteebi #21502 üzenetére
Ellenőrizd, hogy az A1 cellában van-e szóköz. Ha van, akkor fusson a szövegből oszlopok részre, egyébként lépjen túl ezen a részen.
If InStr(Cells(1), " ") > 0 Then
MsgBox "van szóköz"
Else
MsgBox "nincs szóköz"
End IfProgramozó: 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 zsambek #21501 üzenetére
A jelszó első karaktere a jelentkező vezetéknevének első karaktere, második karaktere pedig utónevének első karaktere.
Vegyük, hogy a név az A2 cellában van. A Vkezdő képlete =BAL(A2;1),
az Ukezdőé =KÖZÉP(A2;SZÖVEG.KERES(" ";A2)+1;1)A Hanyadik a HOL.VAN függvénnyel kereshető ki – ne feledkezz meg az esetleges címsorról sem, ha a függvényed az A oszlopban keres, ebben az esetben le kell vonni belőle 1-et.
A többit biztosan kitalálod, azokhoz kellene a txt fájl.
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 ildikol #21513 üzenetére
Az első makrót a laphoz rendeld. Gondolom, akkor kell másolni a sort, ha egyrészt a P oszlopban egy bizonyos érték van, másrészt ha a sor ki van töltve a P-ig. Az eseménykezelő makró ezeket a feltételeket figyeli.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 16 Then 'P oszlopba írtál
Application.EnableEvents = False
Cells(Target.Row, "Q") = Time 'aktuális idő beírása
Application.EnableEvents = True
If Cells(Target.Row, "P") = "Ezt kell másolni" Then 'ezt a szöveget írd át
Masol Target.Row 'Masol makró meghívása, az aktuális sor értékének átadásával
Else
Application.CutCopyMode = False
End If
End If
End SubA második makró, ami a másolást végzi, modulba kerüljön. Azért van szükség 2 makróra, mert a laphoz rendelt csak a saját lapján tud intézkedni, de a változó(ka)t, mint most az aktuális sor számát, át tudja adni a másiknak, ami végrehajtja a másolást.
Nálam a Munka1 lapra írok, a Munka2-re másol a makró. Ezeket írd át a saját lapjaid nevére.Sub Masol(sor)
Dim usor As Long
usor = Application.CountA(Sheets("Munka2").Columns(1)) + 1
Sheets("Munka1").Rows(sor).Copy Sheets("Munka2").Cells(usor, 1)
Application.CutCopyMode = False
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 bandus #21512 üzenetére
Az A1 cellába írtam a dátumot és időt, 2014.05.09 00:00. A format utasítással adhatod meg a kellő formátumot.
Sub ido()
Dim most As Date
most = Cells(1)
MsgBox Format(most, "yyyy.mm.dd hh:mm")
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 alfa20 #21517 üzenetére
Csak egy apró egyszerűsítés.
Sub keres()
Dim keres As Variant, cim
keres = InputBox("Keresendő szöveg, szám:", "Keresés")
cim= Cells.Find(What:=keres, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Address
MsgBox cim
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 lenkei83 #21519 üzenetére
Ha egymás után következnek, állsz az első, és Shiftet nyomva tartva az utolsóra kattintasz.
Ellenkező esetben a Ctrl-t nyomd, közben egyenként kattints a fülekre.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 lenkei83 #21521 üzenetére
Próbálkoztam, de nem jön össze.
Sub lapok()
Dim lap%, szoveg$
For lap% = 1 To Worksheets.Count
If Right(Sheets(lap%).Name, 1) = "x" Then
szoveg$ = szoveg$ & Sheets(lap%).Name & """" & ","
End If
Next
szoveg$ = Left(szoveg$, Len(szoveg$) - 2)
Sheets(Array(szoveg$)).Select
End SubAz utolsó sornál túlcsordulást jelez. Talán kiindulásnak jó.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Új hozzászólás Aktív témák
- Elektromos autók - motorok
- Sorozatok
- Autós topik látogatók beszélgetős, offolós topikja
- Nem indul és mi a baja a gépemnek topik
- Tuning kezdőknek
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Motorola Edge 30 Neo - wake up, Jr...
- Ukrajnai háború
- OLED TV topic
- Skoda, VW, Audi, Seat topik
- További aktív témák...
- Windows, Office licencek a legolcsóbban, egyenesen a Microsoft-tól - 2990 Ft-tól!
- Canva Pro előfizetés - 1 éves
- Számlás!Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! LEGOLCSÓBB! Automatikus 0-24
- Bitdefender Total Security 3év/3eszköz! - "Tökéletes védelem most kedvező áron..."
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs