-
Fototrend
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
válasz sedyke #30816 üzenetére
Ha mindenképpen ha fv-t szeretnél használni akkor itt egy lehetséges megoldás:/A1-ben lévő darabszámot figyeli/
=HA(A1>=30;2;HA(ÉS(A1<30;A1>=12);1;HA(A1<=11;"ide jön a ha fv a méret feltétellel ")))
Ha kicsit profibbat szeretnél és esetleg több feltételt is kell vizsgájni akkor a #30435-ös hszt ajánlom a figyelmedbe.
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz bteebi #31076 üzenetére
Nálam is sok olyan makró működik ami hasonló feladatot lát el. Én úgy oldottam meg ezt a problémát, hogy a makrós munkafüzetbe olvasom be a textfájlt vagy az .xls-t, megcsinálom a fájlon a szükséges dolgokat és aztán elmentem a kívánt formátumba.
Így nem kell pakolgatni a makrót meg nem kell a minden .xls forrásfájlból xlsm-et csinálni. Plusz a makrós munkafüzetbe kiválóan lehet változókat mentegetni, meg a feldolgozáshoz szükséges listákat tárolni.
-
m.zmrzlina
senior tag
Van egy makróm ami egy emailben html formátumban érkező adathalmazt illeszt be Excelbe vágólapról. A felhasználó a levéltörzset kopizza majd Excelben elindítja a makrót. Az Excel megcsócsálja feltételesen formázza majd a sokkal áttekinthetőbben mint az eredeti formátumban volt megjeleníti .
Van benne az elején egy ilyen sor:
AcvieSheet.PasteSpecial Format:="Szöveg", Link:=False, DisplayAsIcon:=False
Korábban minden felhasználó magyar Excelt használt de szép lassan mindenki áttér angolra. Az angolos változatnál a következő sor működik:
AcvieSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
A kérdésem, hogy a Format argumentumot meg lehet-e adni másképpen (pl számmal) amit mindkét verzió megért.
Ne kérdezd miért ezt a megoldást használtam, régen csináltam.
"Fiatal voltam kellett a pénz"[ Szerkesztve ]
-
-
m.zmrzlina
senior tag
Hol tudom beállítani hogy az Excel teljes ablakban nyíljon meg és ne a Maximize gombbal kelljen kezdeni a munkát?
Nem makróval gondolom megoldani egy adott munkafüzet esetében (ismerem az Application.WindowState = xlMaximized parancsot) hanem rendszerszintű megoldás kellene.
Az összes többi telepített Microsoft termék (Word, Access, Powerpoint stb) teljes ablakban nyílik meg csak az Excellel van gond.
-
m.zmrzlina
senior tag
Egy lehetséges megoldás (ha az A:A oszlopban vannak a számok):
=LEFT(A1;LEN(A1)-2) & "90"
Ettől persze szöveggé váltak a számok ami nem baj akkor ha pl raktárnyilvántartás azonosítóiról van szó, azokkal rendszerint ui nem kell matematikai műveleteket végezni.
Ha az eredménybe szám kell akkor meg lehet pl szorozni 1-gyel a fv-t:
=(LEFT(A1;LEN(A1)-2) & "90")*1
[ Szerkesztve ]
-
m.zmrzlina
senior tag
Adott 12 db nagyjából egységes munkafüzet. Vannak különbségek de van egy tartomány ami mindegyikben cakkra megegyezik. A tartomány maga (amolyan fejléc féle) nem túl nagy,
A1:B135
de ezt a két oszlopot aztán további oszlopok követik, egyik munkafüzetben kevesebb másikban több. A munkafüzeteket több user használja értelemszerűen hálózati meghajtóról.Az a gond, hogy néha módosítani kell ezt a listát (törölni/beszúrni sorokat, vagy csak a A,B oszlopban módosítani az azonosítókat). Természetesen minden módosítást mindjárt mind a 12 fájlban végre kell hajtani.
Mi a legcélszerűbb módja annak, hogy meg lehessen úszni a 12-szeri megnyitom>átírom>mentem műveletet. Oké hogy a fejléc tartomány minden celláját át lehet hivatkozni egy másik fájlból és akkor csak abban az egyben kell módosítani de mi a helyzet a sorok törlése/beszúrása művelettel?
Természetesen a fájlokon valaki úgy dolgozik, hogy a hálózati meghajtóról nyitja meg és oda is ment, van aki a saját gépére másolja ott dolgozik rajta aztán másolja vissza, néha nem is ugyanabba a könyvtárba és nem is ugyanazon a néven mint amin levette.
És persze minél bolondbiztosabb megoldás kellene (ha létezik egyáltalán).
Előre is köszi.
[ Szerkesztve ]
-
m.zmrzlina
senior tag
Nem képlettel vagy makróval kapcsolatos a kérdésem de mégis excel.
Van a pl Ctrl+F-re felugró popup ablak és annak van egy alapértelmezett mérete amit a bal alsó sarokban megfogva módosítani lehet. Ha a találat nem fér bele ebbe méretbe akkor görgethetővé válik az ablak.
Az lenne a kérdés, hogy el lehet-e valahogy menteni egy custom size méretét ennek az ablaknak, hogy egy hosszabb találati listát alapértelmezetten egyben lehessen látni és ne mindig az ablak átméretezéssel kelljen kezdeni a lista vizsgálatát.
Egyelőre azt sem tudom, hogy egyáltalán Excel vagy oprendszer szinten kell keresni megoldást, bár az Excel Options-ban nem találtam ilyen lehetőséget.
-
m.zmrzlina
senior tag
Adott egy több sorból és oszlopból álló input tartomány. A tartomány határait (bal felső cella-jobb alsó cella) a felhasználótól kell bekérni. Az input tartomány minden (nem üres) celláját meg kell vizsgálni és ha a cella értéke még nem szerepel egy listában akkor hozzá kell adni a listához. A listát a felhasználó által kívánt helyre kell kitenni. A kívánt eredmény az M oszlopban látható.
A beépített Advanced filter "Copy to another location" Unique records only kapcsolóval azért nem jó mert itt csak az számít unique record-nak amikor két (vagy több) sor minden egyes cellája egyezik. (
G1:K4
)Ezt sikerült kiötleni:
Sub kivalogat()
Dim honnanvegye As String
Dim hovategye As String
Dim holavege As Integer
holavege = 1
honnanvegye = InputBox("Add meg a vizsgálandó tartományt!")
hovategye = InputBox("Add meg az eredmény helyét!")
Set honnan = Range(honnanvegye)
Set hova = Range(hovategye)
For Each cella In honnan
If cella.Value <> "" Then
If Application.WorksheetFunction.CountIf(hova, cella.Value) = 0 Then
Cells(holavege, hova.Column).Value = cella.Value
holavege = holavege + 1
End If
End If
Next
End SubAz a gondom, hogy elég macerás az inputboxba begépelgetni a tartományok határait, sok helyen lehet téveszteni stb stb...
Kérdésem, hogy van-e módszer arra, hogy úgy kérjük be az input output tartományok határait, hogy a felhasználó egérrel jelölje ki?
[ Szerkesztve ]
-
m.zmrzlina
senior tag
Létrehozok egy változót (pl Integer vagy Long ). Kötelező-e incializálni és ha igen akkor mire?
-
m.zmrzlina
senior tag
válasz Bobrooney #41892 üzenetére
Igen közben találtam róla valamit én is. Mondjuk elég dodonai:
When you run a macro, all variables are initialized to a default value. The initial default value: for a numeric variable is zero; for a variable length string it is a zero-length or empty string (""); a fixed length string is initialized with the ASCII code 0, or Chr(0); an object variable defaults to Nothing; a Variant variable is initialized to Empty. In numeric context, an Empty variable denotes a zero while in a string context an Empty variable is a zero-length string ("") . A zero-length string ("") is also referred to as a null string. However, it is advised to explicitly specify an initial value for a variable instead of relying on its default initial value.
Szóval csináld ahogy jónak látod! -
m.zmrzlina
senior tag
Lehet-e az valamilyen biztonsági beállítás eredménye hogy bizonyos gépeken nem jelenik meg egy cellához rendelt validált lista. Korábban jój működő fájl egy gépcsere után nem akar a korábbiakban megszokott módon működni.
-
m.zmrzlina
senior tag
Köszönöm a választ!
Közben én is közelebb jutottam kicsit. Az eltűnt lista egy másik munkalapra való hivatkozással volt beállítva kb így
=másikMunkalap!$B$2:$B$20
Van néhány másik lista is ezen a lapon amivel nincsenek bajok de ott Named Range (mi ennek a magyar neve?) segítségével van megadva a hivatkozás a másik lapra.
Nem tudom pontosan a kollégának milyen Excel verzió van az új gépén (ezt majd ma kiderítem) de én úgy tudom hogy Excel 2010 után már nem szabad hogy gondot okozzon a közvetlenül tartományra való hivatkozás. De mindegy is a Named Range használata szerintem megoldást fog hozni.
Amit írtál azt is leellenőriztem de az nincsen tekintettel arra hogy milyen formában van megadva a hivatkozás. Ha bekattintom a None opciót akkor az összes lista eltűnik nem csak a tartományra hivatkozó. -
m.zmrzlina
senior tag
válasz Fferi50 #41916 üzenetére
Köszönöm a kimerítő választ. Én magam is azon elvek mentén szoktam szervezni a kódjaimat amiket leírtál. A kérdés egy beszélgetés során vetődött fel és nem tudtam, hogy van-e valami kötelezőség ezzel kapcsolatban. Ugyanis C/C++-ban van ilyen (tudom az egy másik kávéház) sőt vannak egyetemi/főiskolai oktatók akik buktatnak inicializálatlan változók használata miatt.
[ Szerkesztve ]
-
m.zmrzlina
senior tag
INDEX-MATCH függvényben szertetnék névtartomány második oszlopára hivatkozni, de nem jön össze.
így működik:
=INDEX(évkat;MATCH(D63;alapadatok!$E$1:$E$17;0);2)
Azalapadatok!$E$1:$E$17
tartomány ugyanaz mint az "évkat" névtartomány második oszlopa. Erre lehet-e valahogy hivatkozni úgy hogy "évkat(másodikoszlopa)" vagy erre külön be kell vezetni egy új névtartományt? -
m.zmrzlina
senior tag
válasz Fferi50 #43423 üzenetére
Köszönöm, akkor bevezetek még egy névtartományt szerintem az egyszerűbb. Illetve pontosabban a két oszlopból álló évkat-ot szétválasztom két külön névtartományra.
keveredik az angol és magyar szintaktika
Ezt nem értem. Angol excelem van. Az INDEX magyarul angolul is INDEX A MATCH meg nem is kérdés hogy angol. Vagy arra gondolsz, hogy a névtartomány neve ékezetes? -
m.zmrzlina
senior tag
Adott egy nagyobb munkalap. Tizenezer sor - az nekem már nagyobb. Erről a lapról bizonyos feltételek alapján össze kell válogatnom több szűkebb listát majd kinyomtatni azt. Ezek a szűkebb listák kb 0 és 200 sor között mozognak. A válogatás és az egyoldalas nyomtatás megy is nincsen vele gond. Viszont egy 200 soros listát nem szeretnék 4 lapra nyomtatni ha kettőre is elfér
A makró úgy működik hogy amint megvan a lista megy a nyomtatóra - ez sokszor 1000-1500 különböző listát jelent - menet közben nincsen ideje a juzernek printer setupot állítgatni.
Kérdésem, hogy meg lehet -e oldani makróból a kétoldalas nyomtatást?
-
m.zmrzlina
senior tag
válasz Fferi50 #45253 üzenetére
Az a baj hogy nincs lehetőségem személyesen ellenőrizni a nyomtató beállításait, de a kolléga azt mondja, hogy az első oldal előtt kétoldalasra állítja de nem nyomtat kétoldalasan. Nem tudom, hogy miért törlődik - ha egyáltalán ez a baja - de kénytelen vagyok hinni neki.
Egyébként a
.PrintOut
metódust használom (paraméter nélkül) és ez az első ilyen makróm amiben nyomtatást használok. Nincsen benne semmilyen gyakorlatom. -
m.zmrzlina
senior tag
Kétdimenziós dinamikus tömbökkel kapcsolatban lenne elméleti kérdésem. Gyakori feladat, hogy nagyobb adattartományokból (pl 10-20 000 sor 5-10 oszlop)kell bizonyos feltételek szerint kiválogatni egyes rekordokat. Én ezt úgy szoktam csinálni, hogy csinálok két tömböt. (pl beTömb, kiTömb)A bemenő tartományt beolvasom a beTömb-be amin azután végigmegyek egy For-Next ciklussal, és ha a kívánt feltétel teljesül azt a rekordot hozzáadom a kiTömb-höz. Ezt úgy teszem hogy előbb a Redim Preserve utasítással megnövelem a kiTomb méretét, majd ezt az új üres tömbelemet feltöltöm adattal.
A probléma itt kezdődik, mivel 2D dinamikus tömbnek nem lehet növelni a sorainak csak az oszlopainak számát. Ezt pl itt olvastam de számos más helyen is ugyanezt találtam. Ezért aztán egy eléggé nyakatekertnek lászó megoldást eszeltem ki. A kimenő tömbhoz hozzáadok egy oszlopot (Redim Preserve.....) ezt az oszlopot feltöltöm a beTömb sora adatával. Így kvázi egy transzponált tömböt kapok amit amikor kiíratok a munkalapra akkor a:
célmunkalap.Range(ahovárakniakarom).Value = Application.Transpose(kiTomb)
sorral itatom ki. Vagyis újratranszponálom a kapott kiTömb-ötAz a kérdésem, hogy lethet-e ezt a feladatot egyszerűbben csinálni, illetve, hogy milyen más megoldások léteznek?
-
m.zmrzlina
senior tag
válasz Fferi50 #45326 üzenetére
TextToColumns megoldás: ez érdekes, ki fogom próbálni.
AdvancedFilter függvény: lehet ez a legegyszerűbb erre nem is gondoltam
Esetleg csak a feltétel tartományokat beolvasni: ezt nem igazán értem. A bemenő tömbbel nincsen gondom, a kiíráshoz viszont a bemenő tömb sorának minden eleme kell. -
m.zmrzlina
senior tag
válasz Hege1234 #45355 üzenetére
Szerintem te félreértetted a feladatot. Az van benne, hogy nagyság szerint az utolsó előtti számot kéri. Nem pedig a C2-C11tartomány utolsó előtti értékét. Ha a második legnagyobb számot a =NAGY() fv-nyel csináltad (én azzal csináltam volna) annak van egy párja =KICSI() Így már szerintem magad is meg tudod oldani.
-
m.zmrzlina
senior tag
válasz Hege1234 #45359 üzenetére
Állnak a gyerekek a tornasorban. (nem mostanság, mondjuk 40 évvel ezelőtt, manapság nem frusztráljuk a tökmagot, hogy ő mindig az utolsó ) Nagyság szerint a legnagyobb áll elöl a legkisebb hátul. A második legnagyobb gyerek a sorban a második. Nálad ez az 55 és a 15 ez rendben van. A legkisebb áll hátul, a második legkisebb előtte eggyel. Nálad a legkisebb a 4 ez oké, a második legkisebb szerintem a 7.
Majd holnap írd meg, hogy a tanárod hogyan értelmezte a feladatot? Nagy összegbe mernék fogadni, hogy hasonlóképpen ahogyan én.
-
m.zmrzlina
senior tag
válasz repvez #45415 üzenetére
Tegyük fel, hogy
-H2:H7 tartományban viszel fel adatokat a Munka1 nevű munkalapon
-ENTER-re lefelé ugrik az aktív cella és nem jobbra
-ha nem is írsz minden cellába a H2:H7-be akkor is leviszed az aktív cellát H8-ig
-további ha-k >....< ide
akkor itt egy Móricka megoldás:Private Sub Worksheet_Change(ByVal Target As Range)
Dim holavege As Long
Dim cella As Range
If ActiveCell.Column = 8 And ActiveCell.Row = 8 Then
holavege = Worksheets("Munka2").Range("A" & Rows.Count).End(xlUp).Row + 1
Worksheets("Munka2").Range("A" & holavege) = Date
For Each cella In ActiveSheet.Range("H2:H7")
Worksheets("Munka2").Cells(holavege, cella.Row) = Worksheets("Munka1").Cells(cella.Row, 8)
Next
End If
End Sub
Ez azért Móricka megoldás mert csinál olyan dolgokat is amit nem szeretnél, de pontosabb megoldáshoz nekem pontosabb feladat leírás kellene.
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Alpha Laptopszerviz Kft.
Város: Pécs
Cég: Ozeki Kft.
Város: Debrecen