-
IT café
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 Polllen #19904 üzenetére
Sub torles()
Dim WS As Worksheet
Set WS = Sheets("Sheet3")
Range(WS.Cells(1), WS.Cells(1, WS.Range("A1").End(xlToRight).Column)).Clear
End SubHa mindig az aktív lap első sorát akarod törölni, akkor a Set-es sor
Set WS = ActiveSheet legyen.[ 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.
-
Mutt
aktív tag
válasz Polllen #19904 üzenetére
Hello,
Nálam működik az eredeti képleted, de esetleg próbáld ki Delila1 megoldása mellett ezt:
Range("A1").CurrentRegion.Clear
A CurrentRegion-nel üres oszlopok és sorok által határolt tartományt lehet kezelni.
üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
m.zmrzlina
senior tag
-
Fferi50
őstag
válasz Polllen #25069 üzenetére
Szia!
Írd így:
"=VLOOKUP(RC[-9],'[" & valtozo & "]Shortage'!C1:C10,10,0)"A valtozo szöveges változó (string) tartalmazza a fájl nevét - ha teljes elérési útvonalat is kell megadni, akkor viszont:
"=VLOOKUP(RC[-9],'" & utvonal & "[" & valtozo & "]Shortage'!C1:C10,10,0)"Az utvonal tartalmazza az elérési utat, a végén backslash van.
Üdv.
[ Szerkesztve ]
-
Wyll
őstag
válasz Polllen #25099 üzenetére
Pedig ha megnézem a típust (rákattintok egérrel a szóban forgó cellára, és megnézem fent a ribbonon, hogy mit ír a számformátumának), akkor Általános-t ír.
Most vagy az van, hogy ez így van jól, és még kéne még egy utolsó művelet a VBA-ba (pl. hasamraütök: Run), vagy ez valami kis bug, de akkor is VBA-ból kell megoldanom
Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll
-
KaliJoe
csendes tag
válasz Polllen #25117 üzenetére
Szia Pollen és Delila_1,
Azt hiszem az irány jó, de makacsul dobja a hibaüzeneteket, arra hivatkozva, h definiáljak változót. Készítettem Variant típusút, értékét az aktuális munkalapra irányítottam... de az nem érdekli, csak követel...
...
Dim wsh_Űrlap As Variant
wsh_Űrlap = Worksheets("Űrlap Nyomtatáshoz")
...
If ActiveWindow.SelectedSheets.PrintPreview(wsh_Űrlap) = True Then
Worksheets("Alapértékek").Select
ActiveSheet.Unprotect
Worksheets("Alapértékek").Cells(4, "J").Value = Worksheets("Űrlap Nyomtatáshoz").Cells(2, "M").Value + 1
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
...Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)
-
KaliJoe
csendes tag
válasz Polllen #25127 üzenetére
Szia Pollen,
Ez biztos nem megoldás. Mivel a .PrintPreview súgójában benne van az a Variant változó aminek egy munkalapra kell mutatnia, és akkor kérhető ki az Igaz / Hamis érték... a súgó szerint. Egyébként a jelzett "hiányzó változó" hibaüzenettel reagál. De nyilván nem csinálok valamit jól, ha végül nem ez történik.
Ehhez kellene a segítség, h az történjen, mit gondolok :-)Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)
-
Fferi50
őstag
válasz Polllen #25132 üzenetére
Szia!
Akkor lenne igazad, ha csak egy munkalapot tartalmazhatna, de ez nem így van. (Az activesheet az egy darab munkalap, az activeworkbook szintén egy darab munkafüzet -- kiválasztott (selected) viszont több is lehet.)
A selectedsheets egy gyűjtemény, magában foglalja az összes kiválasztott munkalapot.
Idézet a help-ből:
"Window.SelectedSheets Property
Returns a Sheets collection that represents all the selected sheets in the specified window. Read-only."
Ha a művelet eredményét nem szeretnénk viszontlátni, akkor nem kell a konkrét munkalapot megnevezni, szép sorban megmutatja az összes kijelöltet.
De ha szükség van a nyomtatás megtörténtének információjára, akkor már konkrét munkalapra kell hivatkozni - hiszen lehet, hogy egyik munkalapot kinyomtatod, másokat pedig nem, akkor most mi legyen a logikai változó eredménye??Üdv.
[ Szerkesztve ]
-
Delila_1
Topikgazda
válasz Polllen #27637 üzenetére
Nem túl bonyolult.
A makró elején töröltethettem volna az első lapon kívül a többit, hogy "tiszta lappal" kezdjünk, de nem ismerem a füzeted felépítését. Lehet, hogy vannak benne nem törölhető lapok.A makró az első lap sorain megy végig. Mikor a sorban lévő szállítólevél nevével egyező lap van a füzetben, az első üres sorába bemásolja az aktuális sort. Ha nincs olyan lap, akkor a füzet végén létrehozza, átmásolja a címsort az első lapról, majd alá az aktuális sort.
Sub Szall_Lev()
Dim sor As Long, usor As Long, usorIde As Long, nev
Dim WS As Worksheet, WSIde As Worksheet
Application.ScreenUpdating = False
Set WS = Sheets(1)
WS.Select
usor = Range("A" & Rows.Count).End(xlUp).Row
For sor = 2 To usor
On Error Resume Next
Set nev = Sheets(Cells(sor, "A") & "")
If Err.Number <> 0 Then
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = WS.Cells(sor, "A")
WS.Rows(1).Copy ActiveSheet.Range("A1")
WS.Select
End If
On Error GoTo 0
Set WSIde = Sheets(WS.Cells(sor, "A") & "")
usorIde = WSIde.Range("A" & Rows.Count).End(xlUp).Row + 1
Rows(sor).Copy WSIde.Range("A" & usorIde)
Next
Sheets(1).Activate
Application.ScreenUpdating = True
MsgBox "Kész", vbInformation
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 Polllen #27642 üzenetére
Az kell bele, mert több azonos szállítólevél is lehet. Ha ezeknek új lapot próbálnék bevinni, egyrészt hibára futna, másrészt minden sort külön lapra tenne.
A lapokat egy új kigyűjtés előtt egy makróval törölheted.
Sub Laptorles()
Dim lap As Integer
Application.DisplayAlerts = False
For lap = Sheets.Count To 2 Step -1
Sheets(lap).Delete
Next
Application.DisplayAlerts = True
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 Polllen #27802 üzenetére
Tegyél bele ellenőrzést, akkor nem áll le hibával.
nyitva = False: utvonal = "..........\"
For Each wbs In Workbooks
If wbs.Name = "Megnyitandó_file.xlsx" Then
nyitva = True
Exit For
End If
Next
If Not nyitva Then Workbooks.Open utvonal & "Megnyitandó_file.xlsx"Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
bsh
őstag
válasz Polllen #29677 üzenetére
az első sorban a Cells()-ek kontextusa nincs kvalifikálva. helyesen:
Worksheets("Layout").Range(Worksheets("Layout").Cells(1, 1), Worksheets("Layout").Cells(1, wk)).Copy Destination:=Worksheets("Munka2").Range("A1")
hasonlóképpen furcsaságok lehetnek, ha a wk változó sincs az adott kontextusban definiálva.a második verzióban még az eleje is rossz:
Worksheets(ws1).Range(Cells(1, 1), Cells(1, wk)).Copy...
helyesen:
ws1.Range(Cells(1, 1), Cells(1, wk)).Copy... -
föccer
nagyúr
válasz Polllen #30850 üzenetére
Bár nem teljesen értem, hogy mi a feladat, de a =KEREKÍTÉS() függvény erre jó. Meg lehet adni benne, hogy 50-re kerekítsen. Ehhez tartozik még a =PLAFON() illetve a =PADLÓ() függvény is (vag lehet, hogy kerekít.le és kerekít.fel néven van, erre most nem emlékszem.
(#30849) Gyufaaa: Mondtam, hogy formázni kell a megjelent értéket.
üdv, föccer
[ Szerkesztve ]
Építésztechnikus. Építőmérnök.
-
Polllen
nagyúr
válasz Polllen #31412 üzenetére
Sziasztok!
Végül ez alapján meg tudtam oldani, ha valakinek kellene ilyesmi.
Röviden:
Külön tábla a szüneteknek kezdési és befejezési időponttal és utána tömbképlet használatával a szünetek kiszámolása. Majd a folyamat idejéből az összeadott szüneteket kivonása."Odamentem egy párhoz...négyen voltak!"
-
#36268800
törölt tag
válasz Polllen #31464 üzenetére
Ezt tudom, de nem jó úgy. Az időpontokat teljesen rosszul jeleníti meg, a videóban is ezzel küszködik a faszi és végül ilyen közelítő meg elég macerás módon oldja meg, de tutira van egyszerűbb és jobb megoldás is, amit egy középiskolástól el lehet várni érettségin. Ha esetleg megtennéd és vetnél rá egy pillantást, nagyon sokat segítenél vele! (és ez mindenkinek szól)
-
Delila_1
Topikgazda
válasz Polllen #32487 üzenetére
Két lépésben is megadhatod. Először a D2:D2500, majd a D2501:D & reg_end tartományra add meg a képlet beírását.
A második kérdésre:
Range("D2:D" & reg_end).Copy
Range("D2").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False[ 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.
-
Fferi50
őstag
válasz Polllen #33386 üzenetére
Szia!
Mivel az E betű a számok tudományos ábrázolásának része, ezért sajnos ez a két "karaktersorozat" ugyanazt a számértéket jelenti.
Ezért praktikusan azt tudom javasolni, hogy az E karaktert hagyjátok ki a cikkszámokból
Célravezető lehet még az is, ha a betű a cikkszám elején van, ebben az esetben szintén nincs "keveredés".Üdv.
-
Fferi50
őstag
-
Delila_1
Topikgazda
válasz Polllen #33414 üzenetére
A teljes oszlopot szövegessé kell tenned egy üres oszlopban.
=A2 & "" (dupla idézőjel, üres string).
Végig másolod, majd a teljes oszlopot irányítottan, értékként beilleszted az eredeti helyére. Most már szövegként kezeli a csakis számjegyeket tartalmazó cikkszámokat is, rendbe jön a keresé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
-
Fferi50
őstag
válasz Polllen #34094 üzenetére
Szia!
Talán azt sem szereti, hogy Sheet nevű változót használsz, mivel az foglalt név! (Elvileg lehet használni, de akkor teljes névvel kell rá hivatkozni, nem elég a Sheet szerintem). Én mindenesetre messzire elkerülném a használatát.
Esetleg aktíválni kell a frissítéshez a munkalapotÜdv.
[ Szerkesztve ]
-
föccer
nagyúr
válasz Polllen #39720 üzenetére
Ismétlődések eltávolítása. Alapvetően nem járható ez az út, pedig sok problémától megszabadítana. Sok ezer soros adatbázist kell átfésűlni, kb 20-25 oszloppal. Alapvetően be van képletezve/makrózva a tábla és ha kiválasztok egy adott szűrési rendszert, akkor a képletek számolják a szükséges adatokat (összesít függvény), ami alapján elvégzem a kiértékeléseket (< >=), majd makróval átdobom az egészet a megfelelő helyre. Így viszonylag gyors, de még jobb lenne ha lenne ilyen funkció, így nem kellene az adatokhoz hozzá piszkálni, csak 1 segéd oszloppal lehetne machinálni.
üdv, föccer
Építésztechnikus. Építőmérnök.
-
Delila_1
Topikgazda
válasz Polllen #41593 üzenetére
Kijelölöd a módosítandó oszlopot, Szövegből oszlopok, Tovább, Tovább, a dátumnál megadni, hogy az eredeti NHÉ, OK.
Ezt rögzítheted makróban, amit új letöltés után indíthatsz.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 Polllen #41679 üzenetére
Szia,
Ha az utolsó hetet próbálod meg mindig összegezni, akkor ezt próbáld meg:
=CALCULATE(SUM(Table1[Érték]);DATESBETWEEN(Table1[Dátum];LASTDATE(Table1[Dátum])-WEEKDAY(LASTDATE(Table1[Dátum]);3);LASTDATE(Table1[Dátum])))
üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
Új hozzászólás Aktív témák
- AMD Radeon™ RX 470 / 480 és RX 570 / 580 / 590
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- iPhone topik
- PlayStation 5
- Milyen NAS-t vegyek?
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Kerékpárosok, bringások ide!
- AMD Navi Radeon™ RX 7xxx sorozat
- A Watch7-tel debütálhat a Samsung vércukormérője
- Milyen videókártyát?
- További aktív témák...
- AKCIÓ! - STEAM kulcsok /Anuchard, Aragami, Children of Morta, stb. - 2024.04.17.
- PC JÁTÉKOK (OLCSÓ STEAM, EA , UPLAY KULCSOK ÉS SOKMINDEN MÁS IS 100% GARANCIA )
- Steames kulcsok jó áron eladóak!
- World of Warcraft Shadowlands Collectors edition EU EN
- Microsoft licencek a KIVÉTELES ÁRAK - UTALÁSSAL IS AUTOMATIKUS KÉZBESÍTÉS - Windows és Office