- Xiaomi 15 - kicsi telefon nagy energiával
- Samsung Galaxy S21 FE 5G - utóirat
- Vivo X200 Pro - a kétszázát!
- Nem várt platformon a OnePlus Nord 5
- Megérkezett a Google Pixel 7 és 7 Pro
- Samsung Galaxy Watch5 Pro - kerek, de nem tekerek
- 45 wattos vezeték nélküli töltés jön az új iPhone-ba
- Befutott a megígért HRV-mérés a Withings órájára
- Samsung Galaxy Watch7 - kötelező kör
- Huawei Watch Fit 3 - zöldalma
-
Mobilarena
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
-
Delila_1
veterán
Teljes oszlophoz
Sub Nagy_Kicsi()
Dim szoveg As String, sor As Integer
For sor = 1 To 8
Range("A" & sor).Copy
Range("B" & sor).PasteSpecial xlPasteValues
szoveg = Range("B" & sor).Value
Range("B" & sor).Characters(Start:=1, Length:=InStr(szoveg, "(") - 1).Font.Size = 15
Range("B" & sor).Characters(Start:=InStr(szoveg, "("), Length:=20).Font.Size = 8
Next
End Sub
-
Delila_1
veterán
Képletet tartalmazó cellában nem tudod a karakterek egy részét módosítani.
Lehet viszont segédcellában, ahova értékként átmásolod a képletet tartalmazó cella adatát. Ezt teszi a lenti makró. Az utolsó előtti sor a zárójel előtti részt 15-ös karakterűre állítja a segédcellában, az utolsó a többi részt 8-asra. Nem kívánt törlendő, a két méret tetszés szerint módosítható.
Ciklusba is beteheted, hogy egy teljes oszlop adatait átmásolja, és formázza.Sub Nagy_Kicsi()
Dim szoveg As String, kezd As Integer
Range("A1").Copy
Range("B1").PasteSpecial xlPasteValues
szoveg = Range("B1").Value
kezd = InStr(szoveg, "(")
Range("B1").Characters(Start:=1, Length:=kezd - 1).Font.Size = 15
Range("B1").Characters(Start:=kezd, Length:=20).Font.Size = 8
End Sub
-
Fferi50
Topikgazda
Szia!
"Ez valami excel hiba és kerüljem meg valahogy"Nevezhetjük hibának is, ez az Excel lebegőpontos számábrázolási módjából, annak pontosságából adódik. Az Excel 15 számjegy pontossággal végzi a számításokat. A kettes számrendszer használata miatt adódhatnak eltérések a "sokadik" helyiértéken.
Ezért a szám összehasonlításoknál igen, meg kell kerülni a problémát. A számunkra még fontos helyiértékekre kell kerekíteni, hogy a számolás-ábrázolás technikából eredő eltéréseket ne vegye figyelembe a rendszer.
Esetedben például az ezredre kerekítés már nem fog eltérést jelezni.
Az Excel nem a tudományos pontosság igényével lett megalkotva.
Üdv. -
Delila_1
veterán
-
Fferi50
Topikgazda
Szia!
Az előző hozzászóló megoldása mellett javaslom nézd át a képleteidet és az egész oszlopra (A:A stb.) hivatkozókat cseréld ki konkrét tartományokra, amelyek még lefedik az igényeidet (Pl. A2:A50000).
Ha maradnak a teljes oszlop hivatkozások, hamarosan ismét hasonló problémával szembesülhetsz.
Természetesen az egész sorokra is ez vonatkozik (bár az ritkábban fordul elő).
Üdv. -
Lasersailing
senior tag
Szia,
Én épp most futottam bele hasonlóba: 9.5 Mb-ból tudtam 1.1 Mb-ot csinálni:
CTRL+END-del lementem a legutolsó sorra --> CTRL+Balra --> CTRL + SHIFT + Fel --> SHIFT +LE --> SHIFT + SPACE --> jobb klikk delete, majd mentés.Magyarán kitörlöm a látszólag üres, nem használt sorokat. Ezekben lehetnek pl. formázások, amik növelik a file méretét
(Értelemszerűen a fenti csak akkor szabad csinálni, ha így nem törölsz ki nem üres sort, nálam az A oszlopban is biztosan van adat, ha másik oszlopban van).
-
ny.janos
tag
Miután leírtam a javaslatot, utána gondolkodtam még rajta pár percet, hogy milyen más (általam ismert) megoldásokat lehet érdemes számításba venni.
Ha az adathalmazod több hónapnyi / esetleg évnyi adatot is tartalmaz, akkor mindenképpen fontolóra venném egy kimutatás készítését, annál egyszerűbb megoldás nem igen van.
Ha pl. nem teljes havi (heti, félhavi stb.) összesítésre lenne szükséged, akkor ahhoz készethetsz egy táblázatot egymás mellé a kezdő és végdátumokkal. Ha feltesszük, hogy a kezdő dátumok az A oszlopban, az összegezni kívánt időszak végét jelölő dátumok pedig a B oszlopban vannak, akkor a korábban javasolt képlet használható az alábbi módon:
=SZUMHATÖBB($K$5:$K$20;$D$5:$D$20;">="&A2;$D$5:$D$20;"<="&B2)
A SZUMHATÖBB függvény helyett egyébként két tömb szorzataként is megkapható az eredmény, ha kihasználjuk a relációs vizsgálat azon tulajdonságát, hogy az "igaz" értéket 1-nek, a hamis értéket 0-nak értelmezi az excel, de ehhez pl. össze kell szorozni azokat, vagy két - (mínusz) jelet kell tenni eléjük. (Ezt a működést pl. itt a fórumon tanultam, köszönhetően Mutt egy korábbi hozzászólásának). Vagyis az eredmény megkapható így is:
=SZORZATÖSSZEG($K$5:$K$20*(DÁTUM(2019;5;1)<=$D$5:$D$20)*($D$5:$D$20<=DÁTUM(2019;5;31)))
vagy így=SZORZATÖSSZEG($K$5:$K$20;--(DÁTUM(2019;5;1)<=$D$5:$D$20);--($D$5:$D$20<=DÁTUM(2019;5;31)))
Ha tömbképletet használsz, akkor a SZUM függvény is használható a SZORZATÖSSZEG helyett, de akkor a képlet rögzítését követően a cellát Ctrl + Shift + Enter-rel kell lezárnod.
=SZUM($K$5:$K$20*(DÁTUM(2019;5;1)<=$D$5:$D$20)*($D$5:$D$20<=DÁTUM(2019;5;31)))
-
ny.janos
tag
Szia!
Ha jól rémlik, akkor egyrészt SZUMHA függvénybe nem tudsz egyszerre két feltételt megadni ÉS függvénnyel. Erre a SZUMHATÖBB függvény való. Másrészt a feltételnél a relációjeleket időzőjelbe kell tenned, és nem kell szerepeljen benne a cellahivatkozás (D5).
=SZUMHATÖBB($K$5:$K$24;$D$5:$D$24;">="&DÁTUM(2019;5;1);$D$5:$D$24;"<="&DÁTUM(2019;5;31))
-
Fferi50
Topikgazda
Szia!
Makróval (majdnem) mindent meg lehet csinálni. De azt ugye tudod, hogy pl. a cellaméret és a nyomtatási méret az nem ugyanaz.
Wordben pedig megadhatod pl. hogy hány oldalt (etikettet) nyomtasson egy oldalra, hasábba rendezheted stb.
Egy próbát szerintem megérne az a körleveles forma.
Ha teszel fel elérhetően egy mintát, biztosan találsz segítőket hozzá.Üdv.
-
Fferi50
Topikgazda
Szia!
Jól gondolod. Ráadásul a képlettel nem hivatkozhatsz magára a cellára, amiben a képlet van, mert az hibát okoz.
Szerintem megpróbálkozhatnál a feltételes formázással:
- a formázandó cellák kijelölése képlettel
Képlet:pl =A1=""
Formázásnál megadod a kitöltőszínt vagy a szegélyt.
Alkalmaz.
Amíg üres a cella, színes lesz. Ha bármit beleírnak, "kifehéredik". Vagy adhatsz arra is egy másik színt, ha van bele írva.Ha ez nem tetszik, akkor az eseménykezelő makró lehet a megoldás.
Üdv.
-
Mutt
senior tag
Szia,
Feltételes formázásnál "A formázandó cellák kijelölése képlettel" szabályt választod ki és oda jön az általad is írt képlet és a kívánt formázás.
Ami a furcsaság a feltételes formázásnál, hogy a kijelölés képletében ha nincsenek rögzítve a sor és oszlop azonosítók dollár jellel, akkor azokat a rendszer minden sornál/oszlopnál aktualizálni fogja.
A példádban az első sorban használt =B1>0 képlet a második sorban már =B2>0 lesz és így tovább, de a feltételes formázás képlet szerkesztőben akármelyik sorban állsz mindig =B1>0 lesz a képleted.
Javaslom, hogy próbáld ki mit kapsz ha rögzíted a sor és/vagy oszlop azonosítókat, vagyis írd át a képleted előbb erre: =B$1>0, majd erre =$B1>0 és végül erre =$B$1>0
üdv
-
Delila_1
veterán
Nyiss egy új füzetet, amibe a régiből egyenként átmásolod a lapok tartalmát. NEM az egyes lapokat, hanem mindegyik lapon kijelölöd az adatokat, képleteket tartalmazó területet, és azt másolod.
Próbaként ráállsz az egyes oszlopok első, képletet tartalmazó cellájára, és megnézed a hivatkozását. Ha másik füzetre utal, kijavítod, majd lemásolod az alatta lévő cellákra. Elmented új néven a füzetet.
-
Delila_1
veterán
Valószínű, hogy régebben más néven mentetted ennek a füzetnek az elődjét, és onnan veszi a frissítéseket. Ha 2003-nál újabb az Exceled, az Adatok | Kapcsolatok | Kapcsolatok menüben módosíthatod úgy, hogy kitallózod ennek a fájlnak az útvonalát. 2003-nál Szerkesztés | Csatolások.
A nagy méret arra utal, hogy mégis vannak benne képek, egyéb objektumok, amik nem látszanak a kis méretük miatt. Ctrl+g-re bejön az Ugrás menü, ott az Irányított almenüben kiválasztod az Objektumokat. Ha van kijelölés, a Delete gomb egyszerre törli az összeset.
-
Juditta_56
aktív tag
Megint Deliláé a +1 pont, bár azt nem egészen értem a problémádban, hogy ha megtalálja a SZÖVEG.TALÁL a keresett értéket-adatot, akkor minek kell összehasonlítani a megtalált szöveget/számot a keresettel? Tehát, minek belevariálni a KÖZÉP függvényt is?
(#34787) Delila_1: Rendben leesett, tökmindegy, mert ha nem a KÖZÉP, akkor még egy SZÖVEG.TALÁL-t kell beletenni...
SZÖVEG.TALÁL("0,5";Összesített!U6;SZÖVEG.TALÁL("-";Összesített!U6)+1)
-
lappy
őstag
=HAHIBA(HA(KÖZÉP(U6,SZÖVEG.TALÁL("0,5",U6,SZÖVEG.TALÁL("-",U6)),3)="0,5",M6,HA(KÖZÉP(U6,SZÖVEG.TALÁL("1",U6,SZÖVEG.TALÁL("-",U6)),1)="1",M6,"")),"")
csak az egyszerűség kedvéért nincs benne ÖsszesítettU6
itt viszont a 0,5 keresés az jó, de az 1 már nem
a függvény hibát ad és ezért nem ugrik a második ha részre -
Juditta_56
aktív tag
Szerintem a képleted(?) egy kicsit összezavarodott, így nem is nagyon lehet tudni, hogy mit szeretnél...
Ha azt szeretnéd, hogy
ha az Összesített!$U6 tartalmazza a '0,5' vagy az '1' szöveget, akkor írja ki az Összesített!$M6 értékét, különben ""-t, akkor:=HA(HIBÁS(SZÖVEG.TALÁL(0,5;Összesített!$U6));HA(HIBÁS(SZÖVEG.TALÁL(1;Összesített!$U6));"";Összesített!M6);Összesített!M6)
(bocs, én nem használom a "HAHIBA" függvényt, csak így tudom)
ha viszont nem ezt szeretnéd, akkor írd le pontosan, hogy hogy gondolod... -
Fferi50
Topikgazda
Szia!
"Hogyan tudnám azt megadni, hogy a kötőjel után keresse a kettest?"
Akkor a kötőjel +2 kombót kell keresni:
SZÖVEG.TALÁL("-2";Összesített!U6)
Másrészt:
KÖZÉP(Összesített!U6;SZÖVEG.TALÁL("2";Összesített!U6);3)="2" soha nem fog teljesülni, mivel 3 karaktert hasonlítasz 1 karakterhez. A közép hossz paramétere legyen 3 helyett 1.Üdv.
-
mdk01
addikt
Oké, megvan a hiba 2 óra keresés után cask ide kellett beírnom szokás szerint
és nem a képlettel van a baj....
A gond az volt, hogy a képlet megtalálta a D152 végén a kettest, de én a kötőjel utáni kettest akartam vele megtaláltatni.
Hogyan tudnám azt megadni, hogy a kötőjel után keresse a kettest? -
pigster
senior tag
Delila_1 válaszát kiegészítve:
Az ő megoldása csak azt vizsgálja, hogy egyenlő-e a két cella, nem a képletet. Ha pl. kézzel ugyanazt írod be, ami a képlet alapján is ott lenne, akkor nem megfelelően működik. Ha persze mindig mást írsz be kézzel, akkor jó.Feltételes formázásnál (is) a képletet vizsgálja (persze a hivatkozást megfelelően át kell írni):
=KÉPLET($A1)
Ha képlet van, akkor IGAZ, különben HAMIS
-
mdk01
addikt
Jobban belegondolva egy sima HA függvénnyel is működik a dolog, ha a függvényben megtudom adni, hogy színezze a cellát, vagy a betűt, vagy akármit, csak jelölje meg.
Elvégre, ha a két cella nem egyenlő(mert ugye bele nyúltam) akkor már jelölnie kellene a cellát.
Hogyan tudok ilyet? Neten, csak a feltételes formázást ajánlgatják.
Köszönöm -
m.zmrzlina
senior tag
Próbáld így:
=Vágáslista!A3&"_"&Vágáslista!S3&"_"&HA(Vágáslista!R3="";"";KÖZÉP(Vágáslista!R3;1;10)&"_"&HA(Vágáslista!Q3="";"";Vágáslista!Q3)&"_"&Vágáslista!D3)
Ha üres cella esetén szeretnél valamit csinálni, vagy nem csinálni akkor a következő képletet használd:
=HA(A1="";"üres";A1)Lefordítva: (a képlet mondjuk B1-ben van):
Ha A1 nem tartalmaz adatot akkor B1 értéke az üres szó (vagy ami az üres helyén az idézőjelek közt van) egyébként B1 megkapja A1 értékét -
slashing
senior tag
-
slashing
senior tag
találtam egy ilyet:
de csak 1 cellával működik viszont úgy néz ki hogy mindegy melyik két kijelölt cellán futtatod a makrót. Swap cell kulcsszóval keresgélj hátha van jobb isSub Swap2Values()
Dim Value1 As Range, Value2 As Range
Dim TempValue1 As String, TempValue2 As String
If Selection.Cells.Count > 2 Or Selection.Cells.Count < 2 Then
MsgBox "Please select only 2 cells. For other options check back soon!"
End
End If
If Selection.Areas.Count > 1 Then
Set Value1 = Selection.Areas(1).Cells(1, 1)
Set Value2 = Selection.Areas(2).Cells(1, 1)
ElseIf Selection.Rows.Count > Selection.Columns.Count Then
Set Value1 = Selection.Range("A1")
Set Value2 = Selection.Range("A2")
Else
Set Value1 = Selection.Range("A1")
Set Value2 = Selection.Range("B1")
End If
TempValue1 = Value1
TempValue2 = Value2
Value1 = TempValue2
Value2 = TempValue1
End Sub -
Delila_1
veterán
Ehhez nem kell felhasználói függvény.
Kijelölöd a tartományt, Adatok | Szövegből oszlopok menü. Tagolt, határoló jel a kötőjel. Ez szétbontja az adatokat az A:D tartományba. A D oszlopban lesz a két utolsó számjegy, alsó kötőjellel elválasztva.
Kijelölöd a D oszlop adatait, újra Szövegből oszlopok, itt a tagoló jel az alsó kötőjel.
Ennyi, csupán néhány kattintás.
Rögzítéssel makró hozzá – kicsit javítva:
Sub Rögzítés1()
Dim usor As Long
usor = Range("A" & Rows.Count).End(xlUp).Row
Range("A1:A" & usor).TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:="-", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1)), _
TrailingMinusNumbers:=True
Range("D1:D" & usor).TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:="_", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
End Sub -
Delila_1
veterán
A függvényt egy speciális formához írtam, amilyent megadtál, pl. 2-2-0-0,4_22, vagy 2-2-0-2_22.
Számjegyeket kötöttél össze kötőjelekkel, végül egy alsó kötőjellel. A függvény azt a számot adja vissza, ami az utolsó kötőjel, és az alsó kötőjel között van.
A cella tartalmát vizsgálja a végétől az eleje felé haladva. Az
If Mid(cella, kar, 1) = "_" Then ig = kar
sor az alsó kötőjel pozícióját teszi be az ig változóba – kar a ciklusváltozó.
A lenti részlet az utoljára előforduló kötőjel +1 helyét teszi be a tol változóba, vagyis a kiírandó szám első karakterének a helyét.
If Mid(cella, kar, 1) = "-" Then
tol = kar + 1
Exit For
End IfItt már nem kell tovább vizsgálni a hivatkozott cella adatát, ki lehet lépni a ciklusból. Már csak a szám kiíratása van hátra.
Lehet, hogy a hivatkozott celláid formája nem egyezik meg azzal, amilyent megadtál, akkor nem kapsz jó eredményt, hiszen a függvényt kifejezetten az általad megadott kötőjel – alsó kötőjel formához írtam.
-
slashing
senior tag
megnyitod a fájlodat amiben ezek vannak, alt+f11 bejön a VBA ablak bal oldalon VBAProject (a fájlod neve.xls) itt jobb klikk insert / module és belemásolod a kódot. Lehet hogy újra el kell mentened a fájlt makróbarátra. De ahogy Delila_1 is mondta ha nem a fájlodba mented hanem a Personal.xlsb-be akkor bármelyik fájlodnál használhatod majd.
A táblázatod azon oszlopába amelyikbe ki akarod gyűjteni beírod a képletet =kotojel(A1) ha A1-ben vannak ezek a szövegek....
-
Delila_1
veterán
Írtam egy Kotjel nevű függvényt rá.
Function Kotjel(cella As Range)
Dim kar As Integer, tol As Integer, ig As Integer
For kar = Len(cella) To 1 Step -1
If Mid(cella, kar, 1) = "_" Then ig = kar
If Mid(cella, kar, 1) = "-" Then
tol = kar + 1
Exit For
End If
Next
ig = ig - tol
Kotjel = Mid(cella, tol, ig)
End FunctionBeviszed a füzetedben egy modulba, és =kotjel(A1) formában alkalmazod.
Ha több füzetben is használnád, érdemes a personalba másolni. -
slashing
senior tag
-
slashing
senior tag
ez ugyan az mint az én giga hosszú képletem néhány hozzászólással feljebb van rá pár próbálkozás, ha jól emlékszem rajtam kívül is volt valaki aki ilyesmivel küzdött az utolsó 100 hozzászóláson bellül...
(#22390) Delila_1 válasza slashing (#22389) üzenetére ebből ki tudsz indulni.
ezt a témát én örökre megutáltam
-
Delila_1
veterán
A szöveg típusú adatokat így rendezi, az egyes karakterek ASCII kódjainak megfelelően.
Ki lehet cselezni egy segédoszloppal, ami az eredeti adatok elején lévő számokat tartalmazza.Vegyük, hogy az eredeti adatok az A oszlopban vannak. A segédoszlopban a képlet
=BAL(A1;SZÖVEG.KERES("_";A1)-1)*1A tartományt, ami tartalmazza az eredeti-, és a segédoszlopot is, a képletet tartalmazó oszlop szerint rendezed.
-
Delila_1
veterán
Az Excel beállításainál, Népszerű elemek, Alapvető beállítások, Színsémánál választhatsz 3 szín közül, de mindegyiknél úgy állították be, hogy alig látszik a kijelölés.
Állíthatsz Windows-ban az asztalon jobb klikkre megjelenő tulajdonságoknál. XP-nél a Megjelenés fül, Speciális menüpontban kiválasztod az Elem legördülőben az Ablak-ot, ott állíthatsz be saját színt a majdnem fehér helyett.
-
Fehér Mancs
tag
A probléma az, hogy az FKERES mindig az első találatból indul ki.
Két megoldást tudok javasolni.
Egyik, ha tudsz saját függvényt írni a macronál, akkor azzal lehetne szabályozni, hogy a korrigált FKERES az általad sorszámként megadott egyezőséghez keresse ki az értéket.
Másik az lehet, hogy azt az FKERES keresési listáját hekkeled meg:
Az első függvény marad az eredeti H5=FKERES($K$2;$B$6:$D$10;3;0)
a többi függyvények pedig az előző találatokra hivatkoznak: H6=FKERES($K$2;OFSZET($B$5;HOL.VAN(H5;$D$6:$D$10;0)+1;0;1000;1);3;0), ezt lehúzva az általa várt eredmény születik. A probléma csak ott lehet, ha egy érték többször is szerepel a listádban, ilyenkor egy ciklusba kerül a függyvény.
A lényege ennek, hogy az OFSZET egy cellatartományt ad vissza (mintha manuálisan jelölnéd ki), ami a B5 mezőtől lefelé csúsztatva annyi sorral kezdődik, mint amelyikben megtalálta (HOL.VAN függvény) az FKERES előző eredményét. Figyelni kell arra is, hogy az OFSZET függvény utolsó előtti paramétere (jelen esetben 1000) azt határozza meg, hogy hány sor magas oszlopba keresse az adott értéket, így azt megéri akkorára állítani, hogy mindenképpen beleférjen az összes (de vigyázni arra, hogy az excel sorkorlátját ne lépje túl). Az OFSZET utolsó paramétere pedig az oszlopszámot határozza meg, így annak meg kell egyeznie az FKERES-ben használt oszlopszámmal.
(Ha a lehúzás után keletkező hibákat (#N/A) el akarod rejteni, akkor a =HA(HIBÁS(függvény);'''';függvény) függvénnyel meg lehet ezt oldani.)
Új hozzászólás Aktív témák
Hirdetés
- Sea of Thieves Premium Edition és Egyéb Játékkulcsok.
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Bontatlan - BATTLEFIELD 1 Collectors Edition - Játékszoftver nélkül
- Kaspersky, McAfee, Norton, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- Gyermek PC játékok
- LG 45GR95QE - 45" Ívelt OLED / 2K WQHD / 240Hz 0.03ms / NVIDIA G-Sync / FreeSync Premium / HDMI 2.1
- ÁRGARANCIA!Épített KomPhone i7 14700KF 32/64GB RAM RX 9070 XT 16GB GAMER PC termékbeszámítással
- Samsung Galaxy Watch 5 Pro LTE 45mm, Kártyafüggetlen, 1 Év Garanciával
- BESZÁMÍTÁS! MSI B450 R7 7 5700X 32GB DDR4 512GB SSD RTX 2080 8GB Fractal Design Define R5 FSP 750W
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5800X 32/64GB RAM RTX 4060 Ti 8GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest