- Yettel topik
- Mobil flották
- Realme GT Master Edition - mestermunka
- Apple Watch
- Motorola Razr 60 Ultra - ez a kagyló könnyen megfő
- Milyen okostelefont vegyek?
- Egyszerre legnagyobb és legkisebb is a Garmin Venu X1
- Samsung Galaxy A54 - türelemjáték
- Redmi Note 13 Pro 5G - nem százas, kétszázas!
- Apple iPhone 16 Pro - rutinvizsga
-
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
-
arpiodzo
újonc
Szia Gyga!
Nem tudom, hogy kaptál-e érdembeli választ vagy rájöttél-e azóta hogy mi volt az a rejtett kitörölhetetlen csatolás, de pont most találkoztam ezzel a problémával. Jó egy napot szívtam vele, végül rájöttem a titok nyitjára. Oszloponként másoltam át új fájlba az adatokat, figyeltem mikor fog élesedni a hivatkozások gomb. Persze ezt is többször elvégeztem és tényleg csak akkor tűnt el a csatolás, ha az egész lapot töröltem. Így megpróbálkoztam azzal is, hogy irányított beillesztés, és csak a képleteket másoltam. Láss csodát, így nem lett egyetlen külső hivatkozásom sem, bezzeg, amikor a formátumot is rámásoltam, akkor rögtön megjött. Na, át is néztem azonnal a feltételes formázásokat, itt derült ki, hogy némelyik másolt formátum között voltak bizonyos munkalapra illetve azok celláira való direkt hivatkozások. Ezeket töröltem vagy átalakítottam, ezután pedig már a hivatkozások közül is sikerült kiírtanom. Remélem segített.... -
Delila_1
veterán
Az eredeti kérdésedben a C oszlop értéke az A és B oszlopétól függött. A laphoz rendelt makróban azt az oszlopo(ka)t figyeld, amelyik(ek) befolyásolják az X értékét. Ha pl. az E és G oszlopok adják az X értékét, akkor:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column =5 Or Target.Column =7 Then Masolas
End SubModulba:
Sub Masolas()
Dim usor As Long
Sheets("Munka2").Range("A:X").ClearContents
ActiveSheet.Range("$A:$X").AutoFilter Field:=24, Criteria1:="<>0"
usor = Range("X" & Rows.Count).End(xlUp).Row
Range("A1:X" & usor).Copy
Sheets("Munka2").Range("A1").PasteSpecial xlpaste.Values
ActiveSheet.Range("$A:$X").AutoFilter Field:=24
End Sub -
Delila_1
veterán
Laphoz rendeld:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column < 3 Then Masolas
End SubModulba másold:
Sub Masolas()
Dim usor As Long
Sheets("Munka2").Range("A:C").ClearContents
ActiveSheet.Range("$A:$C").AutoFilter Field:=3, Criteria1:="<>0"
usor = Range("A" & Rows.Count).End(xlUp).Row
Range("A1:C" & usor).Copy Sheets("Munka2").Range("A1")
ActiveSheet.Range("$A:$C").AutoFilter Field:=3
End Sub -
dolarelado
újonc
Szia gyga!
Ugyanebbe a problémakörbe futottam bele. Sokat segített a névkezelős ötleted, de a megoldást mégis az "érvényesítés"-ek törlése hozta.
Sajnos ehhez meg kell keresni az érintett munkalapot -> minden kijelöl -> amikor az érvényesítésre kattintasz felugrik az ablak, hogy "Törli a jelenlegi beállításokat" kérdés -> OK -> mentés (-> jó esetben örül.) -
azopi74
addikt
Kattints rá a jelölőnégyzetre jobb egérrel, View code, aztán ezt írd be kódnak
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
Call Macro1
Else
Call Macro2
End If
End SubBár nem tudom, miért így akarod, mert szerintem nem szép dolog így használni a jelölőnégyzetet
Szerintem szebb lenne ToggleButtonokkal, vagy méginkább egy pár Option Button-nal és egy Command Button-nal. De ízlés kérdése....
-
Delila_1
veterán
-
Árnymester
tag
A Kereső keres rejtett cellákban és szerintem lapokon is. Listába mind kérd, és a fájlnévre keress!
Adatok >> Kapcsolatok és Meglévő kapcsolatok ellenőrzése.
Továbbá még a Képletek >> Névkezelő: lehet, hogy itt bújik meg egy külső hivatkozás.Ui.: Több lehetőség nemigen van, szerintem.
-
Fferi50
Topikgazda
Szia!
Elvileg szerintem a kapcsolatokban meg kellene, hogy mutassa az adott fájlt (illetve kapcsolatot és azt módosítani is lehet - kivéve persze, ha védett a munkafüzet).
Van még olyan opció, hogy a munkalapon képletek legyenek láthatóak és ne az eredmény - a képletek menüpontban tudod beállítani - hátha ekkor rá tudsz bukkanni vizuálisan.Másrészt, nyitáskor, amikor frissíteni szeretné a kapcsolatot, akkor kellene megszakítani, most nem emlékszem, milyen fázisban, de rá szokott kérdezni, ha nem találja és nem tallózod be neki a fájlt, hogy megszakítod-e a kapcsolatot.
Ha így sem jön össze, akkor elkezdeném egyenként törölni a munkalapokat és menteni, megnyitni, hogy mikor "hagyja abba" a kapcsolat frissítés kérését.
Üdv.
-
Fferi50
Topikgazda
Szia!
A keresés - képletekben - keress a szögletes zárójelre [, mert ez a hivatkozásokban fordul elő. A keresés hatókörét állítsd a teljes munkafüzetre és nem a teljes cellaértéket keresed.
Kérj ezzel a beállítással listát.Rejtettben szerintem nem keres a kereső, csak makró.
Üdv.
-
alfa20
senior tag
Szia!
ALT+F11: A Project - VBAProject ablakban klikkelj kettőt a kiválasztott mappanévre (pl: Munka1),
majd a jobb oldalon lévő legördítő sávból válasdt az elsőből a: Worksheet-et a másodikból az Activate-tés így változtasd meg:
Private Sub Worksheet_Activate()
MsgBox "Ovatossan Módosítsd!"
End SubAz idéző jelek közé tedd a szöveget!
-
Mutt
senior tag
Hello,
..cella formátumot akarok másolni akkor csak a hátteret másolja át és a feltételes formázás képletet ne!
2 lépésben tudod, egyikben formátumot másolsz a másodikkal törlőd a feltételes formázást.
Range(cél).PasteSpecial (xlPasteFormats)
Range(cél).FormatConditions.Deleteüdv
-
Delila_1
veterán
A makró akkor másolja át a 2 cellát, ha mindegyiknek adtál háttérszínt.
Tegyél ki hozzá egy gombot, vagy adj bill. kombinációt.Sub masol()
If Range("A2").Interior.ColorIndex <> -4142 And Range("B2").Interior.ColorIndex <> -4142 Then
Range("A2:B2").Copy Sheets(2).Range("A" & Sheets(2).Range("A" & Rows.Count).End(xlUp).Row + 1)
End If
End Sub -
Delila_1
veterán
A laphoz rendeld:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$15" Then Rejt
End SubModulba:
Sub Rejt()
Sheets("Munka2").Select
Rows("2:202").Hidden = False
Rows(Sheets("Munka1").Range("E15") + 2 & ":202").Hidden = True
End SubNálam Munka1 a lap, ahol az E15-ben megadod a megjelenítendő adatsorok számát, és Munka2 a másik. Ezeket írd ár a makróban a saját lapjaid nevére.
Mikor írsz az E15-be, a másik lapon végrehajtódik a rejtés, és az a lap lesz aktív.
-
Delila_1
veterán
Míg írtam, Mutt megadta a lényeget, hogy a B oszloptól számított -6 oszlop értelmetlen.
Gondolom, arra az értékre vagy kíváncsi, ami a B2:B64 tartományban a legkisebb szám, és ebben a sorban a tőle jobbra eső 6. oszlopban van.
Ezt a
=ELTOLÁS(INDEX(B:B;HOL.VAN(KICSI(B2:B64;1);B:B;0);1);0;6)
képlettel kaphatod meg. -
Mutt
senior tag
Hello,
Az eltolas elso parameterenek cellat kell megadni, a KICSI fuggveny szamot ad vissza es nem cellat. Az INDIREKT vagy INDEX fuggvennyel tudsz igazi hivatkozast eloallitani. A -6 -al nincs gond, addig ha lehet ennyit balra menni, vagyis legalabb a G oszlopbol kell indulni.
Udv
-
poffsoft
veterán
véleményem szerint a feladat elég balf.sz megfogalmazással az, hogy egy rakat naturáliában nyilvántartott készlet (benzin) korábbi elszámolási értékét (pénzben kifejezve, nem naturáliában) az elszámolási egységár változása miatt újra ki kell fejezni.
Ehhez a legegyszerűbb az alábbi képlet volt szerintem.Amúgy az a táblázat sem smafu, nem ár, hanem nyilvántartott érték, vagy ilyesmi...
A történeti hűség kedvéért én inkább egy d oszlopot szúrnék be, a jelenlegi c-t átkeresztelném "beszerzéskori elszámoló érték"-nek, a d-t pedig "jelenlegi nyilvántartási érték"-nek, pl...
Matekozás szerint amúgy egy másik megoldás, ha megnézed az eredeti ár változásának arányát, és ezzel szorzod a "C"-t , sima aránypárral:
Új érték= régi érték*(új ár/régi ár)meg még 1000 módon
-
Ha valóban üres és nincs rá szükség a personal.xlsb, akkor először az adott munkafüzet-ben töröld a makrók közül, mentsd a munkafüzetet, majd fájlkeresővel keress rá és egyszerűen töröld le.
lacasd
Végül is kivitelezhető, de ehhez idő kell, mert összetett a dolog. Mondjuk biztos meg van az oka, hogy miért kell ennyire szétszabdalni (ennyi külön fájlban tárolni) dolgokat.
Ha a GAL és GM4 felépítése azonos, akkor rég le kellett volna egyszerűsíteni a dolgot, ugyanis akkor 1 darab fájlban elférne minden, abból meg kimutatással szinte bármi elkészíthető. -
Normál esetben nem kell makró hozzá, egyszerűen a munkalap fülön jobb egér és az áthelyezés vagy másolás opciót használd. Az a fontos, hogy mielőtt ezt megléped, mindig az adott munkalap egy üres cellájára kattints, ne egy vezérlőn legyen a fókusz. Ebben az esetben az eredetivel teljesen megegyező másolat jön létre, ahol minden vezérlő pozíciója is megegyezik az eredetiével. (Lehet, hogy a "vándorlást" is megoldódik így, bár azt más is okozhatja)
-
Delila_1
veterán
Nem szerencsés dolog a fórumon egy személyhez intézni a kérdést. Jó esetben itt van a megszólított, tud, és akar is válaszolni. Ha a 3 feltétel közül valamelyik hiányzik, nem kapsz választ. A címzett nélküli kérdésre nagyobb eséllyel kaphatsz megoldást.
Töröld a törölhető sorokat, majd írd be a VBE-be a lenti két funkciót.
Function fent(Keres As Long, WS$, hol$)
Dim CV, oszlop%, ter$
oszlop% = Asc(hol$) - 64
ter = hol$ & ":" & hol$
For Each CV In Sheets(WS$).Range(ter$)
If CV > Keres Then
fent = Sheets(WS$).Cells(CV.Row - 1, oszlop%)
Exit Function
End If
Next
End Function
Function lent(Keres As Long, WS$, hol$)
Dim CV, oszlop%, ter$
oszlop% = Asc(hol$) - 64
ter = hol$ & ":" & hol$
For Each CV In Sheets(WS$).Range(ter$)
If CV > Keres Then
lent = Sheets(WS$).Cells(CV.Row + 1, oszlop%)
Exit Function
End If
Next
End FunctionA cellába, ahova a keresett érték fölötti sort akarod megkapni, így add meg a függvényt:
=fent(A1;"Munka2";"A")
Az A1 az a cella, ahova a kérdésben példaként írt 203958-at írod. A "Munka2" annak a lapnak a neve idézőjelek között, ahol a keresést végre akarod hajtatni, az "A" a keresés oszlopának a betűjele.A másik képlet =lent(A1;"Munka2";"A"), ez a keresett érték alatti cella értékét hozza eredményül.
-
föccer
nagyúr
Az fkeres mindig a legbaloldalibb (az első) oszlopban keresi a keresési értéket, így biztosan, hogy fel kell cserélned a két oszlopot.
Utána meg valami ilyesmi lesz a függvényed:
=fkeres(min(B1:B20);B1:C20;1;0)
Ez már feltételezi, hogy a B és C oszlopokat felcserélted.
üdv, föccer
-
-
dtpeter
csendes tag
Meg lehet ezt csinálni automatikusra is szerintem, nem szükséges a gomb. A visual basic szerkesztőben válaszd ki bal oldalon az összesítő lapodat, majd középen fent azt a részt, ahol most jó eséllyel (General) szöveget látsz, állítsd át Worksheetre, és a mellette lévő lévő részt pedig Activate-re.
Ekkor kapsz egy
"Private Sub Worksheet_Activate()End Sub"
szöveget. Na, e közé a két sor közé illeszd be a Delila_1 által írt kódot (persze a Sub... és End Sub nélkül). Ez azt fogja eredményezni, hogy minden alkalommal, amikor más lapról átlépsz az összesítő lapodra, lefut a kód. Arra érdemes figyelni, ez csak akkor jó megoldás, ha az összesítő lapon lévő eredmény cellából más lapon nem dolgozol.Van még pár lehetőség, hogy milyen eseményhez lehet rendelni a kód lefutását, pl. olyan is van, ami akkor indítja el a programodat, ha megváltozik az adott munkalapon bármelyik cella. Ezt mondjuk érdemes lenne feltételhez kötni, hogy mely oszlopok változása esetén frissítgesse az eredménycellát, teljesen felesleges mindig elvégeztetni vele az összeszámolást. Ezt meg úgy tudod megcsinálni, hogy bal oldalon a ThisWorkbook-ot választod, középen fent Workbook-ra állítod a (General) részt, és jobb fent SheetChange-et választasz a legördülő menüből.
Ekkor ilyesmi szöveget látsz majd:
"Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Column = 8 Then
MsgBox "Most számol :)"
End If
End Sub"A középen lévő részt én írtam be, a msgbox-os sor helyére tedd Delila_1 kódját. Az eleje meg csak annyit jelent, hogy ha a 8. oszlop (azaz a H oszlop, amit emlékeim szerint összegezni szeretnél) változik, akkor indítja az összegzést.
Alapesetben az első variációt választanám, mert az csak akkor számol, amikor tényleg meg akarod nézni az eredményt. Ennek a másodiknak akkor van értelme, ha az eredménycellára más helyen hivatkozol, és fontos, hogy minden egyes változtatás után azonnal friss adatok álljanak rendelkezésre.
-
Delila_1
veterán
-
Delila_1
veterán
Sub SubTotal()
ucso = Worksheets.Count
For lap = 2 To ucso
Sum = Sum + Sheets(lap).Cells(154, 12)
Sum1 = Sum1 + Sheets(lap).Cells(155, 12)
Sum2 = Sum2 + Sheets(lap).Cells(156, 12)
Next
Sheets("Összesítő").Cells(154, 12) = Sum
Sheets("Összesítő").Cells(155, 12) = Sum1
Sheets("Összesítő").Cells(156, 12) = Sum2
End SubEzt vidd be az előző helyére.
-
Delila_1
veterán
Sub SubTotal()
ucso = Worksheets.Count
For lap = 2 To ucso
Sum = Sum + Sheets(lap).Cells(154, 12)
Next
Sheets("Összesítő").Cells(154, 12) = Sum
End SubEzt a makrót vidd be. Alt+F11-re bejön a VB szerkesztő. Bal oldalon megtalálod a füzeted nevét, az előtte lévő + jelre kattintasz. Insert menü, Module. Jobb oldalon kapsz egy üres fehér oldalt, oda másold.
Ha az összesítő lapod neve nem Összesítő, a makróban írd át.
Ha az összesítőn az eredményt nem az L154 cellában szeretnéd látni, a Cells(154,12)-ben írd át az értékeket. a 154 a sor száma, a 12 az oszlopé (A oszlop=1, B oszlop=2, ... Loszlop=12). -
Delila_1
veterán
A laponkénti képlet:
=SZUMHA(J:J;"PF";H:H)
Ezt egyszerre is beviheted a 10 lapodra. Kijelölöd a lapokat (elsőn állsz, Shiftet nyomva az utolsó lapfülre kattintasz), és a megfelelő helyre beírod a függvényt. Így gyorsabb, mint egyenként, és biztosan azonos cellában lesz minden lapon. Ezután az összesítő lapra beírod a SZUM függvényt, ahogy az előző hozzászólásomban írtam. -
Delila_1
veterán
Megcsinálod a 10 lapon egyesével, de mindegyik lapon azonos cellába.
Itt példaként legyen ez a V100.
Az összesítő lapra ezt írd (tetszésed szerinti cellába):=SZUM('Első_lap:Utolsó_lap'!V100)
Természetesen az Első_lap és az Utolsó_lap helyett a saját első, és utolsó lapod nevét írd.
-
gyga
senior tag
még sem tökéles:
így csináltam: c1 nek adtam fix nevet és a feltételes formázást erre adtam ki.
ez 1 sorra tökéletes lenne. De ha már több sor van akkor azokban a c2 c3 c4 stb cellákra kell hivatkozni és midnek új nevet kell adni és a formázási feltételeket újból be kell írni ez elég macerás minden sort újra írni főleg ha van sok feltételes formázás. -
-
-
Delila_1
veterán
A CheckBox-ot elneveztem Jelölő-nek.
A makró a Jelölő jelölt állapotában összeadja az L1 és M1 értékét, jelöletlen állapotában pedig összeszorozza azokat. Az eredményt az N1 cellába – Cells(1,14) – írja.Sub keplet()
If CheckBoxes("Jelölő").Value = xlOn Then
Cells(1, 14).Formula = "=L1+M1"
Else
Cells(1, 14).Formula = "=L1*M1"
End If
End Sub -
Nowhere
tag
Ja világos már.
Én azt csinálnám, hogy az előbbi képleteket felhasználva:
E1 cella: =IF(C1=0;B1;0)
F1 cella: =IF(D1=0;C1;0)Ezeket lehúzod addig ahány sorod van és az alján szummázva az E azt a végösszeget adja ahol nem egyezett az A és B (jelen esetben 13), az F meg ahol nem (28).
Szépnek nem szép, de megoldás.
-
Nowhere
tag
-
Fehér Mancs
tag
Ha nincs a listában fejléc, akkor egy kicsit lehet ezen finomítani:
=HA(HIBÁS(FKERES(A1;$C$1:$D$10;2;0));OFSZET($C$1;HOL.VAN(A1;$C$1:$C$10;1);1);FKERES(A1;$C$2:$D$10;2;0))
(C1
10-ig vannak adatok)
Amúgy rendezett a lista? Ha nem, akkor hibaüzenetet kaphatsz vissza.
Ha így sem megy, küldd át az excelt.
-
Fehér Mancs
tag
A $C$1 a fejlécet jelentené, a következő sorban kezdődne az adat. Ennek a sorához adjuk hozzá az ofszet második paraméterében azt a sorszámot, amit a hol.van függvénnyel találunk meg (a keresett értéknél nem nagyobb legnagyobb szám) +1-et, hogy az azt követő sorra álljunk rá.
Az FKERES-ben pontos értékre keresünk (utolsó paraméter 0 / HAMIS), a HOL.VAN esetén pedig intervallumra (ott az utolsó paraméter 1-es).
-
Fehér Mancs
tag
Az nem derült ki, hogy hova tegyük a köztes értékeket, de ez is megoldható képletekkel:
1. Ha van pontos találat, akkor FKERES-sel megkereshető.
2. ha nem, akkor meg kell keresni a következő nagyobb szám pozícióját (HOL.VAN)
3. majd OFSZET-tel rá lehet állni.Vagyis:
=HA(HIBÁS(FKERES(A1;$C$2:$D$10;2;0));OFSZET($C$1;HOL.VAN(A1;$C$2:$C$10;1)+1;1);FKERES(A1;$C$2:$D$10;2;0))
A1 a keresett érték,
$C$2:$D$10-ig pedig a lista
Új hozzászólás Aktív témák
Hirdetés
- Creative Sound BlasterX G5 (70SB170000000) (Sound Blaster) (DAC)
- Dell P2419H P2419Hc Full HD LED IPS 24" + P2719H 27" LCD monitor (vékony keretes)
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7700X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- LG 55B4 - 55" OLED - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox Ready
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest