- Geri Bátyó: Agglegénykonyha 2 – Főzés: szabályok, vagy szabadság?
- gban: Ingyen kellene, de tegnapra
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- Gurulunk, WAZE?!
- Magga: PLEX: multimédia az egész lakásban
- hcl: Kelj fel komám, ne aludjál
- Geri Bátyó: Agglegénykonyha – bevezető - igényfelmérés
- Sgr_A: Számítógépeim aktualizálása cseréje
- Geri Bátyó: Agglegénykonyha 1 – rizseshús másképp
-
LOGOUT
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
-
Fferi50
Topikgazda
válasz
Xanderas #52697 üzenetére
Szia!
Miért kellene ehhez makró? Egyszerű képlet: pl. a második munkalapra
=Elsőmunkalap!A1 & " " & Elsőmunkalap!C1
A oszlop irányítószám, C oszlop városnév
Az oszlopokat helyettesítsd be a nálad levő helyzetbe, a szóköz helyett írd be, amivel szeretnéd elválasztani a két értéket.
A képlet lehúzható az oszlopban.
Üdv. -
Xanderas
csendes tag
Sziasztok
van egy vevő táblázatom ahol minden adatot külön cellába írok: név, cím, irányítószám stb.
Szeretnék egy olyan makrót ami az irányítószámot és a várost (két külön cellából) kimásolja egy másik munkalapra de már 1cellába a két adatot.
Remélem érthetően magyaráztam.
Feltételezem, hogy ez egy egyszerű parancssorral megoldható de nekem nem megy.Előre is köszi a segítséget
-
Mutt
senior tag
válasz
p5quser #52694 üzenetére
Szia,
Röviden: igen, a "col" egy változó (column-t rövidítettem).
Hosszan:
1) A képlet alapja a BYCOL függvény, amely egy tartománynak (első paraméter) az oszlopain egymás után lefuttatja a második paraméterben megadott függvényt. Az eredmény egy tömb lesz, legalább annyi elemmel ahány oszlop van.
2) A LAMBDA függvénnyel pedig saját függvényeket lehet létrehozni. Az első paraméter(ek) változók, az utolsó pedig az eredményt kiszámoló képlet. pl. LAMBDA(a,b,a+b) összeadja a két inputot. LAMBDA-t többnyire a névkezelőben szoktunk használni, és onnan a munkafüzetben bárhol el lehet érni.
Ebben az esetben a BYCOL függvény a LAMBA első változójának átadja az oszlop értékeit. A függvény pedig megnézi, hogy az adott oszlopban megtalálható-e a szöveg vagy sem. Az eredmény 0 vagy pozítiv szám lesz.
3) A FILTER függvénnyel azon mezők maradnak meg, ahol egy pozítiv szám volt az eredmény.
4) A végén a több lehetséges eredményt összefűzük egy mezőbe.üdv
-
p5quser
tag
Üdv!
Köszönöm Neked is.
E megoldás felé sandítanék, mivel kiderült időközben hogy 100+ csoport (oszlop) alá vezetnek fel tételeket. Már küzdök hogy struktúráljuk át az adatokat. Viszont addig eljátszanék a megoldásoddal, de a "col"-t nem tudom értelmezni. Ez vmi változó? Ha igen, hol-hogy definiálom? Vagy csak elírás?
Előre is köszi! -
Mutt
senior tag
válasz
p5quser #52683 üzenetére
Szia,
Kaptál már választ, de én is bedobok egy csak friss Excelben műkődő változatot.
F2-ben a kereső szó és G2-ben a képlet:
=TEXTJOIN("; ";TRUE;FILTER($A$1:$D$1;BYCOL($A$2:$D$4;LAMBDA(col;SUM(--ISNUMBER(SEARCH("*"&F2&"*";col)))))))Google Sheets-ben ugyanezen függvények léteznek, szóval elméletben ott is műkődhet.
üdv
-
Delila_1
veterán
-
Fferi50
Topikgazda
válasz
p5quser #52686 üzenetére
Szia!
Talán próbáld meg ezt:
Először az oszlopokat összefűzni - nem kell fizikailag, csak képlettel -, ebben megkeresni a szövegtöredéket, hányadik sorban van.
Majd ebben a sorban ismét megkeresni, mostmár egyedül az oszlopot. Végül az első sorban a konkrét értéket.Itt láthatod részleteiben a képleteket.
Természetesen ez összevonható egy cellába is, kicsit hosszú lesz.
Üdv. -
Fferi50
Topikgazda
válasz
p5quser #52683 üzenetére
Szia!
Többoszlopos tartományban keresésre én nem emlékszem Excelben sem.
Szerintem az INDEX - Match páros műxik G.sheetben is. Viszont minden oszlopra külön kell a keresést megadnod.
A keresésben használhatod a wildcard karaktereket * (csillag) akárhány karakter ? (kérdőjel) 1 karakter.
Pl. "*uda*" az uda részletet tartalmazó értéket találja meg. Pontos egyezést kell keresni a Match függvénnyel.
Üdv. -
p5quser
tag
Sziasztok!
Olyat lehet excelben (igazából G.Sheetsben) hogy egy tartományban keressek egy szöveg részletet, majd találat esetén visszaadja a találat oszlopának első sorát?
Valahogy nem találok olyan képletet, amelyik több oszlopos tartományban keresgél.
Jó lenne képlettel megoldani, mert egy G.drive-ba feltöltött xls-ben vannak az adatok, szóval sem makró, sem apps script nem játszik. Bár a makró megvan hozzá, viszont akkor csak én tudok vele dolgozni....
Az alábbi kép lenne a probléma.
Előre is köszönöm! -
karlkani
aktív tag
Sziasztok!
Ezzel a makróval olvasom be egy lejátszási lista tartalmát, azonban van egy kis probléma.
Sub Lejatszasi_lista_frissitese()
Dim fileToOpen As Variant
Dim wsMaster As Worksheet
Dim wbTextImport As Workbook
Application.ScreenUpdating = False
fileToOpen = "C:\Users\en\AppData\Roaming\PotPlayerMini64\Playlist\F.dpl"
Workbooks.OpenText fileToOpen
Set wbTextImport = ActiveWorkbook
Set wsMaster = ThisWorkbook.Worksheets("F")
wbTextImport.Worksheets(1).Range("A1").CurrentRegion.Copy wsMaster.Range("I1")
wbTextImport.Close False
Application.ScreenUpdating = True
End SubA beillesztett tartalom ANSI kódolású, nekem viszont UTF-8 kellene (speciális karakter miatt). Ebben kérnék segítséget, gondolom megoldható.
Másik kérdés. Megjegyzésben szeretnék egy cellára (ledolgozott munkaidő) hivatkozni (x% * ledolgozott munkaidő * y Ft/óra). Jól gondolom, hogy ezt makró nélkül nem lehet megoldani?
Előre is köszönöm!
-
eszgé100
őstag
válasz
Fferi50 #52680 üzenetére
Koszonom szepen
Ezen kívül a táblázatra hivatkozás sem megfelelő.
Táblázatnév [@mezőnév] a helyes, továbbá szóköz nem lehet benne
Azt modjuk en is neztem, de amikor az IF kepletet csinaltam, hiaba javitottam at @ es a [ ]-et, hogy a megfelelo helyen legyenek, azok automatikusan visszakerultek.
Probaltam szokoz helyett "_"-al is, ezesetben is megjelentek az extra szogletes zarojelek.
Vegso megoldas, hogy egyszavasra csereltem az oszlop nevet. -
Fferi50
Topikgazda
válasz
eszgé100 #52677 üzenetére
Szia!
Az előzőhöz kiegészítésként:
Az idézőjeleket duplikálni kell a szövegen/képleten belüli megjenéshez.
Ezen kívül a táblázatra hivatkozás sem megfelelő.
Táblázatnév [@mezőnév] a helyes, továbbá szóköz nem lehet benne.
Vidd be a cellába egérmutatással a képletet és utána megnézni az immediate ablakban, hogyan néz ki. (Pl. ? Activecell.Formula2 és enter). Ezt használhatod az idézőjelekre vonatkozó szabály figyelembe vételével.
Üdv. -
eszgé100
őstag
Sziasztok!
Meg tudnatok mondani, hogy az utolso sor miert okoz runtime error 1004-et?
1004:Application-defined or object-defined error.Az osszes keplet mukodik a tablazatban, onnan bemasolva VBA-ba viszont az utolsot nem tudom beiratni az R oszlopba.
mrs.Activate
Set tbl2 = mrs.ListObjects("Table2")
lastrow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
tbl2.Resize mrs.Range("A2:V" & lastrow + 1)
lastrow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
mrs.Range("A" & lastrow) = modnum
mrs.Range("B" & lastrow) = modtype
mrs.Range("F" & lastrow).Formula2 = "=INDEX(Lists!$M$4:$M$33,MATCH(1,([@Customer]=Lists!$K$4:$K$33)*([@Commodity]=Lists!$L$4:$L$33),0))"
mrs.Range("G" & lastrow).Formula2 = "=INDEX(Lists!$N$4:$N$33,MATCH(1,([@Customer]=Lists!$K$4:$K$33)*([@Commodity]=Lists!$L$4:$L$33),0))"
mrs.Range("J" & lastrow).Formula2 = "=INDEX(Lists!$O$4:$O$33,MATCH(1,([@Customer]=Lists!$K$4:$K$33)*([@Commodity]=Lists!$L$4:$L$33),0))"
On Error Resume Next
mrs.Range("R" & lastrow).Formula2 = "=IF([@[Planned Production Date]]<>0,[@[Planned Production Date]]+87,"")"
If Err.Number > 0 Then
Debug.Print Err.Number & ":" & Err.Description
End If -
Delila_1
veterán
válasz
JozsBiker #52675 üzenetére
Ne a Szövegből oszlopok funkciót használd, hanem két képletet.
Vegyük, hogy a szöveged az A1 cellában van. A B1 képlete legyen =BAL(A1;5) – ha nem akarod a kettőspontot is ábrázolni, akkor =BAL(A1;4).
A C1 képlete =KÖZÉP(A1;6;25)&""
A üres string (dupla idézőjel) hozzáfűzése a számot szöveggé alakítja, ez a "trükk".
Ezután másolod a B és C oszlopokat (Ctrl+C), majd irányítottan, értékként beilleszted az A oszlopra. A C oszlopot, amiben ott maradtak a képletek, törölheted. -
JozsBiker
aktív tag
Ez sajnos nem egészen úgy működik ahogy szeretném. A csere ablakban hiába állítom át a 'Mit keres' és a 'Mire cserél' formátumot is 'szöveg' -re, a 'gysz:' -t kivágja, viszont a maradékot hatvány formában írja. Lehet, hogy az újabb Excel verziókban már rendesen működik ( meg az is lehet hogy még mindig én bénázok el valamit ).
-
Emod
kezdő
válasz
JozsBiker #52670 üzenetére
Oszlop kijelölése és csere (ctrl + h)?
Keresett szöveg: "gysz: "
Csere erre: ""Mutt #52669
Hasznos videók, köszi! -
JozsBiker
aktív tag
Sziasztok !
Régebbi ( 2002 -es) Excel beépített funkciójával ( Adatok/Szövegből oszlopok ) próbálom egy cella tartalmát ketté bontani, de a második cella típusa sehogy sem akar az lenni amit szeretnék. Hiába szöveg típusú a kiinduló cella, az eredményt mindenképp szám formátumba akarja tenni és hatványos alakban írja. Át tudnám tenni normál számmá, de legutolsó helyiértéken már eltér az eredetitől és az induló 0 is elveszik. A kettőspontot használnám elválasztónak.
Kiinduló cella:
gysz: 01814522620741
Eredmény1:
gysz
Eredmény2:
1,81452E+12
Van erre esetleg valami függvény amivel megoldható ? Igazából annyi is megfelelne, ha a "gysz" részt ki tudnám törölni, mert tulajdonképpen az volna a cél. Köszi.
-
Mutt
senior tag
Mike Girvin az elmúlt időszakban jópár hasznos videót rakott fel Youtube-ra.
1. Microsoft Power Tool-ok adatelemzéshez: https://www.youtube.com/watch?v=OPRgygR0kio
2. Power Query haladó (M-nyelv): https://www.youtube.com/watch?v=HRFZOYWGhjoRegex függvényeket kap az Excel: https://www.youtube.com/watch?v=YFnXV2be9eg
Online súgóban még nincsenek fent, de Insider változatban már elérhető.Közben pedig látom, hogy már 2 éve van REDUCE/MAP/SCAN függvény is.
-
Mutt
senior tag
válasz
dm1970 #52660 üzenetére
Szia,
SAP GUI beállításoknál kapcsold ki a Notifcation-öket és nem kell többet okéznod.
A makrókat alapból tiltja a rendszer, de lehet engedélyezni őket Excelben a Fájl->Beállítások/Options->Adatvédelmi központ/Trust Center->Adatvédelmi központ beállítása/Trust Center Settings gomb alatt.
Nézd meg a makróbeállításokat és a megbízható helyeket.
üdv
-
Emod
kezdő
válasz
Minininja35 #52665 üzenetére
Nincs véletlen nyitva valami párbeszéd ablak?
-
Minininja35
újonc
Sziasztok.
Office 2013 Home & Business
Találkozott már valaki olyannal, hogy ha több excel fájl van megnyitva egyidejűleg, akkor az Excel csak és kizárólag megnyitási sorrendben engedi bezárni?
Tehát pl. van 3 fájl megnyitva, akkor a 2.-at csak akkor zárja be, ha az elsőt már bezártam és így tovább.
Köszi a válaszokat. -
Fferi50
Topikgazda
válasz
föccer #52662 üzenetére
Szia!
Továbbá: a Watch window-ba beteheted a ciklusváltozódat és beállíthatod, hogy amikor az értéke 10,100 stb-vel osztható, akkor álljon meg a makró futása. Ez addig működik, amíg az adott munkafüzetet nyitva tartod, illetve ki nem törlöd a figyelőablakból a kifejezést.
Mentésnél természetesen nem megy a munkafüzettel, tehát a felhasználót nem zavarja. Tesztelésnél viszont nagyon hasznos tud lenni.
Üdv. -
dm1970
aktív tag
Szia!
Köszi Neked is a segítséget!
Nem a script futtatása közben kell(ene) a felugró ablakokban OK-ézni, hanem a VBS fájl futtatása addig nem indul el, amíg nem OK-zom egy SCRIPT megkísérel hozzáférni a SAPGUI-hoz... ablakot. De ezt hiába lehetne megoldani, sajnos az lesz a gond, hogy biztonsági okokból maga a rendszer nem enged makróval fájlt futtatni. Hozzárendeltem egy gombhoz az mm02-t és a minta makrót is. Mindkettő egyből leáll ugyanazzal a hibaüzenettel: nem érhető el vagy le van tiltva a makró a munkafüzetben. Több makró is fut a fájlban, azokkal nincs gond, ebből gondolom a tiltást.Fferi50
A fenti a Shell parancsra is igaz.Köszi még egyszer mindkettőtöknek!
-
föccer
nagyúr
válasz
Delila_1 #52658 üzenetére
Alapadatok megvannak, adatvesztés nincs, erre mindig akkurátusan figyelek. Csak időveszteség.
1 ciklus pár perc alatt fut le, 12*35 ciklus van. Egy range hivatkozást rosszul adtam meg, így minden eredmény 0 lesz (egy olyan makró ami 2 adattáblán futtat keresést, hogy mi változott, az milyen típusú beavatkozás volt, ilyenek. Most saját magához akarja hasonlítani.
Na mindegy, akkor holnap folytatom
-
Delila_1
veterán
válasz
föccer #52657 üzenetére
Ezt találtam, de nem próbáltam:
Makróval törölt adatok visszaállítása
1. elmented a munkalap másolatát:
Dim sh As Worksheet, msh As Worksheet
Set sh = ActiveSheet
sh.Copy after:=Sheets(sh.Index)
Set msh=ActiveSheet
msh.Name="Mentett"
sh.Activate
ha nincs már szükség a mentett munkalapra, akkor
msh.Delete vagy Sheets("Mentett").Delete
2. ha vissza szeretnéd hozni:
Dim msh As Worksheet, sh As Worksheet
Set msh = Sheets("Mentett")
Set sh = ActiveSheet
msh.UsedRange.Copy sh.Range(msh.UsedRange.Cells(1).Address)
-
-
oke
senior tag
válasz
Delila_1 #52653 üzenetére
Köszi. Amire használnám, az hetente többször készülő tábla, kb 40-45 ezer sorosak, egy részénél fkeressel mozgatok át adatokat és az ott keletkezett 0 és Hiányzó értékeket szeretném törölni, hogy "szebb" legyen az eredmény. Ezt most kézzel csinálom, 5 oszlopon. Nem tudom mennyire tudnám beépíteni, hogy mindig táblázattá alakítsam.
Amit Én bemáésoltam, az nem lenne jó erre a célra? A2-re álláson kívül. Nem töröl esetleg olyan adatokat is, amit nem kellene? -
eszgé100
őstag
Sziasztok!
Par hete osszehoztam egy Power Query lekerdezest, ami kb 30 kulonbozo Sharepoint mappabol osszefuzi nekem a benne talalhato .xls fajlokat, amik a raw data-t tartalmazzak. Meretebol adodoan a query frissitese eltart vagy 20 percig. Ezt szeretnem orvosolni valahogy.
Power BI-ban erre letezik az ugynevezett incremental refresh, ami csak hozzafuzi az uj adatokat a regihez, de eddig nem talaltam hasznalhato megoldast, ami Excelben is mukodne.
Letezik erre valamilyen alternativ megoldas?Elore is koszonom
-
oke
senior tag
válasz
Delila_1 #52651 üzenetére
Köszi, sajnos Run time error '9'-el elszáll az első sornál nálam.
Én ezzel próbálkoztam egyébként, csak nem tudom jó e a
Range("A2").Select
megadása, hogy onnan kezdje a törlést, ha az első adat mundjuk az A4-ben van:ActiveSheet.Range("A2:A" & utolso).AutoFilter Field:=1, Criteria1:="=0", _
Operator:=xlOr, Criteria2:="=#HIÁNYZÓ"
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
ActiveSheet.Range("A2:A" & utolso).AutoFilter Field:=1
Range("A2").Select
-
Delila_1
veterán
Rögzítettem egy makrót, ahol a Táblázat1 B oszlopában vannak a törlendő cellák (Field:=2, Adat címmel).
Szűri a 2 értékre, törli azokat, majd megszünteti a szűrést. Ilyen egyszerű.Sub Makró1()
ActiveSheet.ListObjects("Táblázat1").Range.AutoFilter Field:=2, Criteria1:= _
"=0", Operator:=xlOr, Criteria2:="=#HIÁNYZÓ"
Range("Táblázat1[Adat]").ClearContents
ActiveSheet.ListObjects("Táblázat1").Range.AutoFilter Field:=2
Range("Táblázat1[#Headers]").Select
End Sub
-
oke
senior tag
Sziasztok,
Szeretnék makróban megoldani egy egyszerűnek tűnő dolgot, de nem boldogulok:
- "A" oszlop szúrése két értékre: 0 és #HIÁNYZÓ
- A szűrés álatl felhozott cellákban a fenti értékek törlése. Csak az értékek, nem a sort vagy cellát.
- szűrlés feltétel törlése.A sorok száma változhat, nem fix.
-
Mutt
senior tag
válasz
dm1970 #52644 üzenetére
Szia,
Ahogy olvasom az erdeti kérdést, ha csak letöltesz egy riportot és OK-t kell nyomni, akkor még1xübb a dolog, mert akkor nem kell For-Next ciklus. A VBS szkritpet bemásolod egy VBA modulba, az Application-t mindenhol lecseréled SAPApplication-re.
A felugró ablakban (a wnd szám mondja meg melyik ablakban kell dolgozni, 0 az alap és 1-esével növekszik minden felugró ablakkal) OK-t (a btn utáni szám 0-szokott lenni OK-ra, de ezt a Script Tracker meg tudja mutatni) így lehet nyomni:
session.findById("wnd[1]/tbar[0]/btn[0]").press
üdv
-
Mutt
senior tag
válasz
dm1970 #52644 üzenetére
Szia,
Van programozási tapasztalatod (For - Next ciklus)?
Én MM/FI modulokban dolgozom, onnan tudok példát mutatni.
Egy komplex változat fent van a GitHub-on.
Illetve YT-on Varga Csongor videói is tudnak segíteni.Mielőtt tovább megyünk, pár tanács!
1. Óvatosan a szkriptekkel, mert nagy kárt tudsz okozni!
2. Ha nincs teszt környezeted, ahol tudod ellenőrízni a szkriptet, akkor nagyon legyél körültekintő.
3. A SAP bonyolult, a SAP szkript mégrosszabb. Előbb kérdezz vkit.
4. Használd a Scripting Trackert (letölthető innen), hogy kiderítsd melyik mező miről szól.Itt egy Móricka példa. MM02-es tranzakcióval a 93062409-es anyagnak a material group-ját LEDG101-re írtam át. A script ez lett:
If Not IsObject(application) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
Set connection = application.Children(0)
End If
If Not IsObject(session) Then
Set session = connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, "on"
WScript.ConnectObject application, "on"
End If
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").text = "mm02"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtRMMG1-MATNR").text = "93062409" 'ez az anyagszám
session.findById("wnd[0]/usr/ctxtRMMG1-MATNR").caretPosition = 8
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP01/ssubTABFRA1:SAPLMGMM:2004/subSUB2:SAPLMGD1:2001/ctxtMARA-MATKL").text = "LEDG101" 'ennek a mezőnek az értékét akarom módosítani vmire
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP01/ssubTABFRA1:SAPLMGMM:2004/subSUB2:SAPLMGD1:2001/ctxtMARA-MATKL").setFocus
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP01/ssubTABFRA1:SAPLMGMM:2004/subSUB2:SAPLMGD1:2001/ctxtMARA-MATKL").caretPosition = 7
session.findById("wnd[0]/tbar[0]/btn[11]").press
session.findById("wnd[0]").sendVKey 0A példámban a szkriptet szeretném lefuttatni másik anyagszámokon (19-es sor) és akár más értéket megadni (24-es sor)
1. Excelben egy lapon megadom hogy mely anyagoknak milyen új értéket akarok megadni
pl.
2. Kell egy For - Next ciklus ami ezen végigmegy.
VBA Editorban egy új modulban ez például az A-oszlopban lévő értéket kiírja.Sub minta()
With ActiveSheet
lastrow = .Range("A" & Rows.Count).End(xlUp).Row
For c = 2 To lastrow
Debug.Print .Range("A" & c)
Next c
End With
End Sub3. Most már csak a SAP scriptet kell ide tenni. Az első 14 sor a SAP-hoz kapcsolódást csinálja, ezt elég egyszer megtenni. Vagyis ez a For-Next elé kerül. A többi lépés pedig bele a For-Next-be.
Annyi javítás kell, hogy az "Application" Excelben már foglalt, így más kell helyette használni pl. "SAPApplication".4. Nekem két változó értékem van az A és B-oszlopban, amit szeretném ha a szkript használna.
A lenti sornak a végén a fix anyagszám helyett kell nekem az A-oszlop értéke.session.findById("wnd[0]/usr/ctxtRMMG1-MATNR").text = "93062409"
A helyes kód a fenti helyett ez lesz:
session.findById("wnd[0]/usr/ctxtRMMG1-MATNR").Text = .Range("A" & c)
A
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP01/ssubTABFRA1:SAPLMGMM:2004/subSUB2:SAPLMGD1:2001/ctxtMARA-MATKL").text = "LEDG101"
sor helyett pedig ezsession.findById("wnd[0]/usr/tabsTABSPR1/tabpSP01/ssubTABFRA1:SAPLMGMM:2004/subSUB2:SAPLMGD1:2001/ctxtMARA-MATKL").Text = .Range("B" & c)
5. Érdemes egy visszajelzést is adni, hogy melyik sorban járunk és ha kell akkor meg is tudjuk szakítani a futtatást. Ezért a "Next c" elé kerüljön be ez.
DoEvents
.Range("C" & c) = "Kész"6. Rakj ki egy gombot és rendeld hozzá a makrót. Érdemes tesztelni 1-2 kombináción, ha van teszt environment akkor azon, ha nincs akkor a mentést sort kommenteld ki először.
A teljes minta kód:
Sub minta()
If Not IsObject(SAPApplication) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set SAPApplication = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
Set Connection = SAPApplication.Children(0)
End If
If Not IsObject(session) Then
Set session = Connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, "on"
WScript.ConnectObject SAPApplication, "on"
End If
With ActiveSheet
lastrow = .Range("A" & Rows.Count).End(xlUp).Row
For c = 2 To lastrow
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "mm02"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtRMMG1-MATNR").Text = .Range("A" & c)
session.findById("wnd[0]/usr/ctxtRMMG1-MATNR").caretPosition = 8
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP01/ssubTABFRA1:SAPLMGMM:2004/subSUB2:SAPLMGD1:2001/ctxtMARA-MATKL").Text = .Range("B" & c)
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP01/ssubTABFRA1:SAPLMGMM:2004/subSUB2:SAPLMGD1:2001/ctxtMARA-MATKL").SetFocus
session.findById("wnd[0]/usr/tabsTABSPR1/tabpSP01/ssubTABFRA1:SAPLMGMM:2004/subSUB2:SAPLMGD1:2001/ctxtMARA-MATKL").caretPosition = 7
session.findById("wnd[0]/tbar[0]/btn[11]").press
session.findById("wnd[0]").sendVKey 0
DoEvents
.Range("C" & c) = "Kész"
Next c
End With
End SubEzzel készen is vagy, de azért sok mindent lehet rajta fejleszteni mint például
- vannak felesleges sorok (általában a caretPosition-osok ilyenek)
- nincs semmilyen hibaellenőrzés (pl. nincs jogosultságod vmihez, nem jó érték van az inputban)
- nem annyira jó az első kliens első sessionjéhez csatlakozni, lehet hogy éppen másra használod.Ha kell segítség akkor dobd fel ide/keress meg.
üdv
-
dm1970
aktív tag
válasz
Fferi50 #52643 üzenetére
Szia!
Van egy megnyitott excel táblám, amiben ha berögzítettem minden adatot hozzányitok egy SAP excel táblát ellenőrzés végett. Ezt a táblát úgy kapom, hogy a SAP folyamatot felvettem script-l, s ugye így lett egy vbs fájlom, amit futtatva belép a SAP-ba, s végig viszi a folyamatot. Arra már rátaláltam, hogy ezt a vbs-t egy alap excel táblán egy gombhoz rendelt makróval megnyitom, de nekem nem megnyitni kellene, hanem futtatni a fájlt + még a SAP felugró ablakát le OK-zni. Plusz progik felrakására nincs lehetőség. -
dm1970
aktív tag
Sziasztok!
Ismét itt, természetesen kérdéssel.
Van egy vbs fájl, amit ha elindítok fájlkezelőből belép egy felületre és végzi a dolgát, de előbb még egy felugró ablakon kell egy OK-t nyomni. Kérdésem, hogy meglehet ezt makróba írni, hogy egy gombhoz hozzárendelve végigfusson a folyamat?Köszi dm!
-
Geryson
addikt
Sziasztok! Van egy cellaértékem, ami a következő:
234220-AMW_211022-1,56
Volt nekem egy
=JOBB(B2;HOSSZ(B2)-SZÖVEG.KERES("_";B2))
képletem, viszont sajnos ez némileg téved, mert nekem csak az 1,56-os értéket kellene hozni eredményképpen - de mást is hoz: "211022-1,56". Mi lenne a helyes képlet, hogy csak a kötőjel utáni rész legyen az eredmény?De ha már kérhetek egy képletet, akkor kérhet egy olyat is, hogy a dátum (azaz az "_" és a jobb oldali "-" közötti szám legyen a lekérdezés eredménye?
-
spleenszuru
őstag
Sziasztok!
Mi lehet olyankor a hiba, ha egy excel munkafüzet magától húz össze sorokat/oszlopokat?
Tehát nem a tipikus dupla bal klikkel, hanem magától csinál mindent.
Hol lehet ezt ki/be kapcsolni?Köszi.
-
#36531588
törölt tag
Sziasztok,
7000-8000 cella tartalma szöveg, és sajnos sok olyan cella van, amiben a szöveg után van egy space karakter. A szerkesztőlécre kattintva ez jól látszik. Hogy lehetne egy huszárvágással törölni ezeket a felesleges szóköz karaktereket a cellákból?
Mert ugyanis így azonos tartalmú cellák keresésekor nem veszi észre az azonos tartalmat a plusz szóköz miatt.
köszönöm
üdv -
Mutt
senior tag
válasz
nihill #52611 üzenetére
Szia,
Excel 2013-tól van Power Pivot, ami DAX nyelvet használja.
A CONCATENATEX függvényt próbáld ki így:1. Beszúrás -> Kimutatásnál válaszd ki az adatmodellbe töltést (Add Data Model), ez a Power Pivot.
2. Csináld meg a kimutatást ahogy szeretnéd. Majd a kimutatás mezőknél jobb klikk a tábla nevén (példámban Tartomány) és új mérték/new measure opciót válaszd.
3. A képlet a példámban: =CONCATENATEX('Tartomány';[Név];",")
Ahol tartomány a tábla neve, [Név] pedig az oszlopneve amiben lévő adatot össze kell fúzni, végül pedig a felsorolás jele vessző. OK után ezt az új érték már be tudod húzni az értékekhez.üdv
Ps. Aki Kimutatást használ annak érdemes alapból az adatmodelbe töltést választani minden esetben, mégha DAX-ot nem is fog használni, mert kapsz új aggregációs függvényeket és a lehetőséget hogy több táblát összekapcsolj.
-
BagyiAti
tag
Probálom máshogy is mutatni.
4 kimutatás van. Abból az 1,4,5-höz ha szeletelőt rendelek akkor ezt mutatja a kimutatás kapcsolatnál (mindegyiknél próbálva):
Ha a 2-es kimutatáshoz rendelek hozzá szeletelőt akkor meg ezt:
És ugye az lenne a cél, hogy a szeletelő mind a 4-et vezérelje.. -
BagyiAti
tag
válasz
Fferi50 #52617 üzenetére
Szia,
A kimutatás 2 az egy diagram (mint az 1,4,5), a kimutatáskapcsolat kép meg egy szeletelő beállitás. Tehát van egy szeletelőm ami a kimutatás2 diagramot nem eszi meg, minden mást igen..sőt, több szeletelőm is van, azok ugyanigy viselkednek. 3-at meg engedné...ha törölve van akkor miért engedné?
-
Fferi50
Topikgazda
válasz
BagyiAti #52616 üzenetére
Szia!
Ha a Kimutatás2-höz állítod a kapcsolatot, akkor magához nem fog szerintem ajánlani, viszont az 1,4,5 vagyis a további 3 kimutatás amihez kapcsolódni lehet, az ott van. A kimutatás3 szerintem egy korábban törölt kimutatás neve lehet és ezért nincs is bepipálási lehetőség, ha jól látom.
Üdv. -
BagyiAti
tag
Sziasztok,
Van négy kimutatás diagramom, melyek száma 1,2,4,5. A szeletelők a kimutatáskapcsolat beállitásakor, nem ajánlják fel az egyiket, ellenben felajánlanak egy 3-as számút...ami nincs...valami ötlet mi lehet a baj?
Jha természetesen ugyanabból az adatforrásból dolgozik mind. -
Fferi50
Topikgazda
válasz
Lasersailing #52614 üzenetére
Szia!
Hiába egyforma kinézetre a két érték, ha az egyik dátum formátumú a másik pedig szöveg.
Ahogyan írtad, a sob sheet A oszlopában dátum formátumok vannak (erről meggyőződhetsz, ha a cellaformátumot megváltoztatva számmá v. általánossá számot látsz a cellában).
A form datumok mezőjében pedig szöveg és a szövegfüggvényekkel való manipulálás után is szöveg marad az összerakott érték! Ezért dátummá kell alakítanod, nem pedig szöveggé összefűznöd. Pl.CDate(Right(Kiszallitasform.datumok.Value, 2) & "/" & Mid(Kiszallitasform.datumok.Value, 6, 2) & "/" & Left(Kiszallitasform.datumok.Value, 4))
Csak utána nézd meg, hogy így mennyi lesz a dátum értéke mert lehet, hogy fordítva kell összeraknod a napot-hónapot.
Másik lehetőség: a sob munkalap A oszlop celláinak nem a VALUE hanem a TEXT tulajdonságát használod és azt hasonlítod az összerakott szöveghez:Sheets(sob).Cells(sm, 1).TEXT= Right(Kiszallitasform.datumok.Value, 2) & "/" & Mid(Kiszallitasform.datumok.Value, 6, 2) & "/" & Left(Kiszallitasform.datumok.Value, 4)
A Text ugyanis mindig az adott cellában levő tényleges "kinézetet" tartalmazza.
Remélem sikerül megoldanod.
Üdv. -
Lasersailing
senior tag
válasz
Delila_1 #52603 üzenetére
Köszönöm, küzdök továbbra is
Most a gondom az alábbi: (és valószínűleg a háttérbeli ok ugyanaz: nem ismerem a formátumokat excel vba-ban)
Az alábbi függvényrészlet soha nem talál egyezőséget, pedig ránézésre (inputbox alapján) ugyanaz a két érték pl. sm=4-nél (lásd képernyőkép később)
sm = 3
Do
sm = sm + 1
'Loop Until year(right(Sheets(sob).Cells(sm, 1).Value,4)),month(mid(Sheets(sob).Cells(sm, 1).Value,4,2),day(left(Sheets(sob).Cells(sm, 1).Value,2))) = datum
InputBox (Sheets(sob).Cells(sm, 1).Value & Chr(13) & Right(Kiszallitasform.datumok.Value, 2) & "/" & Mid(Kiszallitasform.datumok.Value, 6, 2) & "/" & Left(Kiszallitasform.datumok.Value, 4))
Loop Until Sheets(sob).Cells(sm, 1).Value = Right(Kiszallitasform.datumok.Value, 2) & "/" & Mid(Kiszallitasform.datumok.Value, 6, 2) & "/" & Left(Kiszallitasform.datumok.Value, 4)(A sob sheeten az értékeket összehúzva dátumként kezeli az A oszlop értékeit.)
Egyezőségről képernyőkép:
Mi lehet a gond és főleg mi a megoldás?
kiszallitasform.datumok tulajdonságai: -
nihill
őstag
Sziasztok!
Pivot tábla adatbázisból. Van-e arra bármi lehetőség, hogy az érték részbe nem számot húzok bele hanem szöveges mezőt? Vagy ezt bárhogy máshogy megoldani?
Az adott sor és oszlop kombinációban mindig fixen 1db (szöveges) érték van az adatbázisban, nincs semmit összesíteni vagy megszámolni, minden cellában csak meg kéne jeleníteni az adott X-Y-hoz tartozó szöveget.
Köszönöm. -
rovgab
csendes újonc
Sziasztok!
Van egy táblázatom és abból szeretném mondjuk egy kisebb táblázatba kiszűrni azokat az anyagokat (A oszlop) és a mögötte lévő mennyiségeket ( G-H-I-J oszlop) amelyek nem egyenlőek "0# + 0 KRT"-nal.
Tehát az anyag lenne a lényeg és, ha mögötte bármelyik cellában az érték nem egyenlő 0# + 0 KRT, akkor az a sor úgy kompletten kell. Ellenkező esetben semmit sem szeretnék látni abból a sorból, ahol mind a 4 oszlop nullás. Szűrő függvényben gondolkodtam, hogy azzal esetleg kivitelezhető lenne? A makró sajnos kizárva. Előre is köszönöm a segítséget.
-
Fferi50
Topikgazda
válasz
customer114 #52604 üzenetére
Szia!
Egy ötlet:
1. lépés: Adatok - szövegből oszlopok - tagolt - határolójel ; (pontosvessző) OK.
2. létrejött 1 sor, ahol a cellák egy név adatait tartalmazzák, ezt kijelölöd - másolás - irányított beillesztés TRANSZPONÁLÁS. Ezáltal egy oszlopot kapsz.
3. az oszlopra szintén - Adatok - szövegből oszlopok - tagolt - határolójel , (vessző) OK
4. így külön kerül a vezetéknév és a keresztnév az email cím
5. a második oszlopra újfent Adatok - szövegből oszlopok - tagolt - határolójel egyéb <, a többit kitörölni, OK
6. az email címeket tartalmazó oszlop végéről lecsípheted a > jelet - =Bal(A1;Hossz(A1)-1) képlettel egy új oszlopba.
Üdv. -
customer114
őstag
válasz
customer114 #52604 üzenetére
Megoldottam. Megnyitáskor elválasztottam, txt-ből.
-
customer114
őstag
Sziasztok!
Az alábbi problémámban szeretném a segítségetek kérni.
Adott egyetlen cella tele adattal nevek és azt követő email címek, az formátum szerint:
Vezetéknév, Keresztnév <Név.email@ceg-ceg.com>; Vezetéknév, Keresztnév <Név.email@ceg-ceg.com>; Vezetéknév, Keresztnév <Név.email@ceg-ceg.com>; Vezetéknév, Keresztnév <Név.email@ceg-ceg.com>; Vezetéknév, Keresztnév <Név.email@ceg-ceg.com>; Vezetéknév, Keresztnév <Név.email@ceg-ceg.com>;
Kb. 500 darab név és email cím.
Milyen módon tudnám a neveket és az email címeket egy képlettel külön oszlopon, külön cellákba áthelyezni?
A oszlop: Vezetéknév
B oszlop: Keresztnév
C oszlop: email címNagyon szépen köszönöm!
-
Delila_1
veterán
válasz
Lasersailing #52602 üzenetére
Dátumként deklaráltad a datum-ot, majd szöveges értéket adtál neki.
-
Lasersailing
senior tag
válasz
Lasersailing #52600 üzenetére
Megoldási javaslatod mentén elindultam, most egy másik hibát találtam, ami megint dátumformátum hiba:
Ezzel mi a gond?
(korábban: dim datum as date) -
Delila_1
veterán
válasz
Lasersailing #52600 üzenetére
Szerencsére még nem töröltem ki a makrót.
Átalakítva:Sub Inditas()
Dim sm As Integer, szoveg As String
For sm = 1 To 4
szoveg = Right(Cells(sm, 1), 4) & "." & Mid(Cells(sm, 1), 4, 2) & "." & Left(Cells(sm, 1), 2)
Kiszallitasform.datumok.AddItem szoveg
Next
Kiszallitasform.Show
End Sub
Új hozzászólás Aktív témák
- HIBÁTLAN iPhone 13 512GB Pink -1 ÉV GARANCIA - Kártyafüggetlen, MS3274, 100% Akkumulátor
- GYÁRI TÖLTŐK DELL LENOVO HP FUJITSU TOSHIBA Macbook---------- Budapest,/MPL/Foxpost
- Honor 90 512GB, Kártyafüggetlen, 1 Év Garanciával
- Apple iPhone 16e 128GB, Kártyafüggetlen, 1 Év Garanciával
- DELL PowerEdge R740 rack szerver - 2xGold 6130 (16c/32t, 2.1/3.7GHz), 64GB RAM, 10Gbit HBA330, áfás
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest