-
GAMEPOD.hu
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
ztoldy
senior tag
Sziasztok!
Erre a problémára keresnék megoldást:
Adott egy oszlop (mondjuk legyen B), aminek a tartalma szum függvénnyel össze van adva. Viszont ebben a B oszlopban vannak olyan értékek, amiket ki kellene zárni a szum függvényből (pl. most legyen ez az érték a B3-ban és B7-ben). Előfordul, hogy ez az érték, amit kizártam máshova kerül a B oszlopon belül (B3-ból mondjuk B4-be, B7-ből B8-ba), mert folyamatosan új értékek kerülnek az oszlopba. Az lenne a lényeg, hogy a korábban B3-ban, B8-ban stb. lévő érték sose kerüljön bele a szummába akárhova kerül is a B oszlopon belül.Van erre megoldás?
https://www.refundo.hu/?ref=175161
-
Delila_1
Topikgazda
Egy másik módszer:
Kijelölöd a tartományt, amiben keresni akarsz. A Képletek | Definiált nevek | Kijelölésből új funkcióval egyszerűen létrehozod a sorok és oszlopok elnevezéseit. Az E4 cellában láthatod a metszet-, vagy más néven szóköz operátort. Metszet a neve, mert a képletben lévő, 2 elnevezett tartomány metszetét adja, vagy szóköz a neve, mert a két operandust szóköz választja el.
Arra kell figyelni, hogy az automatikus elnevezés az eredeti névben esetlegesen előforduló szóközök helyett alsó kötjelet ír, tehát a Kiss Bori helyett a hivatkozási név Kiss_Bori lesz. A képletben
=Kiss_Bori Foglalkozás -t kell írni.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz ztoldy #27352 üzenetére
Mi különbözteti meg ezeket a számokat a többitől? Kisebbek, vagy nagyobbak az átlagnál? Az A oszlop azonos sorában lévő adat szerint kell ezeket kihagyni az összegzésből?
A fenti, és hasonló esetekben a SZUMHA, vagy több feltételnél a SZUMHATÖBB függvényt alkalmazhatod.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
róland
veterán
Adott egy pár munkalapos dokumentum. Meghatározott munkalapon a többi munkalap adatai alapján automatikusan készül 1 db A/4-es nyomtatható "kimutatás".
Ahhoz kellene makró, hogy a fent említett munkalap 1. oldalát gombnyomásra nyomtassa ki a táblázatkezelő. (Az adott munkalapot jövőben szeretném elrejteni a használók elől.)
http://logout.hu/cikk/mi_is_az_a_htpc/teljes.html; Három emeleten át egy teljes liftrapszódiát játszik!
-
sedyke
tag
Sziasztok!
Egy olyan makrora lenne szuksegem, ami egy keresest vegezne az egesz munkafuzetben es ha megtalalna az A oszlopban levo termeket, akkor kiirna a W oszlopban, hogy "in use".
Tudnatok nekem ebben segiteni?
Elore is koszonettel!
-
Delila_1
Topikgazda
válasz sedyke #27356 üzenetére
A leírásodból arra következtetek, hogy a keresett termék 1-1 egyszer fordul elő. Ehhez itt a makró.
Sub In_Use()
Dim lap As Integer, sor As Long
For lap = 1 To Sheets.Count
sor = Application.Match("keresett_termék", Sheets(lap).Columns(1), 0)
If Not VarType(sor) = vbError Then Sheets(lap).Cells(sor, "W") = "in use"
Next
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
sedyke
tag
-
-
Delila_1
Topikgazda
válasz sedyke #27360 üzenetére
Azt hiszem, ne pontosan írtad le a feladatot. Megírtam a makrót a következő felállásra:
A füzet első lapja az összesítés, ahol a termékek az A oszlopban vannak. Azt az esetet vettem, hogy nincsenek üres sorok, és az első a címsor.
Az összes többi lapon keresünk.A makró megjegyzi az összesítő lap A2-es cellájának az értékét, majd sorban ellenőrzi a többi lapon, hogy van-e ilyen nevű termék. Ha valamelyiken talál, akkor az összesítő lap W2 cellájába beírja a kért szöveget.
Következik az A3-as cella vizsgálata, majd így tovább az utolsó sorig.Sub Van_e()
Dim talal, sor As Long, usor As Long, nev, lap As Integer
Dim WS As Worksheet
Set WS = Sheets(1)
usor = WS.Range("A" & Rows.Count).End(xlUp).Row
For sor = 2 To usor
nev = WS.Cells(sor, "A")
For lap = 2 To Sheets.Count
Sheets(lap).Select
Set talal = Cells.Find(nev, LookIn:=xlValues, lookat:=xlWhole)
If talal Is Nothing Then
GoTo Tovabb
Else
WS.Cells(sor, "W") = "in user"
Exit For
End If
Tovabb:
Next
Next
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
morgusz
csendes tag
válasz Delila_1 #27324 üzenetére
Köszönöm szépen a segítséget!!!!
Sajnos pontatlanul írtam le, hogy mit szeretnék, még annyi a bajom, hogy a táblában csak néhány oszloppárnál működjön, nem az egész táblában. Csak bizonyos (I,M,Q) oszlopokban levő cellák módosításakor írja be, vagy írja át a szomszéd cellát. (Ugyanis ha olyan cellát módosítok ami mellé nem kellene időpont hanem más adat van, azt is átírja, és csak letiltott makrókkal tudok hozzányúlni).
Így is megoldható? -
Delila_1
Topikgazda
válasz morgusz #27362 üzenetére
Óhajod parancs.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 9 Or Target.Column = 13 Or Target.Column = 17 Then
Application.EnableEvents = False
Target.Offset(, 1) = Date
Application.EnableEvents = True
End If
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
scott_free
senior tag
sziasztok,
az alábbiakban kérném a segítségeteket:
adott ez a táblázat, ami a következőképp kellene, hogy működjön:
1. A "Sorszám" oszlopban kiválasztott érték szerint FKERES-sel kiválasztja a "Név1", "Név2" és "Név3" mezőt (ha Sorszám=0, akkor 0-t ír mindenhova)
2. a "Név1", "Név2" és "Név3" alapján pedig a piros táblázatból a nevek alapján hozzárendeli a pontokat a "Pont1", "Pont2" és "Pont3" mezőbe.
eddig ez nyilván megy makró nélkül is - amiért mégis makró kell az ez:
3. ha már egyszer hozzárendelt egy pontot egy mezőhöz, akkor utána ne írja felül akkor se, ha közben a pontérték megváltozik!Az - egyelőre még szinte nulla - makró-tudásommal ennyire jutottam:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ki As String
Dim Hol As Range
Ki = Cells(Target.Row, Target.Column)
Set Hol = Range("I2:J6")
If Target.Row < 2 Then Exit Sub
Select Case Target.Column
Case 2, 4, 6
If Target.Value = 0 Then
Cells(Target.Row, Target.Column + 1) = 0
ElseIf Cells(Target.Row, Target.Column + 1) > 0 Then
Exit Sub
Else: Cells(Target.Row, Target.Column + 1) = Application.WorksheetFunction.VLookup(Ki, Hol, 2, 0)
End If
Case Else:
End Select
End SubEz annyit csinál, hogy ha egy pont-cella értéke 0, akkor felülírja, ha meg már van benne egy érték, akkor nem. (ld. 3-as pont)
És csak akkor működik, ha a Név mezőbe manuálisan írom be a nevet - ha pl. FKERES-sel hívom be, akkor nem csinál semmit.Szóval ami hiányzik:
1. működjön akkor is, ha FKERES-sel adom hozzá a nevet az excelben (nem a makróban!)
2. a piros táblázat a valóságban egy másik lapon található ("Nevek") - próbáltam a Worksheets("Nevek").Range("NevekPontok")-at, de nem működött
3. csak akkor fusson és csak azon a soron, amelyikben a Sorszám változik. (nem tudom, hogy a mostani makró is így megy-e)köszi előre is!
-
sedyke
tag
válasz Delila_1 #27361 üzenetére
Igen, tokeletesen ertetted. Bocsanat a szegenyes korulirasert.
Most egy szoke kerdes fog kovetkezni...
Nekem angol excelem van, makro irasi keszsegem sincs, csak futtatni tudom az elore megirtakat. Eleg ha a magyar szavakat helyettesitem az angol megfelelojevel, hogy mukodjon?Koszonom! Nagyon halas vagyok a segitsegert!
-
Delila_1
Topikgazda
válasz sedyke #27365 üzenetére
A makró angol nyelven van, nem is lehet másképp.
A füzetedben Alt+F11-re megnyílik a VBA szerkesztője. Bal oldalon kiválasztod a füzetedet, Majd Insert menü, Module.
Beszúrtál egy új modult, ami Module1 névre hallgat. Ez van kijelölve a beszúrás után. Az ablakod jobb oldalán kapsz egy nagy üres felületet, oda másold be a makrót. Bezárhatod ezt az ablakot, és a szokásos módon (Alt+F8) futtathatod a makrót.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz scott_free #27364 üzenetére
Azért nem működik, mert a laphoz rendelt makró csakis a saját lapján tud működni. Van viszont mód rá, hogy másik lapon, lapról dolgozzon, ehhez meg kell hívni egy modulban lévő másik makrót, átadva a szükséges értékeket.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And Target.Row > 1 Then
Application.EnableEvents = False
Beiras Target.Row, Target 'itt hívjuk meg a Beiras makrót, átadva az aktuális sort és a bevitt értéket
Application.EnableEvents = True
End If
End SubA Beiras makró modulban van.
Sub Beiras(sor, ertek) 'itt veszi át a két értéket, amiket felhasznál
Dim Hol As Range
Set Hol = Sheets("Nevek").Range("NevekPontok")
With Sheets(1)
Select Case ertek
Case 0
.Range("B" & sor & ":G" & sor) = 0
Case 1
.Cells(sor, "B") = Hol(1)
.Cells(sor, "C") = Hol(1).Offset(, 1)
.Cells(sor, "D") = Hol(1).Offset(1)
.Cells(sor, "E") = Hol(1).Offset(1, 1)
Case 3
.Cells(sor, "B") = Hol(1).Offset(2)
.Cells(sor, "C") = Hol(1).Offset(2, 1)
.Cells(sor, "D") = Hol(1).Offset(3)
.Cells(sor, "E") = Hol(1).Offset(3, 1)
.Cells(sor, "F") = Hol(1).Offset(4)
.Cells(sor, "G") = Hol(1).Offset(4, 1)
End Select
End With
End SubNem adtad meg, és én nem tudtam kihámozni, mi legyen kettes sorszám bevitelekor.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz sedyke #27367 üzenetére
A lap egy változó, az lehet bármi, akár lgjdh82lk-t is írhatunk helyette.
Akkor fut, ha az összesítő lapod a sorban az első. Ilyen az elrendezés? A termékek A2-től lefelé, folyamatosan vannak megadva. Ez is áll?
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
-
Delila_1
Topikgazda
válasz sedyke #27370 üzenetére
Szívesen, örülök, hogy végül összejött.
For lap = 2 To Sheets.Count
Sheets(lap).SelectIde kell beszúrni a kihagyandó lap sorszámát. Ha például az ötödiket akarod kihagyni (beleszámolva az elsőt is), akkor
For lap= 2 To Sheets.Count
If lap=5 Then Exit For
Sheets(lap).SelectTöbb lap kihagyásánál a feltétel sora például
If lap=3 Or lap=5 Or lap=6 Then Exit For
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz Delila_1 #27368 üzenetére
scott_free
Ha kellenek a 0 értékek 1-es bevitele esetén is az F és G oszlopba, akkor a
.Range("B" & sor & ":G" & sor) = 0
sort tedd a Select Case fölé, a Case 0-t pedig hagyd ki.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz sedyke #27372 üzenetére
Közben erre a kérdésre válaszoltam.
Azt is megteheted, hogy azt a bizonyos lapot az utolsó helyre teszed, és a for lap=2 to sheets.count végére írsz egy -1-et, akkor nem kell az If-es sor.
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
scott_free
senior tag
válasz Delila_1 #27368 üzenetére
huh, nem fogalmaztam akkor érthetően:
a táblázatban a "Sorszám" alapján a neveket be tudom íratni makró nélkül is a cellákba (FKERES-sel), a makrónak az lenne a feladata, hogy az adott cella értéke alapján hozzárendeljen egy pontértéket a mellette lévő cellához egy másik lapról.
--> pl. ha a B2 cella értéke "AA", akkor C2 legyen "2" (amit a piros táblázatból szed be - ez a "Nevek" lapon, a "NevekPontok" táblázatban van)
-
-
scott_free
senior tag
válasz Delila_1 #27378 üzenetére
hát hogy ha az eredeti érték megváltozik (nő a pontszám), akkor felülírja automatikusan, nem?
HA függvénynél nem tudok megadni olyat, hogy ha IGAZ, akkor ne tegyen semmit. (ne írja felül a cellában lévő értéket) - vagyis csak iterációval.
pl. C2-be ezt: HA(C2=0;J2;C2)esetleg még időbélyegzőt tudnék hozzárendelni a pontok változásához, de akkor meg nagyon bonyolult lenne a választó-hivatkozás
[ Szerkesztve ]
-
Delila_1
Topikgazda
válasz scott_free #27379 üzenetére
Az eseménykezelés csakis az A oszlopba írt érték változása következtében hívja meg a Beiras makrót. Ezután bármelyik pontszámot büntetlenül felülírhatod, azok más oszlopokban vannak.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
tag
Sziasztok!
A kérdésem a következő lenne.
Feltételes formázással szeretnék egy cellának piros vastag szegélyt adni, amennyiben a feltétel teljesül.
Tud valaki segíteni benne, hogyan tudom megvalósítani?
Köszi,
Pisti -
lappy
őstag
válasz coldfirexx #27381 üzenetére
A 2007-es excelben a következőképpen oldható meg:
Kezdőlap- Stílusok-Feltételes formázás-Új szabály
itt kiválasztod a formázandó cella kijelölése képlettel, majd a képletet beírod és alul van hogy formátum, itt lehet megadni hogy a cellát vagy a szegély milyen színűre tegye ha igaz. De csak vékony vonal van vastag nincs!Bámulatos hol tart már a tudomány!
-
tag
-
GreatGodzi
tag
Sziasztok!
Lenne egy nagyon furcsa problémám: Excel 2010-ből nyomtatva a beállított példányszám helyett a hatványát nyomtatja, pl: 1 példánynál rendesen 1 példányt nyomtat, de 2 példánynál már 4-et, 3-nál pedig 9-et és így tovább...
Minden Excel-es nyomtatási beállítást átnéztem, minden nyomtató beállítást átnéztem, de semmi nincs elállítva. Az egész Office-t újraraktam, de nem oldotta meg a problémát. Megpróbálom esetleg a nyomtató drivert lecserélni, hátha megoldja, bár Excel-en kívül mindenből jól lehet nyomtatni, elvileg ez nem segítene.Ha valaki találkozott már ezzel a problémával, és tudja a megoldást, annak megköszönném, ha ezt leírná.
-
scott_free
senior tag
válasz Delila_1 #27380 üzenetére
hát, valahol elvesztettem a beszélgetés fonalát :/
cserébe egy újabb kérdés:
azt hogyan lehet megoldani, hogy ha újraszámolódik egy cella tartalma, az indítson el egy makrót az adott soron?
tudom, hogy van a Worksheet_Calculate() , de ott hogyan kell megadni, hogy mely cellákat figyelje?[ Szerkesztve ]
-
Delila_1
Topikgazda
válasz scott_free #27387 üzenetére
Próbáld már meg magát a feladatot, a megoldástól függetlenül leírni. Ha ... ide beírok ...-t, akkor ... itt ... ez történjen.
Azt hiszem túlbonyolítod a megoldást.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
-
sedyke
tag
válasz Delila_1 #27392 üzenetére
Eleg nagy munkafuzet, 17MB, 33 munkalappal.
Eddig az osszesitom a masodik volt, de atraktam az elso helyre. A ket munkalap, amit ki szeretnek hagyni a keresesbol, a 29. es 33. (leszamoltam 3x).A leirasod alapjan igy egeszitettem ki. Fut a makro, a problema annyi, hogy megis minden egyes sorba beirja, hogy az adott termek hasznalatban van, pedig ha kihagyna a ket szoban forgo lapot, akkor nem lenne.
Sub Van_e()
Dim talal, sor As Long, usor As Long, nev, lap As Integer
Dim WS As WorksheetSet WS = Sheets(1)
usor = WS.Range("A" & Rows.Count).End(xlUp).Row
For sor = 4 To usor
nev = WS.Cells(sor, "A")For lap = 1 To Sheets.Count
If lap = 29 Or lap = 33 Then Exit For
Sheets(lap).Select
Set talal = Cells.Find(nev, LookIn:=xlValues, lookat:=xlWhole)
If talal Is Nothing Then
GoTo Tovabb
Else
WS.Cells(sor, "W") = "in use"
Exit For
End If
Tovabb:
Next
Next
End Sub -
Delila_1
Topikgazda
Új hozzászólás Aktív témák
- Hálózatokról alaposan
- Azonnali alaplapos kérdések órája
- Házimozi belépő szinten
- Sokat fogyaszt az AI, egyre több az adatközpont, kell az atomenergia
- Alapértelmezett konfiguráción sok Core CPU-nak lehet stabilitási gondja
- Autós topik látogatók beszélgetős, offolós topikja
- Autós topik
- Milyen notebookot vegyek?
- Path of Exile (ARPG)
- Fejhallgató erősítő és DAC topik
- További aktív témák...
- Steam, Windows, Origin kulcsok, előfizetések közvetlenül a kiadótól, a LEGJOBB ÁRON!
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Windows, Office licencek a legolcsóbban, egyenesen a Microsoft-tól - 2990 Ft-tól!
- Steames kulcsok jó áron eladóak!
- AKCIÓ! - STEAM kulcsok /Anuchard, Aragami, Children of Morta, stb. - 2024.04.17.
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest