Az „Excel” fórum célja, hogy keretet adjon az Excel felhasználók széles táborának tapasztalataik megosztására, és lehetőséget a segítséget kérőknek. Az alábbi összefoglaló azért készült, hogy segítse a helyes kérdésfeltevést.
– Írd le szabatosan a problémát. Úgy fogalmazz, hogy ne csak te magad, de a szakértő is megértse, mire szeretnél választ kapni.
– Írd le, hogy milyen verziójú Excellel dolgozol. (Vagy ha nem – ill. nem csak – Excel, akkor micsoda?)
– Írd le, hogy milyen úton indultál el, és hol akadtál el rajta.
– A kérdés megértése szempontjából sokat segíthet, ha feltölteszt egy képet, amin látszik, hogy mit szeretnél, vagy illusztrálja azt.
– Még jobb, ha feltöltesz egy minta munkafüzetet valahová (pl. data.hu). Feltöltés előtt távolítsd el belőle a nem publikus adatokat.
– Ha a feladat jellege olyan, célszerű az "előtte" és "utána" állapotokat bemutatni. (Miből kellene csinálni mit?)
– Ha VBA kódon kell javítani, másold be a releváns kódrészt. Rövid kód mehet hozzászólásba, hosszú kód inkább ide: http://pastebin.com/
– Ha valami nem úgy működik, ahogy kellene, add meg a rendellenes viselkedés jellemzőit, a hibaüzenetet, és a hibát okozó programsort.
Nem tudom, hogy néz ki a táblázatod, de sztem működnie kellene az ofszetes megoldásnak. Mert ha pl. az összegzendő tartomány A1:A5, és az A6-ban van az összeg, akkor a helyes képlet: =SZUM(A1:OFSZET(A6;-1;0)) Ha itt beszúrsz egy sort a 6-os sor elé, akkor a képlet az A7-be kerül, és így módosul: =SZUM(A1:OFSZET(A7;-1;0)) az OFSZET(A7;-1;0) hivatkozás pedig az A6-os cellára mutat, tehát a SZUM függvény az A1:A6 tartományt összegzi.
Az, hogy a tartomány eleji vagy végi beszúrás miért nem módosítja a képleteket, gondolom költői kérdés. Legalábbis, ha tudnánk is a választ, az sem módosítana a helyzeten. Viszont megfigyeltem egy érdekességet.
A1:A7 tartományba számokat írtam, A8-ba pedig SZUM(A1:A7) Aztán beszúrtam egy sort A8 elé. A képlet A9-be került, és továbbra is SZUM(A1:A7) maradt. Ezután beírtam egy számot A8-ba, mire a képlet az A9-ben SZUM(A1:A8)-ra változott!!
1. Jelöld ki a kérdéses oszlopot. 2. Menü: Formátum -> feltételes formázás -> 1.feltétel: a cella értéke nagyobb, mint 10 3. Állítsd be a kívánt formátumot.
Előnye a makrós módszerrel szemben, hogy - teljesen automatikus, nem kell makrót futtatni minden módosítás után - ha az oszlop máshová kerül, a formátum beállítások mennek vele, míg a makrót módosítani kellene, hogy rendesen működjön
Köszi a keresést, ezzel nekem nem működött a dolog, de "kínomban" kitaláltam egy megoldást:
=SZUM(E2:INDIREKT(ÖSSZEFŰZ("E";SOR()-1)))
Továbbra sem értem azonban az excelnek azt a működési módját, amelyben:
ha a szumma függvénnyel összegzel egy adott tartományt (mondjuk öt sor A oszlopát a hatodik sorban - "=szum(a1:a5)" ), akkor, ha a tartományban beszúrsz egy plusz sort, akkor a szumma függvény automatikusan kijavítódik ("=szum(a1:a6)" lesz), de ha az összegző sorba szúrsz be plusz sort (ami az összegző sor fölé kerül, tehát látszólag az is a tartomány része lesz), akkor az nem változtatja meg a szumma függvényt (marad "=szum(a1:a5)").
Érti ennek valaki a magyarázatát? Mert számomra nem logikus.
Meg kellene oldani azt, hogy egy oszlopot vizsgálva cellánként az abban szereplő értékeket figyelembe véve, amennyiben pl. 10 nél nagyobb szám van a cellában akkor az álltalam beállított cellák hátterét szinezze ki pl sárgára.
Lehet, hogy ez full hülyeség, de van egy 4000 soros táblázat amiben ki kell emelni háttérszínezéssel bizonyos sorokat asszerint, hogy egy bizonyos oszlop pl. "J"-ben szereplő érték nagyobb-e mint 10 vagy sem.
Most ez manuális munka és kb. fél óra.
Szóval ha lenne megoldás akkor köszönöm a segítséget.
Látszólag ugyanaz a dolog és mégsem. Elmondom konkrétan a problémát:
Van egy részösszeges tábla, amibe a részösszeges csoportba, annak utolsó, részösszeg előtti sorába szeretnék sort beszúrni úgy, hogy a beszúrt sor megfelelő adatát is adja bele a részösszegbe. Az excel sajátossága adja a porblémát, aminek az a lényege, hogy ha a részösszeg (vagy szumma) soron állva szúrsz be sort, akkor nem bővül a réssszeg tartomány képlete (nem lesz eggyel több), hanem marad ugyanannyi, míg ha a résszösszeg tartományon belül szúrod be a sort, akkor a képlet is nő a beszúrt sorok számával. Ezért, ha a résszösszegen állva szurok be sort a tartományba, akkor nem fogja a beszúrt sor adatát a résszösszeg tartalmazni, ha meg a réssszöszeg felett szurokbe sort, akkor az meg nem lesz a tartomány utolsó sora. Mindezek miatt kellene úgy tudni beszúrni sort, hogy a tartomány utolsó sora alá tudjak sort beszúrni, ne az eggyel alatti fölé.
Excel application objektumot kétféleképpen tudok létrehozni (bár lehet, hogy van még egy tucat lehetőség):
1. Dim xls As As Excel.Application Set xls = New Excel.Application
2. Dim xls As Object Set xls = CreateObject("Excel.Application")
Az első módszer előnye, hogy a fordító már a kód írásakor tudja, hogy milyen objektumom van, és felkínálja a lehetséges property-ket és method-okat, továbbá egy rakás hibát kiszűr, még mielőtt a program futását engedélyezné. Pl. nem engedi, hogy olyan property-t írjak a kódba, amilyen az Excel application-nek nincs.
Te viszont általában a CrateObject-et használod, legalábbis innen úgy tűnik. Annak milyen előnye van az 1. módszerhez képest?
Nem ismerem az OLE objektumos elérési lehetőségeket. (Vagy lehet, hogy ismerem, csak nem tudom, hogy úgy hívják?) Elmondod, hogy megy ez? Hátha tudok valami tippet adni.
Illetve van még egy kérdésem, köszönettel venném ha valaki segítene. Szintén OLE objuktomon keresztül kimásolok Copy-val egy tartományt, de én csak az értéket akarom átadni. Ez ugye így nézne ki de természetresen nem működik:
Sziasztok, OLE objektummal elért munkafüzetben hogy lehet For Each-el bejárni egy Selection-t? Ha esetleg így nem érthető a kérdésem másolok be kódrészletet.
A kérdésem most az lenne, hogyan tudom beállítani azt, hogy egy billentyű kombinációval beállított eljárást az Eszközök - Makró - Makrók - Indítással ne lehessen elindítani? Ha a modul tetején Option Private Module-t használom, nem indul el a beállított billenytyűkkel...
Kedves Delila_1, magyarpityu, Jimmy the Hand!
Köszönöm szépen a segítséget! Végül, magyarpityu topictárs vezetett a jó megoldásra, mivel a megoldásával (7934) a 2 és 100 között változó értékeket is lehet összegezni.
Sub Próba() Dim BeillesztésHelye As Long BeillesztésHelye = 4 + 60 ' Szummázó Cells(6, BeillesztésHelye), 30 End Sub
Sub Szummázó(Hova As Range, Darabszám As Long) Dim Összegzendő As Range, i As Long If Darabszám < 1 Then MsgBox "nincs mit összegezni" Exit Sub End If On Error GoTo EHandler Set Összegzendő = Hova.Offset(, -2) For i = 2 To Darabszám Set Összegzendő = Union(Összegzendő, Hova.Offset(, -2 * i)) Next On Error GoTo 0 Hova.Formula = "=SUM(" & Összegzendő.Address(False, False) & ")" Exit Sub
EHandler: MsgBox "Az összegző cella előtt nincs annyi összeadható cella, amennyit össze akarsz adni."
Sub Összegez() Dim i As Integer, Sor As Long, Keplet As String Sor = 6 '6. sor Keplet = "=" For i = 3 To 88 Step 2 '"C" oszloptól "CJ"-ig minden második Keplet = Keplet & "RC[" & i - 89 & "]" & "+" Next i Keplet = Left(Keplet, Len(Keplet) - 1) ActiveSheet.Cells(Sor, 89).FormulaR1C1 = Keplet End Sub
Köszönöm, ez valóban működik ha tudom, hogy hol van a összegző cella, de amint írtam, ez változik... Az alábbival próbálkoztam, de a KPSzám = 30 után kiakad.
A KPSzám határozza meg, hogy mennyi értéket kell összeadni.
Function Szummázó(KPSzám As Byte) As Variant Dim TmpS1 As Variant, TmpS2 As Variant
TmpS1 = "=SUM(" TmpS2 = "RC[-"
For i = 1 To KPSzám If i Mod 2 = 0 Then If i <> KPSzám Then TmpS1 = TmpS1 & TmpS2 & i & "]," Else: TmpS1 = TmpS1 & TmpS2 & i & "])" End If End If Next i
Köszönöm! Elnézést, az előbb elfelejtettem, hogy az összegzö cella nem állandóan egy adott helyen van, valamint azt, hogy a makróból "csak" az összegző cella formátumát szeretném beállítani, vagyis azt, hogy összegezze az előtte lévő cellák értékét, amelyet a makró futása után töltök fel értékekkel (a makróval előkészítem az adatösszegzést).
Tudom, hogy alapból el van rejtve.. De nem látszik sehol sem. Tuti, hogy nem nyílik meg.
A makrók sem látszanak (SŐT!), ha hozzárandelek egy új eszköztárgombhoz egy personalban lévő makrót, akkor nem futtatja le az ikon. Az új eszköztárgomb első rákattintásakor megadhatod, hogy mely makrót rendelje hozzá. Most forcsa módon MINDEN kattintásra azt akarja, hogy adjam meg a hozzárendelni kívánt makrót. És még ott van az a dolog is, hogy csak "erőltetve" tudom előhozni/megnyitni a personalt. Nem nyílik meg semmi, amit az XLSTART mappába pakolok. :( Eddig működött a dolog.
Sub Összegez() Dim i As Integer, Sor As Long, sum As Double Sor = 6 '6. sor sum = 0 For i = 3 To 88 Step 2 '"C" oszloptól "CJ"-ig minden második sum = sum + ActiveSheet.Cells(Sor, i) Next i ActiveSheet.Cells(Sor, 89) = sum '"CK" oszlopba az eredmények End Sub
Segítséget szeretnék kérni makróból történő összegzéssel kapcsolatban. A "C6" cellától kezdve a "CI6"-ig, vagyis minden második oszlop értékét (C6;E6;G6;I6;K6;...) szeretném összegezni a "CK6" cellába, ami valamiért nem megy. Tudna valaki segítni?
A personal.xls láthatatlan munkafüzet. Úgy értem, ha megnyitod, akkor sem látszik, szemben a normál munkafüzettel. Viszont a VB editorban, a project explorer ablakban látható, hogy meg van nyitva. Nincs ott véletlenül?
A "C:Documents and SettingsfelhasználónévApplication DataMicrosoftExcelXLSTART" mappába van betéve (ugyebár oda generálódik). Próbáltam a "C:Program FilesMicrosoft OfficeOffice11" mappában is buherkodni, hátha onnan megnyílik.., de nem.. :(
Én úgy tudom, hogy az Excel beállításainál nem adható meg, h mi töltődjön be az Excel-lel egyidőben... csak a fent említett mappa tartalma töltődik be, nem??
kepet be tudsz hivni excelbol hiperhivatkozassal. Ha ezt tovabbkuldod vkinek hasznalatra, akkor az excelfile-t es a hivatkozott kepeket tedd egy konyvtarba es azt zip-ben kuldd el.
Ismétlem, a probléma megoldásához több kell, mint a kimenet ismerete. Szükség van a bemenetre is. Milyen adatbázis, hogyan lehet elérni, mi a szerkezete, mik azok a táblák és mezők, amelyek az egyes termékekhez tartozó értékeket tartalmazzák, satöbbi. Enélkül hiába küldöd nekem el az árajánlatot, nem tudok vele mit kezdeni. Amúgy a fórumos email címem működik.
Ha Access-ben egyszerűbb akkor legyen abban. A lényeg, hogy a képeket is automatikusan betegye az árajánlatba. Ha van időd és kedved küldök egy árajánlatot ami wordben készült, ilyet kellene alkotni. Csak adj olyan mail címet amit nézel is :D
"Meg lehetne oldani, hogy ha beírom a cikkszámot akkor egy meglévő adatbázisból behívja a szükséges adatokat és a képet a progi? "
Ha már egyszer adatbázis, akkor inkább Access lenne a megfelelő alkalmazás erre. Valószínűleg Excelben is megy, csak kicsit körülményesebb. Mindazonáltal, véleményem szerint, ez egy olyan probléma, amelynek a megoldása meglehetős belelátást igényel a programozó részéről. Példának okáért hozzáférést az adatbázishoz. Enélkül csak általánosságban lehet mondani bármit is.
Általánosságban, első közelítésben, így nézne ki a megoldásom:
- ADODB kapcsolat az adatbázishoz - kitüntetett cella változásának figyelése - a cella értékének validálása - az érvényes érték alapján az adatbázis lekérdezése - a visszatérő értékek megjelenítése az árajánlat alapjául szolgáló sablon munkalapon
Cégnél sok árajánlatot kell írni, sok termékkel és mindnek, név, leírás, ár, darabszám cikkszám és kép ami lényeges. Meg lehetne oldani, hogy ha beírom a cikkszámot akkor egy meglévő adatbázisból behívja a szükséges adatokat és a képet a progi? Utóbbi lenne a legfontosabb mert azt nem tudja egyik program sem, de ha tudtok ilyenről szóljatok. Ha Word-ben is megoldható az is jó lenne.
Valaki segített egy makrót megírni, ebben a fejléc felül most 1 2 3 tehát számok vannak benne. Vissza lehet ezt úgy változtatni betükre, hogy a makró ne sérüljön, és hogy.
AA, nem tudom...talán történhetett valami ezzel a file-al.
Már nem értem ezt egyáltalán.
Másilgatom a PERSONAL file abba az excel verzióba, ami működik...de ahányszor megnyitom az excelt azt írja, hogy olvashatatlan neki ez a PERSONAL file...
Miért teszi ezt velem?
Esetleg nem lehet valami más programban kinyítni...
Próbáltam másik gépen...2003-as verzióba bemásolni és szintén nem műkszik...
C:Documents and SettingsuserApplication DataMicrosoftExcelXLSTART
megtaláltam a PERSONAL fájlt.
De mit kell csinálnom vele, hogy működjön is az aktuális (2002-es) verzióval?
Hova kéne átmásolnom?
Tudom horror, de 3 excel verzióm van...ami aktuálisan működik az a 2002-es...tehát OFFICE10. Nem akarom őket leinstallálni, bár logikus lépének tűnik...de más okból nem akarom...
A makrók az xls fáljokban vannak eltárolva. Bár nem vagyok egészen bizonyos, de szinte kizártnak tartom, hogy egy másik office verzió telepítése törölné az előző verzióban készített personal.xls-t. Meg kellene annak lennie valahol. Ha a windows fájlkeresővel nem találod, annak az is lehet az oka, hogy a rejtett fájlok és mappák között nem keresel. Tudomásom szerint excelhez tartozó indítókönyvtárból kettő van:
1. C:\Program Files\Microsoft Office\OFFICE11\STARTUP 2. C:\Documents and Settings\user\Application Data\Microsoft\Excel\XLSTART
Az első mappából verziónként van egy. Pl. Office 2003 esetén OFFICE11, 2002 esetén OFFICE10, tehát érdemes mindegyikbe bekukkantani, hátha ott lapul a szökevény.
Nos, alapból az lenne a kérdésem, hogy ha újra installáltam az excelt és voltam olyan hülye, hogy elfeledkeztem a macroimról...van-e mód arra, hogy megtaláljam még őket.
A válasz alapból azt hiszem, hogy negatív...nincs rá mód.
DE...az úgy volt, hogy...
Hogy egyik nap szépen fogta magát az excelem és nem működött.
Majd jobb megoldás nem lévén (install cd a főnöknél külhonban) a legújabb DEMO excelt tettem fel.
(Megjegyzem, tudom öngyilkosság az ilyen, de egymás mellett működött a régi és az új office...kivéve a régi excelt).
A macróim megvoltak az új verzióban is.
Majd lejárt a DEMO ideje...és megjött a főnök, így újra tudtam installálni az excelt...
Macroim sehol...de valahogy az a megérésem, hogy még ott lapulnak még valahol...
Általában milyen folderban tárolódnak a macrok tudjátok?
Tennék egy próbát mielőtt újra írnám az összes hülye macromat :-(((...ha már voltam olyan hülye, hogy elfeledkeztem róluk :-(((...
Ha a szám helyére akarod a szöveget beírni, azt csak makróval lehet. És akkor elvész az eredeti adat (a szám maga). Nem feltétlen. Pl. egyéni számformátummal megoldható. Formátum/Cellák menü Szám fül, a listában Egyéni. Formátumkód: "pozitív";"negatív";"nulla". (magyar Excel) Szívatásnak kiváló :)
Átjött a leveled, és kétszer is válaszoltam rá, de mindkét nap delivery failure notification jött válasznak, ezért itt írom neked hogy nagyon köszönöm.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim WS As Worksheet, Hit As Long, Célérték, i As Integer Célérték = 1 For Each WS In ThisWorkbook.Worksheets Hit = Application.WorksheetFunction.CountIf(WS.Range("H4:H70"), Célérték) If Hit > 0 Then i = MsgBox(WS.Name & " munkalap H4-H70 tartományában a célérték " & Hit & " példányban megtalálható. Biztos hogy bezárja a munkafüzetet?", vbYesNo) If i = 7 Then Cancel = True Next
Ez nagyon állat, köszi. Egy gondom maradt, nem tudom így bezárni az file-t. Megoldásod van? Nekem csak "infó" jelleggel kéne hogy kiírja, de ne akadályozza meg a bezárást.
Szívesen, egyáltalán nem zaklatsz. Az biztos, hogy nem tudtam volna úgy megoldani mint Jimmy the Hand topictárs, mert a hozzászólásaiból, megoldásaiból én is folyamatosan tanulok...
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim WS As Worksheet, Hit As Long, Célérték Célérték = 1 For Each WS In ThisWorkbook.Worksheets Hit = Application.WorksheetFunction.CountIf(WS.Range("H4:H70"), Célérték) If Hit > 0 Then MsgBox WS.Name & " munkalap H4-H70 tartományában a célérték " & Hit & " példányban megtalálható. Bezárás megakadályozva." Cancel = True End If Next End Sub
A végső variáció az lenne, hogy van 15 munkalapom. Mind a 15-nél a H4-H70 közötti cellák bármelyike egy adott értékkel (az érték mindig ugyanaz) egyenlő, akkor kéne hogy üzenetet írjon ki nekem a bezárásnál. De ha pl. az 1-es munkalapon vagyok, és a 2-es, illetvve a 3-as munkalapokonn egyenlő pl. a H28, illetve a H35 az adott értékkel, akkor is ki kéne írja az üzenetet.
Köszönöm szépen, ezt kerestem! Igaz, kellett egy pici kiegészítést.
Sub Folders() Dim FN As String, Pth As String Pth = "C:\" FN = Dir(Pth, vbDirectory) Do While FN <> "" If (Not FN = ".") And (Not FN = "..") And (GetAttr(Pth & FN) And vbDirectory) = vbDirectory Then MsgBox Pth & FN End If FN = Dir() Loop End Sub
Már megint elfelejtettem, hogy a backslash-t 2x kell beírni. Tehát:
Sub Folders() Dim FN As String, Pth As String Pth = "D:\" FN = Dir(Pth, vbDirectory) Do While FN <> "" If (GetAttr(Pth & FN) And vbDirectory) = vbDirectory Then MsgBox Pth & FN End If FN = Dir() Loop End Sub
Sub Folders() Dim FN As String, Pth As String Pth = "D:" FN = Dir(Pth, vbDirectory) Do While FN <> "" If (GetAttr(Pth & FN) And vbDirectory) = vbDirectory Then MsgBox Pth & FN End If FN = Dir() Loop End Sub
Sub Fájlválasztás() Dim S As Variant S = Application.GetOpenFilename If S = False Then MsgBox "Tényleg? Mégse? Hát jó, akkor becsukom." Else MsgBox "A kiválasztott fájl: " & S End If End Sub
Ezt vagy itt, vagy egy másik fórumon találtam régebben. Lehet, hogy nem pont erre gondoltál.
Feltéve, hogy az aktív munkalapon hajtod végre, és a tartomány az A1 cellában kezdődik:
Sub rendez() Dim WS As Worksheet, Rng As Range
Set WS = ActiveSheet Set Rng = WS.Range("A1")
Do With Rng .Offset(1).EntireRow.Insert .EntireRow.Copy .Offset(1) .Offset(, 1).Delete Shift:=xlShiftToLeft .Offset(1).Delete Shift:=xlShiftToLeft Set Rng = .Offset(2) End With Loop While Rng <> "" End Sub
Mit szeretnél? Most akkor 1 sort szeretnél megduplázni, vagy minden egyes sort, ahol az F oszlopban van érték? Üres sort (sorokat) akarsz beszúrni, vagy másolni akarod?
Köszönöm a gyors és kimerítő segítségedet. Azért írtam privátban, mert azt hittem ha elküldöm a fájlt kijavítod a hibát, mert én eléggé amatőr vagyok Excel szinten.
oké, válaszoltam, de ehhez nem kellet volna szrtem priv. szóval, az a gond, hogy a névvel ellátott tartomány (termekek) nem a teljes tartományt fedi be, amit az "érvényesítés" funkcióval használni szeretnél.
Rájöttem végülis mindenre. Tapasztalatom: egész logikusan vannak a programozási parancsok összehozva. Szóval, így néz ki a végleges makróm, hátha még valakinek szüksége lesz rá:
Sub Osszefesul()
Sheets("Sheet1").Select sor_1 = 2 For sor = 2 To Range("A65536").End(xlUp).Row Sheets("Sheet2").Cells(sor_1, 1) = Cells(sor, 1) + vbNewLine + Cells(sor, 3) Sheets("Sheet2").Cells(sor_1, 2) = Cells(sor + 1, 1) + vbNewLine + Cells(sor + 1, 3) sor_1 = sor_1 + 1 sor = sor + 1 Next End Sub
Ezzel értem el amit akartam. Köszönet a hálás segítségért, Deilia_1
Hihetetlen hol akadok el. Majdnem kész egy apró makró rá, csak egy dolgot nem tudok még. Két cella összefűzésénél (merge) hogy oldom meg, hogy tegyen egy sorközt közéjük? Hogy a két információ ne egy sorban legyen? más minden pontosan úgy megy, ahogy szeretném, csak ezt kellene még tudnom. Pls segítsetek.
Kezdem kapisgálni a dolgokat (valamennyi programozási ismeretem van). Akkor pontosítok az igényeimen :). Munka1 első sor első oszlopa egy név. Második oszlopa egy cím. Azt szeretném, ha a Munka2 első sorának első oszlopában egyszerre jelenne meg név és cím egy cellában, szóval összefűzve. Namármost, a Munka1 2. sorának Név és Cím oszlopai a Munka2 ELSŐ sor MÁSODIK oszlopában jelenne meg.
Így kábé olyan lenne, mint egy kéthasábos címjegyzék. Ezt szeretném elérni. Talán rájövök egyedül is, de talán nem :D. Mindenesetre köszönettel, Androow.
Oké, először is köszönöm. Másodszor, nagyon kezdő vagyok és fogalmam sincs mi az a makró :S:) szóval ha adnál egy kicsit részletesebb leírást, hálás lennék.
Sheets("Munka1").select sor_1 = 2 For sor = 2 To Range("A65536").End(xlUp).Row Sheets("Munka2").Cells(sor_1, 1) = Cells(sor, 1) Sheets("Munka2").Cells(sor_1 + 1, 1) = Cells(sor, 2) sor_1 = sor_1 + 2 Next End Sub
Ezt a kis makrót arról a lapról indítsd, amelyiken a két oszlopod van. Ha nem Munka1 a neve, írd át a makróban. Az összefésült adatokat a Munka2-re írja be.
Sziasztok. Van egy kérdésem. Konkrétan van egy 500 soros excel dokumentumom, 2 oszloppal. Én azt akarom, hogy egy word dokumentumba illesszem be az excel adatokat, hogy a második oszlop adata az első alá kerüljön. Szóval. 1A alá 1B, utána 2A,2B, így tovább. Ezt egy word táblázatba szeretném beilleszteni. Ha erre van valami automatika, egy függvény vagy valami, azt szeretném használni, ne kelljen 500 tök hasonló adatot copy-paste-el rakosgatni. Arról ne is beszélve, hogy 4 ilyen excel dokumentumom van. Kérlek segítsetek!
Új vagyok és elnézést ha esetleg már volt erről szó.
A megoldandó probléma:
Adott 2 excel tábla.
Az 1 es tábla "A" oszlopában vannak cikkszámok és azt szeretném, hogy a gép keresse meg a 2-es tába pl. "C" oszlopában ugyanazt a cikkszámot és a 2-es tábla "D" oszlopban lévő értéket másolja ben az 1-es tábla "B" oszlopába.
Az nem biztos, hogy az 1-es tábla "A1" cellájában lévő cikkszám a 2-es táblában is az 'C1"-ben van. Lehet, hogy a "C8"-ban és így a "2-es "D8"-értékét kell átvinni az 1-es "B1"-be
Remélem érthető voltam.
Szóval lehetséges ez valamilyen függvénnyel, vagy esetleg egy makrot kell erre írni?
van egy cellám amiben megjelenik egy adott dátum napja szövegesen(hívatkozik egy képletből,ahonnan a dátumot veszi). Amikor egy másik cellában a dátumot megváltoztatom,akkor ez a cella mindig a megadott dátum napját jeleniti meg (hétfőtől vasárnapig). A formátum egyéni beállításnál az nnnn formátumkódban szerepel. A kérdés az lenne,hogy,hogyan tudom feltételes formázásnál az megadni,hogy ha mondjuk a "kedd" jelenik meg a cellában akkor egy megadott cella színe átszíneződjön?
Bárhogy is probálkoztam nem sikerült,mert a napokat számoknak veszi,nem pedig szövegnek.
Lehet rövidíteni a kódot, ha előbb lefuttatod ezt a makrót, és utána már csak a B oszlop celláira hivatkozol.
Sub Van_e_szam() For sor = 1 To Range("A65536").End(xlUp).Row szoveg = Cells(sor, 1) For betu = 1 To Len(szoveg) If Mid(szoveg, betu, 1) < "A" Then Cells(sor, 2) = "Van benne szám" Exit For End If Next Next End Sub
Azért nem, mert az adott riport lefutása előtt megadható feltételek nem minden tranzakció esetében tartalmaznak minden szüséges mezőkritériumot. Csak a futtatás után lesz "gazdag" az oszlopkészlet. És általában a szűrési feltételeim pont olyan oszlopot érintenek, amik tartalmát előzőleg nem lehet korlátozni.
Elnézést nem volt egyértelmű tényleg. Úgy értettem, hogy ha kijelölsz egy tartományt - akkor a szelekció csak a kijejölt tartományon fog végrehajtódni.
+, ha bezárod az SAP azon móduszát, ahonnan exportáltad, eltűnik az Excelből.
A SAPban készített/lefutott riportban szűrőfeltételeket megadhatsz ugyan, de azokat exportáláskor figyelmen kívül hagyja. Riportolás előtt pedig nem minden esetben van minden szelekciós opcióra van külön mező... :(
Mitől "ál" munkafüzet? Ez az SAP sajátossága, hogy a mezőknek nevei vannak, és ezek excelbe konvertáláskor meg is megmaradnak - ez így teljesen korrekt. Ha lemented a konvertált munkafüzetet, akkor is megmaradnak a névvel ellátott tartományok.
Miért nem szűrsz SAP-ban? Azt is el lehet menteni excelbe.
Lenne egy kérdésem! Tud-e az Excel olyat, h megmondja egy függvénnyel (vagy makróval esetleg), h egy adott cellában nem csak szöveg (betűk), hanem számok IS vannak...
Pl: a cella tartalma "MM428".
Egy igen nagy táblázatról van szó, tehát valamilyen szinten automatizálni szeretném, ha lehet egyáltalán...
Szrtem rögzítsd le makróba a Szerkesztés/Ugrás/Irányított ->> csak a látható cellák funkciót és meg is van az eredmény. Talán specialCells(xlcelltypevisible) lesz az eredmény és szrtem ezkell neked.
Az autoszűrővel leszűrt tartományt eddig így töröltem:
Rows("2:65536").Delete
Ez működött, hiszen azokat a sorokat, amik nem felelnek meg a szűrési feltételnek, azok elrejtésre kerülnek.
De bizonyos esetekben tojik az elrejtésre, és kitöröl MINDEN sort (az 1. kivételével).
Mivel nem tudom, hogyan lehet csak a leszűrt tartományra hivatkozni (a selection.currentregion.select nem jó, mert kijelöli az elrejtett sorokat is), ezért megpróbáltam összebuherkodni egy ciklust a leszűrt tartomány törlésére.
De nem úgy működik, ahogy én szeretném.
Pls, mondjátok meg, mit szúrtam el, és hogyan írjam át, hogy azt csinálja, amit szeretnék.
Köszi!
A maszatolásom eredménye:
Dim intI As Integer Dim aktcell As String
Selection.CurrentRegion.Select i = Selection.Rows.Count intI = 2 aktcell = "A" & intI Range(aktcell).Select
Do If Selection.EntireRow.Hidden = False Then Rows(intI).Delete Selection.CurrentRegion.Select i = Selection.Rows.Count Else intI = intI + 1 Range("A" & intI).Select End If Loop Until intI = i + 1
A hutottek és Arr változók Long típusként vannak deklarálva. Ez nem jó. Variant típusúként kellenek, így:
Dim Arr Dim hutottek
Az téveszthetett meg, hogy a korábbi kódban egymás mögé írtam őket:
Dim Arr, i As Long, strTörlendő As String
Más programnyelvekben ez általában azt jelenti, hogy Arr és i egyaránt Long típusú. De VBA-ban minden változónak külön kell megadni a típusát. A fenti esetben az Arr változó Variant típusú. Ha azt akarom, hogy Long legyen, akkor azt külön meg kell adni:
Ha elküldöd a fájlt email-ben, visszaküldöm átalakítva. Ha elküldöd a fájl egy reprezentatív részletét, írok egy makrót, ami a teljes fájlban elvégzi a cserét.
Kérlek segítsetek nekem, a következő lenne a probléma:
Van egy excelben megírt termék katalógusunk, amiben valami oknál fogva (azt hiszem a nyomda kérte így) ezzel jelöljük a félkövérként megjelenítendő szöveget :
$$szöveg$$
A katalógus több ezer terméket tartalmaz. Nem tudtok valamilyen függvényt mellyel az egész katalógusban ki lehetne cserélni erre a formátumra a szöveget:
szöveg
tehát a $ jeleknek el kellene tűnni és a köztük lévő szögenek pedig át kellene változni félkövérré....
Nagyon nagy munka mindet egyenként kitörölni, több hétig eltartana és elég sürgős lenne.
Jimmy ciklusa kétszer szerepel egy eljárásomban, hogy ne gerjedjenek véletlenül se, a másodikként szereplőnek megváltoztattam a változóneveit, amiket deklaráltam is.
Aztán ráeresztettem az Option Explicit-et, hogy ellenőrizzem, van-e definiálatlan változóm.
Majd: Option explicitet kitöröltem.
Eredmény:
Soha többé nem futott le a makró.
Hibaüzenet:
Compile error:
Expected array
Mi lehet a gond?
/Akkor fut csak le, ha mindkét helyen kitörlöm a ciklust.. :(/
Nos, ez a probléma az én munkámban is számtalanszor előfordult régen. Most már csak jelenség, de nem probléma. A változás a hozzáállásomban következett be. Rájöttem, hogy nekem tulajdonképpen semmi hátrányom nem származik abból, ha kész adatot kapnak tőlem. És arra is rájöttem, hogy nekik is megvan a maguk baja, és nekem igazán nem kerül semmibe, hogy segítsem a munkájukat. Akkor meg miért ne? Ha egyszer nekem úgyis meg kell csinálni...
Másrészt, ez az Excel fórum azért van, hogy segítsünk egymásnak. A Te filozófiádat követve soha egyetlen válasz nem érkezne a feltett kérdésekre.
Talán rosszul látom a helyzetet, de szerintem inkább abba az irányba kellene elmozdulnod, hogy a 800 adatot ne kézzel kelljen beírni. Vagy legalább ne mindet. Gyanítom, hogy az adataid számítógépes eredetűek. Akkor pedig biztosan át lehet alakítani őket Excel munkafüzetté, még ha valami iszonyú kezelhetetlennek tűnő fájlban vannak is. Ezzel a problémával sokkal szívesebben foglalkoznék.
ctrl+F1-re is feljön az a munkaablak. Nálam a jobb oldalon. Ha nyomogatom a ctrl+F1-et, akkor ki/be kapcsolom. (és abban ott van a súgó keresője is...)
Szerencsére ilyet nem lehet Excelben. További jó töprengést!
Esetleg, ha nagyon ki akarsz szúrni a kollégáiddal, akkor javaslom a nyomtatás + szkennelés kombinációt, mert jpg-ből valóban nehéz visszanyerni az adatokat.
Köszönöm a választ, de nekem ez így még nem elég. Az a nagy helyzete hogy nekem olyan megoldás kellene, ami a következő probléma megoldásában segít. Begépelek 800 adatot, és azokat kiértékelem. Majd elküldöm e-mailben, és ott az általam begépelt adatokat újra kiértékelik. Na én, ezt szeretném megakadályozni. Pötyögjékbe az adatokat az e-mail cím tulajdonosai is. Ne az én munkámból éljenek. Ezért gondoltam hogy letiltatnám az egészet. Csak olvashassák, de, se másolni, se beleírni ne tudjanak. Aki segít a célom elérésében, annak nagyon megköszönném.
A súgó meg egyáltalán nem jön fel a tálcáról, csak az ikonja van ott. Jobb gombra áthelyezés és átméretezés lehetőségét kínálja fel, de egyik pontra sem reagál.
7759: Valahogy sikerült eltüntetnem a súgót. Néhány napja át akartam méretezni, azóta csak a tálcán jelenik meg, ahonnan sehova tovább. Nincs ötletetek? A hibajavítással már próbálkoztam.
Jobban nem részletezem a problémát, mert megnéztem, hogy mi indokolja a kérést, luxus kínlódni vele. Nem szereti a Ctrl+F-et, akkor megkapja az ikont. :)
Az hogyan módosítható, hogy egy form előhívásakor ne a képernyő közepén jelenjen meg, hanem pl. a bal felső sarokban?
A metódusai közt nem találom a kezdőpozíciót... Ha Skype lenne: (headbang)
A testreszabás Parancsok fülén kiteheted az ikonját. Az nem jó?
Egy kérdés:
Valahogy sikerült eltüntetnem a súgót. Néhány napja át akartam méretezni, azóta csak a tálcán jelenik meg, ahonnan sehova tovább. Nincs ötletetek? A hibajavítással már próbálkoztam.
A kérdésem az lenne, hogy makróból meg lehet-e nyitni egy munkafüzetet úgy, hogy a saját auto_open eljárását ne hajtsa végre? A lényeg, hogy makróból folyamatosan adatokkal kell egy munkalapot feltölteni amit aztán több felhasználó is naponta megnyit. A hagyományos megnyitáskor az adatokról egy kis statisztikát szeretnék kiiratni az auto_open eljárással...
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.CutCopyMode = False End Sub
Ez ugyan nem tiltja le sem a crtl+c-t, sem a ctrl+v-t, de táblázaton belül mégsem tudod használni őket. Pontosabban: az aktuális Excel munkafüzeten belül nem tudsz másolgatni, de az aktuális munkafüzet és egy másik munkafüzet, illetve az aktuális munkafüzet és egy másik alkalmazás között igen.
Történetesen magát a másolást akarod letiltani, azt le lehet. Nézd meg az Eszközök/Védelem/Lapvédelem menüpontot. Ha konkrétan a ctrl+v/c-t akarod CSAK letiltani, makróval azt is biztosan le lehet.
Érdeklődni szeretnék, hogy megoldható-e az Excel-benn, hogy egy táblázatban szereplő értékeket ne lehessen ctrl-c ctrl-v használatával másolgatni? Előre is köszönöm a válaszokat.
Bocs, mester, meg még annyit, hogy olyat lehet, hogy amikor ábrázolja a függvényt a program, akkor a metszéspont kirajzolódjon, azaz a két szakasz vonatkozásában ne szakasz, hanem egy-egy végtelen egyenes ábrázolódjon (az, amelyik átmegy a pontokon/szakaszon persze)? A mostani verzióban, ha a 2. szakasz pontjai nagyobbak, mint abszolút érték 1, akkor a 2 egyenes nem metszi egymást, mivel szakaszként vannak ábrázolva.
Hát ez nagyon-nagyon király lett, köszi! A főnököm el lesz képedve.
Még egy pici segítséget kérhetek? :)
Nevezetesen, hogy egy picit lehetne módosítani a külcsínt, anélkül, hogy a kalkulációhoz nyúlnánk? Én megpróbáltam megcsinálni a 2 lenti módosítást, de le vannak védve az érintett cellák. (A 3. kérdéshez meg nem értek...)
1) Az 1. szakasz pontjait soha nem módosítanánk, az adott lenne. (Igazából az a feladat, hogy a 2. szakaszon keressük azt a pontot, ahol az x meg az y koordináta megegyezik, azaz a a break-even pontot). Az 1. szakasz koordinátáit ezért nem is kéne megjeleníteni, azaz valahogy el lehetne rejteni ennek megfelelően az A1-C4 területet? (Persze úgy, hogy a tábla továbbra is számolna vele).
2. Át lehetne írni angolra a feladatnak megfelelő szövegezéssel a feliratokat? Pontosabban
a) "2. szakasz" helyett az kéne, hogy "coordinates of the two points on the Ribis curve"; ill.
b) "indítás" helyett "calculate break-even point".
3. Olyat még lehetne, hogy a 2. szakasz egyenletét valahova kiírja a tábla (pl a függvény képe alá)?
A hármas pont nem olyan fontos, de ha az első kettőt nem nagy kérés és azt még meg tudnád csinálni, azt megköszönném! :)
Sub Worksheet_Change(ByVal Target As Excel.Range) If Target.Row = 5 And Target.Column = 1 Then Range("A15").Select End Sub
Ez a kis makró az A5 cellába (5. sor, 1. oszlop) írás után az A15-re lép. A makrót a laphoz kell rendelni – lapfülön jobb klikk, Kód megjelenítése, a VBE-ben jobb oldalon kapott üres lapra másold be.
Kérdés hozzátok! Lehet olyat csinálni egy Excel táblában, hogy egy beírt adat után az "enter" leütésére egy következő adott cellába ugorjon? (mondjuk vagy 10 cellával alatta)
Hát nem bírtam magammal és kijavítottam. Ebben tökéletes az is. Érdemes megnézni, mert az előzőhöz képest más módon csináltam meg (más függvénnyel) Akinek nem menne az kapcsolja be a bővítményeket...
nem házi, munkához kell. Ez a vicc, nem hittem volna, hogy 13 év elteltével a koordináta-geometriát még valaha alkalmaznom kell a gyakorlatban. Ha vki tudja a megoldás kulcsát, megköszönöm.
Excelben kéne megírnom egy olyan automatikusan számoló template-et, amely inputként használja egy egyenes két pontjának a négy koordinátáját (x1;y1 ill. x2;y2), majd ezen értékekből az egyenes egyenletét kiszámítva egy gombnyomásra megadja annak a pontnak az x és y koordinátáját, ahol ez az egyenes metszi az x=y egyenest.
"Én első lépésben megnézném a Menü/Nézet/Eszköztárak/Testreszabás menüpontban"
Én is azt tettem első lépésben. Ráléptem a "Menü- és eszköztárhasználati adatok visszaállítása" gombra. De nem volt eredménye. Újraindítás után, új, üres munkafüzet egyik lapjáról akartam törölni egy oszlopot, erre az Excel megnyitotta a tegnapi munkafüzetet, és kereste benne a Rögzítés2 makrót... Aztán kiabált, hogy nem találja...
Ma a tanácsodat követve visszamentem ugyanoda, gondolván, hogy hátha nem vettem észre valami reset lehetőséget. De csak a fent említett gombot találtam meg újra. Most is megnyomtam, és csodák csodája, ettől elmúlt a betegség. Fene se érti ezt... Mindegy, elmúlt és ez a lényeg. Köszönöm a segítséged :-)
Én első lépésben megnézném a Menü/Nézet/Eszköztárak/Testreszabás menüpontban, hogy régebbről esetleg nem ragadt e bennt valami - pl. lehet hogy makróból valamikor régebben létrehoztál egy ugyanilyen elnevezésű menüpontot - és az akar elindulni. (Nem az excel "sajátja")
Itt arra gondolok, hogy ha nem törlöm ki a makróból létrehozott menüket kilépéskor, akkor benne marad...
Dim Arr, i As Long, strTörlendő As String Arr = Split("kuka1,kuka2,kuka3,kuka4", ",") For i=LBound(Arr) to UBound(Arr) strTörlendő = Arr(i) Worksheets("Munka1").Range("A1").AutoFilter _ field:=3, _ Criteria1:=strTörlendő Rows("2:65536").Delete Selection.AutoFilter Next
1, nem tudok másként hivatkozni a leszűrt tartományra (hogy törölhessem, csak így: Rows("2:65536").Delete. Ennek végülis van gyakorlati értéke, mert a szűrés miatt elrejtett sorokat úgysem bántja, csak akkor jön a baj, ha az adott szűrési feltétel nem szerepel a C oszlopban (nem minden esetben szerepel minden szűrési feltétel).
2, Milyen ciklussal egyszerűsíthető a makró? Mert elég rossz több 10* ua átírni.
Szia! Azt hiszem értem amit írtál köszönöm:) Az elképzelés viszont az, hogy a lenti táblázat állandó lenne, mindenkinek lenne egy ilyen táblázata egy munkalapon, az élőfejbe lenne beírva, hogy ez most épp szeptember, vagy október, vagy stb., így összesen ennyi változtatással ki lehetne nyomtatni minden hónapban, plusz kellene hozzá, hogy a hétvégéket jelöljem más színnel.
Tegnap azt tapasztaltam, hogy a Szerkesztés/Törlés menüparancs hatására az Excel egy makrót akar elindítani, és hibát jelez nekem:
A Munkafüzet1.xls//Rögzítés2 makró nem található.
Mondanom sem kell, nem rögzítettem makrót, nem hogy kettőt, de egyet sem. És nem is variáltam semmit a menüparancsokkal. Tudok törölni jobb egérgombos helyi menü segítségével, de zavar a főmenü megváltozása.
Találkozott már valaki ilyesmivel? Esetleg meg tudta oldani?
Érdeklődöm egyszerű megoldást keresve, hogy egy jelenlét ív hétvégi napjait a mellékelt kép szerint lehet-e automatikusan színnel formáztatni, akár úgy, hogy egy másik munkalapon beírom, hogy az adott hónapban mely napok esnek hétvégére? köszi briger
Azt hogyan lehet megadni, hogy "mentés másként"-tel elmentse az aktuális munkafüzetet a pl. C:Dokumentumokteszt mappába? A fájl neve ez kéne legyen: TESZT_"aktuális dátum"(év_hó_nap).
Akkor nem úszod meg a kimutatás készítést, ami elsőre nem lesz egyszerű mutatvány, de ha belejössz, nagyon hasznos eszközt ismersz meg benne. Szóval nézz utána a kimutatás készítésnek!
magyarpityu, köszi szépen, ez végülis működő megoldás, de sajnos a kapott szűrt adatokat nem tudom átmásolni új dokumentumba. A szűrt adatokat ugyanis összegezni kellene. És ez sehogy sem működik.
Hogy érthetőbb legyen: ez egy elszámoló táblázat, ahol egy-egy megrendeléshez adott oszlopban több tétel is tartozhat, a megrendeléseket szervezeti egységenként kell számlázni, ezért kell szűrni és egységenként összegezni, viszont az adatokat időrendi sorrendben, egyben kell leadni.
Ha szűröm, nem működik a másolás, summázás, adatrendezést pedig az összevont sorok miatt nem lehet kérni.
toccata, sejtettem, hogy akármennyire is kérlelem, magától nem fogja tudni, ezért kértem segítséget. :)
Ha van jobb ötleted, szívesen venném. Sajnos én csak alapszinten ismerem a programot.
Ha jól sejtem, ez a makró a munkafüzet megnyitására automatikusan indulna, csak a makrók nincsenek engedélyezve az Excelben. Ebben az esetben: Eszközök menü -> Makró -> Biztonság -> Biztonsági szint = Közepes -re állítsd be, és próbáld újra megnyitni a munkafüzetet.
Sziasztok! Lenne egy kis problémám. Van egy progim ami excel alatt fut, és ha meg akarom nyitni akkor a következő hibaüzenet jelenik meg: "A számítógépen érvényben lévő korlátozások miatt ez a művelet nem hajtható végre.Kérjen segítséget a rendszergazdától." Na most én vagyok a rendszergazda,más felhasználó nincs bejelőlve. Ez a program a munkámhoz kellene,előre is köszi a segítséget.
Tartalmazza mondjuk (a példa kedvéért) a táblázatod B oszlopa a szűrni kívánt adatot. Ha a táblázatod olyan, hogy egy-egy akárhány soros rekord csak minden rekord első sorában tartalmaz adatot, a többi sorban üres B oszlop, akkor csak annyi a teendőd, hogy készítesz még egy oszlopot, ami a B oszlopot tartalmazza, illetve ahol B oszlop üres, ott a legutolsó értéket. Ezután erre az oszlopra szűrsz, nem a B-re. Mondjuk R oszlop az első üres oszlop (azaz a táblázatod utolsó oszlopa Q volt), akkor ezt írod R1-be: =B1, az alatta lévő cella: R2 =HA(ÜRES(B2);R1;B2) és ezt végighúzod a táblázat utolsó soráig. Ezután R oszlopra szűrsz.
Hogy lehet azt megcsinálni, hogy az olyan sorokat, amelyek egy sorral kezdődnek, de némely oszlopban több sorrá bővülnek, egy sorként kezelje az excell szűrőknél?
Ugyanis csak a legfelső sort írja ki szűrésnél és ez igy nagyon nem jó. :(
2003-ban csak az első 1000 sor jelenik meg. Vagy Office 2007-re frissítesz, vagy szűkíted a szűrt listát, pl. csak az "A" betűvel kezdődő stb... Pár hozzászólással lejebb volt már szó erről, olvasgass vissza.
Ha több ezer soros táblázatban autoszűrőt használok, nem jelenik meg minden elem, csak 1000 (a legördülő listában). Hogyan lehet felturbózni, hogy mutasson MINDENT, ami az adott oszlopban van?
Tényleg nem tölti ki. Igazad van. Azért írtam azt, mert vannak terjedelmes táblázataim, és úgy emlékszem párszor bosszankodtam amiatt, hogy szűrt oszlopokban duplán kattintottam a cell ajobb alsó sarkára, és az egészet beképletezte, tehát azt is ami nem látszott a szűrés miatt.
Ha egérrel végighúzod, akkor a szűrt sorokat ki kell hagynia. Ha duplán kattintassz a cella jobb alsó sarkára, akkor nem hagyja ki a szűrt sorokat és tölti fel az oszlopot.
most próbálgattam egy test file-on...és előszörre rosszul csinálta, mindenhova bemásolta oda is ahova nem kértem...
Másodszorra viszont már jól...
Több dolog is úgy működik, hogy elsőre nem csinálja jól...pl a filterezett adatok átmásolását és másik lapra....viszi az egészet a filterezett helyett.
De ezt is csak elsőre csinálja rosszul, aztán már jól..
tényleg mondja meg valaki, hogy én csinálok valamit rosszul, vagy mi van...
kéne tudnom, mielőtt valami nagy bonyodalmat okozok...
Normális dolog, hogy ha szűrő van bekapcsolva és úgy copyzom (lehúzom) a beírt dolgot, hogy az aktuálisan meg nem jelenő cellákban is átírja az adatot?
Remélem lehet érteni mire gondolok...
Pl.
Az oszlopban beállítom, hogy csak a borok legyen láthatok...mellé szeretném írni az egység árat...copyzom az árat lehúzással (vagy kattintással a jobb alsó sarokban) és nem csak a bor mellé írja be ezt az árat, de pl. a tejhez is...ennek nem szabadna történnie.
Vagy pl. törlök megszűrt sorokat és azt is törli, ami közte volt és épp nem szerepelt a filterben.
Pl. nem akarom, hogy a borok is benn elegyenek a listában...filter be, kijelölöm a sorokat és törlöm őket...erre azt is törli ami közöttük volt, pl tej...
MIÉRT?????????
Lécci, világosítsatok fel, ha valami nagyon butát csinálok...mert egyszer ebből nagy probláma lehet...
tényleg mondja meg valaki, hogy én csinálok valamit rosszul, vagy mi van...
kéne tudnom, mielőtt valami nagy bonyodalmat okozok...
Normális dolog, hogy ha szűrő van bekapcsolva és úgy copyzom (lehúzom) a beírt dolgot, hogy az aktuálisan meg nem jelenő cellákban is átírja az adatot?
Remélem lehet érteni mire gondolok...
Pl.
Az oszlopban beállítom, hogy csak a borok legyen láthatok...mellé szeretném írni az egység árat...copyzom az árat lehúzással (vagy kattintással a jobb alsó sarokban) és nem csak a bor mellé írja be ezt az árat, de pl. a tejhez is...ennek nem szabadna történnie.
Vagy pl. törlök megszűrt sorokat és azt is törli, ami közte volt és épp nem szerepelt a filterben.
Pl. nem akarom, hogy a borok is benn elegyenek a listában...filter be, kijelölöm a sorokat és törlöm őket...erre azt is törli ami közöttük volt, pl tej...
MIÉRT?????????
Lécci, világosítsatok fel, ha valami nagyon butát csinálok...mert egyszer ebből nagy probláma lehet...
Const FullName As String = "C:tempproba.txt" Open FullName For Append Access Read Write As #1 Write #1, ActiveCell.Value Close #1
a proba.txt-be az aktuális cellában szereplő szöveg kerül, de a szöveg előtt és után van "-jel, amit nem szeretnék a file-ba írni.
De más bajom is van. Szeretném az aktuális dátumot lekérdezni makróból, de nem találtam hozzá függvényt, sem az Application.WorksheetFunction-ban, sem máshol. Ha makróban rögzítem a Today függvényt, akkor ActiveCell.FormulaR1C1 = "=TODAY()" lesz a makróban, de én nem cellába szeretném írni a képletet, egyszerűen csak String-be szeretném visszakapni a makró futtatásakor érvényes dátumot.
Ha már az utolsó sort sikerült megtalálnod, onnan felfelé indítanék egy for-next ciklust (step -1). A cella adatának hosszát (len) vizsgáltatnám, és azt, hogy nem nulla-e az értéke. Amikor egyik feltétel sem igaz, az akkori aktuális sorszámig jelöltetném ki a nyomtatási területet.
Sziasztok! Megint a segítségeteket szeretném kérni!
Egy könyvtárban szövegfile-ok vannak, egy Excel táblázatban pedig az adatok vannak, amiket a file-okba szeretnék írni szöveges formátumban. A táblázat minden sora más-más file-ba kerül. Ha adott nevű file nincs a megadott könyvtárban, akkor létrehozom és beírom az adatsort, ha van ilyen file, akkor a végére szúrom a sort. Több problémám is van. Hogyan nyitom meg úgy a file-t, hogy olvasni és írni is tudjak bele, de a tartalma ne vesszen el, illetve hogyan lehet szöveget beírni file-ba, hogy az idézőjelek (") ne jelenjenek meg a szöveg előtt és után?
Kozben sikerult megoldani a gondot, viszont mivel vannak sorok amelyek kepleteket tartalmaznak es ezek sorok soha nem uresek, mivel alapertelmezetten is 0-at tartalmaznak. Ugy kellene, h ures soroknak szamitsanak azok amelyek csak 0-kat tartalmaznak.
Egy excel sablont keszitek, amihez szuksegem lenne egy funkciora, ami nyomtataskor automatikusan a legutolso adatot tartalmazo sorig nyomtatja a dokumentumot.
Talaltam ra egy makrot egy angol nyelvu oldalon, de nem sikerul futtatni, illetve nem latom, h segite. A 80ig nyomtatna, annak ellenere, hogy adat csak az elso nehany sorban van.
A makro a kovetkezo:
Sub Set_Print_Area() Dim x As Long, lastCell As Range x = ActiveSheet.UsedRange.Columns.Count Set lastCell = Cells.SpecialCells(xlCellTypeLastCell) ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), lastCell).Address End Sub
Ha 80. sor utan irok adatot es ujra futtatom a makrot, akkor tuvabbugrik a kijeloles, amennyiben ujra futtatom a makrot. Megoldhato, h automatikusan erzekelje az uj adatok bevitelet es ne kelljen ujrafuttatni a makrot?
Lenne 2 kérdésem, hátha tud valaki segíteni. Please!
Az új excelről van szó.
1. Ha szűröm az adataimat és úgy copy-zok valamit az oszlopban (jobb alsó csücsök lehúz, vagy kattint), akkor oda is bemásolja a dologat, ami nincs is szűrve. Ezt nem csinálta a régi verzió. Ti is találkoztatok ezzel?
2. Szintén szűrésnél, ha a szűrött adatokat szeretném átmásolni egy másik lapra, akkor visz mindent, pedig nekem csak a szűrött kell...ezt csinálta először, aztán, ha már szűrést állítok be akkor már működik...nem értem miért csinálja ezt.
Egy régebbi ecxel fájlban egy ábra és a következő beállítás található: "=BEÁGYAZ("OrgPlusWOPX.4";"")". Azt szeretném megkérdezni, hogy tudja-e valaki, hogyan lehet ezt szerkeszteni, ill. mit kell beállítani, esetleg telepíteni ennek érdekében?
A magyar verzióban van egy elég bosszantó hiba (anno úgy emlékszem elmondta egy tanár, hogyan lehet megoldani, de sajnos nem emlékszem már rá) Miután kiválasztottad az INT-et, a korlátozó feltétel mezőbe írj be egy tetszőleges számot pl. 0-t. A számot semmire se használja, legfeljebb nem kapsz hibajelzést.
Ha már itt járok, akkor egy kérdés, méghozzá Excel/Solver témában...
A magyar verzióban van egy elég bosszantó hiba (anno úgy emlékszem elmondta egy tanár, hogyan lehet megoldani, de sajnos nem emlékszem már rá)
A probléma:
Ha solverben hozzáadsz 'korlátozó feltétel'-t, akkor beállítható a :
Cellahivatkozás; =<>intbin ; Korlátozó feltétel
Ez nagyszerűen működik is, kivéve az INT-et. Ha kiválasztod, hogy a 'módosuló celláid' csak egész számok lehetnek, akkor a Solver automatikusan kitölti: módosuló cellák ; int ; egész érték ; Az Ok gombra kattintva azonban közli: "A korlátozó feltétel szám, egyszerű hivatkozás vagy numerikus értéket adó képlet lehet."
Angol verzióban úgy emlékszem nincs ilyen probléma, és úgy rémlik valahogy a magyarban is meg lehet oldani a problémát....
a 2007-et nem ismerem, de az előzőekben ott a közös használat opció. (eszközök menü)
Ebben az esetben egyszerre nyithatják meg többen a fájlt, és szerkeszthetik is. A tábla minden mentésnél "update"-lődik, azaz a user által beírt adatok bekerülnek a fájlba. (az már csak hangulat kérdése, hogy a user milyen gyakorisággal nyomja meg a ctrl+s (mentés), avagy az automatikus mentést alacsony értékre állítod) Abban az esetben, ha véletlenül ugyanabba a cellába 2 user mást-mást írt be, akkor feldobja a kérdést, hogy melyik verziót mentse. Nálam nagyszerűen működik 3 kollegína is dolgozik benne aktívan, egyszerre. (alapvetően megvannak az egyes 'területekért' felelős emberkék - némi átfedéssel) A makrókkal vigyázni kell, nem mindegyik akar futni közös használatban, de azért egy csomó dolgot le lehet makrózni...
Én nagyon szeretem, a kollégáim már kevésbé... :D Ugyanis visszamenőleg akár 30 napra is logolva van: ki, mikor, melyik cellát, milyen értékről, milyen értékre módosította....
és folyamatos szinkronizálásra van lehetőség? A lényeg nem is az, hogy egyszerre írnak a táblázatba, hanem hogy több gépen meg van nyitva az excel, és néha-néha beleírnak dolgokat. Szóval nem folyamatos egyszerre írás lenne...
Olyan kérdésem lenne, hogy van egy excel (excel 2007) táblázat, melyet szeretnénk egy időben több gépről egyszerre szerkeszteni. Hogyan oldható ez meg?
Azt nem tudom, hogyan csökkenthetnéd, viszont a Gyorselérési eszköztárra ki tudod tenni azokat az ikonokat, amiket sűrűn használsz. A gyors...-on jobb klikk, kiválasztod a testreszabást. Ott bejelölheted, hogy ez az eszköztár a menüszalag alatt (kéznél) legyen.
Tettem ki a saját kis makróim közül is párat, de sehol sem találom, hogy lehetne módosítani az ikonok rajzát, így mindegyik egyforma képet mutat. Nem is használom ezt a 2007-et, csak ha muszáj. A rongyos régi verziókban úgy alakítottam az ikonokat, ahogy akartam (bizonyos határokon belül).
A makróimat úgy tettem ki, hogy a "Választható parancsok helye" legördülőből kiválasztottam a makrókat.
Hát, nekem agyamra megy ez a verzió, de lassan kezdem megszokni.
Persze, hogy nagyobb kihívás elé állítsam magam még ráadásul angolul installáltam, mert miért ne...nekem ez nem jelenthet problámát, tök mindegy milyen nyelven van...
Aztán legszívesebben falhoz vágtam volna a gépet, mikor egy szaros rutin dolgot tök hosszú ideig csináltam, mert nem találtam mi hol van...
És esetleg nem jöttél rá arra, hogyan lehetne "személyre szabni" ezt az ikon hegyet, amiből nekem kb csak 10-re lenne szükségem a 100 helyett?
Annyira jó ötlet lett volna tőlük, ha ilyet is kitalálnak.
Kiválasztod az Excel (vagy milyen) gombot, jobbra lent Az Excel beállításai, balra fent Népszerű elemek, jobbra középen az Új munkafüzet létrehozása csoportban a Használandó betűtípus.
Ugyanitt a betű mérete, a lapok száma, és az alapértelmezett nézet is megadható.
Tényleg észbontó ez az új felület.
A helyesírás ellenőrzését a például a NYELVI !!! beállításoknál találod.
Nekem tegnap még annak tűnt... Ez is frappáns megoldás, az igaz!
Egyébként, inkább érdekes, hogy a pontosvesszővel tagolt *.csv fájlokat az excel alapból „felismeri”, simán megnyitja, beimportálja, de ha ezt rögzítem markróba, már nem jól csinálja, egy oszlopba teszi az összes adatot… Mindegy, már van három jó megoldás a problémára.
Belekontárkodom egy kicsit csak annyit hozzászólva, hogy én régebben csináltam ilyet úgy, hogy megnyitottam a csv-t és szövegből oszlopok funkcióval szédaraboltam. Simán makróba is rögzítettem akkor.
Nekem a vesszőknél vágja a sorokat, bármit is állítok be a Workbooks.OpenText függvénynél a DataType:=xlDelimited beállítás mellett. Elvileg (illetve dehogy elvileg, a help szerint) néhány elválasztó karaktert alapból be lehet állítani, illetve az Other és OtherChar mezőkben bármi megadható lenne elválasztó karakternek, pont mint a szövegfile megnyitásnál, mikor tagolt adattípus opciót választunk. Sajnos ez nem működik, talán valamit még be kell állítani, hogy ne íródjon felül az alapból beállítottal amit mi adunk meg elválasztó karakternek, vagy csak hibás az Excel, esetleg a magyarítás során került bele ez a hiba.
A makró berántja a szövegfile-t, majd a vesszők helyén újra összefűzi a sorokat, végül egyesével megkeresi a pontosvesszőket és aszerint darabolja a sorokat cellákba. De nem jól működik, ha több vessző is van egyás mellett. Ha nálad ilyen előfordul, akkor töprengek még kicsit ezen.
Találtam két különböző megoldást a pontosvesszővel tagolt *.CSV fájlok megnyitására, gondoltam, hátha valakinek még hasznos lehet:
1.)
Sub CSVFájlMegnyitás1()
Open "ide jön a fájl neve az eléréssel együtt" For Input As #1 sor = 1 Do Until EOF(1) Line Input #1, adat cellak = Split(adat, ";") For oszlop = 0 To UBound(cellak) Cells(sor, oszlop + 1) = cellak(oszlop) Next sor = sor + 1 Loop Close 1
End Sub
2.)
2.1.) Makró rögzítéssel - Adatok - Külső adatok importálása - Adatok beolvasása - Fájltípus: szövegfájlok - a szövegbeolvasó varázslóval a szükséges beállítások 2.2.) Az eredémény eljárást egy kicsit átalakítva:
Sub CSVFájlMegnyitás2() Dim MRCSVElérés As String ' ez nincs a rögzített eljárásban
MRCSVElérés = "TEXT;" & "ide jön a fájl neve az eléréssel együtt"
'Szövegfile beolvasása On Error Resume Next Workbooks.OpenText Filename:=FullName, DataType:=xlDelimited, Semicolon:=True If Err.Number > 0 Then MsgBox "Nem sikerült megnyitni " & Chr(34) & FullName & Chr(34) & _ " file-t." & Chr(10) & "Hiba (" & Err.Number & "): " & Err.Description, _ vbCritical Exit Sub End If
'Ha az Excel jól működne, akkor idáig tartana a makró :-)) 'de mert bugzik, kézzel kell a sorokat a cellákba tördelni
Dim i As Long, j As Long Dim StartPos As Integer, EndPos As Integer, sor As String Dim LastCell As Range, LastRow As Long With ActiveWorkbook.ActiveSheet Set LastCell = .Cells(1, 1).SpecialCells(xlLastCell) LastRow = LastCell.Row For i = 1 To LastRow sor = .Cells(i, 1) j = 2 While Len(.Cells(i, j)) > 0 sor = sor & "," & .Cells(i, j) j = j + 1 Wend .Cells(i, 1) = sor Next i Range(.Columns(2), .Columns(LastCell.Column)).Delete For i = 1 To LastRow StartPos = 1 EndPos = 0 j = 1 sor = .Cells(i, 1) Do EndPos = Application.WorksheetFunction.Search(";", sor, StartPos) .Cells(i, j) = Mid(sor, StartPos, EndPos - StartPos) j = j + 1 StartPos = EndPos + 1 Loop Until Err.Number > 0 .Cells(i, j - 1) = Right(sor, Len(sor) - StartPos + 1) Err.Clear Next i End With On Error GoTo 0
'Szövegfile beolvasása On Error Resume Next Workbooks.OpenText Filename:=FullName, DataType:=xlDelimited, Semicolon:=True If Err.Number > 0 Then MsgBox "Nem sikerült megnyitni " & Chr(34) & FullName & Chr(34) & _ " file-t." & Chr(10) & "Hiba (" & Err.Number & "): " & Err.Description, _ vbCritical Exit Sub End If
'Ha az Excel jól működne, akkor idáig tartana a makró :-)) 'de mert bugzik, kézzel kell a sorokat a cellákba tördelni
Dim i As Long, j As Long Dim StartPos As Integer, EndPos As Integer, sor As String Dim LastCell As Range, LastRow As Long With ActiveWorkbook.ActiveSheet Set LastCell = .Cells(1, 1).SpecialCells(xlLastCell) LastRow = LastCell.Row For i = 1 To LastRow sor = .Cells(i, 1) j = 2 While Len(.Cells(i, j)) > 0 sor = sor & "," & .Cells(i, j) j = j + 1 Wend StartPos = 1 EndPos = 0 j = 1 Do EndPos = Application.WorksheetFunction.Search(";", sor, StartPos) .Cells(i, j) = Mid(sor, StartPos, EndPos - StartPos) j = j + 1 StartPos = EndPos + 1 Loop Until Err.Number > 0 .Cells(i, j - 1) = Right(sor, Len(sor) - StartPos + 1) Err.Clear Next i End With On Error GoTo 0
Segítséget szeretnék kérni, makróból történő pontosvesszővel (;) tagolt *.csv fálj megnyitásában. A makrórögzítővel hiába rögzítem, nem működik... Hogy lehet ezt frappánsan megoldani?
De itt egy egyszerűbb, ez is így csinál: =HA(B2=1;INDEX(A:A;HOL.VAN(1;B:B;0);1);0) Az első sorban legyen vmi oszlopcím, és a második sortól kell a fenti képlet.
A oszlopban számok, ha B oszlopban 1 előfordul, akkor C oszlopban az a szám kellene, ami A- ban volt akkor, amikor B ben az 1 először előfordult. Ez folyamatosan mindaddig amíg B ben folyamatosan 1 van egymás után.
Egyszerű logika ez, de most valahogy nem akar eszembe jutni. Valószínű hasonlóan lehetne, mint az előzőt.
Asszem találtam egy hibát az Excelben. Ha egy objektum/vezérlő (pl. Gomb) formázásánál bejelöljük "Az objektum helye és mérete nem változik" rádiógombot, nem lehet TELJES sikert elérni. :( Ugyanis amikor a TELJES táblát törlöd, egy picit elmozdul az 1. sor irányába az objektum. Igaz, hogy, ha sokszor törölsz "all"-t, az első sor aljánál megáll, de mi van, ha a képernyő közepénél szeretném tartani a gombot??? :(
Magyarpityu válaszához annyit, hogy a PC World 2008. júl-i számában a 118. oldalon Weisz Tamás cikkében megtalálod, hogyan lehet szűkíteni a hosszú listákat.
Az Excel 2000-ben van egy 1000 soros korlát, de csak a legördülő menüre. Azaz ott van a többi is, ha szűkíted a kijelölést és az illeszkedő elemek száma nem nagyobb 1000-nél, akkor az előbb nem látható sorok is megjelennek. Hátha az újabb változatokban már nincs benne ez a korlát...
Akkor jó, mert pont ezt csinálja amit robbantómester írt :))
Lássuk csak, hogyan is van ez!
B1: ==HA(A1=-5;1;0) tehát az első cellát beállítjuk 1-re vagy 0-ra aszerint, hogy A1-ben -5 volt-e vagy sem
B2: =HA(A2=-5;1;HA(A2=2;0;B1)) vadászunk a -5-re, ha találtunk az A oszlop aktuális cellájában, akkor hurrá, legyen ott B-ben 1, ha nem, akkor nézzük, nem 2 van-e A-ban, mert akkor 0 lesz B-ben. Ha sem -5-öt, sem 2-t nem találtunk, akkor megismétli a felette álló értéket, tehát 0-t ha a legutóbbi 2 óta nem volt -5, vagy 1-et, ha a legutóbbi -5 óta nem volt 2.
ha vannak a következő számok az A oszlopban, akkor csak a pirosaknál legyen 1 a B oszlopban. Akkor is ha teljesen más számokkal kezdődik A oszlop. Ez akkor is működjön, az 1 et akkor is mutassa, ha később újra bekövetkezik az esemény. Tehát akkor legyen B oszlopban 1, ha talál egy -5 öt és utánna folyamatosan mutasson 1 et addig míg 2 -őt nem talál A oszlopban.
utána ne legyen 1 megint míg újra -5 nem jön. De ha jön legyen B oszlopban mindaddig 1, míg újra 2 őt nem talál A oszlopban.
Sziasztok, még egy kis változtatásra lenne szükségem,
Ha A oszlopban a számok következő képpen vannak.
5
6
7
4
3
-5
-6
-7
-8
-4
-3
-4
-3
-2
-1
-0
1
2
szóval olyan függvényt szeretnék megalkotni, ami egyet ad eredményül minden sorban, ha észleli -5 öt, lásd piros számok. Mindaddig egyet ad eredményül, míg 2 vel nem találkozik. Nem baj, ha a számok -5 alá csökkennek még pl -6 -7 -8 esetében, vagy nem folyamatosan nőnek, pl -4 után -3 következik, majd újra -4 és aztán emelkedik 2 ig
Van egy gondom ismét :)) A UserForm_Initialize függvényben beállítgatok dolgokat és, hogy amíg a ListBox-ok nincsenek feltötlve, ne hívódjanak meg a ListBox-ok Change eseménykezelői, tiltom az eseményeket az Application.EnableEvents = False utasítással. Azaz csak tiltanám, mert ennek ellenére ahogy soronként töltöm a ListBox-okat, minden új .Add hívás után meghívódik a _Change metódus is. Vajon mit rontottam el?
A számok legyenek az A oszlopban, akkor B oszlop első cellája legyen B1: =HA(A1=-5;1;0) a további cellák pedig B2: =HA(A2=-5;1;HA(ÉS(A2>A1;B1=1);1;0)) B2-t kell végighúzni A oszlop utolsó eleméig.
Szeretném a segítségeteket kérni. Van egy Excel táblázatom, amiben szerepen több, mint 4000 sor. Azokat a sorokat szeretném elmenteni / kigyűjteni, amiknek egy adott oszlopban az érték kisebb, mint 0. Adjatok tanácsot légyszi, hogy hogy csinálhatnám ezt meg!
Egy HA kritériumot szeretnék elkészíteni, de ez nem olyan egyszerű, egy kicsit furfangos.
=HA(ÉS(A3<-5;A3>A2);1;0)
Ez lenne a képlet, de nekem ez így nem jó. Itt ugye arról van szó, hogy ha A2 és A3 A2 höz képest emelkedik, akkor HA függvény eredménye 1, de ugyanakkor az emelkedés -5 től induljon.
Igen ám ez mind szép és jó, csak én azt szeretném, hogy ha a vizsgált számok között az emelkedés tovább tart, akármeddig, akkor is IGAZ at adjon a képlet, tehát jelen esetben 1 et eredményül.
Tehát a képlet az A oszlopban szereplő számok közül adja azokat, amelyeknek eredménye mondjuk -5 óta folyamatosan emelkedik. De az emelkedést csak -5 től kezdje és kövesse nyomon mindadig, amíg tart.
Tehát ha a számok A oszlopban következők
1
5
6
7
8
4
3
-4
-3
-5
-4
-3
-2
-1
0
1
2
Akkor csak a piros számoknál adjon a HA függvén 1 et eredményül. 5 6 7 8 esetében nem, mert itt az emelkedés nem -5 nél kezdődik, nem számít,hogy ezek is egymás után emelkednek.
A szám kétjegyűvé varázslásának ötletet Delila adta. Mindketten benne voltunk :))
Function Szamsor() As String Const MaxElem As Integer = 20 'Véletlen szám tartománya: 1 .. MaxElem Const ElemDb As Integer = 8 'Ennyi számot írunk egy cellába Dim Lista(MaxElem) As Integer Dim i As Integer, j As Integer i = 0 While i < ElemDb j = Int(MaxElem * Rnd + 1) If Lista(j) = 0 Then Lista(j) = 1 i = i + 1 End If Wend For i = 1 To MaxElem If Lista(i) = 1 Then Szamsor = Szamsor & Right("0" & i, 2) & " " Next i Szamsor = Left(Szamsor, Len(Szamsor) - 5) End Function
Delila1 tényleg Magyarpityu segített, de neked is köszi, azért te is nagyon sok jót írtál hozzá.
Most már eljutottunk odáig, hogy van egy makró arra, hogy véletlenszerűen adjon számokat egy bizonyos választékból, jelen esetben 1-20 ig. Csak meghatározott dababszámú legyen ez a véletlen szám, tehát jelen esetben 8 db. Ráadásul nincs ismétlődés a véletlen számok közöt
Most már csak arra lenne szükség, hogy ezek a véletlen számok emelkedő sorrendben jelenjenek meg.
A kész makrót tartalmazó munkafüzetet elmentettem bővítményként az Office megfelelő mappájába. Az Excelben látszik is, a bővítménykezelő ablakában, de, ha kiválasztom, nem történik semmi. :(
Ha nem akarod kézzel kiválasztani a tartományt, akkor lehet fejleszteni még annyit rajta, hogy a 4. sortól az utolsóig válassza ki magától. (ahogy Delila írta lentebb: ucso = Range("B65536").End(xlUp).Row) És akkor már ciklus nélkül is meg lehet csinálni, ami sokkal gyorsabb.
Sub feleslegessor() ucso = Range("B65536").End(xlUp).Row sor = 4 Do If Cells(sor, 2) = "" Or Cells(sor, 2) = "törlendő" Then Cells(sor, 2).Delete shift:=xlUp sor = sor - 1 ucso = ucso - 1 End If sor = sor + 1 Loop While sor < ucso End Sub
A Szamsor makró nem Sub, hanem Function, ilyenkor nem kell a cellába írással foglalkozni, mert a cellában a makró visszatérési értéke megjelenik. Ezért ad vissza Szamsor String típust. Lérte kell hozni egy modult a VBAProjekt alatt, idemásolni a makrót, ezután a Szamsor függvény neve megjelenik a Függvény beillesztése ablakban és úgy használható, mint bármelyik másik függvény.
Hogy lehet azt elérni, hogy az eredmény 01 vagy 02 vagy 03 és így tovább legyen. Nem formátumon keresztül. Nekem nem a formátum a lényeg, hanem hogy a későbbiekben más képletek 01 vagy 02 stb formátumú szöveggeket tudjanak használni és ezekkel más műveleteket elvégezni.
=SZÖVEG(KEREK(VÉL()*(20-1)+1;0);"00")
ennek az eredménye a számodra szükséges szöveg (nem szám!)
Lehet van egyszerűbb megoldás, de makróval pl. így:
Function Szamsor() As String Const MaxElem As Integer = 20 'Véletlen szám tartománya: 1 .. MaxElem Const ElemDb As Integer = 8 'Ennyi számot írunk egy cellába Dim Lista(MaxElem) As Integer Dim i As Integer, j As Integer i = 0 While i < ElemDb j = Int(MaxElem * Rnd + 1) If Lista(j) = 0 Then Szamsor = Szamsor & Right("0" & j, 2) & " " Lista(j) = 1 i = i + 1 End If Wend Szamsor = Left(Szamsor, Len(Szamsor) - 5) End Function
Azt nem tudom, hogy kellene kiszűrni az egyformákat, csak azt, hogy ha az összefűzendő adatok közé a ; helyett az &-et teszed, a függvényt ki sem kell írni.
1. Ha A oszlopban vannak a véletlen számok (A1 cella tartalma =KEREK(VÉL()*19+1;0) ), akkor B oszlopban kiegészíted nullával, ha kell (B1 cella tartalma =ÖSSZEFŰZ(HA(A1<10;"0";"");A1)
2. Ha egy külön munkalapra kimásolod a számokat, pl Munka1-en A1 = '01 ... A20 = 20, akkor így lesz két számjegyű véletlen szám =INDEX(Munka1!$A$1:$A$20;KEREK(VÉL()*19+1;0))
Ez ugye 0-tól 20 ig ad számokat eredményül véletlenszrűen, sőtt ezeket még kerekíti is 0 számjegyig.
Értelem szerűen 10 alatt az eredmény 1 karakternyi, tehát 1 vagy 2 vagy és így tovább.
Hogy lehet azt elérni, hogy az eredmény 01 vagy 02 vagy 03 és így tovább legyen.
Nem formátumon keresztül.
Nekem nem a formátum a lényeg, hanem hogy a későbbiekben más képletek 01 vagy 02 stb formátumú szöveggeket tudjanak használni és ezekkel más műveleteket elvégezni.
A pontositas miatt meg annyi hogy a 97 es annal oregebbek csak usztak egy jot az eredmenyuk nem szamitott bele a vegeredmenybe. tehat ki kellett gyomlalni a 97, 96... stb szuletetteket de a feladat szempontjabol ez mar nem szamitott, ilyen nem volt sok, azonban a te listadon a 3.dik a 2.dik. es a 7.dik eloreugrik a 6.dik helyre. Ne csodalkozz ha ez lesz kint a honlapjukon ha egyaltalan kijavitjak...
kedves magyarpityu nagyon koszonom a segitseged tokeletes a megoldas sajnos en ott elakadtam hogy egyesitett cellak miatt sirt a rendezesnel.. :) Meg1szer nagyon koszonom
Kapkodok, vigyázat! Fordítva írtam, sorbarendezni először nemek szerint, utána pontszám szerint kell! De Jozsef megoldása szebb, gyorsabb és egyszerűbb kimutatással.
Kicsit reszelni kell a táblázaton: 1. Az oszlopoknak fejlécet kell adni pl. helyzés, Név, idő pontszám stb. Mindegyik oszlopnak legyen neve!!! 2. A versenyszámok sorait töröld ki 50 m. fiú pillangó stb. A nevek tömören egymás után álljanak! 3. Áll bele az adatok közepébe, Adatok/Kimutatás vagy kimutatás diagram menüpont 4. A sorokra húzd rá a nevet, az adatokra a pontszámot, és már kész is vagyunk.
A fenti képletet végigírtam mind az 510 sorba, az összes versenyszám valamennyi versenyzője mellett, így megvan a LEN pontszám. A lányok neve mellé F betűt, a fiúké mellé M betűt írtam az R oszlopba, megvan a nemek szerinti elkülönítés.
Ezután, mivel a versenyszámok elnevezései egyesített cellák és ezek gondot okoznak sorbarendezésnél, megszüntettem itt a cellák közötti egyesítést. Most már nagyságrendbe lehet rendezni a neveket, elsődleges kulcs az összesített pontszám (Q oszlop), másodlagos kulcs a nemek R oszlopa. Most kész a lista, szüntessük meg az ismétlődéseket!
S oszlopba ez kerül: =HA(D4=D3;"";"OK") ,vagyis minden név első előfordulása mellett megjelenik az OK felirat. Most leszűrök OK-ra és az eredményt kimásolom egy új lapra.
Sajnos nem jovok ra mivel egy nev tobbszor szerepel hogy tudom sorbarendezni (jelzem tok laikus vagyok excel ugyben) es mar belefaradtam egy kicsit ...
Annyit haladtam . hogy =SZUMHA($D$4:$D$509;D4;$P$4:$P$509) fuggvennyel mindenki neve melle sikerult kiiratnom az osszesitett eredmenyet de sajnos nem sikerul eredmeny szerint sorbarendezni mert egy nev tobbszor fordul elo a tablazatban . Valoszinuleg most mindenki halalra rohogi magat a benasagomon de en teljesen laikus vagyok ehhez.
Jól indultál, de ezt írd a Q oszlopba: =SZUMHA($D$2:$D$509;D4;$P$2:$P$509) Ezt végighúzni minden versenyző neve mellett, majd lányokat-fiúkat különválasztani, végül Q oszlop szerint rendezés és kész.
Van egy excel tabla amiben egy rakas nev mellettuk az elert pontszamok ezeket kell osszeadni az azonos nevhez tartozo pontszamokat es sorba allitani pontszam szerint . Odaig eljutottam hogy alkalmazom a szumha fuggvenyt =szumha(D2:D509;"Mészáros Richárd";P2:P509) de ezzel minden nevet kezzel kell beirni mindig az adott cellara allva es ugye ez megint sok kezi munka amit el tudna vegezni egy program is. Az excel tabla itt talalhato: http://www.dunaferrse.hu oldalon Solymár István Emlékverseny 2008.07.26 EREDMÉNYEK letöltése azaz http://dunaferrse.hu/eredmenyek/eredm.xls
A lanyom is reszt vett ezen a versenyen es sajnos elszamoltak a vegen a LEN pontok alapjan a helyezeset amit ugye szova tettem amire kijavitottak de meg tobb hibat csempesztek be masok rovasara. Gondoltam kuldeni kellene nekik egy scriptet amelyik kiszamolja a sorrendet. Sajnos nem szoktam programozni es tegnap este eddig jutottam , viszont az ido surget mert ma felkuldik az eredmenyeket az orszagos kozpontba (orszagos uszoverseny).
Ha valaki megsugja a legegyszerubb megoldast a feladatra megkoszonom.
Arra gondoltam hogy le kellene valogatni a nveket egy masik tablaba es azt megadni valtozonak az szumha fuggvenynek es utana persze valahogy ki kell iratni nevvel egyutt az eredmenyt megfelelo sorrenbe rendezve.
A NAP(A1) függvény visszaadja az A1 cellában lévő dátum napját, esetedben 2008. július 5-hez az 5-öt. Ha 29-ét írtál volna, akkor 29-et adott volna vissza. A SZÖVEG függvény "nnnn" formátummal ebből a számból képez napot, veszi az érték modulo 7-et és kiírja az ehhez tartozó nevet. Neked nem ez kell, hanem a HÉT.NAPJA(A1) függvény, ami a dátumhoz nem a napot adja vissza, hanem a nap sorszámát :))
Nagyon fircsa dolog történik! Az ufók megszállták a földet? Az A1 tartalma: 2008. július 5. (dátumfotmátum) Az A2 tartalma: =SZÖVEG(NAP(A1);"nnnn") Erre csütörtököt mond! Pedig ez a nap szombatra esett! Jó, meg tudom oldani, ha kettőt hozzádok a napokhoz, de mégis, érthetetlen.
De ezek összefűz függvény eredményei. Az összefűz függvényben HA függvények vannak összefűzve és ott ezek az eredmények "01"&" " és "01"&" " és így tovább ként szerepelnek.
Tehát, ha a feltétel igaz, a függvény kiadja 01 et 02-őt és így tovább plusz mindegyik után még öt szünet jelet, de egy cellában.
Azt hogy lehet megtudni függvénnyel, hogy a fenti egy cellában lévő végeredményben szöveg tartalmaz-e egy adott dolgot, pl 01, vagy 13
Kimutatás web-es importálásához készítek táblázatot. Ennek egyik cellájába már előre megírt html részt kell bemásolni. Az a gond, hogy másolás után a html tagolása szerint nem egy cellába, hanem a felsorolás száma szerinti cellába kerül a szöveg. Hogyan lehetne megoldani, hogy a html szöveg csak egy cellába kerüljön?
Tüneti kezelés, de én azt csinálnám, hogy a kilométeres képletet több részre vágnám, egy-egy cellába csak annyit, amennyi elfér (ha max. 30 lehet, akkor legfeljebb annyit), majd ezeket a cellákat fűzöm össze és kész. 200 szövegdarab összefűzése megoldható 8 cellában (7-ben a képlet részei és a nyolcadikban az előző 7 összefűzve). Esetleg makróval összefűzni a szövegeket, akkor nincs ez a korlát.
A problémám a következő lenne. Több mint 30 függvényt szeretnék összefűzni az összefűz képlettel. A 2003-as excelben maximum csak 30 at lehetett. De rájöttem, hogy a 2007-el már több mint 200-at.
Vagyis lehetne, de nem működik. A következő történik. 2003-as excelben született filet megnyitottam a 2007-essel.
Erre mikor az összefűzést meg akartam ejteni, ezt a kiírást kaptam, ugyanis a 2007-excelem angol.
More arguments have been specified for the funktion then are allowed in the current file format
Persze itt én elmentettem ezt a filet 2007-es excel fielként, de a probléma ennél a filenál is ugyanúgy fenn áll.
Hisztogramot akarok csinálni. De úgy, hogy én határozom meg a rekeszeket. Teszem is, ahogy a Sugó javasolja. De ez a kurva mindig átírja a saját izlése szerint. Állítólag van rá megoldás, hogy az én rekeszeimet töltse fel. De hogyan kell ezt beállítani?
A SZUMHA fügvvénnyel lehet összeadni az egy számlához tartozó összegeket, és a DARABTELIvel megszámlálni az egyforma számlaszámokat, ami az osztó lesz. Célszerű beágyazni egy HA függvénybe az átlagot, hogy ha egy számlán nem volt aznap forgalom, akkor ne kapjál zéróosztó hibát. Remélem, jól értettem a kérdést.
Van egy excel kérdésem, de sajna nem találok rá szép megoldást. Talán Ti tudtok mondani valami okosságot.
Van egy tábla, mely tartalmaz az egyszerűség kedvéért három oszlopot: Nap Számlaszám Ft 1 1 10 1 2 20 2 3 30 3 4 40 3 5 50
Ebből kellene egy kimutatást gyártani úgy, hogy mennyi volt a napi átlag számlánként. Azaz a következőt várnám: Nap ÁtlagFt db ÖsszFt 1 15 2 30 2 30 1 30 3 45 2 90
A nem szép megoldás: az alaptáblába +1 oszlop csupa 1 értékkel. ennek az összesítése, majd ezzel osztom az összFt-t. Majd a részletek eltüntetése. Itt ugyebár a részleteknél nem lesz értelmezhető az átlagFt, csak a napi összesítő sorban. Ha valakit érdekel leírom részletesen.
A makróim többnyire a ThisWorkbook.Activate utasítással kezdődnek, pont azért, hogy mikor pl. egy Excel alá behúzott szövegfile-t nézegetek, akkor is le tudjam futtatni a makrót, ami ilyenkor nem az aktuális file-ban dolgozik, hanem a háttérben üldögélő Excel táblázatban, és az eredmények sem az aktuális file-ba kerülnek, hanem a helyükre. Erre akkor van szükség, ha a makróhoz olyan adat kell, ami csak egy adott helyen van, azokat más file-ban hiába is keresné, vagy ha kifejezetten abba a file-ba kell az eredményeket beírni, amiben a makró van. Ez addig rendben is volt, amíg a makrókat az Excel menüből indítottam, mert ott eleve filenév.xls!makronév formában érhetők el a nem aktuális munkafüzetek makrói. Így ha több megnyitott munkafüzetben van ugyanolyan nevű makró, akkor azok eleve nem keveredhetnek össze, mert azonos nevű file-ok úgysem lehetnek egyszerre nyitva.
Ha tehát menüből olyan makrót szerenék indítani, ami kötődik az adott file-hoz (azaz nem olyan, hogy pl. beszínezi az aktuális cellát), akkor meg kell mondani, melyik példány fusson. Átírom a menüt létrehozó makrót úgy, hogy vizsgálja meg, van-e már kint ilyen menü, ha igen, akkor ne fejezze be a kódot (ahogy most van megírva), hanem az adott menüpont popup legördülő menü legyen, ahol a futó példányok nevei lesznek felsorolva, és onnan kell kiválasztanom, hogy melyik file-ba szeretnék dolgozni. Mikor elkezdtem beírni a hozzászólást, még más ötletem volt, ezt most találtam ki, remek móka lesz megírni, köszi az együtt gondolkodást! :))
Most, hogy a kibővített főmenüből indítom a makróimat, egy új hiba született :(( Ha több munkafüzet is nyitva van ugyanabban az Excel példányban, és ezekben megvannak ezek a makrók (csak az adatok mások), akkor a menüpont nem az éppen aktuális munkafüzet makróját indítja el, hanem azét, amelyik feltette a menüt (amelyiket először nyitottam meg). Most tehát a makróknak csak az a példánya fut, amelyik abban a munkafüzetben van, ami feltette a menüt, és így a makró nem az aktuális munkafüzet adataival számol, hanem az elsőként megnyitottal, mert erre a makróra hivatkozik a menüpont. Marad az Eszközök/Makró/Makrók? Hmm...
Megint a segítségeteket szeretném kérni! Az Excel menüt kibővítettem egy új menüponttal, hogy a saját makróimat közvetlenül a főmenüből indíthassam. Már ott is rezeg a léc, hogy nem tudom, jól írtam-e meg a kódot (jónak tűnik mert megjelenik a menü és elindulnak a makrók, bár elég fura, hogy a menüpontok msoControlButton típusúak, pedig nem is gombok). És vajon az Excel főmenü mindig a CommandBars(1) lesz, vagy névre keressek rá (ami azért veszélyes, mert ha más Excelben más neve van, akkor nem találja meg a makró)?
De nem is ez a fogfájásom. Hanem szeretném csoportosítani a menüpontokat, és itt-ott elválasztó vonalat (separator-t) szeretnék beilleszteni, de nem tudom, azt hogyan kell. Ebbe most eléggé belegabajodam, szóval a kód így néz ki, talán abból világosabb, mit szeretnék:
Sub CreateSajatMenu() Const SajatMenuName As String = "Saját makrók" Dim i As Integer
Dim MainMenu As CommandBar Set MainMenu = CommandBars(1)
Dim MenuPont(5) As String, Menu(5) As CommandBarButton MenuPont(0) = "Első pont" MenuPont(1) = "Második pont" MenuPont(2) = "Harmadik pont" MenuPont(3) = "Negyedik pont" MenuPont(4) = "Ötödik pont"
Dim SajatMenuCommand As CommandBarPopup For Each SajatMenuCommand In MainMenu.Controls If SajatMenuCommand.Caption = SajatMenuName Then Exit Sub Next SajatMenuCommand
Set SajatMenuCommand = MainMenu.Controls.Add(msoControlPopup) With SajatMenuCommand .Caption = SajatMenuName For i = 0 To 4 Set Menu(i) = .Controls.Add(msoControlButton) With Menu(i) .Caption = "&" & MenuPont(i) .OnAction = MenuPont(i) End With Next i End With End Sub
(bocs, ha ideszemeteltem) Szerintetek hogyan kell megoldani, hogy (mondjuk) a második és harmadik pont között legyen egy elválasztó sor?
Azt szeretném megkérdezni, hogy lehet beállítani azt, hogy az Adatok -> Érvényesítés -> Beállítások -> Érvényességi feltétel -> Megengedve: Lista kiválasztásakor a cellára lépve az első listaelem jelenjen meg?
A Munka2 lapon a sárga háttérrel jelzett területnek nevet adsz a Beszúrás/Név/Név megadása menüben (én a termék nevet adtam).
A Munka1 lap A oszlopában kijelölöd a kívánt számú sort, az Adatok/Érvényesítés/Beállítások fülön a Megengedve legördülőből kiválasztod a listát, a Forráshoz pedig beírod: =termék.
A melléklet képen (reményeim szerint) látszik a Munka1 B3 képlete, amit jobbra- és lehúzol addig, ameddig szükséges.
Sok soros táblázatot kellene készítenem, amely némely oszlopában választható legördülő menü kellene, ami alapján ő automatikusan kitölti a vonatkozó cellákat.
Konkrétan: van egy 10*30-as segédtáblázatom (külön munkalapon szeretném tárolni), 10 különféle termék, amelyeknek van 30 tulajdonsága (számok mind).
Azt szeretném, hogy a táblázatomba elég legyen a legördülő menüből kiválasztani mondjuk a 7-es terméket, és ő automatikusan töltse ki a 30 sornyi adatot, ne kelljen mindig bepötyögni.
A lapfülön, amelyik a rendezendő adatokat tartalmazza, jobb klikk, Kód megjelenítése. A VBE jobb oldalán kapott üres lapra másold be:
Sub Worksheet_Change(ByVal Target As Excel.Range) If (Target.Column = 1) Then '*** Ehelyett másold be a rögzített rendezést ******* Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom '******************************************** End If End Sub
Itt az If (Target.Column = 1) Then sor az A oszlopba írásra reagál. Ha nem az kell, az 1-et írd át a kérdéses oszlop sorszámára. A ***-ok közötti rész helyére másold be a rögzített rendezést, mert ez csak az A oszlop szerint rendez.
Most tanulgatom az excelt és a következő problémám adódott: Van egy táblázatom tele adatokkal, amiket 3 rendezési elv alapján sorba rendeztem. A kérdésem az, hogy be lehet-e állítani úgy, hogy automatikusan rendezzen a megadott elvek alapján, ha változik a táblában az adat, és ne kelljen mindig minden adat változásnál külön rendezgetni. Hogyan? Köszönöm előre is.
Azt szeretném kérdezni, hogyan lehet rávenni az Excel-t, hogy a UserForm-on elhelyezett elemek ControlTipText szövegeit ne egy sorba jelenítse meg, hanem mondjuk a Label-eknél szokott módon egy adott szélességű tartományba tördelje be? Esetleg használjak sortörés karaktereket? Valahol nem lehet megadni, hogy legfeljebb hány betűt írjon egy sorba és eszerint tördelje a szöveget? Nekem 200 betűs (megszámoltam) ControlTipText-et is egy sorba írt, szépen végigér a monitoron :))
Dim i As Integer, j As Integer, k As Integer Dim l As Integer, m As Integer, n As Integer Dim i1 As Integer, i2 As Integer, i3 As Integer Dim i4 As Integer, i5 As Integer, i6 As Integer On Error Resume Next For i = 65 To 66: For j = 65 To 66: For k = 65 To 66 For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66 For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66 For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
Első próbálkozásként próbáld meg OpenOffice Calc-cal megnézni. Itt a topikon már sokaknak segített ez jelszóproblémánál. Ha nincs a gépeden, letölthető a www.openoffice.org honlapról.
Van egy Excel-es táblázatom, és van benne alul egy olyan lapfül amire, ha rámegyek az az egész lap le van jelszavazva, és sajnos nem tudom modósítani. :-((( Olvastam, vannak ilyen-olyan jelszótörő progik, csak sajnos kemény pénzbe kerülnek. Tudnátok nekem valami jót ajánlani ami működik is és ingyenes (ha van ilyen)? Köszönöm szépen, elnézést ha OFF téma.
Egy UserForm-on elhelyeztem egy ListBox elemet és a listaelemek szürke pontsorral határolva jelennek meg. Azt szeretném kérdezni, ennek mi lehet az oka? Hátha lényeges, ideírom, a UserForm-on van egy MultiPage, ennek egyik Page lapján van ez a ListBox. A TabIndex és a TabStop be van állítva (erre gyanakodtam, de nem ez a hiba). Mellékelek egy képei is a jelenségről:
Hú, ha ezt a reptéren hallották volna! Nehogy még valaki úgy értse, hogy a repülőgéppel. Érdekes látvány lenne, csak precíz kivitelezést igényel. :-DDD
Ha nincs benne az y érték, ez még akkor is lekezeli: =HA(NEM(HIBÁS(HOL.VAN(B1;OFSZET(A1;A1-1;0;1;255);0)));HA(NEM(SZÁM(KÖZÉP(CÍM(SOR(OFSZET(A1;A1-1;0;1;255));HOL.VAN(B1;OFSZET(A1;A1-1;0;1;255);0);4);2;1)));BAL(CÍM(SOR(OFSZET(A1;A1-1;0;1;255));HOL.VAN(B1;OFSZET(A1;A1-1;0;1;255);0);4);1);BAL(CÍM(SOR(OFSZET(A1;A1-1;0;1;255));HOL.VAN(B1;OFSZET(A1;A1-1;0;1;255);0);4);2));"nincs ilyen elem")
1. Ha A1-van, hogy hányadik sor(x), B1-ben keresendő érték: =HA(NEM(SZÁM(KÖZÉP(CÍM(SOR(OFSZET(A1;A1-1;0;1;255));HOL.VAN(B1;OFSZET(A1;A1-1;0;1;255);0);4);2;1)));BAL(CÍM(SOR(OFSZET(A1;A1-1;0;1;255));HOL.VAN(B1;OFSZET(A1;A1-1;0;1;255);0);4);1);BAL(CÍM(SOR(OFSZET(A1;A1-1;0;1;255));HOL.VAN(B1;OFSZET(A1;A1-1;0;1;255);0);4);2))
trimmeld le, a Windows API alavetően C nyelvi adatstruktúrával dolgozik a stringnek ott a karaktertömb felel meg. Ha kódba bele nézel, akkor 254 szóköz van lefoglalva a név helyének. ezt írd be: MsgBox Len(Trim(adatfile))
A problémám az, hogy nem tudom megadni egy központi tárhely és azon belül egy könyvtár elérését, vagyis, hogy ne kellejen ezeket állandóan kiválasztani, hanem ezt ajánlja fel a GetOpenFilename eljárás, és innen lehessen kiválasztani egy *.txt kiterjesztésű fájlt. Tudna valaki segíteni?
Nézd meg 4690 hsz.-t vagy keress rá a GetOpenFilename-re ebben a topikban. Az itt lévő megoldásban a opfile.lpstrInitialDir = CurDir sorba a CurDir helyett a saját könyvtárad elérhetőségére változtasd meg. Én egyébként mindig ezt Windows API-hoz tartozó dialógusablakot használom, mert ezen aztán minden testreszabható. Üdv József
Sziasztok!
Segítséget szeretnék kérni egy fájlmegnyitási problémában. Az alábbi eljárással próbálkozom, de idáig sikertelenül:
ChDir "\szerverkönyvtárneve"
Fájltípus = "Szöveg fájl (*.txt), *.txt"
Felirat = "Szövegfájl kiválasztása"
Szövegfájl = Application.GetOpenFilename(Fájltípus, , Felirat)
A problémám az, hogy nem tudom megadni egy központi tárhely és azon belül egy könyvtár elérését, vagyis, hogy ne kellejen ezeket állandóan kiválasztani, hanem ezt ajánlja fel a GetOpenFilename eljárás, és innen lehessen kiválasztani egy *.txt kiterjesztésű fájlt. Tudna valaki segíteni?
Előre is köszönöm.
Nekem ez nem működik. Hiába Trim, ha átmásolom értékként, ott van a szóköz. Azért nem működik a TRIM, mert igazából nem szóköz, hanem egy 160 ASCII kódú karakter van a végén. Esetleg megpróbálhatod ezzel a képlettel is: =DÁTUMÉRTÉK(CSERE(A4;12;1;""))
Próbáld meg át alakítani a következő képlettel: =DÁTUM(BAL(A4;4);KÖZÉP(A4;6;2);KÖZÉP(A4;9;2)) Utána visszamásolhatod az eredeti helyre Irányított beillesztés/Értékettel
Ha az a-ban vannak, akkor pl. B1=TRIM(A1) stb. Ez legalább megmutatja, hogy tényleg szövegformátumban van-e. Aztán esetleg ki lehet másolni a kapott értékeket irányított beillesztéssel (az "értéket" bejelölésével), és törölni a nyers adatokat.
Köszönöm Jozsef, tényleg ott a szóköz, és ha kiveszem onnan, akkor helyreáll a dátum formája.
Most már csak egy apróság: hiába próbálom, hogy keresse meg a szóközöket és cserélje ki őket semmire, azt írja, nem talál egy szóközt sem.
Persze, kitörölgethetném kézzel is, de akkor megint jön az a kínos érzés, hogy neandervölgyi vagyok a csúcstechnológiához, ami lehet, hogy igaz, de csoda kellemetlen. ;-)
kezdem szégyelni, hogy a teknika századát követő évszázadban újra be kell írogatnom a dátumokat. Tud valaki segíteni? A probléma igen egyszerű: az OTP-től jövő dátum végén ott van egy szóköz, (ami persze nem látszik elsőre), emiatt szövegként értelmezi az Excel. Le kell törölni és utána már megformázható a kívánt formátumba.
Szokásos dátum-problémába futottam, és nem bírok vele. A bank küldi a dátumokat egyik formátumban, nekem meg egy másikban kellenének, és nem tudom átalakítani. És már kezdem szégyelni, hogy a teknika századát követő évszázadban újra be kell írogatnom a dátumokat. Tud valaki segíteni?
Jelöld ki az eredménycellákat, és a formátum menüben a feltételes formázásnál állítsd be. A logikája hasonló a HA függvényhez, csak nem értéket ad vissza, hanem formázást.
Sziasztok, tudna valaki segíteni, hogy egy HA függvénynél hogyan tudom pl. piros színnel kiíratni az egyik lehetőséget? =HA(D2-B2-90>0;"van";"nincs") tehát, hogy a "nincs" pirosan jelenjen meg, de a "van" maradjon fekete. Köszi!
Sziasztok, azt szeretném megtudni, hogy a következő sorra miért kapom ezt a hibaüzenetet: "Nincs jogosultság a Visual Basic projekt programozási elérésére,"
Üdv ismét! Excelben, ha entert nyomok, normál beállítások mellett, ahogy az szokásos, a következő cellára ugrik lefelé. Ha több, enterrel elválasztott sort szeretnék beírni egy cellába, mit üssek? A fejemen kívül. :) Úgy emlékszem, valahol át lehet állítani a programot, hogy az entert azt ne sorugrásnak vegye, de én szeretném megtartani ezt a funkciót, s csak "időszaki" billentyűparanccsal elérni, hogy a cellán belül maradjon.
Sziasztok! Adva van egy táblázat, sok-sok adattal, mint pl. név, e-mail cím, telefonszám, rendelési tétel, akármi. Hogyan tudom kiszűrni (esetleg automatikusan törölni) egy táblázatból a duplán szereplő e-mail címeket és csak az egyiket megtartani, amik különböző névhez tartoznak? (Pl. Béla - 123@freemail.hu és Józsi - 123@freemail.hu közül csak az egyiket kellene megtartani).
Masik forumon mar kerdeztem, es azt mondtak, hoyg nem lehet megcsinalni, de azert megkerdem itt is. Van egy ilyesforma tablazatom:
Rossz fórumon kérdezted :)) Meg lehet oldani: Fapados módszer: 1. A Diagramvarázslóval csinálsz egy PontXY diagramot a számpárokból A Diagram beállításai lépésben, a Feliratok fülön, bekapcsolod az X vagy Y érték megjelenítését. 2. Ha kész a diagram, a diagramterületen a pont mellett megjelenő számra addig kattintasz, amíg szerkeszthetővé válik, és átírod a feliratot a kívánt betűre.
Haladó módszer: 1. Letöltöd és felrakod a következő Excel kiegészítést : http://www.appspro.com/Utilities/ChartLabeler.htm 2. Miután készítesz egy PontXY diagramot a számokból, ráállsz, az Eszközök/XY Chart Labels/Add labels menüponttal, megadod neki a feliratot tartalmazó tartományt.
Profi módszer Írsz egy makrót, aminek megadsz három tartományt, a VBA kód a fapados módszert automatizálja. Ennek megírására most nincs időm :( Üdv József
Igen, ez gyorsabb mint stromba függvénye. A Find helyett nem érdemes inkább Application.Match függvényt használni? Azért kérdem mert több forrásból is inkább ezt javasolják (én is ezt szoktam használni).
Mi a véleményed? Mondjuk ennél kezelni kell a hibát is...
Van tartomány amiben vannak különböző értékek (B2:B21)
Van mellette egy másik tartomány (C2:C21)
Van egy cella (E2),aminek az értéke megtalálható a (B2:B21) tömbben.
A kérdésem az lenne, hogy hogyan lehet azt megoldani, hogy mondjuk az E2-es (fehér cella) értéke ha 135, akkor a mellette lévő (C2:C21) tömbből a mellette lévő értéket, azaz a 6 os számot adja eredményül, és ezt az eredményt írja ki a sárga cellába.Ha a fehér cella értéke nem a 135,hanem a 131, akkor a sárga cella értéke 10 legyen, azaz a 131 mellett lévő 10-es szám.
Próbálkoztam már a FKERES függvénnyel, de érdekes eredményeket ad eredményül, és ahogy próbálkoztam, azért lehetett ez,mert a B2:B21 tartomány nincs sorrendben.
Én az alábbi verziót javaslom, mert 1) a Find metódus soxor gyorsabb, mint akármelyik cellákon végrehajtott ciklus, 2) ha nincs Találat, akkor a függvény automatikusan #ÉRTÉK! hibával tér vissza, tehát ezt nem kell külön lekezelni.
Function ULookup(Mitkeres As Variant, Holkeres As Range, Oszlop As Long) Dim Találat As Range If Oszlop > Holkeres.Columns.Count Then Oszlop = 260 Set Találat = Holkeres.Columns(1).Find(What:=Mitkeres, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious) If Találat.Offset(, Oszlop - 1) = "" Then ULookup = "" Else ULookup = Találat.Offset(, Oszlop - 1) End If
End Function
Az utolsó If..Then..Else azért van, mert anélkül a függvény nullát ad vissza ott, ahol üres sztringet kellene. Ezt esetleg egy elágazásnál elegánsabban is fel lehet oldani, de most ez jutott eszembe.
Kösz. Az összekapcsolt cellák volt az első ötletem nekem is. Voltak is ilyenek, de nem ez volt a hiba. Időközben ugyanis rájöttem. Az átmásolandó füzetben több lap is aktívvá volt téve. Így ezekről is másolni akart az 1 aktivlapos füzetbe, ami érthetően nem sikerült. Elég triviális hiba, de már vagy egy hete bosszankodtam miatta. Aztán hogy elküldtem a kérdést, véletlenül ráhibáztam a megoldásra.
Igen, meg lehet csinálni for each .... next loop-pal is. A for each ciklus egy array (collection) minden elemén végigmegy - sorrendben - tehát azt a sort kell hogy megtaláld ahol a 'Mitkeres' érték legutoljára előfordul.
Az array ebben az esetben a Holkeres tartomány első oszlopa lesz, a for - next each ciklus pedig ezen tartomány minden elemén (cellján) végigmegy, és keresi azokat az elemeket ahol a cella értéke megegyezik a 'Mitkeres' értékével. A for... next each ciklus végeredményeként annak a sornak a számát kell megkapnunk, ahol ez utóbbi adott, ebből pedig már képezhető a függvény végeredménye. Remélem ez így segít, mivel szeretnél játszani ezért nem adom meg a megoldást. Szólj ha a fentiek alapján nem menne.
Masik forumon mar kerdeztem, es azt mondtak, hoyg nem lehet megcsinalni, de azert megkerdem itt is. Van egy ilyesforma tablazatom:
A 1 5 B 5 6 C 2 2 D 4 2
A szamokat szeretnem egy koordinata rendszerben abrazolni ugy, hogy az egyes koordinatakhoz automatikusan hozzarendelodjenek a hozzatartozo betuk. Meg lehet ezt csinalni?
Az információ nem illeszthető be, mert nem azonosak a kijelölt területek. Mit kéne átállítani? Esetleg, ahová másold, ott lehet, hogy összenyitott cellák találhatóak.
Egy másik gépen készült fileba akarok átmásolni egy cellatömböt a saját gépemről. A szokásos módon, CTRL-C, CTRL-V. De hibaüzenettel nem engedi: Az információ nem illeszthető be, mert nem azonosak a kijelölt területek. Mit kéne átállítani?
Közben egy következő kérdés,
Hogy lehet azt egy függvénnyel megoldani, hogy számok közül mondjuk 1-100- ig számok
Bizonyos számok, pl: 7, 38, 4, 23, 78, 12, 26, 7, 34, 56, 29, 61, 48, 36, 82, 49, 69, 36, 73, 46, 59, 23, 47, 41
Egy bizonyos kritériumnak megfelelnek-e pl páros-e. Ha igen, akkor mutassa meg az összes ilyen számot, ami ennek a kritériumnak megfelel vesszővel elválasztva, egy cellában.
Hogy állnátok neki egy olyan függvény megírásának, ami annyiban tér el az FKERES beépített függvénytől, hogy nem a megadott tartomány első sorától keres lefelé, hanem fordítva. (Tehát az utolsó sortól keres felfelé) ?
Szia! Hogy lehetne itt megoldani mondjuk 60 eseményre ugyanezt?
Többféleképpen meg lehet oldani. Ha jól értem a feladatot, azt kell megnézni, hogy egy vízszintes tartományban szerepel-e a C46 érték. 1. HOL.VAN függvény =HOL.VAN(C46;FM45:FQ45;0) Ha a képlet eredmény nem hibás, akkor megtalálható a tartományban. Mellékhatásként megkapod, hogy hányadik pozícióban található meg először. 2. Tömbképlet =SZUM((FM45:FQ45=$C$46)*1) beírás után lezárás Ctrl+Shift+Enter(!!!) Ha az érték nem 0, akkor megtalálható a tartományban, mellékhatásként megkapod hányszor szerepel az érték. Midkettő működik számokra, szövegekre is. Üdv József
Sziasztok,
Kérdésem az lenne, hogy hogy lehetne a VAGY függvényt nem csak 5 esemény vizsgálatára használni, vagyis ,hogy lehetne megoldani, hogy több mint 5 eseményt figyeljen.
Például itt egy függvény:
=OR(FM45=C46,FN45=C46,FO45=C46,FP45=C46,FQ45=C46)
Hogy lehetne itt megoldani mondjuk 60 eseményre ugyanezt?
Válaszotokat előre is köszi
Laci
Nagyon köszönöm! Megmentettél a munka közbeni méteres szakáll kinövésétől. :)
-
Még egy kérdésem volna. Amikor rámegyek egy mezőre, amelyben már van szöveg (pl. "alma"), hogyan tudom egér nélkül megoldani, hogy beleírhassak (pl. "alma és körte") anélkül, hogy az eredeti szöveg átíródjék? (A cél az volna, hogy az egérhez való kapkodás nélkül írhassak.)
Sziasztok! Szerkesztési kérdésem volna. Van egy sornyi adatom, minden cellában egy szó. Szeretném ezeket oszlopba rendezni (hogy abc-rendbe tudjam tenni). Megoldható ez valahogy Excelben? Az adatrendezés funkciót ismerem, csak azt szeretném, hogy a sorból oszlop keletkezzen.
Sziasztok! Tanácsot szeretnék kérni! Egy form-on ListBox kombinált listát használok MultiSelect = fmMultiSelectMulti tulajdonsággal, azaz bármelyik listaelem ki-be kapcsolható. Igazából nekem három állapotú listaelemek kellenének, tehát nem elég az igen-nem opció, hanem ezekhez egy harmadik lehetőség is jó lenne. Ezt milyen elemekkel lehet megoldani, ezetleg a ListBox valamilyen beállításával tudja ezt? Vagy például a listaelem előtti jelölőnégyzet (ListStyle = fmListStyleOption esetén) nemcsak üres vagy kipipált lenne, hanem mondjuk egy a windows-ból ismert szürke állapota is lenne.
Arról van szó, hogy a lista minden tagja egy-egy további al-listát tartalmaz, és ezeknek az elemeknek a csoportos kinyomtatását szeretném makrózni. Az igen-nem állapot jelenti, hogy a listaelemhez tartozó al-lista minden eleme ki lesz-e nyomtatva, vagy egyik sem. Viszont ha egy listaelem al-listájának nem kell minden elemét nyomtatni, akkor nem szeretnék sem igen, sem nem opciót kiadni, akkor lenne ez a harmadik állapot és a nyomtatást nem a csoportos nyomtatás beállítása határozná meg, hanem az al-listákban a minden elemre egyedileg beállított érték lenne érvényes. A makró egyébként csak az al-listák nyomtatási beállításait adja meg, így nem kell a felhasználónak (nekem) szűrögetni és listánként egyesével beállítgatni az értékeket, csak ráküldöm a makrót, bejelölöm az engem érdeklő elemeket és szevasz. De nem feltétlenül kell mindig az összes listaelemre elvégezni ezt a beállítást, a harmadik opció jelentené, hogy hagyjuk változatlanul a listához tartozó al-lista beállításait.
Bocsánat, a gyakorlatban ez sokkal egyszerűbb, mint ahogy most megpróbáltam elmondani a bánatomat...