Hirdetés
-
LOGOUT.hu
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
-
bteebi
veterán
Sziasztok!
Van egy Excel táblázatom, aminek 2 oszlopában vannak adatok. Az A oszlopban idők, a B oszlopban pedig ezekhez tartozó számok vannak (Az A1 és a B1 fejléc, mondjuk Idő és Érték). Fix 10 percenként vannak értékek, több hónapon keresztül. Azt szeretném megcsinálni, hogy csak az egy adott időhöz (pl. hétfő, kedd, szerda... 0:10, 3:50 vagy 6:40) tartozó B oszlopban lévő számokat átlagoljam (0:00-tól 23:50-ig, 10 percenként, összesen 144 időpont).
Úgy van most megcsinálva, hogy a D oszlopban vannak az átlagoláshoz szükséges időpontok (0:00-tól 23:50-ig, 144 db), és amellé, az E oszlopba készíteném az átlagolást. Azt hittem, hogy az AB.ÁTLAG függvény jó erre, de nem tudtam úgy paraméterezni, hogy azt csinálja, amit szeretnék.Remélem érthetően fogalmaztam. Milyen függvényt használjak, milyen beállításokkal? Előre is köszönöm a segítségeteket!
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz vgergo #17108 üzenetére
Ahogy néztem, ezt sajnos nem lehet állítani. Bizonyos feladatok fognak több szálon futni, míg mások nem. A te képleteid úgy látszik az utóbbiba tartoznak sajnos. Szerintem nincs rá megoldás , lásd a linken a Multi-Core Processing-es részben.
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
Sziasztok!
Makróval szeretnék text file-ból adatot Excelbe átvinni. A probléma az, hogy a text file-ban a számok tizedesponttal vannak, míg az Excelben tizedesvessző van. Ez még nem gond, lecseréltetem az összes pontot vesszőre, ekkor viszont a számokat szövegként tárolja. Azt a megoldást találtam rá, hogy irányított beillesztéssel, a "Műveletek" résznél az "Összeadás"-t bepipálva átkonvertálja számokká a szövegként tárolt számokat. Manuálisan működik, de makróval nem. Felvettem makrórögzítővel, de sehogy se működik. Kijelöli a szöveget, vágólapra teszi, de a beillesztést már nem csinálja meg. A D2-től jobbra/lefele lévő (egybefüggő) tartományt szeretném átkonvertálni.
A kódrészlet:
Range("D2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=FalseHol lehet a hiba? Előre is köszönöm a javaslatokat!
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz Delila_1 #17590 üzenetére
Köszi a tippet! Manuálisan meg tudtam csinálni eddig is a konverziót irányított beillesztéssel, de makróval nem megy. Megpróbálom azt is makróval, amit írtál.
#15791: Köszi a javaslatot. Már próbáltam, de önmagában a cellaformátum megadása, átállítása nem segít, ugyanúgy szövegként értelmezi a számokat.
[ Szerkesztve ]
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
Sziasztok!
A csere funkciót szeretném használni Excel 2003-ban úgy, hogy egy adott karaktersor bizonyos részét cseréljem le. Példa: 01-K ... 02-K ..., és ezekből szeretnék olyat csinálni, hogy 11-K ... 22-K ...
Sima cserével (0 ->1) nem megy, mert a szövegben többször máshol is előfordul a nulla. Tehát helyettesítő karaktert (? vagy *) kellene használnom. Ha a "Keresett szöveg" részbe beírom, hogy "0*-", a "Csere erre" részbe pedig a 0 helyére 1-et írok, akkor lecseréli a 0-kat, de a 2. karakter helyére ?-t tesz, pedig az eredeti karaktert (ami valamilyen szám) kellene meghagynia. Mit írjak a "Csere erre" mezőbe a "?" helyett? Előre is köszönöm a segítségeteket!
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz bteebi #18296 üzenetére
Mivel csak az első karaktert kellett lecserélni, ezért közben már megoldottam kerülő úton, függvénnyel: =CSERE("cella";1;1;2). Mindenesetre örülnék neki, ha valaki tudna megoldást adni az eredeti problémára függvény és makró nélkül .
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
Sziasztok!
Egy olyan makróra lenne szükségem, ami egy adott lap élőfejébe (többek között) egy másik lapon lévő cella tartalmát beleírja. Annyit már el tudtam érni (más példák alapján), hogy működjön, de csak úgy, ha manuálisan lefuttattam a makrót, és ha meg volt adva az összes fülnek a neve egyesével.
A példában legyenek a fülek: "Lista", meg mondjuk különböző autótípusok nevei ("Suzuki", stb.). A "Lista" lap adott cellájában (itt A1) lévő értéket szeretném beleírni az élőfejbe az összes fülön, a "Lista"-t leszámítva.
Sub Varos()
Sheets("Suzuki").PageSetup.CenterHeader = "Szín: " & Sheets("Lista").Range("A1").Value
Sheets("...").PageSetup.CenterHeader = "Szín: " & Sheets("Lista").Range("A1").Value
.
.
.
End SubMeg lehet úgy csinálni, hogy automatikusan (például az A1 cella tartalmának változására, vagy fül váltására) lefusson a makró az összes fülre? Kivéve persze a "Lista"-t, de ha csak ezen múlik, akkor annak a fejlécében is benne lehet, vagy akár a kód végén az is lehetne, hogy
Sheets("Lista").PageSetup.CenterHeader = ""
Tudnátok tanácsot adni az automatikus futtatásra, és esetleg arra, hogy ne kelljen minden fülre külön megadni a parancsot? Előre is köszönöm a segítségeteket!
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz Delila_1 #20333 üzenetére
Szia!
Nagyon köszönöm a segítséget , egyelőre azonban valamiért még nem működik a kód. Azt írja, hogy a Range osztály Select metódusa hibás.
Valamennyit javult a makróm, de ha az
If Target.Address = "$A$1" Then
sor volt megadva, akkor nem működött. Csak akkor futott le magától, ha a lentebb látható módon próbáltam:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Me.Range("A1")) Is Nothing Then Exit Sub
Application.EnableEvents = False
Sheets("Suzuki").PageSetup.CenterHeader = "Szín: " & Sheets("Lista").Range("A1").Value
'és ez a sor ismételve az összes lapra, de az elég gagyi
Application.EnableEvents = True
End SubEzt viszont nem tudtam úgy átírni eddig, hogy működjön. Pedig az ötleted tök jó, de valamiért nem megy. Kipróbáltam egy M$ honlapon lévő makrót is, de nem tudtam úgy átírni, hogy jó legyen (mondjuk az az összes lapra működne elvben, úgyhogy a te megoldásod jobb lenne):
Sub WorksheetLoop2()
Dim Current As Worksheet
For Each Current In Worksheets' Insert your code here.
Next
End SubDe ezt se tudtam úgy átírni, hogy működjön . Ilyet próbáltam:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Me.Range("A1")) Is Nothing Then Exit Sub
Application.EnableEvents = False
Dim Current As Worksheet
For Each Current In Worksheets
.PageSetup.CenterHeader = "Szín: " & Sheets("Lista").Range("A1").Value
'ez így hibás, valahogy máshogy kellene megadni, de ActiveSheet-tel se megy
Next
Application.EnableEvents = True
End SubVan ötleted, hogy mi lehet a probléma?
[ Szerkesztve ]
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz Delila_1 #20343 üzenetére
Működik! Hálás köszönet érte!
Igazából úgy is megy, ahogy először leírtad, valamit én ronthattam el.
Már csak egy dolgot nem értek: csak úgy működik, ha a Target.Address abszolút hivatkozással van megadva, tehát "$A$1". Se úgy nem megy, hogy "A1", se úgy, hogy Me.Range("A1"), és úgy se, hogy Sheets("Lista").Range("A1"). Nem kellene egyébként mindig lefutnia a makrónak, ha bármelyik lapon változik az A1-es cella? Nem teszi (és nekem így jó), de valahol logikusnak tűnne, mert elvileg akkor le kellene futnia, ha az A1-es cella változik. Vagy a private sub-ban lévő abszolút hivatkozás csak az adott lapon érvényes? (Igen, jól gondolod, sajnos nem értek hozzá .)
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
Sziasztok!
Az élőlábba beletettem a filenevet (&[Fájl]), ami Excel 2003-ban jól jelenik meg, 2007/2010-ben viszont lehagyja a kiterjesztést. Van arra valakinek ötlete, hogy hogy lehetne azt megcsinálni, hogy a régebbi és az újabb Excel verziókban is látható legyen a kiterjesztés? Lehet vizsgálni makróval az Excel verzióját?
Ha igen, akkor lehetne egy olyan makrót készíteni, ami a file megnyitáskor megvizsgálja az Excel verzióját, és annak megfelelően választ az elnevezések közül (az egyik esetben az &[Fájl], a másik esetben pedig az &[Fájl].xls lenne beleírva) - ezzel mondjuk annyi probléma lenne, hogyha (többek között) mondjuk .xlsx lenne a kiterjesztés, akkor nem a valós kiterjesztést írná ki.
Előre is köszönöm a segítségeteket!
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
Szia!
Bennem is felmerült ez a gondolat, de nem tudom, hogy vajon tényleg ez lehet-e a megoldás. Ha ez, akkor az elég gáz, pláne azt is figyelembe véve, hogy a céges gépeket nem igazán lehet testreszabni, bár azt hiszem ezt még pont be lehet állítani nekünk is . Kipróbálom itthon, mert itt van 2010-es Excel is.
Szerk.: És tényleg a kiterjesztés elrejtése miatt . Meglepő, de nem mulatságos. Elég hülye hiba. Mondjuk így kicsit tanácstalan vagyok, hogy hogy lehetne univerzálisan megcsinálni, hogy minden gépen jól működjön, akárhogy is legyen beállítva.
[ Szerkesztve ]
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
Sziasztok!
Egy (nekem ) meglehetősen komplex problémám van. Innen-onnan összeszedtem egy kódot, aminek az lenne a feladata, hogy egy (vagy akár több) Excel file kiválasztása után a képleteket jelenítse meg a számolások helyett (működik), széthúzza a cellákat úgy, hogy minden látszódjon és megjelenítse a sor- és oszlopazonosítókat (ez is megy), és elmentse más néven a filet, mondjuk origi.xls helyett origi_mod.xls-ként. A file mentés része nem megy (nem úgy nevezi át, ahogy szeretném.). Ezután még az egész file-t elküldi a nyomtatóra. Ez is viszonylag jól működik, de nem tökéletes: ha xlDefault-nak adom meg a .Orientation-t, akkor hibaüzenettel (400-as hibakód) kilép, ha xlLandscape-nek, akkor lefut. Viszont nem feltétlenül Landscape kellene, mert lennének majd olyan file-ok, amiknél van Landscape/Portrait lap is. Mi lehet a gond?
A kód:
Sub ellenorzes()
Dim ablak As FileDialog
Dim fajlnev As String
Set ablak = Application.FileDialog(msoFileDialogOpen)
Dim FileChosen As Integer
FileChosen = ablak.Show
ablak.Title = "Válaszd ki a file-t"
ablak.InitialFileName = "C:\"
ablak.InitialView = msoFileDialogViewList
ablak.Filters.Clear
ablak.Filters.Add "Excel 2003 worksheet", "*.xls"
ablak.Filters.Add "Excel 2010 worksheet", "*.xlsx"
ablak.Filters.Add "Excel makró", "*.xlsm"
ablak.FilterIndex = 1
If FileChosen = -1 Then
fajlnev = ablak.SelectedItems(1)
Workbooks.Open (fajlnev)
Else: Exit Sub
End If
Dim lap%
For lap% = 1 To Worksheets.Count
Sheets(lap%).Activate
ActiveWindow.DisplayFormulas = True
ActiveSheet.Columns("A:Z").EntireColumn.AutoFit
With ActiveSheet.PageSetup
.PrintHeadings = True
.PaperSize = xlPaperA4
.Orientation = xlLandscape
End With
Next
ActiveWorkbook.SaveAs FileName:=ActiveWorkbook.Name & "_mod"
If MsgBox("Kinyomtatja az összes munkalapot?", vbInformation + vbYesNo, "Munkalapok kinyomtatása") = vbYes Then
ActiveWorkbook.PrintOut
Else: Exit Sub
End If
End SubTovábbi problémák, észrevételek:
1. Első futáskor nem alkalmazza a szűrőket (.xls, .xlsx, kiindulási mappa). Másodjára már igen, még akkor is, ha csak elindítom a makrót, de nem választok ki file-t, tehát kilépek.
2. A file megnyitása párbeszédpanelnél hogy lehetne a Sajátgépet, vagy azt a mappát kiválasztani, amelyikben az adott file van (amiből a makró fut)?
3. Save as-nél probléma: a "_mod"-dal kiegészítve nem pont úgy írja át, ahogy szeretném: a filenév végéhez írja a "_mod"-ot, a kiterjesztés után. Ezt meg lehetne kerülni a kiterjesztést jelölő pont előtti/utáni részre való szűréssel. Ezt viszont egyrészt én nem tudnom megírni, ráadásul ha a filenévben is van pont, akkor a "legjobboldalibb" pont előtti/utáni részre kellene szűrni.
4. Nekem úgy lenne logikus, ha az "If FileChosen = 1" lenne, de úgy nem csinál semmit, csak a -1-re. A kód, ami alapján csináltam, így volt:
If FileChosen <> -1 Then
Else
fajlnev = ablak.SelectedItems(1)
Workbooks.Open (fajlnev)5. Ha meg van nyitva a módosítani kívánt file (pl. az előző makrófutás után nyitva maradt), és azt nem írom felül, akkor hibaüzenetet ad. (A kódot az ActiveWorkbook.SaveAs sor nélkül futtattam, mivel az nem működött.)
6. Hogy lehetne a "400" hibaüzenet okát kiíratni? Ilyet találtam, hogy
On Error GoTo Errorcatch
and at the end of the code put
exit sub
Errorcatch:
MsgBox Err.Description
De ezt sehogy se tudtam működésre bírni. Eleve ha Exit Sub-ot írtam a kód legvégére, akkor Compile Error van (End Sub-ot kér).
7. Hogy lehetne azt megoldani, hogy a file mentésénél is legyen egy párbeszédpanel, aminek a default mappája vagy egy általam megadott hely lenne (pl. C:\mod\), vagy pedig a) a makrót tartalmazó file útja, esetleg b) a módosítani kívánt file útja.
8. Hogy lehetne mindezt megcsinálni több file-lal egyszerre? Több file-t is ki lehet jelölni, de a makró csak egy file-on fut le.Bocsánat, kicsit hosszúra sikeredett . Egyelőre itt tartok. Természetesen tovább próbálkozom majd a hibák kijavításával. Minden javaslatot, javítást nagyon köszönök!
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz bteebi #20533 üzenetére
3. Save as-nél probléma: a "_mod"-dal kiegészítve nem pont úgy írja át, ahogy szeretném: a filenév végéhez írja a "_mod"-ot, a kiterjesztés után. Ezt meg lehetne kerülni a kiterjesztést jelölő pont előtti/utáni részre való szűréssel. Ezt viszont egyrészt én nem tudnom megírni, ráadásul ha a filenévben is van pont, akkor a "legjobboldalibb" pont előtti/utáni részre kellene szűrni.
Mondjuk a jobb szélső pont felvetése olyan szempontból megoldható, hogy jobbról keresve (Right) az az első pont. Közben találtam egy kódot, ami közelebb vihet a megoldáshoz:
Function CheckExtension()
CheckExtension = Right(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - InStrRev(ActiveWorkbook.Name, "."))
End FunctionEbből kiindulva - remélhetőleg - a SaveAs problémát talán meg tudom majd oldani.
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz storkie #20539 üzenetére
Nem teljesen világos a probléma, kicsit átfogalmazhatnád (bár lehet, hogy csak én nem értem ). Tudsz legördülő listát készíteni? Adatok -> Érvényesítés -> Lista. A lista elemeit pontosvesszővel válaszd el, de cellahivatkozásokat is megadhatsz, és akkor dinamikusan fog változni.
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
Szia!
Kíváncsiságból kipróbáltam ezt a saját függvényt, betettem az adott lapba a kódját, de nem ment, #NÉV? hibaüzenetet dob. Azóta már megoldottam, de ha esetleg más se tudná: saját/custom függvényt külön modulba kell tenni: meg kell nyitni a Visual Basic Editort (Alt+F11), Insert -> Module, oda betenni a kódot, és úgy már működik. Egy modulban több custom függvény is lehet, tehát csak a modul a lényeg. Részletes leírás az MS oldalán.
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz antikomcsi #20551 üzenetére
Sub mentes()
If Range("F5").Value >= Range("B2").Value -3 Then
ThisWorkbook.Save
Else
End If
End SubCancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz bteebi #20533 üzenetére
A SaveAs-t egy módon már meg tudom oldani:
Sub SaveAs()
Application.Dialogs(xlDialogSaveAs).Show ActiveWorkbook.Path & "\" & "teszt.xls"
End SubAzt viszont nem értem, hogy csak akkor működik, ha modulba teszem, különben Complie error van ("Member already exists in an object module from which this object module derives"). Miért baj, ha objektumba van beletéve, és nem modulba?
Fura amúgy, hogy kell a "\", de ha nincs ott, akkor ugyan jó mappába menti a file-t, viszont az utolsó mappanevet összefűzi a "teszt"-tel. Esetemben így a teszt.xls-ből Excelteszt.xls lett volna, mert egy ...\Excel\ nevű mappába ment volna a mentés.
A többi kérdést azonban egyelőre még nem tudtam megoldani - például azt se, hogy az eredeti file névhez annyit fűzzek hozzá mentéskor, hogy "_mod".
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz bteebi #20556 üzenetére
És működik! Egy talált kódot átírva sikerült megoldanom, hogy úgy mentse el, ahogy szeretném:
Sub SaveAs()
Dim utolsopont As Long
utolsopont = InStrRev(ActiveWorkbook.FullName, ".")
Dim UjNev As String
UjNev = Left$(ActiveWorkbook.FullName, utolsopont - 1) & "_mod" & Mid$(ActiveWorkbook.FullName, utolsopont)
Application.Dialogs(xlDialogSaveAs).Show ActiveWorkbook.Path & UjNev
End SubKipróbáltam, FullName helyett Name-mel is megy, de akkor kell bele a "\".
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz autox3c #20558 üzenetére
Ez talán segít, persze a puding próbája az evés:
PDF-fájlok átalakítása Excel formátumba1. Nyissa meg a fájlt az Acrobat XI alkalmazásban.
2. Válassza az Eszközök > Tartalomszerkesztés > Fájlexportálás célpontja, majd a Microsoft Excel munkafüzet lehetőséget.
3. Adjon nevet az Excel-fájlnak, és mentse tetszés szerinti helyre.Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz nimmy001 #20562 üzenetére
Én is jártam már így, szerintem ez egy bug. Nem tudom már, hogy hogy lehet kijátszani, szerintem nem találtam rá egyértelmű megoldást. Azt hiszem össze-vissza másoltam a cellát, szerkesztettem a képletet addig, amíg végül jó nem lett .
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz kőbaltazár #20627 üzenetére
Az ezen az oldalon lévő makró megoldja. Csak ara a tartományra működik, amiben adatok vannak! Tehát ha például az A1 és az F5 cellában van adat, akkor az A1:F5 tartomány ellenőrzését végzi el ez a kód.
[ Szerkesztve ]
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz kőbaltazár #20663 üzenetére
Valami ilyesmi?
Sub Protect()
Cells.Select
Selection.Interior.ColorIndex = 43
Range("B22:C37,B53,F13").Select
With Selection
.Interior.ColorIndex = xlNone
.Locked = False
End With
ActiveSheet.Protect
End SubNyomtatásnál a fekete-fehér is jó?
With Sheets("Lap neve")
.PageSetup.BlackAndWhite = True[ Szerkesztve ]
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz kőbaltazár #20777 üzenetére
Szia!
Olyan lapon futtatod, amin már egyszer lefuttattad? Akkor nem fog menni, mert ha a lap védve van, akkor nyilván nem tudsz a celláin változtatást végrehajtani. Ezt elkerülendő szúrj be a makró elejére egy olyan sort, hogy ActiveSheet.Unprotect.
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
Ez így jó szintaktikailag? Megnéztem makrórögzítővel, és nekem így csinálta meg:
.PasteSpecial Paste:=xlPasteValues
Amúgy az xlPasteValuesAndNumberFormats is jó lehet akár neked. Vagy egyszerűen hagyd ki a PasteSpecial-t, ha lehet. Ez is segíthet. Magamtól nem is gondoltam volna, hogy lehet gond a PasteSpecial használatával.
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz #02644736 #20825 üzenetére
Úgy mindenképp meg tudod csinálni - kicsit kerülőúton -, hogy ="Bcs" & A1 & "/2014". Ebben az esetben az A1 cellában van a karakterlánc (pl. 0234), a cella formátuma pedig szöveg. Próbáltam máshogy, de jobbat egyelőre nem tudok. Ha fix számú (pl. 4) karakter lenne a Bcs után, akkor meg tudnád adni úgy, hogy "Bcs"0000"/2014", és akkor mindig 4 jegyre egészíti ki a számot, nullákkal.
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz z123456789 #20834 üzenetére
Ez elvileg azt csinálja, amit szeretnél. Jobb gomb a munkalapra → Kód megjelenítése. Oda másold be ezt:
Sub osszead()
Dim szum As Long, i As Long
szum = 0
For i = 1 To 200 'Rows.Count
If Cells(i, 2).Interior.ColorIndex = 6 Then
szum = szum + Cells(i, 2).Value
End If
Next i
Cells(2, 3).Value = szum
If Cells(2, 3).Value > 50 Then
Cells(2, 3).Interior.ColorIndex = 4
Else
Cells(2, 3).Interior.Pattern = xlNone
End If
End SubA Cells(i, 2)-nél a 2 helyére annak az oszlopnak a számát írd, amiben az összeadást szeretnéd (A=1, B=2, stb.). A Cells(2, 3)-ba teszi az összeget, ami a 3. oszlop, 2. sor cellája (vagyis C2). Az első 200 sorra végzi az összeadást, ezt tetszőlegesen változtathatod. Ha a Rows.Count elől kiveszed az aposztrófot, akkor megcsinálja mind a 65536 sorra, de az már elég lassú .
[ Szerkesztve ]
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz Vladek83 #20844 üzenetére
Nem kellene a vlookup elé az, hogy WorksheetFunction? Az 'A' az A oszlop, vagy egy elnevezett tartomány akar lenni? Mondjuk ha nem jelzett rá hibát, akkor gondolom jó, de ha az A oszlop, akkor én "A:A"-ként írnám.
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz z123456789 #20849 üzenetére
Most akkor végülis működik? Amúgy meg azt csináld, hogy miután beírtad a kódot, a munkalapon Alt+F8-at nyomsz, és akkor ki tudod választani és el tudod indítani a makrót. De egyébként tudsz hozzá gyorsbillentyűt is rendelni (pl. Ctrl+r, vagy Ctrl+Shift+r), de akár egy gombot is csinálhatsz neki: egyszerűen rajzolsz egy téglalapot, jobb gomb → Szöveg szerkesztése (beírod mondjuk azt, hogy "Makró indítása"), majd szintén jobb gomb → Makró-hozzárendelés. Így már gombbal (is) tudod indítani, frissíteni .
#20847: Idézőjel és WorksheetFunction nélkül működik?
#20851: Feltételhez kötötten, vagy csak simán? Makróval?
[ Szerkesztve ]
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz Psytróger #20851 üzenetére
Erre ez működik:
Sub melleir()
Dim i As Long
For i = 1 To Rows.Count
If Cells(i, 1).Font.ColorIndex = 3 Then
Cells(i, 3).Value = Cells(i, 1).Value '"P"
End If
Next i
End SubEbben az esetben az A oszlopban lévő cella tartalmár írja a C oszlopba. Ha a "P" elől kitörlöd a Cells(i, 1).Value-t és az aposztrófot, akkor minden piros betűs cella mellé P betűt tesz.
[ Szerkesztve ]
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz Psytróger #20857 üzenetére
Ha jól értettelek, akkor ez jó lesz:
Sub melleir()
Dim i As Integer, LastRow As Integer
LastRow = Columns(1).Find("*", SearchDirection:=xlPrevious).Row
For i = 1 To LastRow
If Cells(i, 1).Value = "" Then
i = i + 1
End If
If Cells(i, 1).Value = Cells(i, 2).Value Then
Cells(i, 4) = 1
Else: Cells(i, 4) = 2
End If
Next i
End SubMűködésre bírni az itt leírtak alapján tudod. Nem kell semmit se lemásolnod, az egész tartományra működik.
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz z123456789 #20861 üzenetére
Ahogy gondolod . Amúgy összességében egyszerűbb a megoldásod, én is azt használnám inkább. Nem gondoltam végig, hogy makró nélkül is meg lehet csinálni .
[ Szerkesztve ]
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
Sziasztok!
Egy tartományban szeretném megszámolni azon cellákat az AH4:AH87 tartományban, amelyek értéke 10 alatti, illetve 10 és 20 közé esik. Az utóbbinál a darabteli függvényt csak kerülőúton tudtam úgy paraméterezni, hogy jó legyen: =COUNTIF(AH4:AH87,">=10")-COUNTIF(AH4:AH87,">=20").
Van erre jobb ötletetek? Vagy segédcellák (oszlopok) nélkül nem lehet elegánsabban megoldani? Igazából az ÉS (AND) függvényt kellene valahogy beágyazni, de azt sajnos nem tudtam megoldani.Előre is köszönöm a segítségeteket!
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
Makróval mindenképp be lehet állítani, de - már pontosan nem emlékszem rá, hogy miért - elég macerás, és nem teljesen megbízható, legalábbis Excel 2003-nál nem működött teljesen jól. A 2007-nél már lehet, hogy jól, vagy legalábbis jobban működik. Ez talán segíthet.
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
Sziasztok!
Van egy 8×12-es tömböm a G1118-as tartományban. Azt szeretném, ha ezen cellák tartalmát a D sorba (D2-től lefelé) egy makró "meghivatkozná" képletként - tehát a értéke D2 az lenne, hogy "=G11", a D3-é az, hogy "=H11", a D97-é pedig az, hogy "=R18" - tehát ha bármit megváltoztatnék a tömbben, akkor az automatikusan átíródna a D oszlopban. Ezt a makrót írtam rá:
Sub masolas()
Dim i As Integer, j As Integer
For i = 1 To 12
For j = 1 To 8
If Cells(j + 10, i + 6) <> "" Then
Cells(1 + (j - 1) * 12 + i, 4).Formula = Cells(j + 10, i + 6).Formula
Else: Cells(1 + (j - 1) * 12 + i, 4).Value = ""
End If
Next j
Next i
End SubAlapvetően működik is, de csak az adott cella értékét írja be, nem pedig képletként hivatkozik rá. Hogy kellene átírnom? Előre is köszönöm a segítségeteket!
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz Delila_1 #21076 üzenetére
Nagyon köszönöm! Huhh, hát ez egy kicsit elegánsabb és egyszerűbb, mint az enyém . Valamiért egyébként azt csinálja, hogy bár beírja az adott cellákba a képletet (tehát pl. =$G$11), de nem az ehhez tartozó érték jelenik meg, hanem a képletet írja ki. Ez vajon mitől lehet? Excel bug?
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz Delila_1 #21098 üzenetére
Basszus, összességében már vagy 15 éve dolgozom Excellel, de ezt nem tudtam (amúgy nem én állítottam arra, ezt más táblázatában készítettem). Szerintem egyébként a következetességében van egy kis anomália, legalábbis az én értelmezésemben. Ha már egyszer bevette a képleteket, akkor állíthatom bármire a formátumot (akár szövegre is), akkor is a képlet értékét fogja kijelezni, fordítva viszont nem.
Számomra úgy lenne logikus, hogyha visszaállítom szöveg formátumúra, akkor a cella tartalmát, és ne a képlet (hivatkozás) értékét jelezze ki. Azon persze lehet vitatkozni, hogy jobb lenne-e úgy; valószínűleg nem, de nekem logikusabb lenne. Már csak amiatt se gondoltam volna, hogy a cellaformátum miatt van ez a probléma, mert ez így egy aszimmetrikus reláció (cellaformátum - képlet), az meg nem jó .
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz Delila_1 #21100 üzenetére
Együtt lehet élni ezzel, csak ismerni kell . Valószínűleg egyébként jobb, hogy így van (kisebb rá az esély, hogy véletlenül hibázzon az ember), de persze nem logikus.
Amúgy azért se lett gyanús, hogy ez egy cellaformátum miatti hiba lenne, mert láttam már hasonlót: képlet másolása után (akár "lehúzás", akár copy/paste) a másolt cellában a képletet szövegként jelenítette meg, pedig a forrás cellában még jól működött. Erre van esetleg ötleted? Bár még csak elvétve jött elő ez a hiba, de egyébként nagyon idegesítő tud lenni, és sehogy se jöttem rá, hogy hogy lehet következetesen megoldani. Előbb-utóbb megoldódott, de nem logikusan (pontosan már nem is emlékszem rá, hogy hogyan/mitől).
Cancel all my meetings. Someone is wrong on the Internet.
Új hozzászólás Aktív témák
Hirdetés
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: HC Pointer Kft.
Város: Pécs