-
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
-
Fferi50
Topikgazda
válasz
Peterhappy
#42087
üzenetére
Szia!
ny.janosé az ötlet, nem akarnék más tollával ékeskedni.
A számformázással küzdök egyet én is, mert most nálam is határozottan ellenkezik velem az Excel.
Üdv. -
Fferi50
Topikgazda
válasz
karlkani
#42083
üzenetére
Szia!
Ebben az esetben nem kell hozzá segédoszlop! Elég egy tömbképlet, hogy az eredményt lásd:
Pl.=SZUM(DARABTELI(Ünnepnapok;$C$2200:$C$2255))
Ez akkor ad jó értéket, ha egy ünnepnap csak egyszer fordul elő a keresendő értékek között. Ha többször is előfordulhat, akkor=SZUM((DARABTELI(Ünnepnapok;$C$2200:$C$2255)>0)*1)
a tömbképlet. Azaz Shift+Ctrl+Enterrel kell bevinni és kapcsos zárójelek közé teszi az Excel.
VBA-ban pedig:Range("X2").FormulaArray="=SUM((COUNTIF(Ünnepnapok,$C$2200:$C$2255)>0)*1)"Üdv.
-
Fferi50
Topikgazda
válasz
karlkani
#42081
üzenetére
Szia!
A segédoszlopban miért nem jó neked Delila képlete, hiszen az csak akkor ad 0-nál nagyobb értéket, ha előfordul az ünnepnapok között az érték. Számolásnál nem mindegy neked, hogy össze kell adni az értéket vagy megszámolni hány db 0-nál nagyobb érték van?
A második kérdésre csak tippem van: nem lehet, hogy ilyenkor értesítés nélkül le van tiltva a makró futtatás az Excelben a biztonsági beállítások között?Üdv.
-
Fferi50
Topikgazda
válasz
ny.janos
#42073
üzenetére
Szia!
Akkor már talán egyszerűbb, ha a segédoszlopba a feltételes formázás képlete alapján értékeket írunk, mert azokat utána csak meg kell számolni.Pl. =HA(A1>30;"C";HA(A1>20;"B";HA(A1>10;"A";"X")))
Ezután már csak a betüket kell megszámolni DARABTELI függvénnyel.Üdv.
-
Fferi50
Topikgazda
válasz
karlkani
#42071
üzenetére
Szia!
Az előbbi hozzászólásban szereplő makró kiegészíthető egy harmadik paraméterrel, ahova az eredményt kéred.Public Sub CountColor(pRange1 As Range, pRange2 As Range,pRange3 As Range)Dim rng As Range, xcolor As Long, CountColor As Integerxcolor = pRange2.DisplayFormat.Font.colorFor Each rng In pRange1If rng.DisplayFormat.Font.color = xcolor ThenCountColor = CountColor + 1End IfNextpRange3.Value = CountColorEnd Sub
Üdv. -
Fferi50
Topikgazda
válasz
karlkani
#42069
üzenetére
Szia!
Mivel feltételes formázás van, ezért a DisplayFormat tulajdonságot kell használni, ezt viszont függvényben sajnos nem tudja a VBA (a 2016-os legalábbis). Ezért nem függvényt, hanem Sub-ot kell használni:Public Sub CountColor(pRange1 As Range, pRange2 As Range)Dim rng As Range, xcolor As Long, CountColor As Integerxcolor = pRange2.DisplayFormat.Font.colorFor Each rng In pRange1If rng.DisplayFormat.Font.color = xcolor ThenCountColor = CountColor + 1End IfNextRange("A1").Value = CountColor 'ide azt a cella címet írd, ahová az eredményt szeretnédEnd Sub
Ezt viszont nem lehet felhasználói függvényként meghívni. A két paraméter ugyanaz, mint az általad leírt függvényben, pRange1 amiben keressük a cellákat, pRange2 aminek a színét számoljuk. Azért talán ezzel is tudsz ügyeskedni.
Más ötlet. Talán mégsem a színek szerinti összesítés a nyerő. Feltételezem, hogy a feltételes formázásnak a feltételei valamilyen táblázat alapján működnek (jó kis mondat lett a feltételek halmozásával...
), mivel írtad, hogy pl. ünnepnapok. Ez alapján is lehetne a számolást elvégezni makró nélkül, valamilyen számláló képlettel, ami megvizsgálja, hogy az adott dátum benne van-e a "táblázatban". Szóval én nem vetném el ny.janos ötletét sem.Üdv.
-
-
Fferi50
Topikgazda
válasz
Peterhappy
#42060
üzenetére
Szia!
Működik az adatok - szövegből oszlopok menüpont az Excelben megában. Nem kell hozzá Power Query.
Adatok - szövegből oszlopok - tagolt - a következő lapon (2. lépés) bejelölöd elválasztónak a szóközt. A következő lapon (3.lépés) az első oszlopra bejelölöd, hogy dátum NHÉ formátumban. Megadod hova kerüljön - nyilván a mellette levő oszlopba, hogy a forrás megmaradjon.
Ezután valóban dátum lesz az az oszlop, amibe az első része kerül az adatnak.
Más: Nem értem, ha a dátum oszlopodnak Dátumérték a mezőneve, akkor a kimutatásodban miért nem az az oszlop van benne?Üdv.
-
Fferi50
Topikgazda
válasz
Peterhappy
#42056
üzenetére
Szia!
Ez azért van, mert az adott mezőben nem dátumok vannak, hanem "számnak látszó" szövegek. A kimutatás forrás mezőjét kellene átalakítanod dátummá, ahogyan ebben a hozzászólásban írták (#42032 ny.jános), a Dátumérték függvénnyel. De talán még jobb lenne a DÁTUM függvény használata, a 42025-os hozzászólásodban levő Összefűz függvény paramétereire hivatkozással:=DÁTUM (Szöveg1;Szöveg3;Szöveg5)
Vagyis a DÁTUM függvénybe az adott paraméterhez írt képletet tedd bele.
Mert az Excelben dátum tekintetében sok esetben nem az van, mint amit látsz. Jelen esetben is, hiába fűzöd össze az értékeket "dátum formátumnak megfelelően", attól az még nem lesz dátum.
De még többet látnánk, ha a forrásod egy részletét megmutatnád, amiben ezek az értékek szerepelnek. -
Fferi50
Topikgazda
válasz
Petium001
#42053
üzenetére
Szia!
Az oszlop utolsó nem üres cellája után beírod a képletet:
= Darabteli($D$2:$D$400;"igen")
Itt a D oszlop 2-400 cellájában vannak az értékek.
Egy buktatója van: Ha az igen nem szöveg, hanem logikai érték - pl. összehasonlítás utján kapod - akkor az IGEN() függvényre kell keresni, "igen", helyett IGEN() kell a második paraméterhez.
Használd a függvényvarázslót légy szíves, könnyebben megérted.
Üdv. -
Fferi50
Topikgazda
válasz
bozsozso
#42052
üzenetére
Szia!
"úgy egészíteni, hogy a gyümölcsökhöz tartozó számokat az alján összesítse, hogy hány db"
Úgy értettem, hogy össze kellene adni a számokat (összesítse). Ha a tételszámra vagy kíváncsi, akkor Darab2 függvény a második sortól indulva.
Miután befejezted a Powerqueryben a munkát, visszaadod a táblát és a vezérlést az Excelbe. Ott pedig minden Excel függvény él természetesen.
Üdv. -
Fferi50
Topikgazda
válasz
TigerCat
#42048
üzenetére
Szia!
Az Excel munkalap nézetből az Alt+F11 gomb visz át a VBA (makrós) ablakba.
Az ablakban normál esetben van egy Projekt rész. Itt láthatod a munkalapjaid és hozzá a Thisworkbook - ot. Arra ráállsz - jobb egérgomb -View Code
Megjelenik a jobb oldalon a kódlap. Oda másold be.
Sajnos sem 365 sem Mac nincs nekem, így nem tudom kipróbálni.Üdv.
-
Fferi50
Topikgazda
válasz
#73966957
#42039
üzenetére
Szia!
Az alábbi makrókat együtt kell bemásolnod egy modulba. Igyekeztem általánossá tenni.
Az alkotó elemeket az O oszloptól lehet beírnod. Az első oszlop 2. cellája az alapár.
A többi oszlop tartalmazza a megnevezést és az árakat párban. A makró a P2 cellából indul ki (de ez nem azt jelenti, hogy ide kell az alapárat írnod), ez legyen mindenképpen a kiindulási területen. A fejléceket nem másolja. Az utolsó oszlopba kerül az összár.
Most lehet 2-3-4 sőt akár 5 összetevője is az összárnak. Persze vedd figyelembe, hogy minél több a változat, annál több lesz a variáció és nő a futási idő is. Ha már unod, akkor a Ctrl+ Break megszakítja a futást, erre két helyen figyel a makró - ott ahol DoEvents van.
A varialhat makrót kell elindítanod, a másikat majd az meghívja, ha kell neki. Íme:Sub varialhat()Dim u As Integer, alap As DoubleDim x As Long, y As Long, kepl As StringDim arazas As Range, oszl As RangeDim oszlopok As New CollectionDim varia As LongDim oszlsz As IntegerDim valami(), szoroz As LongSet arazas = Range("P2").CurrentRegionalap = arazas.Cells(2, 1).Value: kepl = "=A2"varia = 1For x = 2 To arazas.Columns.CountWith arazas.Columns(x)oszlopok.Add Range(.Cells(2, 1), .Cells(2, 1).End(xlDown)), Str(x - 1)If x Mod 2 = 0 Then varia = varia * oszlopok(x - 1).Cells.Count: kepl = kepl & "+" & Cells(2, x + 1).Address(rowabsolute:=False)End WithDoEventsNextoszlsz = oszlopok.CountApplication.ScreenUpdating = FalseIf Range("A2") <> "" Then Range(Range("A2"), Cells(Range("A2").End(xlDown).Row, Range("A2").End(xlToRight).Column)).ClearContentsu = 2Range(Cells(u, 1), Cells(u + varia - 1, 1)).Value = alapy = 2ReDim Preserve valami(1 To varia, 1 To oszlsz)szoroz = 1For x = oszlsz To 1 Step -1sokszoroz oszlopok(x), x, szoroz, varia / oszlopok(x).Cells.Count / szoroz, valami'oszl.Copy Destination:=Cells(u, y)'Range(Cells(u, y), Cells(u + oszl.Cells.Count - 1, y)).AutoFill Destination:=Range(Cells(u, y), Cells(varia + 1, y)), Type:=xlFillCopyIf x Mod 2 = 1 Then szoroz = szoroz * oszlopok(x).Cells.CountNexty = 2 + oszlszRange(Range("B2"), Cells(UBound(valami, 1) + 1, y - 1)).Value = valamiRange(Cells(u, y), Cells(u + varia - 1, y)).Formula = keplRange(Cells(u, y), Cells(u + varia - 1, y)).Value = Range(Cells(u, y), Cells(u + varia - 1, y)).ValueApplication.ScreenUpdating = TrueRange("A1").SelectMsgBox "Készen vagyok!"End SubSub sokszoroz(ByRef mit, hova, hanyszor, ciklus, ByRef valami())Dim x As Long, cl As Range, w As Integer, z As Longx = 1For z = 1 To ciklusFor Each cl In mit.CellsFor w = 1 To hanyszorvalami(x, hova) = cl.Valuex = x + 1NextNextDoEventsNextEnd SubHa bármi probléma adódik, csak írj.
Üdv. -
Fferi50
Topikgazda
válasz
Peterhappy
#42036
üzenetére
Szia!
Ha már valóban dátum lett a pivot forrása, akkor a pivotban a mezőt meg tudod formázni. Ráállsz a mezőfejlécre, majd jobb egérgomb, mezőbeállítások - alul balra megtalálod a számformátum gombot. Itt be tudod állítani a neked megfelelő dátumformátumot, függetlenül az alapadatok formátumától.
Üdv.
-
Fferi50
Topikgazda
válasz
#73966957
#42033
üzenetére
Szia!
Bocs, a 100-ast valóban elnéztem.
A makrót megváltoztattam, annyi a megkötés, hogy 3 komponensnek kell lennie és az M-R oszlopokban legyenek az adatok, ahogyan a képen mutattam: név, mellette az ár. Lehetnek különböző hosszúságúak.
Az alapár az L2 cellában legyen.
A makró többször is futtatható, az előző futás eredményét törli.Sub varial()Dim aras(), u As Integer, usor1 As Integer, usor2 As Integer, usor3 As Integer, alap As DoubleDim x As Byte, y As Byte, z As ByteApplication.ScreenUpdating = Falseu = 2usor1 = Range("M2").End(xlDown).Rowusor2 = Range("O2").End(xlDown).Row - 1usor3 = Range("Q2").End(xlDown).Row - 1aras = Range("M2:R" & usor1).ValueIf Range("A2") <> "" Then Range(Range("A2"), Range("A2").End(xlToRight).End(xlDown)).ClearContentsalap = Range("L2").ValueFor x = 1 To usor1 - 1For y = 1 To usor2For z = 1 To usor3Cells(u, 1).Value = alap: Cells(u, 2).Value = aras(x, 1): Cells(u, 3).Value = aras(x, 2): Cells(u, 4).Value = aras(y, 3): Cells(u, 5).Value = aras(y, 4): Cells(u, 6).Value = aras(z, 5): Cells(u, 7).Value = aras(z, 6)Cells(u, 8).Value = alap + aras(x, 2) + aras(y, 4) + aras(z, 6)u = u + 1NextNextDoEventsNextApplication.ScreenUpdating = TrueMsgBox "Készen vagyok!"End Sub
Üdv. -
Fferi50
Topikgazda
válasz
#73966957
#42028
üzenetére
Szia!
Egy makróval megoldható a feladat. Az árlistát az alábbiak szerint helyezd el:
Az L2 cella tartalmazza az alapárat, az M, O, Q oszlopok a tartozékfajták megnevezését, a mellettük levő oszlop pedig az árakat.
Az árlista generálása az A2 cellától kezdődik és tartalmazza az adott tartozék nevét és árát valamint a végösszeget. A fejléceket nem írja ki a makró, amely az alábbi:Sub varial()Dim aras(), u As Integer, usor As IntegerDim x As Byte, y As Byte, z As Byteu = 2usor = Range("M2").End(xlDown).Rowaras = Range("M2:R" & usor).ValueFor x = 1 To UBound(aras, 1)For y = 1 To UBound(aras, 1)For z = 1 To UBound(aras, 1)Cells(u, 1).Value = 100: Cells(u, 2).Value = aras(x, 1): Cells(u, 3).Value = aras(x, 2): Cells(u, 4).Value = aras(y, 3): Cells(u, 5).Value = aras(y, 4): Cells(u, 6).Value = aras(z, 5): Cells(u, 7).Value = aras(z, 6)Cells(u, 8).Value = 100 + aras(x, 2) + aras(y, 4) + aras(z, 6)u = u + 1NextNextNextEnd Sub
Ezt a makrót egy modullapra helyezd el. (eljárás az összefoglalóban).
3 fajta összetevőt használhatsz, de ezen belül nem csak 10-10 lehetőséget, azokat tetszés szerint növelheted. Fontos, hogy azokat azM : Roszlopokba írd.Üdv.
-
Fferi50
Topikgazda
válasz
bucihost
#42014
üzenetére
Szia!
Ezt találtam ki, nézd meg, hogy működőképes-e nálatok:
A táblázat első oszlopa tartalmazza a 2 órás határt - ezt még jobban lehet finomítani 2,00001 -re akár - a további 3 oszlop az egyes műszakokhoz tartozó műszakpótlékot.
Persze itt még a 7vége nincs benne, de szerintem az is megoldható (pl ha hétvége, akkor a + 3 oszlop tartalmazza azt a pótlékot és a G oszlopban levő értékhez nem 1, hanem 4 a hozzáadás).
(Nem mellesleg, így csak a szorzószámokat kell esetleg változtatni, nem kell átírni az összes képletet.)Üdv.
-
Fferi50
Topikgazda
-
Fferi50
Topikgazda
válasz
bucihost
#42012
üzenetére
Szia!
Az FKERES függvény 4. paraméterét ha IGAZ-ra állítod, akkor alkalmas arra, hogy táblázatban keressen, ehhez emelkedő sorrendbe kell rendezni a táblázatot - és még szöveges keresésben is működik.
Az előző hsz-ban levő példához a táblázat és a képlet:
Ez biztosan működik minden verzióban, mert a függvény is régi már.Üdv.
-
-
Fferi50
Topikgazda
Szia!
Egyetlen cellába sem kell írnod semmit!
Az általad bemutatott minta alapján a feltételes formázást az alábbiak szerint tudod megtenni:
Kezdőlap - feltételes formázás - új szabály -
Ezután a formázandó cellák kijelölése képlettel:
Kiválasztod a formátumot, majd OK.
A formázandó terület kiválasztásához:
Kiválasztod a szabályt és beírod az érvényességi területet:
Ha a képletben nem az A1 cella lenne, akkor a Szabály szerkesztése gombra kattintva átírod A1- a sor és oszlop függvény paraméterét.
Majd OK vagy/és Alkalmaz.Üdv.
-
Fferi50
Topikgazda
Szia!
Feltételes formázással megoldható:
Feltételes formázás - új szabály - a formázandó cellák kijelölése képlettel -
Képlet:=ÉS(SOR(A1)=$N$1;OSZLOP(A1)=$O$1)
Az érvényességi terület pedig $B$2:$K$11
A szabálynál a sor és oszlop függvény paraméterét az alkalmaz után nagy eséllyel átírja majd az Excel, ezt feltétlenül javítsd vissza A1-re, mert így fog az egész megadott területen érvényesülni.
Üdv. -
Fferi50
Topikgazda
válasz
Sutyi73
#41983
üzenetére
Szia!
"ha az a1 cellába "N"-t írok, akkor ott "12,5" jelenjen meg"
Azt, hogy ez saját magára megvalósulhasson, alapvetően makróval lehet megoldani - eseménykezeléssel. (Esetleg File - beállítások - Nyelvi ellenőrzés - automatikus javítási beállításokhoz felveszed, hogy az N-t írja át 12,5 -re, de EZ minden egyedül beírt N-t átír, bármelyik cellában legyen is az.)
Ha másik cellában szeretnéd a 12,5 megjelenítését, akkor a HA függvény segíthet:
=Ha(A1="N";12,5; "")
"a szöveg színe legyen kék" => feltételes formázás
" Hogyan lehet összesíteni pl. csak a kék színnel írt értékeket?"
Színre összesíteni direktben csak makróban lehetséges.
Van viszont színre szűrési lehetőség, a szűrt értékeket pedig a Részösszeg függvény tudja összesíteni, a 100 feletti függvényszámúak a rejtett sorokat nem számolják be.Üdv.
-
Fferi50
Topikgazda
válasz
Sutyi73
#41979
üzenetére
Szia!
Igen, feltételes formázás. Kijelölöd a két cellát. Kezdőlap - Feltételes formázás - Új szabály - A formázandó cellák kijelölése képlettel - Értékek formázása ha ez a képlet igaz: a képlet: =$A$1=P (ha konkrétan a P betű van ott, akkor "P" kell).
Formátum gombra kattintva kiválasztod a piros háttérszínt.
Majd OK.
A szabályok kezelésénél megnézed, hogy a 2 cellára vonatkozik-e a szabály.
Fontosak a $ jelek. Így mindig az A1 cella lesz a viszonyítási alap.Üdv.
-
Fferi50
Topikgazda
válasz
m.zmrzlina
#41894
üzenetére
Szia!
Változók tekintetében nincs igazság, csak ajánlások. A VBA önmagában nem követeli meg a változók első használat előtti deklarációját sem: A változó egyszerűen létrejön, amennyiben egy értékadó utasítást adtál a változónév használatával. Pl. x=5 automatikusan létrehozza az x változót. Ez egyik oldalról nézve roppant praktikus, mert nem kell foglalkozni vele, hogy él-e a változód, hiszen az utasítással létrejön. De: Ezt a változót ebben az esetben nem ellenőrzi a VBA, sem típusra, sem tartalomra. Újabb értékadással más típusú változó lesz belőle. Ezen kívül komoly hibalehetőség is, mert egy betű elütése már egy másik változót hoz létre, nyilvánvaló szándékaid ellenére. Aztán a futtatás során keresheted a hibát napestig, mire rájössz, hogy a nap helyett véletlenül a naap (eddig nem létezett) változóhoz adtad a további számolás eredményeit.
Ezért igen erős ajánlás a VBA ellenőrzési és segítségnyújtási lehetőségeit minél jobban kihasználni. Ezt viszont csak a változók előzetes (explicit) deklarációjával érhetjük el, amikor megadhatjuk, hogy a változó milyen típusú legyen - és akkor csak olyan értéket fogad el -, privát vagy publikus legyen, esetleg megmaradjon az értéke mindaddig, amíg az Excelből ki nem léptünk(!). Ezek az opciók deklaráció nélkül (implicite) nem állnak rendelkezésre. A deklaráció egyúttal inicializálja is a változót a típusának megfelelő null/nothing/stb értékkel. Az ellenőrzés során kiderül, ha elütöttünk egy változó nevet, hiszen az nem lesz deklarálva előzetesen.
Az ellenőrzést egy modulban az Option Explicit utasítás modul eleji kiadásával érhetjük el, de ha a Tools - Options - Editor fülön a Require Variable Declaration opciót bepipáljuk, akkor a VBA minden modullapon automatikusan kiteszi a modul elejére az Option Explicit utasítást.
Tapasztalataim alapján egyértelműen hasznos az előzetes deklaráció, mindenkinek, kezdőknek pedig pláne csak ajánlani tudom. Megszokni könnyű és megkönnyíti a munkát. Hiszen deklarálni nemcsak eljárás elején, hanem menet közben is lehet, a változó első használata előtt.
Remélem ez segít a választásban.
Üdv. -
Fferi50
Topikgazda
válasz
csferke
#41888
üzenetére
Szia!
Feltételes formázás - cellák formázása képlettel : =hossz($d2)<8 - formátum kitöltés piros.
Másik javaslat: ha lehet segédoszlopot csinálni, akkor a segédoszlop képlete:=Jobb("00000000" & $D2;8)
Utána segédoszlop kijelölés - másolás - irányított beillesztés értéket a segédoszlopra, majd ugyanez az eredeti oszlopra - segédoszlop törlése.
Feltételeztem, hogy a D oszlopban vannak az értékeid.
(a számhibás nyilacska feltételezhetően ottmarad
)
Üdv. -
Fferi50
Topikgazda
válasz
gyulazsolti
#41873
üzenetére
-
Fferi50
Topikgazda
válasz
gyulazsolti
#41869
üzenetére
-
Fferi50
Topikgazda
válasz
gyulazsolti
#41864
üzenetére
Szia!
Az adataid táblázatban vannak.
Az a kis jel jelzi a táblázat végét. Ha újabb sort írsz bele, akkor lejjebb fog kerülni.
Eltüntetni pedig úgy tudod, ha a táblázatot tartománnyá alakítod.
Táblázat menüben tartománnyá alakítás.Üdv.
-
Fferi50
Topikgazda
válasz
csferke
#41865
üzenetére
Szia!
Ha szeretnéd látni a 0-ákat a számjegyek előtt, akkor szerintem a megoldás:
Azt az oszlopot, ahová bekerülnek a számaid, szövegformátumúvá alakítod.
A Paste - nál szokott lenni ilyen opció, hogy célformátumnak megfelelően, válaszd ezt és akkor maradnak a számok a 0-val együtt.
Ha nem akarod a 0-t látni, akkor kijelölöd az oszlopot, Adatok - Szövegből oszlopok - a 3. lépésben az Általánost hagyod meg és helyben Befejezés.
Üdv.
Ps. Mert az nem világos, hogy látni szeretnéd vagy elhagyni a vezető 0-t. -
Fferi50
Topikgazda
válasz
csferke
#41861
üzenetére
Szia!
1. Amennyiben nincs a keresésnek eredménye, akkor #N/A hibaüzenet kerül az N23 cellába, tehát nem lesz "üres". Ezért ezt kell figyelembe venni a színezésnél.
Hangjelzést nem tudsz makró nélkül adni szerintem, de a színezés feltételes formázással megoldható: cellák kijelölése képlettel, a képlet pedig: =ISERROR(N23) -- érvényessége az N23 cella - kitöltőszín piros vagy amilyet szeretnél. Azután, hogy az adat bekerül a megfelelő helyre, a feltételes formázás miatt a színezés "magától eltűnik".
2. Ebben az esetben a cellaformátumot szövegre kell állítanod és úgy bevinni a számokat.
Ha csak egy-két 0-val kezdődő számod van, akkor az adott cellába állva a szám elé aposztrófot ( ' ) téve szövegként fogja értelmezni az Excel.Üdv.
-
Fferi50
Topikgazda
Szia!
Szerintem egymásba ágyazott IF függvények kellenek.
Üdv. -
Fferi50
Topikgazda
No még mielőtt valaki megró, hogy ilyen bonyolult lettem, lehet ezt sokkal egyszerűbben, ugyanakkor meglepően:
Selection.Replace What:=".", Replacement:=".", LookAt:=xlPart, _SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ReplaceFormat:=False
Tehát a pontot cseréljük pontra!!!. Ez pedig pont az anglimániájából adódik a VBA-nak. Mert így a tizedespontot a magyar táblázatban tizedesvesszőre cseréli.
Hát, lelke az van neki, hogy a redmondiak lelke legyen rajta.
Üdv.
PS.
A másik ilyen csudálatos viselkedésű helyzet, amikor dátumot kell pl. keresni...
-
Fferi50
Topikgazda
válasz
Capella
#41826
üzenetére
Szia!
Sajnos a makró az angol nyelvre és így az angol számformátumra van "kihegyezve", ezért a pontot úgy értelmezi három szám után, mint ezres elválasztó, tehát akként fogja értelmezni a cserét, hogy magyar elválasztójelre (szóköz) cseréli le.
Egy segédoszlop beiktatásával a Substitute (Helyette) képlet használatával és némi kis furfanggal megoldható a dolog:Selection.Offset(0, 1).Formula = "=Substitute(A1,""."","","")*1"
Ez a kijelölt oszlop mellé képlettel átalakítja számmá a cellaértéket.
Utána
Selection.Offset(0,1).Value=Selection.Offset(0,1).Value 'beillesztés értékként
Selection.Value=Selection.Offset(0,1).Value 'az eredeti helyre másoljuk.
A segédoszlopot ki is törölheted.
Ezzel a módszerrel oszlopról-oszlopra tudod a számokat átalakítani.
Természetesen működik konkrét címmel megadott tartományra is.Pl Range("A2:A20").Offset(0,1)…. a B2:B20 cellákba másolja a képletet.Üdv.
-
Fferi50
Topikgazda
Szia!
Zéróosztó amiatt lehet, mert a Darabteli függvényed 0 értéket ad vissza. Mivel abszolút címzést használsz, ez csak úgy fordulhat elő, ha az M oszlopban levő összefűzött érték nem felel meg a C és az F oszlop szóközzel történt összefűzésének. Ezért a Zéróosztó sorban nézd meg, hogy az összefűzés rendben van-e. Megegyezik-e az értéke a sorban levő két cella összefűzésével.
Üdv.
-
Fferi50
Topikgazda
Szia!
Szerintem a makró 32. sorában lehet a hiba...

Iróniát félretéve, se képletet, se makrót nem mutattál. Miből gondolod, hogy egy képből meg tudjuk mondani, mi lehet a hiba?
Ha Zéróosztót ír ki, akkor valószínűleg nincs rendesen levizsgálva az osztó értéke.Üdv.
-
Fferi50
Topikgazda
válasz
anonymus89
#41800
üzenetére
Szia!
Próbáld meg a HAHIBA és SZÖVEG.KERES függvények kombinációjával, úgy hogy a keresendő szöveghez használod a csillag => * helyettesítő karaktert a B oszlopban szereplő értékek előtt és után is, a többszavas keresendőknél pedig még a szóközöket is kicserélni erre.=HAHIBA(SZÖVEG.KERES("*" & HELYETTE(B1;" ";"*") & "*";A1);0)
Amennyiben a B oszlop értékei előfordulnak az A oszlopban, akkor a kifejezés értéke 1 lesz, ha nincs benne, akkor a Hibás ágon 0 kerül a C oszlopba.Üdv.
-
Fferi50
Topikgazda
válasz
bucihost
#41793
üzenetére
Szia!
Azt hiszem, erre már szinte kivétel nélkül mindenki azt mondaná, hogy nem Excelt, hanem adatbáziskezelőt kell használni. De mivel tudom, hogy a 2 programot nem lehet lecserélni (?)
ezért mást kellene kitalálni.
Ha az office-on belül lenne Access programod, akkor a legegyszerűbben be lehetne olvasni az Excel fájlokat az Accessbe és utána minden gond nélkül lehet belőle riportokat lehúzni.
Valószínűleg kellene az Accessben is némi tervezési munka és pár makró rögzítése a frissítésekhez.
Ha ez nincs, akkor marad az Excel. Itt nem függvényeket javasolnék alapból, hanem lekérdezéseket az Excel fájlokból, amelyek utána könnyebben és dinamikusabban frissíthetőek, makró nélkül is.
Szerintem nézd meg és próbáld ki az Adatok - Új lekérdezések - Fájlból - Munkafüzetből menüpontban elérhető Lekérdezés szerkesztőt.
Ha bármilyen gondod akad vele, légy szíves keress priviben.Üdv.
-
Fferi50
Topikgazda
válasz
bucihost
#41790
üzenetére
Szia!
Az INDIREKT függvény jó lehet erre, de ebben az esetben az egész cím legyen a függvény paraméterében, ne csak a fájl neve. Külső hivatkozásnál a hivatkozott fájlnak/munkafüzetnek nyitva kell lennie - ezért nem kell az elérési út, elég a fájl neve.
Kb. így:
$C$1 értéke:''[bolt1.xlsx]Termékek 19.09.11'!$A:$N=HAHIBA(FKERES($A2;INDIREKT($C$1);5;0);"")
Persze a C oszlopba írhatod tovább a fájlneveket, akkor a sor legyen relatív hivatkozás, hogy a képletet húzhasd lefelé.
Sajnos, amennyiben a hivatkozott fájlt bezárod, akkor a következő újraszámoláskor #HIV! hibaüzenet lesz az eredmény (újranyitva frissül a jóra).
A probléma csak makróval kerülhető meg, amelyik a megfelelő cellákba direktben beírja a hivatkozott fájl nevét - ami persze lehet egy cellában is.Range("A1").Formula="=IFERROR(VLOOKUP($A2," & Range("$C1").Value & ",1,0),"""")
Beírja a képletet - indirekt nélkül - az A1 cellába. Viszont a C1 cella átírása után futtatnod kell a makrót ismét.Más: Nagyon nem javaslom teljes oszlopok-sorok használatát a képletekben (ne feledd a legutolsó verzióban milliós nagyságrendű a sorok száma), mert az lelassítja, esetleg le is fagyasztja az Excelt, mert a sok üres cellát is "számbaveszi".
Helyette egy olyan konkrét tartományt célszerű beírni, ami nagy eséllyel elég lesz a jövőben keletkező adatok számára is.Üdv.
-
Fferi50
Topikgazda
válasz
dm1970
#41783
üzenetére
Szia!
Nem kell makrózni.
Az nem baj, ha a beíráskor az A oszlopban #Hiányzik hiba jelentkezik.
Amikor befejezted a beírásokat, akkor kell a B:E oszlopokat átmásolni az I2 cellába. Ezután a Menüszalagon az Adatok - Rendez gombra, majd az OK-ra kattintva kialakul a végeredmény.
(és eltűnnek a hibák
)
Üdv. -
Fferi50
Topikgazda
Szia!
Erre mutattam azt a makrót, ami a cella változásakor megvizsgálja, hogy van-e már ilyen érték a bevittek között.
Csak meg kellene próbálnod testre szabni:
Ezt másold be az adott munkalap kódlapjára:Private Sub Worksheet_Change(ByVal Target As Range)If Target.Column = 1 Or Target.Column = 3 Then 'ez az első és a harmadik oszlopot figyeli
'ha minden oszlopon figyelnéd, akkor hagyd el.
'ha egy tartományt figyelnél, akkor a vizsgálat:
'If Not Intersect(Target,Range("A1:X100") Is Nothing ThenApplication.EnableEvents = FalseIf Application.CountIf(Range(Cells(1, Target.Column), Cells(Target.Row - 1, Target.Column)), Target.Value) > 0 ThenMsgBox "Ilyen érték már van!"Target.Value = ""Target.SelectEnd IfApplication.EnableEvents = TrueEnd IfEnd SubÜdv.
-
Fferi50
Topikgazda
válasz
Delila_1
#41763
üzenetére
Szia!
Hát persze - a válasz gombra lehet kattintani, utána hozza a bejelentkezési ablakot, de sajnos nem ugrik oda ahhoz a kérdéshez, amire válaszolni szeretnék. Korábban ez működött.Üdv.
(csak egy jó jelszó kell, amit megjegyzel. Én nem nagyon szeretek bejelentkezve maradni sokáig, sok helyen.... ) -
Fferi50
Topikgazda
válasz
Delila_1
#41756
üzenetére
Szia!
Hát igen. Nem mindegy, hogy makrót írunk vagy képletet

Ha a vizsgált területben nincs benne a Target cella, akkor a >0 a jó, ha benne van, akkor a >1.
(Ugyanis, ha már egyszer írtuk, akkor nem lesz 0 az értéke.)Üdv.
PS. Nem tudnád elintézni valahogy azt, hogy válasz gomb után - ha be kell lépni - akkor ugyan nyissa már meg a válasz ablakot is.
-
Fferi50
Topikgazda
Szia!
A usernek nem kell semmit csinálnia, ha a feltételes formázást előre beállítod azokra a tartományokra, ahol az adatbevitel folyik. Az ismétlődést vörösre állítod. A usert pedig kitanítod, hogy a vörös azt jelenti, ilyen tétel már van.Makróban pedig tudod használni a darabtelit, a munkalap change_eseményébe ágyazva.
Private Sub Worksheet_Change(ByVal Target As Range)If Application.Darabteli( Range("A1:A10"),Target.Value)>0 ThenMsgbox "Már van ilyen érték: " & Target.Value'vagy Msgbox helyett:Target.Offset(0,1).Value="Ilyen érték már van!'"'akár ki is törölheted:Target.Value=""End IfEnd Sub
Természetesen az A1:A10 helyére az adott területet írd.
Ha az adott cella oszlopában kell nézni, akkor
Columns(target.column) a Range('A1:A10") helyett. Ebben az esetben nem >0, hanem >1 a kritérium, hiszen az adott cella is benne van az oszlopban.Üdv.
-
Fferi50
Topikgazda
válasz
dm1970
#41724
üzenetére
Szia!
Nézz rá a névkezelőre. Ott is lehetnek elrejtve külső hivatkozások, amelyek nem jelennek meg a listában.
Azért az a 2000 hivatkozás gondolom nem 2000 fájlra vonatkozik.
Ha a névkezelő nem hoz eredményt, akkor mégis azokat kell átnézned. A keresésnél kérjél listát. (Ctrl + F Listába mind gomb.)Üdv.
-
Fferi50
Topikgazda
válasz
#06658560
#41705
üzenetére
Szia!
Nem hagyott nyugodni a dolog és ezért tovább foglalkoztam vele. Bizonyos - nem teljesíthetetlen - feltételek teljesülése esetén képletekkel meg lehet oldani a feladatot.
A feltétel, hogy az új táblázat legyen egy külön lapon és induljon az A1 cellából, valamint az eredeti adatok fejléce legyen az első két sorban. Egyik sem gránitba vésett, csak akkor a képleteket nem túl bonyolult módon változtatni kell.
Feltételeztem, hogy az eredeti adatok a Munka1 munkalapon vannak.
Az új munkalapon az első sor képletei:
A1 cella:=INDIREKT("Munka1!$A$"&INT(((SOR()-INT((SOR()-1)/(DARAB2(Munka1!$A$1:$A$100)*3))*(DARAB2(Munka1!$A$1:$A$100)*3))-1)/3)+HOL.VAN("*";Munka1!$A$1:$A$100;0))
B1 cella:=ELTOLÁS(INDIREKT("Munka1!$A$" & HOL.VAN(A1;Munka1!$A$1:$A$100;0));0;MARADÉK(SOR()-1;3)+1+(INT((SOR()-1)/(DARAB2(Munka1!$A$1:$A$100)*3)))*3;1;1)
C1 cella:=ELTOLÁS(Munka1!$A$2;0;MARADÉK(SOR()-1;3)+1+(INT((SOR()-1)/(DARAB2(Munka1!$A$1:$A$100)*3)))*3;1;1)
D1 cella:=INDEX(Munka1!$A$1:$XX$1;1;HOL.VAN("Hét " & INT((SOR()-1)/(DARAB2(Munka1!$A$1:$A$100)*3))+1;Munka1!$A$1:$XX$1;0))
A képletek lefelé húzhatók. Lehet hozzájuk nevet rendelni, akkor egyszerűbbnek látszanak
. Ha a cél munkalapon nem az első sorban kezded a listát, akkor a sor()-1 helyekre mindenütt a -1 helyett az új kezdősor-1 értéket kell írni.
Azért lett ilyen bonyolult, mert 2 ciklust kell nézni - az egyik a 3-as ciklus a 3 értékre, a másik a termékek darabszáma alapján változik. Ez utóbbit adja meg a Darab2 függvény.
A forrás munkalapon a termékeket is és a heteket is tetszés szerint növelheted.
Apropó hetek: Most abból indultam ki, hogy az első héttel kezdődik az adatsor. ha nem, akkor a D1 cella képletében a "Hét " után & 9 + INT.... a folytatás, a kezdő hét-1 számát kell pluszban beírni.
A mintafájlt feltöltöttem ide .Üdv.
-
Fferi50
Topikgazda
válasz
#06658560
#41705
üzenetére
Szia!
"Ugye nem gondolod komolyan, hogy feltolom a komplett céges anyagot."
Szerintem én ilyet nem kértem. Csak azt tettem szóvá, hogy a leírásod és a minta képed nem egyezik az én értelmezésem szerint.
És a kiegészítésed ezt alá is támasztotta, hogy hetenként 3 oszloppal bővül a bal oldali kiindulási alap.
Üdv. -
Fferi50
Topikgazda
válasz
#06658560
#41694
üzenetére
Szia!
Igazából az nem világos, hogy miből mit szeretnél elérni. A jobb oldalon van egy 4 oszlopból álló lista. A bal oldalon egy kimutatásnak látszó forma.
Nem látok 3 oszlopból álló mátrixot...
Miből kell 3+1 oszlopot csinálni és minek kell a 4. oszlopba kerülnie?
Az adatforrásodat alakítsd át táblázattá fejléceket rakva hozzá. Ezután a Kimutatás forrása legyen a táblázat (név szerint megadva). Így ha hozzáírsz adatokat a forráshoz, utána frissíted a kimutatást, akkor automatikusan beszívja az új adatokat.Üdv.
-
Fferi50
Topikgazda
Szia!
Az eseménykezelés nincs a helyén. Ha az elején letiltottuk, akkor máshol nem kell vele foglalkozni, csak a végén engedélyezni. Ezen kívül az ASH változót is be kell állítani.Private Sub Workbook_SheetActivate(ByVal Sh As Object)'Munkalap aktiválásakor mengnézzük, hogy az új munkalap a védendő-e:If Sh Is Worksheets("Output") Then'Ha a védendő, akkor jelszót kérünk:Application.EnableEvents = FalseSh.Visible = xlSheetHidden 'elrejtjükSet ASH = ActiveSheet 'az előző munkalap az aktív, ezt tesszük be a változóbaIf InputBox("Jelszó:") = "MusterMaster" Then'Ha jó a jelszó, engedjük az aktívvá tételt,'és elmentjük új aktívkéntSh.Visible = xlSheetVisible ' láthatóvá tesszük'Application.EnableEvents = False 'letiltjuk az eseménykezeléstSh.Activate 'aktíváljukSet ASH = ActiveSheet'Application.EnableEvents = True 'visszaállítjuk az eseménykezeléstElse'Ha rossz, akkor:MsgBox "Rossz jelszó!."'Visszaállítjuk az előző munkalapot aktívnak:Sheets("Output").Visible = xlSheetVisible 'láthatóvá tesszük, hogy kiválasztható legyen a lapfülThisWorkbook.ASH.ActivateEnd IfApplication.EnableEvents = TrueEnd IfEnd Sub
Üdv. -
Fferi50
Topikgazda
válasz
MasterMark
#41687
üzenetére
Szia!
Azon kívül, amit Delila írt, fontos még, hogy az idézőjeleket a képletben párosával kell írni, ha valóban idézőjelet szeretnél ott kapni.
A képleted helyesen:Sheets("egyéni").Range("A1").Formula ="=RIGHT(CELL(""filenév"",A1),LEN(CELL(""filenév"",A1))-SEARCH(""]"",CELL(""filenév"",A1))) & ""("" & FLOOR(SUMPRODUCT((NOT(ISBLANK(J3:J1002))*(1/COUNTIF(J3:J1002,J3:J1002 &"""")))),1) & "" darab)"""(Sőt, még a filenév helyett is a filename az igazán helyes, de csodával határos módon ezt érti az Excel).
Van viszont egy olyan lehetőség is, hogy magyar nyelven add meg a képletet a makróban, ezt a FormulaLocal tulajdonsággal lehet megtenni. Ennek az a hátránya, hogy csak a magyar Excelben érti meg a VBA, más nyelvterületen nem, azaz a munkafüzet nem hordozható.
Természetesen az idézőjelekre ebben az esetben is oda kell figyelni.Üdv.
-
Fferi50
Topikgazda
Még valami:
1.Minthogy az árfolyamtábládban a HUF is szerepel 1-es szorzóval, elég az FKERES függvényt használni.=HA(INPUT!$D5="";"";HA(ÉS($B$206=INPUT!$D5;INPUT!E5<>"");FKERES(INPUT!$C5;DATA!$A$1:$B$4;2;HAMIS)*INPUT!E5))
2.Mivel a Pénznem számformátum automatikusan beírja a Ft-ot vagy a HUF-t választásod szerint a szám mögé, továbbá annyi tizedest mutat, amennyit szeretnél, nem látom értelmét saját hasonló egyedi számformátum kreálásának.
Így elkerülhetők a képletedben levő hibák is.Üdv.
-
Fferi50
Topikgazda
Szia!
Nem véletlen az a random hiba, hanem a pénznemtől függő ...
A képleted a C206 cellában ez:=HA(INPUT!$D5="";"";HA(ÉS($B$206=INPUT!$D5;INPUT!E5<>"");HA(INPUT!C5="HUF";INPUT!E5&" "&INPUT!$C5;FKERES(INPUT!$C5;DATA!$A$1:$B$4;2;HAMIS)*INPUT!E5);""))
Ebben a részben:HA(INPUT!C5="HUF";INPUT!E5&" "&INPUT!$C5;
a HUF pénznemű dolgokhoz még hozzáteszed szövegként a " HUF'" -ot, ettől szöveggé válik az egész.
A nem HUF-nál viszont szorzod az összeget az árfolyammal és nem teszed hozzá a HUF végződést, mert nem is kell.
Miután a cellaformátumban beállítottad, hogy minden HUF-ban legyen - hozzátetted a " HUF" toldalékot - ezért ezek a számok "természetesen" számok maradnak.Tehát az "& " " &INPUT!$C5 rész törlendő a képletből!
Üdv.
-
Fferi50
Topikgazda
Szia!
Ha a változások követése be van állítva, akkor az ott megjelölt napokra visszamenőleg egy munkalapra ki lehet íratni a változtatásokat. Abból pedig tudsz kimutatást csinálni.
Sajnos a megnyitás és a mentés időpontja nem látszik, de miután a közös használatnál a vátoztatások csak a mentés során kerülnek be véglegesen (ezért -is- lehetnek ütközések egy-egy cellában), aki a változtatást végrehajtotta, nyilván mentette is.
Így keresd a súgóban: Változások nyomon követése közös munkafüzetekben
Üdv. -
Fferi50
Topikgazda
Szia!
Nos kicsit nyugodtabban végigpróbálva a lépéseket, az alábbi eredményre jutottam:
A gombok "eltüntetése/mutatása", azaz a Visible tulajdonság állítása nem befolyásolja a másolás módban maradást! Viszont az Enabled tulajdonság módosítása igen. Tehát ezt nem szabad használni - ami egyébként felesleges is, hiszen ha nem látható a gomb, akkor nem is lehet "megnyomni".Szerintem ezzel már tudsz kezdeni valamit.
Üdv.
Ps. Azt, hogy miért így viselkedik az Excel, azt ne tőlem kérdezd lsz. -
Fferi50
Topikgazda
válasz
Fferi50
#41645
üzenetére
Sajnos nem voltam elég körültekintő. Addig minden áll, hogy milyen értékeket vehet fel ez a tulajdonság. Viszont amikor a gombok tulajdonságait akarom megváltoztatni, automatikusan elveszti a másolás/kivágás értékét - azt hiszem amiatt, mert nem cellákkal dolgozunk. Ez sajnos úgy néz ki, rendszerszintű dolog.
Tovább kell vizsgálódnom.
Eredmény:
Az Enabled és a Visible tulajdonságok változtatása hatástalanítja a másolás kapcsolót. A gombok méretét és elhelyezkedését lehet változtatni akkor is, ha másolás módban vagyunk. -
Fferi50
Topikgazda
Szia!
Azt hiszem, azzal van gond, hogy az Application.CutCopyMode tulajdonságot logikai tulajdonságnak kezeled, pedig nem az! Ha megnézzük a Help-jét, akkor azt látjuk, hogy kétféle értéket vehet fel: 1 = xlCopy és 2 = xlCut. Ha pedig nincs bekapcsolva a másolás/kivágás mód, akkor az értéke 0 --> ami a False logikai érték számérték megfelelője.
(Azt hiszem, a makrórögzítő vezet félre bennünket és képzelteti velünk el, hogy logikai érték ez a tulajdonság, mivel ott mindig csak azt látjuk, hogy Application.CutCopyMode = False. Szomorú.)
Az xlCopy vagy xlCut értéket pedig a Ctrl+C ill. Ctrl+X billentyűk, illetve a Copy és a Cut parancsok adják a tulajdonságnak.
Az Application.CutCopyMode=True ebben a formában hatástalan, mivel kívül esik a tulajdonság lehetséges értékein (a True számértéke VBA-ban -1)
"ha viszont még extrába beleírom, hogy ha mégis cutcopymode=true"
ez a fentiek alapján soha nem fog bekövetkezni!
Másrészt a makród szerkezete alapján a feltétel vizsgálat vagy a False vagy az xlCopy/xlCut ágra fog futni.
Makróból nem tudod ezt a tulajdonságot állítani, csak a Copy vagy Cut parancssorral.
Remélem érthető, amit írtam.
Normál esetben ennek a tulajdonságnak a vizsgálata nem szükséges a gombok megváltoztatásához.Üdv.
-
Fferi50
Topikgazda
válasz
bozsozso
#41591
üzenetére
Szia!
Csak ötletek:
- a függvénnyel csinálsz segédcellákat, minden tétel összesen sorára, amire szükséged van és ezeket a cellákat használod a továbbiakban.
- Hol.Van függvénnyel megkeresed a Végösszesen sort és az Index függvény visszaadja a teljes sort neked.=SZORZATÖSSZEG(INDEX(B1:X5000;Hol.Van("Végösszesen";A1:A5000;0);0);TRANSZPONÁLÁS(Y1:Y23)A kimutatásod az A oszlopban kezdődik és az X oszlopig tarthat, max 5000 sorral. Az oszlopszám és a sorok száma is növelhető. Az Index függvény azt a sort fogja használni, amelyikben a HOL.VAN függvény megtalálja a Végösszesen szót az A oszlopban. A másik tényező az Y oszlopban van, természetesen a saját feltételeidnek megfelelően állítod be.
Üdv. -
Fferi50
Topikgazda
válasz
Triathlete
#41529
üzenetére
Szia!
Mi az ATL_exp ?
Üdv. -
Fferi50
Topikgazda
Szia!
Ez nem hekkelés, ez normális automatizálási lehetőség!
Első körben egyszer beírod a képleteket a cellákba. Megjegyzed, hogy mit kell kicserélni. Aztán kiderül, hogy mire. Ez 1 azaz egy db makró sor!!!
Szóval semmi esetre sem kell kicseréltetni az elérési utat kézzel.
Nem tudom, hogyan derül ki, melyik fájlból kell az adatokat beszívni, de arra is vannak jó módszerek.
Üdv.
(Privi is ment.) -
Fferi50
Topikgazda
Szia!
"Esély nincs arra, hogy ezt-azt ne kelljen futtatgatni manuálisan, amikor változik a cella?"
Erre való az eseménykezelés:Private Sub Worksheet_Change(ByVal Target As Range)If Not Intersect(Target, Range("K1")) Is Nothing thenApplication.EnableEvents = FalseRange("A1").Formula="='c:\abc\def\[termeles" & Range("K1").Value & ".xls]" & Range("K1").Value & "'!A10"Application.EnableEvents = TrueEnd IfEnd Sub
Ezt annak a munkalapnak a kódlapjára kell bemásolni, ahol változtatni szeretnéd az adatokat.
Természetesen a többi cellára is meg kell ezt csinálni.
Ha felteszel valahova egy mintát, akkor megnézem, hogyan lehetne egyszerűbben, mert ha ugyanazok a fájlok változnak, akkor egy Csere - képletben makróval is meg lehet tenni a változtatást, ha előtte már megvannak a képletek normálisan. Csak azt kell tudni, hogy mit - mire kell változtatni.Üdv.
-
Fferi50
Topikgazda
Szia!
Makróval direktbe beleírod a képletet abba a cellába, ahol szükséges:
pl.Range("A1").Formula="='c:\abc\def\[termeles" & Range("K1").Value & ".xls]" & Range("K1").Value & "'!A10"
Amikor a K1 cella értéke változik, akkor megismétled a képlet beírást - pl. a Worksheet_Change eseménykezelő segítségével.
Üdv. -
Fferi50
Topikgazda
Szia!
Akkor próbáld meg ezt:Private Sub Workbook_SheetActivate(ByVal Sh As Object)'Munkalap aktiválásakor mengnézzük, hogy az új munkalap a védendő-e:If Sh Is Worksheets("Output") Then'Ha a védendő, akkor jelszót kérünk:Sh.Visible = xlSheetHidden 'elrejtjükIf InputBox("Jelszó:") = "blbla" Then'Ha jó a jelszó, engedjük az aktívvá tételt,'és elmentjük új aktívkéntSh.Visible = xlSheetVisible ' láthatóvá tesszükApplication.EnableEvents = False 'letiltjuk az eseménykezeléstSh.Activate 'aktíváljukSet ASH = ActiveSheetApplication.EnableEvents = True 'visszaállítjuk az eseménykezeléstElse'Ha rossz, akkor:MsgBox "Ehhez a laphoz Neked semmi közöd!!"'Visszaállítjuk az előző munkalapot aktívnak:ThisWorkbook.ASH.ActivateSheets("Output").Visible = xlSheetVisible 'láthatóvá tesszük, hogy kiválasztható legyen a lapfülEnd IfEnd IfEnd Sub -
Fferi50
Topikgazda
Szia!
Egy icipici módosítás kell (amire én sem gondoltam először).Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)If Sh.Name <> "Output" Then Set ThisWorkbook.ASH = ActiveSheetEnd Sub
helyett:Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)If Sh.Name <> "Output" Then Set ThisWorkbook.ASH =shEnd Sub -
Fferi50
Topikgazda
válasz
Richard
#41504
üzenetére
Szia!
Az a kérdés, hogy utána dátumként szeretnél vele számolni tovább, vagy sem.
Ha igen, akkor a cellaformátumot állítsd "éééé.hh" -ra az egyéni formátumban.
Ha nem, akkor a képlet:=ÉV(KALK.DÁTUM(MA();-1)) &"." & SZÖVEG(HÓNAP( KALK.DÁTUM(MA();-1));"0#")
Bár az sem kizárt, hogy a képlettel létrejött értéket is tudja dátumként kezelni.
Üdv. -
Fferi50
Topikgazda
válasz
bozsozso
#41498
üzenetére
Szia!
Leszűröd a jelenléti munkalapot az E oszlop alapján, ahol nem üres. Ezután a V oszlopot másolod és beilleszted az A3 cellától kezdve.
A Ha függvény is működik, csak akkor maradnak az A oszlopban üres cellák, amiket utána ki kell szűrni és törölni:
A3 cella képlete: =Ha(Jelenléti!E3<>"";Jelenléti!V3;"")
Ezt a képletet végighúzod az A oszlopon lefelé. Majd kijelölöd az egészet - másolás, irányított beillesztés értéket.
Szűröd az A oszlopot üresre, törlöd az üres cellákat, szűrést megszünteted.Mindkettőt gyorsabb megcsinálni, mint leírni.
Üdv.
Új hozzászólás Aktív témák
- GoodSpeed: Daikin FTXF35E / RXF35F Sensira 3,3 kW Inverteres klíma - a Sztori
- Ilyen olcsó sem volt még egy Apple notebook
- Építő/felújító topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Autós topik
- Parfüm topik
- Dobosok ide!
- One otthoni szolgáltatások (TV, internet, telefon)
- Milyen egeret válasszak?
- Diablo IV
- További aktív témák...
- új NAGYakku!!! 6-10óra üzemidő, 5G! Dell Latitude 5330 i3-1215U - 16GB 512GB 13.3" FHD 1 év gar
- Apple iPhone SE 2022 64GB, Kártyafüggetlen, 1 Év Garanciával
- DELL Alienware 16X Aurora AC16251 Csillagközi indigó 2029-ig garancia
- Windows 10 / 11 Pro Retail aktiváló kulcs Azonnal szállítással, számlával, garanciával!
- iPhone 13 128GB Pink -1 ÉV GARANCIA - Kártyafüggetlen, MS4651
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

), mivel írtad, hogy pl. ünnepnapok. Ez alapján is lehetne a számolást elvégezni makró nélkül, valamilyen számláló képlettel, ami megvizsgálja, hogy az adott dátum benne van-e a "táblázatban". Szóval én nem vetném el ny.janos ötletét sem.


