-
Fototrend
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
m.zmrzlina
senior tag
válasz Delila_1 #30343 üzenetére
Hogyan egészítem ki a terulet objektumváltozó deklarálását a példádban, hogy ne a ws_Kabelo munkalap objektumváltozón értelmezze a terulet változót hanem pl mindig az első munkalapon /Worksheets(1)/?
Még egy kérdés:
Van a kódszerkesztőben az a ficsör, hogy beírod kisbetűvel a parancssort és ha rendben van a szintax akkor a megfelelő kezdőbetűk nagybetűre váltanak.Az egy dolog, hogy ebben a sorban a range nem vált nagybetűre de ha beírom nagybetűvel akkor visszavált kisbetűre
[ Szerkesztve ]
-
bsh
őstag
válasz m.zmrzlina #30352 üzenetére
set terulet = worksheets(1).range(satöbbi)
a range kisbetűre váltás csak ebben a sorban van vagy mindenütt? esetleg tegyél be egy olyan sort, hogy "Dim Range" (nagybetűvel), és utána töröld ki ezt a sort.
-
Delila_1
Topikgazda
válasz m.zmrzlina #30352 üzenetére
Most egy kicsit rendesebben írom be a két makrót. Tegnap siettem, és eléggé el nem ítélhető módon nem dekraláltam a változókat, ráadásul az idézett makrókat nem jelöltem programkódként. Bocsi.
Sub Adatok()
Dim Balfelső As String
Balfelső = "$B$2": Végrehajtás Balfelső
Balfelső = "$C$9": Végrehajtás Balfelső
End Sub
Sub Végrehajtás(Balfelső)
Dim sorok As Long, oszlopok As Long, Jobbalsó As String, cella As Range, osszeg
Dim ws_Kabelo As Worksheet
Set ws_Kabelo = Sheets("Kabelo")
sorok = 5: oszlopok = 4: osszeg = 0
Jobbalsó = ws_Kabelo.Range(Balfelső).Offset(sorok - 1, oszlopok - 1).Address
For Each cella In ws_Kabelo.Range(Balfelső & ":" & Jobbalsó)
osszeg = osszeg + cella
Next
ws_Kabelo.Range(Jobbalsó).Offset(1) = osszeg
End SubAz osszeg változónál nem adtam meg a típust. Közel sem biztos, hogy összegezni akarsz a ciklusban, és ha mégis, nem tudom, hogy egész-, vagy lebegőpontos értékeid vannak-e.
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
A két képletben a B ill. az A elé tegyél $ jelet.
Mivel 2007 előtti verziójú Excelt használsz, nem tudod megadni a tartományt, de az A oszlop formátumát át tudod másolni a többi oszlopodra, pl. a formátumfestő ecset segítségével. Vagy másolod az A oszlopot, kijelölöd a többi oszlopot, jobb klikk, irányított beillesztés, formátum.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
EmberXY
addikt
Sziasztok!
Olyan összeadás függvényt tudok csinálni, ami egy teljes oszlopot ad össze, tartománytól függetlenül? Tehát ahogy új adat kerül az oszlopba, azt is hozzáadná. Meg lehet ezt oldani, vagy mindenképp meg kell adni egy tartományt, pl egy jó pár ezer celláig, ami egy ideig biztosan elég?
Köszönöm előre is.[ Szerkesztve ]
Up the Irons!
-
Delila_1
Topikgazda
-
-
-
Delila_1
Topikgazda
válasz EmberXY #30365 üzenetére
Te határozod meg, hogy a szűrt oszlop adataiból milyen értéket szeretnél képezni. Ezt a függvényszámmal határozhatod meg. A 9 adja az összeget, más számok a minimumot, maximumot, átlagot, darabszámot, stb. adják eredményül.
=RÉSZÖSSZEG(9;B:B)
[ 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.
-
Sweetraver
csendes tag
Sziasztok!
Egy képletre lenne szükségem, egy táblázathoz melyben szerepelnek kódok és nevek.
így néz ki kb.
A oszlop B oszlop C oszlop D oszlop
ABC111 Kiss Géza Szabó Pál BCE111
ABC112 Nagy Béla SZabó Pál BCE111
BCE111 Szabó Pál Horváth Tamás BCE211
BCE211Szóval az "A" oszlop a kódja az adott embernek, a "B" a neve, a "C" a felettesének a neve, a "D" pedig a felettesének a kódja.
Úgy van megcsinálva, hogy a C oszlop hivatkozik FKERES-sel a D-re, tehát ha megvan a kód akkor beírja automatán a C-t. Azonban szeretném kiváltani a D oszlop manuális beírását is. Vagyis a D-t hivatkozni az A-ra, tehát a D1 cellába azt beíratni, hogy =A3. Manuálisan elég sok idő lenne, mert nagy a táblázat.Tehát gyakorlatilag az lenne, hogy keresse meg a D oszlopban található kódot az A-ban és írja be a cellába, azt hogy A oszlop hányadik sor. (képletet) Ha lehet egyenlőségjellel.
Tudnátok ebben segíteni?
Vagy ha ezt nem lehet, akkor csak simán kiiratni a oszlop betűjét, sor számát?köszönöm
-
Delila_1
Topikgazda
válasz Sweetraver #30367 üzenetére
A D2 cella képlete =HAHIBA(INDEX(A:B;HOL.VAN(C2;B:B;0);1);"nincs"), ezt másold le a többibe alá.
EmberXY, mntn: szívesen.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
[HUN]Tyson
senior tag
válasz PETEE78 #30340 üzenetére
Szia Peti!
Biztos láma vagyok, végigcsináltam amit írtál, de nagyon nem az lett a végeredmény, amit szerettem volna.
Az A oszlopban van 7015 email címem, a B-ben 1078, a C-be pedig szeretném átmásolni azt a 7015-1078=5937db címet, ami A-ban szerepel, de B-ben nem.
Az általad leírt lépések után 988db címet adott, olyanok is vannak benne, amik szerepelnek B-ben, tehát biztosan nem jó így.
Excel 2010
-
Sweetraver
csendes tag
válasz Delila_1 #30370 üzenetére
Köszönöm, de sajnos ez így nem jó.
Lehet nem volt érthető amit írtam.
Szóval a D oszlop adatait alapból kézzel írom be. Ebből keresi meg a C-t FKERES-sel.
Vagyis alapból megvan az A, B és a D. Ezek kézzel lettek beírva, nincs semmi képlet sehol.
Ami még igaz, hogy minden D érték szerepel az A oszlopban. Ezért kézzel egy sima =a1-es hivatkozással be tudom hívni, de ehhez ugye meg kell keresnem az A oszlopban ugyanazt a kódot.
Ehhez kellene valami képlet., hogy automatán bekeresse. Azt szeretném látni a D1-es cellában, hogy =a2, illetve ennek az értékét. Ezt most is látom, csak képlet nélkül. Így ha változik a kód, akkor a D nem változik. Azt szeretném, ha átrom az A-ban, akkor a D-is változzon. Ehhez kellene a hivatkozás bele.Addig eljutottam, hogy ki tudom iratni azt, hogy egy adott cella melyik oszlop és sorban van.
Márcsak egy keresés kellene bele.
=KARAKTER(OSZLOP(A1)+96) --> oszlop betűje
=SOR(a1) --> sor száma
Majd hozzáírok egy = jelet és összefűz. ÍGy megvan a hivatkozás az adott cellára.
Csakhogy így nem keresi még meg az A-ból.köszi
-
m.zmrzlina
senior tag
válasz Delila_1 #30355 üzenetére
Köszi Delila és bocs hogy feleslegesen dolgoztál de nem igazán volt időm részletekbe menően leírni mit akarok. Most kivettem a teljes makróból azt a részletet ami problémás, hogy ne zavarjon hogy mit deklaráltam korábban és hogyan. Így néz ki:
Sub valogat()
Dim int_usor As Integer, int_uoszlop As Integer, int_vege As Integer
int_usor = 135
int_uoszlop = 50
int_vege = 2
'ThisWorkbook.Worksheets(1).Activate
Dim tartomany As range
Set tartomany = ThisWorkbook.Worksheets(1).range(Cells(2, 3), Cells(int_usor, int_uoszlop))
For Each cella In tartomany.Cells
If cella.Interior.ColorIndex = 6 And cella.Value <> "" And Application.WorksheetFunction.CountIf(Worksheets("csatorna").range("D2:D50"), cella.Value) = 0 Then
Worksheets("csatorna").Cells(int_vege, 4).Value = cella.Value
int_vege = int_vege + 1
End If
Next
End SubA makrórészlet feladata az hogy gyűjtse ki az első munkalap egy adott tartományában /range(Cells(2, 3), Cells(int_usor, int_uoszlop))/ a sárga cellaháttérrel jelölt cellákból az ott előforduló összes cellaértéket és készítsen egy listát a "csatorna" nevű munkalap D oszlopába. Természetesen ha a cellaérték a tartományban 50-szer fordul elő a listában akkor is csak egyszer szerepeljen. /ezért van a CountIf a feltételek közt/
A makró működik is ha a kikommentezett sor benne van. Ha azonban nincsen benne akkor a Set tartomany = stb... sornál Application-defined or object-defined errorral kiakad.
Szóval a kérdés az, hogy hogyan lehet megszabadulni a vizsgálandó tartományt tartalmazó munkalap aktiválásától?
Ja és a range ebben a munkafüzetben lévő összes előfordulásánál kisbetűs.
[ Szerkesztve ]
-
mntn
tag
Még lenne egy olyan kérdésem, hogy adott napra lehet feltételesen formázni? Oszlopban előre beírt dátumok (2016.02.05, 2016.04.03 ...), és amikor arra a napra érünk akkor jelölje színnel.
-
Delila_1
Topikgazda
válasz m.zmrzlina #30373 üzenetére
Sub valogat()
Dim int_usor As Integer, int_uoszlop As Integer, int_vege As Integer
Dim cella As Range, tartomany As String
int_usor = 135: int_uoszlop = 50: int_vege = 2
tartomany = Range(Cells(2, 3), Cells(int_usor, int_uoszlop)).Address
For Each cella In Sheets(1).Range(tartomany)
If cella.Interior.ColorIndex = 6 And cella.Value <> "" And Application.WorksheetFunction.CountIf(Worksheets("csatorna").Range("D2:D50"), cella.Value) = 0 Then
Worksheets("csatorna").Cells(int_vege, 4).Value = cella.Value
int_vege = int_vege + 1
End If
Next
End SubA tartomany változó string legyen, ne range. Nézd meg a for each sort is.
A Dim sorokat érdemes mindig a makró elejére tenni egy kupacba, akkor egy hosszabb makróban könnyű megtalálni. Betettem a cella változót is oda, azt nem dimenzionáltad.
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 Sweetraver #30372 üzenetére
Egyik mondatoddal felülírod a másikat.
"a D oszlop adatait alapból kézzel írom be"
"alapból megvan az A, B és a D"
" Azt szeretném látni a D1-es cellában, hogy =a2"Ha a D-be kézzel viszed be az adatot, akkor minek a képlet? Ha képlet van, minek a kézi bevitel?
Sehogy sem értem, mit akarsz csinálni, de a sort megadja a HOL.VAN függvény. Az oszlop betűjele pedig
=karakter(oszlop()+65)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 m.zmrzlina #30378 üzenetére
A címet adja vissza, mégpedig $ jelekkel együtt, fixen.
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 Sweetraver #30372 üzenetére
Próbálom kitalálni, mit is szeretnél. Ha a főnök nevét akarod beíratni a C oszlopba, akkor a C2 képlete
=INDEX(A:B;HOL.VAN(D2;A:A;0);2)
Ezt másolhatod lefelé.
[ 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.
-
bsh
őstag
válasz m.zmrzlina #30373 üzenetére
azért dobja a hibát, mert a Cells() nincs explicit kvalifikálva (vagy hogy híjják ezt magyarul?), így az az activesheet.cells()-re vonatkozik. magyarán kábé így kell használnod:
Set tartomany = ThisWorkbook.Worksheets(1).range(ThisWorkbook.Worksheets(1).Cells(2, 3), ThisWorkbook.Worksheets(1).Cells(int_usor, int_uoszlop))
a kisbetűs range-re meg írtam már, mit lehet ellene tenni. az nem segített?
-
ny.janos
tag
válasz EmberXY #30363 üzenetére
Delila válaszát kiegészíteném azzal, hogy egy lépéssel fejlettebb függvény a RÉSZÖSSZEG helyett az ÖSSZESÍT függvény, de csak a 2010-es és újabb excelben használható. Előnye, hogy az összegzendő adatok között akár hibaérték is lehet, nem kapsz hibaüzenetet az összeg helyett.
Hátránya mindössze annyi, hogy ránézve a függvényre magára, nem tudod, hogy az mit számol, ahhoz illetve magához a használatához is szinte elengedhetetlen a súgó. De az előnye mindenképpen a használata mellett szól.
Itt találsz róla egy leírást és videót. -
ny.janos
tag
válasz Sweetraver #30372 üzenetére
Ez a kérdés már engem is foglalkoztat, de Delilához hasonlóan én sem egészen értem, hogy mit szeretnél.
A leírásod alapján kézzel adod meg A B és D oszlopokat, a C-t pedig FKERES-sel határoztad meg (D-t keresed A oszlopban, eredményt a B-ből kéred). Eddig azt hiszem értem.
Azt írod azonban, hogy D oszlopot is keresni szeretnéd, a kérdés, hogy honnan? Merthogy annak értékét (főnök) a gép nem fogja kitalálni magától. Honnan tudná ez a szerencsétlen excel, hogy Kiss Gézának Szabó Pál a főnöke? Vagy van segédtáblád ehhez, amiről nem írtál? C-ből nem tudod a D oszlop kódját keresni, mert körkörös hivatkozást hozol létre… -
komyka
tag
Sziasztok! Egy olyan problémám lenne, hogy egy egy oszlopban lévő fix széles kóódot szeretnék több oszlopra tördelni. Pl.: xxxx-yyy-1 1.3 qqq. Az xxxx-yyy-1 és a qqq részekkel nincs gond, viszont az 1.3 valamiért dátumként jelenik meg, viszont nekem az eredeti formátumra lenne szükségem, lévén ez egy átmérő méret lenne. Mit csinálok rosszul?
-
ny.janos
tag
válasz komyka #30386 üzenetére
Ha a szövegből oszlopok menüpontot használod, akkor sajnos akkor is dátumként értelmezi a ponttal elválasztott értékeket, ha egyébként a sorbontás előtt szöveg formátumot adsz az oszlopoknak.
Ha fix hosszúságúak a kódjaid egyes elemei, akkor használd a szövegből oszlopok menü helyett a JOBB, BAL, és KÖZÉP függvényeket, azzal nem lesz ilyen gondod.A másik lehetőség, hogy a pontot cseréled vesszőre a HELYTTE függvénnyel (ha mind cserélhető, akkor a Ctrl+H billentyűkombináció gyorsabb), és utána bontod a sorokat oszlopokká.
[ Szerkesztve ]
-
csferke
senior tag
válasz Delila_1 #30358 üzenetére
A =SZUM(B:B) képlet a B oszlop adatait összegzi, az adatok darabszámától függetlenül.
Nálam ez a képlet =SUM(H4:H508)/1000, Excel 2007.
Ha átírom =SUM(H:H)/1000 akkor "Circular Reference Warning" hibát jelez
ha =SUM(H4:H)/1000 akkor #NAME? hibát jelezMit csinálok rosszul?
[ Szerkesztve ]
-
bsh
őstag
válasz m.zmrzlina #30392 üzenetére
beírsz a kódba egy olyan sort, hogy "Dim Range" (Range nagy betűvel), ekkor elvileg az editor automatán átváltja nagybetűsre az összes range-et. ezután ki is törölheted a "dim Range" sort. ennyi.
ez a kisbetűsség azért (is) lehet, mert valahol valamikor valamiért akár véletlenül definiáltál egy kisbetűs "range" nevű valamit, ami már lehet azóta nincs is benne a kódban, de még az editor emlékszik rá. ez okozhat problémákat is akár, mert kitudja így most mi az a "range"? (option explicit javasolt)
de ez csak egy tipp, egy próbát megér. -
EmberXY
addikt
válasz ny.janos #30384 üzenetére
Köszönöm, de egyelőre a RÉSZÖSSZEG tökéletesen megfelel, mert kizárólag számadatok kerülnek a cellákba, és nem is túl gyakran bővül a táblázat, ezért a hibalehetőség minimális.
Viszont lenne megint egy kérdésem, ami foglalkoztat: amikor egy cellához megjegyzést fűzök, akkor a dokumentum "készítőjének" nevét is odateszi, a megjegyzésben ki lehet törölni, de a megjelenítésekor ugyanúgy látszik az állapotsoron, hogy "ki írta" a megjegyzést, viszont a dokumentumot már nem ő kezeli, ezért zavaró. Ezt valahogy el lehet tüntetni? Egyáltalán a dokumentum ilyen jellegű adatait hol lehet megnézni?
Köszönöm előre is.Up the Irons!
-
Delila_1
Topikgazda
válasz EmberXY #30395 üzenetére
Eddig észre sem vettem ezt a státuszsori kiírást.
Különböző adatok lekérdezése a Munka1 lapra:
Sub adatok()
With Munka1.Range("A1")
.Offset(0, 0).Value = Environ("username") 'F felhasználó neve
.Offset(1, 0).Value = Environ("computername") 'PC neve
.Offset(2, 0).Value = Environ("userdomain") 'felh. domain
.Offset(3, 0).Value = Environ("sessionname") 'berendezés
.Offset(4, 0).Value = Environ("PROCESSOR_ARCHITECTURE") 'proci tip.
.Offset(5, 0).Value = Environ("PROCESSOR_IDENTIFIER") 'proci azonosító
.Offset(6, 0).Value = Environ("NUMBER_OF_PROCESSORS") 'procik száma
End With
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.
-
Delila_1
Topikgazda
válasz m.zmrzlina #30392 üzenetére
Változóként soha ne adj olyan nevet, ami VBA kulcsszó (for, with, range, on, else, string, not, do, loop ...).
A kulcsszavakat a VBE – ha az eredeti színbeállításodat tartottad meg – sötétkéken jeleníti meg.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 EmberXY #30398 üzenetére
Igen, makró, modulba kell helyezni. Erről olvashatsz a téma összefoglalóban, egy rövid bekezdésben.
Ha el akarod menteni a füzetet, makróbarátként (xlsm kiterjesztéssel) tedd.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Új hozzászólás Aktív témák
- Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Adobe Creative Cloud - 2024. 04. 05 - 2025. 04. 05-ig
- PC JÁTÉKOK (OLCSÓ STEAM, EA , UPLAY KULCSOK ÉS SOKMINDEN MÁS IS 100% GARANCIA )
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! LEGOLCSÓBB! Automatikus 0-24
- Canva Pro előfizetés - 1 éves