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
-
m.zmrzlina
senior tag
Hogyan tudom beállítani, hogy ha egy text fájlból szeretnék szöveget beilleszteni egy excel munkalapra akkor alapértelmezetten ne történjen semmilyen tördelés (Szövegből oszlopok)
hanem ami a text fájlban egy sorban van az az excelben egy cellába kerüljön?1. sor--->A1
2. sor--->A2
.
.
n. sor--->AnHogyan lehet erről makróban intézkedni?
-
m.zmrzlina
senior tag
Ez se rossz, még ha a legtöbb esetben nem is a legjobban használható módszer.
The following example reads a text file and then places each line of data in a single cell (beginning with the active cell):In most cases, this procedure won't be very useful because each line of data is simply dumped into a single cell.
Sub ImportData()
Open "c:\data\textfile.txt" For Input As #1
r = 0
Do Until EOF(1)
Line Input #1, data
ActiveCell.Offset(r, 0) = data
r = r + 1
Loop
Close #1
End Sub[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz tknof1871 #8578 üzenetére
Mit jelent az "automatikusan"?
Mert ha A1-be beírod, hogy 0, A2-be 50, aztán kijelölöd az A1:A2 tartományt és a tartomány jobb alsó sarkánál fogva lehúzod a kijelölést akkor az lesz az eredmény amit szeretnél.
Ez annyira nem automatikus, inkább kézinek mondanám.
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz dellfanboy #8584 üzenetére
Erre a karaktersorozatra keress rá:
Wiley.Excel.2007.Power.Programming.with.VBA.Apr.2007.chm
Szerintem biblia a témában.
"God save John Walkenbach"
-
m.zmrzlina
senior tag
létrehoztam a view>toolbars>command toolbox segítségével egy command buttont amit tök szépen megformáztam.
ha ráklikkelek jobb gombbal nem tudom 1 makrohoz se hozzárendelni, míg ha beillesztek
egy wordart,clipart stb képet akkor jobb gombbal hozzá tudom adni a makrót,(assign macro).
mit tegyek hogy a command button-on működjön?Ha arról beszélünk ami nálam az Űrlap vezérlőelemek helyen elérhető akkor szerintem ne a gombon, hanem a keretén (nem kretén:-) kattints jobbal (ne ferdén csíkozott hanem pontozott legyen a keret)
Ha majd müködni fog a command buttonom szeretném hogy az legyen az első dolga hogy
megkérdezi a felhasználót hogy honnan nyissa meg a forrás(adat) file-t (ctrl+o) ezt hogy csináljam?Nem tudom milyen fájlt kell megnyitni és mit kell vele csinálni de ha jó az neked, hogy egy textfájl minden sorát egyetlen cellába másolja (egy sor egy cella) akkor próbálkozz ezzel:
Public FileName As Variant
Sub GetImportFileName()
Dim Filt As String
Dim FilterIndex As Integer
Dim Title As String
Filt = "Text Files (*.txt),*.txt," & "All Files (*.*),*.*"
FilterIndex = 1
Title = "Válaszd ki a fájlt"
FileName = Application.GetOpenFilename (FileFilter:=Filt, FilterIndex:=FilterIndex, Title:=Title)
If FileName = False Then
MsgBox "Nem volt fájl kiválasztva."
Exit Sub
End If
Open FileName For Input As #1
r = 0
Do Until EOF(1)
Line Input #1, Data
ActiveCell.Offset(r, 0) = Data
r = r + 1
Loop
Close #1
End Submi az a parancs amivel kitudom jelölni azt a tartományt ami tartalmaz adatot?
pl. itt van nálam egy excel amibe van 50 sor adat a p oszlopig, jövő héten ez a táblázat 400ig
fog adatot tartalmzi az ai oszlopig.nekem most csak 50 sor kell legközelebb pedig 400,
ha mindet kijelölöm az azért nem jó mert van egy másik táblám ami szintén 50sort tartalmaz
most holnap meg150-et. tehát 2 excelből kellene 1 csak a tartomány mindig változik.Erre több megoldás is van, pontosítsd a feladatot. Egybefüggő-e a tartomány stb... stb...
-
m.zmrzlina
senior tag
Fura dolgot találtam miközben VBA kódok optimalizálása (működés gyorsítása) témakörben olvasgattam.
Itt: http://www.avdf.com/apr98/art_ot003.html a Tip #3-nál azt írják (ha jól értem) hogy ha lehet ne használjuk az Excel függvényeit a kódban inkább programozzuk le az összefüggést.
Itt meg: http://www.cpearson.com/excel/optimize.htm a Worksheet Functions résznél mintha pont az ellentéte lenne leírva.
Most akkor valamit félreértek vagy tényleg valami ellentmondás van?
-
m.zmrzlina
senior tag
válasz Fire/SOUL/CD #8622 üzenetére
Köszönöm a választ így világosabb egy kicsit.
A topicban leggyakrabban elég egyszerű problémák merülnek fel, legalábbis arra gondolok, hogy nem igazán számít a sebesség.
Bár egy Application.ScreenUpdating = False/True páros még egszerűbb esetekben is látványos eredményt tud produkálni.
összeszednek mindenféle leírást és azt alkalmazzák, azaz ilyen dirib-darabokból "tákolják össze"
A tákolással (hobbiszinten) szerintem nincs baj inkább azzal, hogy ha valaki megelégszik a tákolmánnyal és nem akar fejlődni és jobbat csinálni.
-
m.zmrzlina
senior tag
Az miért van hogy ez a hivatkozás nem működik
Sheets("szűrőháló").Range("A1").Select ebben a formában
csak így:
Sheets("szűrőháló").Select
Range("A1").SelectÍgy azonban működik:
Sheets("szurohalo").Range("A1").Select
Természetesen az ékezetes formánál a munkalapnak is ékezetes a neve, a másiknál pedig nem.
-
m.zmrzlina
senior tag
válasz Fire/SOUL/CD #8626 üzenetére
Én bénáztam, bocs.
Összekevertem ezt:Sheets("szűrőháló").Range("A1").Select
ezzel:
Sheets("szűrőháló").Range("A1").Value = "akármi"
[ Szerkesztve ]
-
m.zmrzlina
senior tag
Nekem ezt sikerült kiötleni:
Sub valogat()
Dim sorsz As Integer
Dim holavege As Integer
Sheets("Munka1").Select
Cells(Rows.Count, 1).End(xlUp).Select
holavege = ActiveCell.Row
For sorsz = 1 To holavege - 1
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(sorsz + 1).Name = Sheets(1).Cells(sorsz + 1, 1).Value
Sheets("Munka1").Select
Range("A1:I1").Select
Selection.Copy
Sheets(1 + sorsz).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Sheets("Munka1").Select
Range("A" & sorsz + 1, "I" & sorsz + 1).Select
activerow = Range("A" & sorsz + 1, "I" & sorsz + 1).Value
Selection.Copy
Sheets(1 + sorsz).Select
Cells(1, 2).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Columns("A:B").EntireColumn.AutoFit
Next sorsz
Sheets("Munka1").Delete
ActiveWorkbook.SaveAs "C:\Documents and Settings\agb\Dokumentumok\masneven.xlsm"
End SubAbból a munkafüzetből indul ahol a kiindulási lista van, elkészíti a munkalapokat igény szerint, majd törli az eredeti lista munkalapját és menti a munkafüzetet más néven.
Nem egy minden részletében kimunkált végleges megoldás inkább csak gondolatébresztő, de működik.Érdekelnének a szakértő vélemények.
-
m.zmrzlina
senior tag
Az én megoldásomban a
Columns("A:B").EntireColumn.AutoFit
helyett ezt:
With Columns("A:B")
.Select
.EntireColumn.AutoFit
.HorizontalAlignment = xlLeft
End Withbetenni.
Ja és a
activerow = Range("A" & sorsz + 1, "I" & sorsz + 1).Value
sort törölni. Nem létező változónak ad értéket majd nem használja semmire.
Mire észrevettem, hogy benne maradt már nem volt szerkeszthető a hsz. -
m.zmrzlina
senior tag
válasz Satchmo7 #8673 üzenetére
Az hogy mennyit kell rákölteni (kell-e egyáltalán) az attól függ hogy milyen szintre mennyi idő alatt akarsz eljutni és hogy honnan indulsz.(vannak-e programozási alapismereteid)
Szerintem ez két nagyon jó könyv. Én is kezdő vagyok és nagyon sokat segítettek már. Nem tudom hogy magyarul megjelentek-e.
http://www.amazon.com/Excel-Power-Programming-Spreadsheets-Bookshelf/dp/0470044012
http://www.amazon.com/Excel-2007-Bible-John-Walkenbach/dp/0470044039excelHa meg konkrét kérdésed van küldd ide, segítőkész emberek vannak itt.
-
m.zmrzlina
senior tag
Biztosan van rá egyszerűbb megoldás is, nekem ezt sikerült kiötleni. Akkor használható ha a munkalap celláinak eredetileg nincsenek olyan háttérszinei amelyeket nem szeretnél törölni.
Úgy működik, hogy a cellába aminek a sorát és oszlopát ki szeretnéd emelni nyomsz egy dulpakattintást.
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim sor As Long, oszlop As Long
'aktív cella azonosítók
sor = ActiveCell.Row
oszlop = ActiveCell.Column
Application.ScreenUpdating = False
'korábbi háttérszín törlése
Cells.Select
Selection.Interior.Pattern = xlNone
'aktív cellába vissza
Cells(sor, oszlop).Select
'aktív cella sorának háttérszíne
ActiveCell.EntireRow.Select
Selection.Interior.ColorIndex = 20
'aktív cellába vissza
Cells(sor, oszlop).Select
'aktív cella oszlopának háttérszíne
ActiveCell.EntireColumn.Select
Selection.Interior.ColorIndex = 20
'aktív cellába vissza
Cells(sor, oszlop).Select
Application.ScreenUpdating = True
End Sub -
m.zmrzlina
senior tag
-
m.zmrzlina
senior tag
Jelöld ki a tartományt az elejétől a végéig (a képen ez A6:E14) utána Új formázási szabály>A formázandó cellák kijelölése képlettel.
A képlet pedig így néz ki:
=$D6<$B$3 (a 6-os elől vedd ki a $ jelet amit automatikusan betesz az excel ha a cellára kattintással jelölöd ki )
A második kérdésed érdekesebb arra nem tudom a választ. Nálam elég átírni akármelyik dátumot a D oszlopban és <Enter> után aktualizálja is a formátumot.
-
m.zmrzlina
senior tag
válasz Delila_1 #8817 üzenetére
Hogy egészen pontosak legyünk akkor ennél a változatnál a kijelölés és a képlet így néz ki:
Mert hogy nem a D oszloptól hanem az A-tól indulunk. Na jó B-től. :-)
"azt szeretném ha például adunk egy háttérszínt a B5-nek akkor az alatta lévő oszlop is színes legyen, illetve így tovább ha C5-nek, ha E5-nek, mikor melyik kellene"
-
m.zmrzlina
senior tag
válasz Vizes Tomi #8837 üzenetére
Az nem megoldás, hogy a másik munkalapról valamilyen trükkel átlopjuk a határérték adatokat a mért értékek munkalapjára? Mondjuk valahová a legutolsó néhány oszlop legvégére.
Mekkorák a tartományok amiket használsz?
[ Szerkesztve ]
-
m.zmrzlina
senior tag
Van egy munkafüzetem, amibe két módszerrel szoktak adatot beilleszteni a felhasználók. (kb 1500 sor 15 oszlop) Egy e-mail html szövegtörzsét teszik vagy közvetlenül vagy egy másik excel munkafüzet közbeiktatásával vágólapra. A vágólap tartalmát - némi ellenőrzés elvégzése és formázás után - egy makró teszi a kívánt helyre. (ismét köszönet érte Delilának)
A problémám az, hogy néha - ki tudja milyen okból - "Az egyesített cella része nem módosítható!" hibaüzenettel kiakad a makró. Szerencsére (vagy sajnos) ez a hiba nagyon ritkán fordul elő és ezért nem tudtam még rájönni, hogy mi okozza. Nyilván az új adattábla egyesített cellái valami miatt elcsúsznak a régihez képest. Mivel az eredeti adattábla elég sok egyesített cellát tartalmaz ezért azt találtam ki, hogy a vágólap beillesztése előtt egy Cells.UnMerge sorral megszüntetem a régi munkalap cellaegyesítéseit és csak ezután kezdem el a vágólap beillesztését.
Igen ám de itt a probléma. Ha egyenesen e-mailből megy a vágólapra másolás akkor rendben lefut a makró de ha excelből Ctrl+C-vel akkor úgy viselkedik mintha üres lenne a vágólap. Biztosan ez a sor okozza a problémát mert ha kikommentezem akkor megszűnik a hiba. (Meg természetesen az eredeti hiba kezelése is)
Mit lehet ilyenkor tenni?
-
m.zmrzlina
senior tag
válasz m.zmrzlina #8906 üzenetére
A kérdés mostanra annyit egyszerűsödött, hogy ki lehet-e választani (programkódban természetesen) hogy beillesztéskor forrásként az Office vágólap és ne az oprendszer vágólapja szerepeljen?
Az történik ugyanis (a clipbrd.exe-vel kiválóan követhetően) hogy amint lefut az a programsor amiben az UnMerge van a rendszer vágólapja kiürül. Az Office vágólapon viszont továbbra is ott van a beilleszteni kívánt adat.
Két módszert próbáltam megkerülendő a problémát. Az egyik hogy töröltem az egész lapot ahová a beillesztés megy majd létrehoztam egy újat ugyanazon a néven. Talán mondanom sem kell ez nem jött be. A másik hogy az UnMerge előtt letároltam a vágólap tartalmát egy átmeneti helyre majd az UnMerge után bemásoltam a végleges helyére majd az átmeneti helyéről töröltem. Ez sem az igazi mert ez meg nagyon nyögvenyelőssé teszi a munkafüzet működését.
-
m.zmrzlina
senior tag
-
m.zmrzlina
senior tag
Én ezt a képletet használnám:
=HA(DARABTELI(G:G;I7)=0;0;1)
G oszlopban vannak az adatok és I7-ben pedig az amit keresünk.
A HA fv-be azért kell beágyazni, hogy ha egynél többször szerepel az I7-ben lévő adat az A oszlopban akkor is csak 1-et adjon vissza és ne azt a számot ahányszor előfordul a keresett érték.[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz JamesHolden #8930 üzenetére
Erre jó az irányított szűrés:
Tudtommal ez a lehetőség az Excel2007 előtt is megvolt, sajnos nem tudom leellenőrizni.
2007-nél Adatok>Szűrő>Speciális-nál található meg, a te verziódnál (2003 ha jól látom) is valahol azon a környéken.A képen kis csalás van mert az eredmény csak a felugró ablak leokézása után látható.
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz JamesHolden #8937 üzenetére
Szivesen!
-
m.zmrzlina
senior tag
válasz Delila_1 #8938 üzenetére
Hát igen! Lehet hogy elég lenne egyszerűen csak megtanulnom olvasni:
Értékek formázása ha ez a képlet igaz:
Márpedig az ÉS() akkor igaz, ha minden argumentuma igaz. Az azért engem is érdekelne, hogy hogy lehet megszabadulni attól a problémától, hogy a C9<>"" egy <szóköz>-re is IGAZ-at ad (ezt azért érteni vélem hogy miért) de a C9>0 szintén így viselkedik még akkor is ha a cella formátumát Általánosról Számra állítom.
-
m.zmrzlina
senior tag
válasz Fire/SOUL/CD #8943 üzenetére
Félreértettél, nálam pont úgy működik ahogy leírtad. Szerintem Swen_N-nél is. Bármi van a cellában (akár szóköz is) a cella háttere kék. Ezért írtam a #8933-ban hogy erre figyelni kell.
De egy olyan felhasználónak aki csak használja a munkafüzetet és nem érdekli mi miért van benne annak talán hasznos lenne hogy ha nem lát a cellában semmit akkor a cella semmiként is viselkedjen
Érdekes, hogy a =ÉRTÉK(C9) fv #ÉRTÉK! hibaüzenetet ad ha szóközt teszek C9-be
-
m.zmrzlina
senior tag
válasz Fire/SOUL/CD #8945 üzenetére
Igen, erre való, hogy törölve legyenek a cellák. Erről nem a felhasználónak kell gondoskodni, hanem a munkafüzet készítőjének.
Világos csak én meg hosszan tudnám sorolni azon általam ismert felhasználóknak a listáját akik simán <SPACE>-szel törölnek egy cellát talán mert sokkal könnyebb megtalálni ezt a gombot mint a <DEL>-t vagy a <BACKSPACE>-t. Azt pedig nyilván te is tudod, hogy a megszokás milyen nagy úr.
(Elég gyilkos dolog, egy üresnek hitt cellával dolgozni, ami csak "ránézésre" üres)
Egyetértek
Van olyan fv ami a begépelt karakter ASCII kódját adja vissza? Tudom: van ha írunk egyet de úgy értem készen van-e?
-
m.zmrzlina
senior tag
válasz Fire/SOUL/CD #8947 üzenetére
Köszi közben megtaláltam én is (még sosem használtam)
Ennek fényében a #8932-ben megfogalmazott kérdésre egy kicsit könnyebben kezelhető megoldás így néz ki.
Az üres cellák itt most szóközöket tartalmaznak.
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz Fire/SOUL/CD #8949 üzenetére
Akkor ezt a témát kellőképpen körüljártuk, számomra tanulságos volt és megint sikerült tanulni pár dolgot. Köszi.
Itt a végső megoldás amit már nem zavar meg holmi szóköz meg egyéb elütött karakterek:
Az adott cellákat kötelező Szám formátumra formázni a SZÁM fgv használata esetén!
Ez lehet, hogy feltételes formázás esetén nem igaz mert ha Általános-ra állítom a cellaformátumot akkor is működik a formázás
[ Szerkesztve ]
-
m.zmrzlina
senior tag
El tudja-e nekem magyarázni pár mondatban, hogy mi a különbség az Űrlap vezérlőelemek és az ActiveX vezérlők között. Mi pluszt ad az ActiveX cserébe azért, hogy minden forrás amiben olvastam róla a makrókkal hasonlatos biztonsági rizikókra figyelmeztet?
Magyarul mi az a feladat amire elég az Űrlap vezérlőelem, és mikor érdemes az ActiveX-et használni?
Van egy munkafüzet amit szeretnék felhasználóbarátabbá tenni ezért egy vágólapról beillesztést és a hozzá kapcsolódó cellaformázásokat egy parancsgombra bízni.
Mit célszerű itt alkalmazni?
-
m.zmrzlina
senior tag
Egyszer már érdeklődtem hasonló témában (#8906 #8909) és most megint belefutottam egy hasonló problémába. Azt a problémát úgy oldottam meg, hogy a munkafüzet Open eseményébe tettem az UnMerge parancsot így a beillesztés már a teljes munkalapot szétválasztott cellákkal találja. Meglátjuk mi lesz.
Most azonban van egy ilyen programrészletem ahol hasonló a probléma annyi különbséggel, hogy itt a Selection.ClearContents sor csinálja ugyanazt mint a másik esetben az UnMerge:
Private Sub ComboBox1_Change()
Range("B4").Select
Range(ActiveCell, ActiveCell.End(xlDown)).Select
Selection.ClearContents
Range("B4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Range("B3").Value = Date
End SubAz sajnos nem megy, hogy a Selection.ClearContents után nyitjuk a forrás munkafüzetet és utána másolunk mert a forrás munkafüzet egy távoli gépen Remote Desktoppal érhető el változó néven, nem tudni milyen nevű munkalapjának milyen tartományából kell másolni és persze az elérési út is több féle. Szóval az eredeti adat kijelölését mindenképpen a felhasználóra kell bízni.
Az lenne a kérdésem, hogy van-e ennek a problémának a megoldására bevett technika vagy csak a #8909-ben leírt átmeneti tárolós módszer?
-
m.zmrzlina
senior tag
válasz bozsozso #9004 üzenetére
Egyéni formátumkód létrehozásával meg lehet oldani.
Cellák formázása>Szám>Egyéni
Itt kiválasztod akármelyiket és átírod erre:
#-" e"
(a kettős kereszt után kötőjel van és ebben van a lényeg csak itt nem nagyon látszik) 1db kötőjel 1000-rel osztja a beírt számot. Ha milliókkal vagy milliárdokkal számolsz akkor többszörözni lehet a kötőjelet és persze utána "m" vagy "mrd"
Ezzel tudsz számolni is.
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz m.zmrzlina #9005 üzenetére
A következő formátum pedig nem "eszi meg" a legnagyobb helyiérték után következő számokat:
#,###-" e"
Természetesen a kötőjel itt is ott van az utolsó kettőskereszt mögött.
-
m.zmrzlina
senior tag
válasz Fire/SOUL/CD #9006 üzenetére
Nálam meg szóközzel nem működik pedig egy régi tanfolyami jegyzetemben nekem is szókoz van nem kötőjel.
Nem tudom mi az oka. Nem lehet hogy területi beállítás?
Kötőjellel viszont megy.
-
m.zmrzlina
senior tag
válasz m.zmrzlina #9008 üzenetére
-
m.zmrzlina
senior tag
válasz scott_free #9082 üzenetére
Ha jól értem és azt szeretnéd tudni, hogy adott hét melyik napja hanyadikára esik akkor itt egy megoldás:
A2-be viszed be a hét sorszámát és D1-D7-ben íródik ki a napokhoz tartozó dátum.
D1-D7-ben az F1-F7-ben látható képleteknek kell lenni.
Jelen formájában 2011 jan 01-től működik de át lehet írni más évekre esetleg univerzálisra is
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz Fire/SOUL/CD #9084 üzenetére
Azt honnan lehet tudni, hogy 2011 első 2 napja az már 2011 első hetéhez vagy még 2010 utolsó hetéhez tartozik?
-
m.zmrzlina
senior tag
válasz Fire/SOUL/CD #9086 üzenetére
Akkor ez az év 53 hetes, vagy ez év utolsó majdnem egész hete az már 2012 első hete?
Új hozzászólás Aktív témák
Hirdetés
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Star Wars Outlaws GeForce RTX 40 Bundle - lepd meg magad!
- Bontatlan - BATTLEFIELD 1 Collectors Edition - Játékszoftver nélkül
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - 2990 Ft-tól!
Állásajánlatok
Cég: HC Pointer Kft.
Város: Pécs
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest