-
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
-
Fferi50
Topikgazda
Szia!
Ha egy cellát szúrsz be az A oszlop elejére, akkor a képlet
=HA(MARADÉK(SOR();2)=0;SZÖVEG(SOR()/2;"###")&"/1";SZÖVEG(SOR()/2-1;"###") &"/2")
ha kettőt akkor=HA(MARADÉK(SOR();2)=1;SZÖVEG(SOR()/2-1;"###")&"/1";SZÖVEG(SOR()/2-1;"###") &"/2")Ha még több sor lenne, akkor felváltva próbáld két képletet, a -1 helyére a beszúrt sorok számával variálni.
Üdv.
-
Fferi50
Topikgazda
Szia!
A oszlopban a képlet:
=HA(MARADÉK(SOR();2)=1;SZÖVEG(SOR()/2;"###")&"/1";SZÖVEG(SOR()/2;"###") &"/2")B oszlop első két cellájába beírod: '111 és '201 vagy =Szöveg(111;"###") és =Szöveg(201;"###")
Majd a B3 cella képlete: =SZÖVEG(B1+1;"###")
és ezt a képletet húzod végig az oszlopon.Üdv.
-
Fferi50
Topikgazda
Szia!
Mit szeretnél látni a cellában, magát a kifejezést 1/1,1/2 stb., vagy az eredményt?
A további sorokban 3/1,3/3, 4/1, 4/4 vagy 3/1,3/2,3/3,4/1,4/2,4/3,4/4?Mindkét esetben szerintem csak makróval lehet megoldani, ha közvetlenül a cellába szeretnéd a képletet, másik cella használata nélkül.
Segédoszlop felhasználásával talán működhet a dolog szerintem képlettel is.Üdv.
-
Fferi50
Topikgazda
válasz
marchello1
#32718
üzenetére
Szia!
A diagram tipusa: terület diagram (egszerű). A sorozatok sorrendjét úgy állítsd be, hogy az első sor legyen a 4., a második sor a 3. a harmadik sor a 2. és a negyedik sor az 1. a diagramon (mivel az 1. van leghátul és a 4. lesz legelöl a rajzon). A terület diagramnak ebben a formájában ugyanis az elől levő sorozat takarja a hátrább levőket, így a harmadik és negyedik sor azonossága miatt csak az egyiket látod.
A rajzterület színét is állítsd be a neked megfelelőre. Ez a szín fog kilátszani ott, ahol a sorozatok nem fedik le.
Nézd meg légy szíves, hogy az adataid formája idő-e (mert lehet, hogy szöveg). Ha szöveg, akkor valamilyen módon át kell alakítanod számmá és idő formátummá (külön kezelve a kettőspont előtti és utáni részt - az idő ábrázolásról a 32715 hozzászólásomban írtam).Ha az adataid idő adatok, akkor a függőleges tengelyt is tudod idő formátumúvá alakítanod (tengely formázása - szám - idő vagy egyéni) valamint tudod a minimum-maximum értéket is szabályozni (ne felejtsd el, hogy itt is csak egynél kisebb törtszámok lehetnek!).
Remélem sikerül!
Üdv.
-
Fferi50
Topikgazda
Szia!
Egy segédoszlop első cellájába beteszed az alábbi képletet:
=év(dátumoszlop első cella)
Ezután a képletet végighúzod az oszlopon. Kijelölöd az oszlopot - másolás - irányított beillesztés értéket.
A rendezést errre az oszlopra végzed el (természetesen az egész listát kijelölve).Üdv.
-
Fferi50
Topikgazda
válasz
TrollBalint
#32713
üzenetére
Szia!
Próbáld ki ezeket a tömbképleteket:
G2 cella:=KICSI(HA($A$2:$A$7=F2;1;100)*1*($B$2:$B$7);1)
H2 cella:=MAX(($A$2:$A$7=F2)*1*($C$2:$C$7))
Ezután az oszlopokon lehúzod az adataid végéig.
(Tömbképlet bevitele: Shift + Ctrl + Enter)Üdv.
-
Fferi50
Topikgazda
Szia!
Az Excel a dátumot és az időt lebegőpontos számformátumként tárolja és értelmezi, ahol az egész rész az 1900. január 1-től eltelt napokat (dátumot) , a törtrész a napon belüli időt (órák, percek stb.) jelenti.
Tehát 18,55, amit te 18 és fél percként szeretnél látni az 1/(24*60) * 18,55 képlettel alakítható át olyan számmá, amit az Excel perc, másodper időként értelmez. (1 nap 24 óra, 1 óra 60 perc 1 perc 60 másodperc az átváltás természetesen.)
Ezután a cellaformázást alakíthatod [pp]:mm formátumra pl.Üdv.
-
Fferi50
Topikgazda
válasz
Declare
#32697
üzenetére
Szia!
Az alábbi makrót okoskodtam össze, feltétel, hogy minden S. Titel előtt a G oszlopban legyen Titel:
Sub osszeado()
Dim kezdrng As Range, vegrng As Range, ws1 As Worksheet, celrng As Range, elsocim As String, gewerkrng As Range
Set ws1 = ActiveSheet
'megkeressük az első S. Titel cellát:
Set vegrng = ws1.Columns("G").Find(what:="S. Titel", LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlNext, after:=Range("G1"))
elsocim = vegrng.Address 'megjegyezzük a címét, mert itt kell leállítani
Do While Not vegrng Is Nothing
'megkeressük a kezdő sort
Set kezdrng = ws1.Columns("G").Find(what:="Titel", LookIn:=xlValues, lookat:=xlWhole, after:=vegrng, searchdirection:=xlPrevious)
If kezdrng.Row < vegrng.Row Then 'ha kisebb mint az S. Titel helye, akkor összeadjuk
vegrng.Offset(0, -1).Formula = "=Sum(" & kezdrng.Offset(1, -1).Address & ":" & vegrng.Offset(-1, -1).Address & ")"
End If
'következő S. Titel
Set vegrng = ws1.Columns("G").Find(what:="S. Titel", LookIn:=xlValues, lookat:=xlWhole, after:=vegrng, searchdirection:=xlNext)
If vegrng.Address = elsocim Then Exit Do 'ha visszaértünk az elsőhöz, kilépünk
Loop
'megkeressük az első S. Gewerk cellát:
Set vegrng = ws1.Columns("G").Find(what:="S. Gewerk", LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlNext, after:=Range("G1"))
elsocim = vegrng.Address: Set gewerkrng = Range("G1") 'megjegyezzük a helyét és a lehetséges első cellát
Do While Not vegrng Is Nothing
'megkeressük az első S. Titelt a Gewerkben
Set kezdrng = ws1.Columns("G").Find(what:="S. Titel", LookIn:=xlValues, lookat:=xlWhole, after:=vegrng, searchdirection:=xlPrevious)
Set celrng = kezdrng
Do While Not kezdrng Is Nothing
If kezdrng.Row > gewerkrng.Row Then ' ha benne van a tartományban
If kezdrng.Row < vegrng.Row Then ' és oda tartozik, akkor bevesszük az összesítésbe
Set celrng = Union(kezdrng, celrng)
Else
vegrng.Offset(0, -1).Formula = "=Sum(" & celrng.Offset(0, -1).Address & ")" 'ha nincs benne, akkor beírjuk az összesítő képletet
Exit Do
End If
Else
vegrng.Offset(0, -1).Formula = "=Sum(" & celrng.Offset(0, -1).Address & ")" ' ha már az előző Gewerkhez visszaértünk, akkor beírjuk az összesítő képletet
Exit Do
End If
'megkeressük a következő S. Titel cellát:
Set kezdrng = ws1.Columns("G").Find(what:="S. Titel", LookIn:=xlValues, lookat:=xlWhole, after:=kezdrng, searchdirection:=xlPrevious)
Loop
Set gewerkrng = vegrng ' a Gewerk területet változtatjuk
'megkeressük a következő S. Gewerk cellát:
Set vegrng = ws1.Columns("G").Find(what:="S. Gewerk", LookIn:=xlValues, lookat:=xlWhole, after:=vegrng, searchdirection:=xlNext)
If vegrng.Address = elsocim Then Exit Do 'ha visszaértünk az első találathoz, akkor végeztünk
Loop
MsgBox "A képleteket beírtam!", vbInformation
End SubElőször összesíti az S. Titel cellákhoz az adatot, majd az S Gewerk cellákét csinálja meg.
Remélem, jól fog működni, ha gond lenne, írj lsz.
Üdv.
-
Fferi50
Topikgazda
-
Fferi50
Topikgazda
-
Fferi50
Topikgazda
válasz
EmberXY
#32676
üzenetére
Szia!
A táblázat alá egy cellát betöltve (beírva) a cellára ráállva (akár nyíl, akár egér) a jobbra nyíllal át tudsz menni a mellette levő cellára és oda is írhatsz, a harmadik oszlopba ugyanígy. Ha az adatot nem enterrel ütöd át, hanem jobbra nyíllal hagyod el a cellát, akkor benne marad az üres cellában, nem ugrik le tovább.
Tehát a probléma akkor jelentkezik, ha egymás után több sort viszel be az első oszlopba és utána szeretnéd a üres cellákat kitölteni.
DE nem szeretném csak a magyarázatot adni, itt egy megoldás tervezet, amit a Sub - End Sub közé kell írni:Dim tbl As Variant
Application.EnableEvents = False
Range("AQ68").Value = 0
On Error Resume Next
For Each tbl In ActiveSheet.ListObjects
If Not Intersect(Target, Range(tbl)) Is Nothing Then
If Err = 0 Then Range("AQ68") = tbl.Name
If Not IsEmpty(Target) Then Target.End(xlDown).Offset(1, 0).Activate: Exit For
Err = 0
End If
Next
Application.EnableEvents = TrueEz azt csinálja, ha üres cellára léptél a táblázaton belül, akkor nem ugrik el a végére.
Üdv.
-
Fferi50
Topikgazda
válasz
Delila_1
#32673
üzenetére
Szia!
Esetleg előfordulhat, hogy valamelyik formos eseménykezelőben van egy Unload Form utasítás, ami miatt már nincs a form a memóriában.
Próbáld azt, hogy formnév.UjMT(.value/text). Én ilyenkor mindig beleírom a value/text stb. tulajdonságot is. (Tudom-tudom, alapértelmezett, de mégis, biztos ami rendőr alapon.
)
.
Üdv. -
Fferi50
Topikgazda
válasz
Declare
#32663
üzenetére
Szia!
"ilyenkor az ertek nem törlödik, hanem kicserelödik egy szóközre"
A Replace függvény Replacement paraméterét két idézőjelnek ("") kell megadni és nem idézőjelek között szóköznek!!! A két idézőjel az adott értéket üres stringre (semmire) cseréli.
Ebben az esetben viszont az Üres() függvény igaz értéket ad vissza a cellára.Üdv.
-
Fferi50
Topikgazda
válasz
EmberXY
#32661
üzenetére
Szia!
Szerintem elég, ha csak a jelenlegi kitöltött sorokat alakítod át most, hiszen automatikusan bővül a táblázat, ha új adatot viszel be a végére. Azaz nem kell fix 220 sor, elég, ha csak megfelelő "távolságot" tartasz a táblázatok között, hogy elférjenek a további adatok. A makró feltételezi, hogy nincsenek üres cellák a táblázat adott oszlopában.
Üdv.
-
Fferi50
Topikgazda
Szia!
Kijelölöd a C78 cellát, amibe beírtad a képletet. Ezután elhúzod jobbra egérrel, vagy kijelölöd az oszlopokat hozzá (beleértve a C78 cellát is) és Ctrl+J.
Több munkalapra egyszerre is megy a dolog. Kijelölöd a munkalap füleket Ctrl nyomva tartása mellett, ezután beírod a képletet a C78 cellába, elhúzod ameddig kell. A kijelölt munkalapokon is ott lesz a képlet a kijelölt sorokban.
Üdv.
-
Fferi50
Topikgazda
válasz
EmberXY
#32646
üzenetére
Szia!
"Működik, az a része rendben is van, hogy a táblázat legaljára áll, viszont amint új adatot írnék bele, és cellát váltok, rögtön újra elugrik,, egyre lentebb és lentebb, míg nem a legalsó táblázat alján megáll."
Ilyet nem lenne szabad csinálnia, hacsak össze nem érnek a táblázataid és így az adat bevitele után már az újabb táblázatra sikerül ugrania. Szerintem legalább két üres sornak/oszlopnak kellene lennie a táblázatok között. (Bár kipróbáltam, egy sor különbséggel, a beírás után a következő tábla fejléc sorára ugrott és nem lejjebb).
Nem lehet, hogy az a sor, amit utólag megváltoztattál, rossz helyen van?
Így kellene kinéznie:Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim tbl As Variant
Application.EnableEvents = False
Range("AQ68").Value = 0
On Error Resume Next
For Each tbl In ActiveSheet.ListObjects
If Not Intersect(Target, Range(tbl)) Is Nothing Then
If Err = 0 Then Range("AQ68") = tbl.Name: Target.End(xlDown).Offset(1, 0).Activate: Exit For
Err = 0
End If
Next
Application.EnableEvents = True
End SubÜdv.
-
Fferi50
Topikgazda
válasz
Declare
#32634
üzenetére
Szia!
Kicsit nem értem a kérdést. A Range.Find metódussal a cellák tartalmára tudsz keresni, nem a nevükre... Jelen esetben azokat a cellákat keresi, amelyeknek a tartalma "Position". Egyszerre csak egy tartalmat tudsz keresni - de a további paraméterek függvényében ez lehet a cella képletében, megjegyzésében vagy az értékében (LookIn), ill. a cella egész értékét vagy egy részét keresi (LookAt).
Az újabb szöveg keresését ismételten el kell indítani.
Figyelem, a LookIn és a LookAt paraméterek értéke "öröklődik" - ugyanúgy, mint az Excelben a Ctr+F keresésnél.
Üdv.
-
Fferi50
Topikgazda
válasz
EmberXY
#32630
üzenetére
Szia!
"el kell neveznem minden táblázatot?"
Amikor a beszúrás - táblázat átalakítást megcsináltad, akkor az Excel automatikusan adott neki egy nevet, ezt megtudhatod, ha a táblázat törzsét (fejléc nélkül) kijelölöd, mivel ekkor a szerkesztőléc mellett a bal oldalon megjelenik a neve. Ugyanitt a lenyílóban megláthatod, milyen nevek vannak az adott lapon.
Ezeket a neveket kell a feltételes formázásban az érvényesség képletbe beírni.
Miután OK vagy Alkalmaz gombot nyomsz, a név átváltozik az adott névhez tartozó tartományhoz és ezt látod a későbbiekben.Szerintem ennyi az egész.
Üdv.
-
Fferi50
Topikgazda
válasz
EmberXY
#32626
üzenetére
Szia!
Némi munkával és egy kis makróval megoldható a dolog.
A makró futásához elég sok előkészület kell, de szerintem megéri.
1. lépés: Ha nem kimutatások vannak a lapon, akkor minden "táblázatot" célszerű átalakítani Táblázattá a beszúrás táblázat menüpontban, a nevüket használjuk majd. Ha csak kimutatások vannak, akkor azok neve használható. Ha nem szeretnéd táblázat formában használni, akkor is minden részterületnek adj nevet légy szíves. Mindhárom esetet nevezzük most táblának.
2. lépés: Kinevezel egy cellát, amelyben a kiválasztott tábla nevét fogjuk megadni. Ezt természetesen elrejtheted, lényeg, hogy a használandó területen kívül legyen. Ez nálam az AQ68 cella volt.
3. lépés: Minden táblára egyenként feltételes formázást csinálsz az alábbiak szerint:
A formázandó cellák kijelölése képlettel, A képlet pedig:
=$A$68="Táblanév" formátumnak kijelölöd amit szeretnél látni pl. kitöltés zöld, érvényesség =Táblanév
Ha táblázattá alakítottad, vagy kimutatás, akkor a bővítésnél automatikusan bővül a terület.
4. lépés: A munkalap kódlapjára bemásolod az alábbi makrót (lapfül - jobb egérgomb - kód megjelenítése)Private Sub Worksheet_SelectionChange(ByVal Target As Range)
dim tbl as Variant
Application.EnableEvents = False
Range("AQ68").Value = 0' ide annak a cellának a címét írod, ahová a feltételes formázás jelzőjét tetted
On Error Resume Next
For Each tbl In ActiveSheet.ListObjects ' ha kimutatások vannak akkor Pivottables
If Not Intersect(Target, Range(tbl)) Is Nothing Then
If Err = 0 Then Range("AQ68") = tbl.Name: Exit For
Err = 0
End If
Next
Application.EnableEvents = True
End SubHa van kimutatás és általad átalakított táblázat is, akkor két ciklus kell egymás után, egy a ListObjects, egy másik pedig a Pivottables objektumokra. Ha még neveid is vannak(nem alakítottad táblázattá a tartományt, csak névvel láttad el, akkor az is külön ciklus és ott a névvel variálni kell, nem lesz jó rá a fenti sor).
Ha több munkalapodon is van hasonlóra szükség, akkor a névadást és a formázást minden lapon el kell végezned, a makrót viszont akkor a Thisworkbook kódlapjára kell beírni a következő két sor közé:
Alt+F11 - VBA projectet kibontod, ott a Thisworkbook -ra dupla katt - bal oldali lenyílóból Workbook - jobb oldali lenyílóból SheetSelectionChange, megjelenik az alábbi két sor.
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)End Sub
A makró és a megelőző munkád eredménye:
A hivatkozásra kattintva a megfelelő tábla átszíneződik a feltételes formázásnak megfelelően (ezért egy színűre, de akár különböző színűre is formázhatod a táblákat), ha a táblán belül kattint, vagy másik cellára lép, marad a formázás. Ha másik táblára kattint, akkor a másik tábla formázódik át, az előző formázása megszűnik. Ha táblán kívülre kattint, akkor megszűnik a formázás. Értelemszerűen akkor is megszűnik a formázás, ha visszaugrik a hivatkozás oszlopokra.Ezután nincs más hátra, mint makróbarát munkafüzetként elmenteni az egészet - kipróbálni és remélhetőleg örülni.
Remélem, sikerül megoldani. Ha bármi gondod lenne, csak írj lsz.
Üdv.
-
Fferi50
Topikgazda
Szia!
Próbáld a következőt meg:
Nyitva van a forrás és a cél munkafüzeted is
A diagramot átmásolod a forrás munkafüzetből a cél munkafüzetbe - így persze a hivatkozások a forrás munkafüzetre fognak mutatni, de a cél munkafüzetben:
Kapcsolatok menü - hivatkozások - kiválasztod a forrásra hivatkozást (lehet, hogy csak az az egy van)- váltás - utána kiválasztod a megjelent fájllistából a cél munkafüzetet, enter.
A hivatkozás átváltódik a cél munkafüzetre.
Erről meggyőződhetsz, ha kiválasztasz egy sorozatot és az állapotsoron nézed a képletét - a váltás nyugtázása után csinálj egy frissítést, ekkor látni fogod, hogy eltűnt a forrás munkafüzet a hivatkozásból.Üdv.
-
Fferi50
Topikgazda
válasz
Kalogenius
#32592
üzenetére
Szia!
Nem tudom, hogy valóban azonosak-e a nevek, vagy csak úgy néznek ki? Lehet bennük nem látható karakter.
Próbáld ki, hogy az egyik oszlopból a másikba átmásolsz egy nevet (másolás, irányított beillesztés -értéket). Ebben az esetben a feltételes formázásnak jeleznie kell, hogy egyformák.Ha ez nem történt meg, akkor valami grimbusz van vagy a feltételes formázásodban, vagy a munkalappal.
Üdv.
-
Fferi50
Topikgazda
válasz
bandus
#32591
üzenetére
Szia!
Két lehetőséged is van.
datuma="2016.01.05"
filenev=dir("*" & datuma & "*")
if filenev<>"" then
filemegnyitás
endif
vagy
filenev=dir(*.*)
if instr(filenev,datuma)>0 then
filemegnyitás
endifAz else ágat neked kell kitalálni hozzá - nyilván ciklusban fogod nyitni a fájlokat, vagy továbbmész, vagy hibaüzenetet adsz.
FIGYELJ rá, hogy a datuma nevű változó szöveg és olyan formában tartalmazza a keresett dátumot, ahogyan az a fájlnévben benne van.Üdv.
-
Fferi50
Topikgazda
Szia!
"a Match-ben a Lookup_array Range-re tudok valahogy dinamikusan hivatkozni, mint ahogy a Lookup_value-nál tettem?"
Természetesen, pl. változóként definiálod az adott területet és azt írod be:
Dim kereshely as Rangeset kereshely=Range("N:N")
hol = Application.Match(Cells(sor, "A") & Cells(sor, "B"),kereshely, 0)
A tartomány beállítását pedig szerintem már meg tudod oldani.Üdv.
-
Fferi50
Topikgazda
válasz
Kalogenius
#32570
üzenetére
Szia!
Ha a B1 cellába beírsz egy =DARABTELI(A:A;A1) >1 képletet és ezt végighúzod az oszlopon, megláthatod, hogy mely nevek szerepelnek egynél többször. Ez persze csak akkor igazán jó, ha a két névsorban külön-külön nincsenek azonos nevek. Ha viszont a >1 hasonlítást elhagyod a végéről, akkor számra szűréssel megnézheted, mely nevek ismétlődhetnek az egyes névsorokban.
Üdv.
-
Fferi50
Topikgazda
válasz
thomas50.000
#32557
üzenetére
Szia!
A formátumkód: #0":"# helyett: #0":"0
A # csak akkor ír számjegyet, ha nem 0 az érték, a 0 minden esetben megjelenik,
Üdv.
-
Fferi50
Topikgazda
Szia!
Közben meglett a HELP-ből Alt + De az igaz, hogy csak akkor látod, ha beállítottad a sortöréssel több sorba tulajdonságot.
Nekem úgy sikerült, hogy először beírtam a cellába a szöveget képletként:
="Első sor" & Karakter(10) & "Második sor"
Majd másolás, irányított beillesztés - értéket.
A sortörés csak úgy érvényesül, ha beállítod a cellaformázásban, hogy sortöréssel több sorba.Az így előállított sortörést ki tudod másolni (csak egy karakter!), utána be lehet szúrni a többi cellába a megfelelő helyre, úgy már működik anélkül, hogy képletet tennél bele.
Üdv.
-
Fferi50
Topikgazda
válasz
customer114
#32543
üzenetére
Szia!
A probléma 2 vagy 3 segédoszlop hozzáadásával valósítható meg:
Három segédoszlop esetén:
Az első cellák képlete:
F oszlop:=HAHIBA(SZÖVEG.KERES("X";B1)>0;0)*1*(HA(G1>0;MAX(INDIREKT("C"&G1&":C"&H1));0)=C1)*1
G oszlop:=HAHIBA(SZÖVEG.KERES("X";B1)>0;0)*1*SOR()
H oszlop:=HA(G1>0;HAHIBA(HOL.VAN(0;$G1:$G$21;0)+SOR()-2;0);0)
A G oszlop 2. cellájának képlete:=HA(HAHIBA(SZÖVEG.KERES("X";B2)>0;0)*1*SOR()=SOR();HA(G1>0;G1;SOR());0)A H oszlop képletében a $G$21 címnél kell vigyázni, ide az összes adatsornál legalább egy sorral nagyobb számot kell írni a helyes működéshez.
Az F és H oszlop képletei a 2. sortól, a G oszlop képlete a 3. cellától lehúzható.
Ezek után a feltételes formázás képlete a D oszlopra:
=F1=1A feltételes formázás működik akkor is, ha az F oszlop képletét a feltételes formázás képletéhez írod be a következőképpen:
=HAHIBA(SZÖVEG.KERES("X";B1)>0;0)*1*(HA(G1>0;MAX(INDIREKT("C"&G1&":C"&H1));0)=C1)*1=1
Így egy segédoszlop megspórolható
, cserébe a formázási képlet lesz bonyolultabb.A képen a D és E oszlop is formázva van, az egyik a rövid, a másik a hosszú képlettel.
Remélem, érthető és használható is. -
Fferi50
Topikgazda
válasz
customer114
#32541
üzenetére
Szia!
A példádból úgy látom, hogy a feladat az egymást követő X-eket tartalmazó B cellák mellé kell kiválasztani a C oszlopban levő legnagyobb számot.
Most értem vissza, kicsit gondolkodni kell rajta...
Üdv.
-
Fferi50
Topikgazda
válasz
customer114
#32535
üzenetére
Szia!
A szabály:
=HAHIBA(SZÖVEG.KERES("x";$B1);0)+(MAX($C$1;$C$2)=$C1)>1Ez csak akkor színez, ha B1,B2 cellában is előfordul az x.
A Max függvényt páronként kell beírnod, abszolút ($) címmel, mert egyébként mindig a 2 egymás után következő cellát nézné a C oszlopban.
Üdv.
-
Fferi50
Topikgazda
válasz
zoli1962
#32503
üzenetére
Szia!
Nem tudom, megfelel-e így, de a MA() függvény pontosan ezt teszi. Egyszer beírod, majd lehúzod a beírt számok mellé. Nap végén kijelölöd az egész adatsort - másolás - irányított beillesztés értéket, így rögzíted az értéket és másnapra nem fog megváltozni.
Makróval:
A munkalap kódlapjára:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column=1 Then
Application.EnableEvents = False
Target.Offset(0,1).Value=Date()
Application.EnableEvents = True
End If
End SubÜdv.
-
Fferi50
Topikgazda
válasz
blountex
#32489
üzenetére
Szia!
A második kérdésedre:
Ha jól gondolom, akkor az adott oszlopban szereplő számokat szorozni kell az oszlop első (x-edik) sorában megadott értékkel és összeadni.
Erre két lehetőség is van: (ha a szorzók az első sorban, a számok a B:D oszlopban vannak, eredmény az A oszlopban)
Képlet A2 cellába:
=$B$1*$B2+$C$1*$C2+$D$1*$D2
Majd ezt végighúzod az A oszlopon.
Vagy:
=Szorzatösszeg($B$1:$D$1;$B2:$D2)
Ezt húzod végig az A oszlopon.Üdv.
-
Fferi50
Topikgazda
válasz
RedHarlow
#32466
üzenetére
Szia!
A cella tartalmához ugyanúgy hozzáfűzheted a táblázat kódot is. Ha 3 sorod van egy cellában, akkor elejére <tr> végére </tr>.
Ha egy-egy "táblázat sor" van benne, akkor minden "első" (hárommal osztva maradék 1) elejére teszed a <tr> és minden harmadik (hárommal osztva 0) végére teszed a </tr>.Pl az F oszlopban, ha az adataid az első sorban kezdődnek, a képlet:
=ha(maradék(sor();3)=1;"<tr>";"") & E1 & Ha(maradék(sor();3)=0;"</tr>";"")Ha nem az első sorban kezdődnek a tételek, akkor a maradék kalkulációt kell hozzáigazítanod.
Üdv.
-
Fferi50
Topikgazda
válasz
thomas50.000
#32437
üzenetére
Szia!
Egyezésnél ilyen lehetőség nincs, viszont használlhatod a SZÖVEG.KERES vagy SZÖVEG.TALÁL függvényt szerintem, ahol van joker karakter lehetőség is.
Üdv.
-
Fferi50
Topikgazda
válasz
Sprite75
#32397
üzenetére
Szia!
Íme a makró:
Ellenőrzi, hogy ne szöveg legyen beírva, érvényes legyen a számérték amit beírtak, illetve rákérdez, hogy felülírható-e az egyszer már bevitt számérték. Beírja az utolsó módosítás időpontját az AZ oszlopba (tehát, ha sikeres az új érték beírása a cellába, akkor ír időpontot az AZ oszlopba, egyébként nem).Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range, ujertek As Integer
Set KeyCells = Range("C4:AY108") ' ez a vizsgálandó terület
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
Application.EnableEvents = False
If Not IsNumeric(Target.Value) Then
MsgBox "Nem számot írtál be, kérlek javitsd ki!", vbCritical, "Ellenőrzés"
With Application
.Undo
.EnableEvents = True
End With
Exit Sub
End If
If Target.Value < 0 Or Target.Value > 300 Then
MsgBox "Ez az érték nem felel meg a követelményeknek: " & Target.Value, vbCritical, "Ellenőrzés"
With Application
.Undo
.EnableEvents = True
End With
Exit Sub
End If
ujertek = Target.Value
Application.Undo 'visszaállítjuk a változás előtti értéket
If Target.Value >= 1 And Target.Value <= 300 Then 'ha a régi érték jó
If MsgBox("A(z) " & Target.Address(rowabsolute:=False, columnabsolute:=False) & " cella már tartalmazott egy helyes értéket: " & Target.Value & vbLf & "Kicseréli erre: " & ujertek, vbYesNo, "Ellenőrzés") = vbYes Then
Target.Value = ujertek
End If
Else
Target.Value = ujertek
End If
Cells(Target.Row, 52).Value = Time
Application.EnableEvents = True
End If
End SubÜdv.
-
Fferi50
Topikgazda
válasz
Sprite75
#32384
üzenetére
Szia!
A Worsheet_SelectionChange eseménykezelőbe az End Sub előtti End With elé írd be
.Activate
Ezután használhatod ezt az eseménykezelést:Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range, ujertek As Integer
Set KeyCells = Range("C4:AY108") ' ez a vizsgálandó terület
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
ujertek = Target.Value
Application.EnableEvents = False
Application.Undo 'visszaállítjuk a változás előtti értéket
If Target.Value >= 1 And Target.Value <= 300 Then 'ha a régi érték jó
MsgBox "A(z) " & Target.Address(rowabsolute:=False, columnabsolute:=False) & " cella már tartalmazott egy helyes értéket: " & Target.Value, vbCritical, "Ellenőrzés"
Else
If ujertek < 1 Or ujertek > 300 Then 'ha a beírt új érték nem jó
MsgBox "Ez az érték nem felel meg a követelményeknek: " & ujertek, vbCritical, "Ellenőrzés"
Else
Target.Value = ujertek
End If
End If
Application.EnableEvents = True
End If
End Sub
Szépséghibája, hogy nem áll vissza arra a cellára, amelyikbe az értéket írták be, hanem mindig abba az irányba "ugrik", amerre a cellából kiléptek (hiszen többféle módon - pl. enter,tab, nyíl billentyűk - is el lehet hagyni a cellát).Üdv.
-
Fferi50
Topikgazda
válasz
Sprite75
#32380
üzenetére
Szia!
Sajnos, amint makró módosítja egy cella tartalmát, azonnal "elvész" a visszavonási automatizmus az Excelben... gondolom azért, mert 2 különböző módszerű eljárásról van szó.
Elvileg nem lehetetlen a változtatások nyomon követése makróban és ehhez kapcsolódóan saját makrót írni a visszavonásra - saját parancsgombbal ill. billentyű kombinációval - de most sajna nincs energiám hozzá, hogy belefogjak. Hátha valakinek van már ilyen megoldása korábbról vagy talonban.Üdv.
-
Fferi50
Topikgazda
válasz
DeFranco
#32252
üzenetére
Szia!
A ciklusok, pláne ennyi egymásba ágyazva, bizony lassúak.
Javaslom, hogy az állapotsorba írasd ki, hogy hol jár a program (Application.Statusbar=" itt járok"),
illetve a ciklusokba tedd be a DoEvents utasítást valahova, ennek eredményeként meg tudod állítani a program futását a Ctrl+Break billentyűvel. Egyébként sajnos képes teljesen "lefagyást" produkálni.Üdv.
-
Fferi50
Topikgazda
Szia!
Excel 2010-es verziója óta elérhető a cellák tényleges színe, ezt be lehet állítani az elküldendő munkalapon, makróval:
Sub szines()
Dim wshuj As Worksheet, rngregi As Range, cl As Range
Set rngregi = Workbooks("eredeti").Sheets("eredeti").Munka1.UsedRange.SpecialCells(xlCellTypeAllFormatConditions) ' ide helyettesítsd be a forrás munkalap elérési útját
Set wshuj = Workbooks("uj").Sheets("uj") ' ide pedig az új munkalapét
For Each cl In rngregi.Cells
wshuj.Range(cl.Address).Interior.Color = cl.DisplayFormat.Interior.Color
Next
End SubElőször átmásolod az új munkalapra az adatokat értékként, formázva, majd lefuttatod a makrót.
Ha nem csak szinezés van, hanem mást is állítasz, akkor a DisplayFormat megfelelő tulajdonságait kell az adott cellához "átmásolni'. (pl. font.color, font.size stb.)
Üdv.
-
Fferi50
Topikgazda
Szia!
Mi a kérdés? Egy adott - feltételes formázású munkalapról adatokat másolnál egy másik munkafüzetbe és szeretnéd, ha a feltételes formázással megadott színekkel kerülne át (ott már nyilván a feltételes formázás nem érvényesülhet, hiszen az másik munkafüzet másik adatai alapján keletkezik.)?
Üdv.
-
Fferi50
Topikgazda
válasz
Mexildos
#32229
üzenetére
Szia!
Ezt a képletet próbáld meg ugyanazon táblában. Utána az eredményt átmásolhatod értékként, ahova szeretnéd.
A képlet tömbképlet, tehát Ctrl+Shift + Enter billentyűk egyidejű lenyomásával viheted be, az Excel kapcsos zárójelbe teszi majd.=BAL(A1;MAX((KÖZÉP(A1;SOR(A1:A100)-(SOR()-1);1)=" ")*SOR(A1:A100)-(SOR()-1)))Az adott cím az A1 cellában van, az A1:A100-ban nem számít, hogy mi van, csak a sor számára van szüksége a képletnek, viszont legalább olyan nagy legyen a vége, ahány betű előfordulhat a nevekben.
Üdv.
-
Fferi50
Topikgazda
válasz
b3n1t0
#32226
üzenetére
Szia!
A következő makró egy új munkalapra kibontja a sorokat, úgy hogy minden új sor után tesz egy üres sort, illetve a legelső sorba beírja az eredeti értékeket - ezt a sort el tudod hagyni, ha kitörlöd, nem okoz semmi problémát, megjegyzésben mellé írtam.
Sub kibonto()
Dim rngalap As Range, rngdatum As Range, wsh1 As Worksheet, wsh2 As Worksheet, xx As Integer, sor As Range, cl As Range
Set wsh1 = ActiveSheet
Set rngalap = Intersect(wsh1.UsedRange, wsh1.UsedRange.Parent.Columns("K:AH"))
Set wsh2 = Worksheets.Add(after:=Sheets(ActiveSheet.Name))
xx = 1
For Each sor In rngalap.Rows
sor.Copy Destination:=wsh2.Cells(xx, "K") ' ez az eredeti értéket tartalmazza, ha nincs rá szükséged akkor kitörölheted a következő sorral együtt
xx = xx + 1
Set rngdatum = wsh1.Range("AJ" & sor.Row & ":AQ" & sor.Row)
For Each cl In rngdatum.Cells
If IsEmpty(cl) Then Exit For
wsh2.Cells(xx, "K").Value = sor.Cells(1) + cl.Value
Range(wsh2.Cells(xx, "L"), wsh2.Cells(xx, "O")).Value = Range(sor.Cells(2), sor.Cells(5)).Value
Range(wsh2.Cells(xx, "P"), wsh2.Cells(xx, "AH")).Formula = "=int(" & sor.Cells(6).Address(external:=True, columnabsolute:=False) & "*" & cl.Offset(0, 8).Address(external:=True, rowabsolute:=True, columnabsolute:=True) & "/ 100)"
Range(wsh2.Cells(xx, "P"), wsh2.Cells(xx, "AH")).Value = Range(wsh2.Cells(xx, "P"), wsh2.Cells(xx, "AH")).Value
xx = xx + 1
Next
xx = xx + 1
Next
End SubÜdv.
-
Fferi50
Topikgazda
válasz
Bjørgersson
#32198
üzenetére
Szia!
Próbáltam, de úgy pl. a 11:00-ból 0,46-ot kapok.
Ami teljes mértékben egyezik is az Excel dátum/idő tárolási szabályaival, ami a következő: A dátumot/időt az Excel számként tárolja, az egész rész a dátumszámolás kezdetétől eltelt napokat jelenti, a törtrész pedig a napon belüli időt 24 órás napra vetítve.
Tehát az előző hsz-ban helyesen tetted, hogy az időt (azaz a törtrészt) megszoroztad 24-gyel. Arra viszont figyelni kell, ha napok is vannak, akkor (is) csak a törtrészt szabad szorozni (kivéve, ha a napokat is órákká szeretnéd alakítani)!Üdv.
-
Fferi50
Topikgazda
válasz
Mittu88
#32182
üzenetére
Szia!
Nem tudom, hogy az Office újratelepítés segíthet-e. Erre mondják, hogy próba-szerencse. De az általad linkelt problémát sem oldották meg....
Valószínűleg a gép memóriája "zavarodik meg" időnként, ezért írja a típushibát. A parancsgombok is okozhatják - milyen típusúak? ActiveX vagy Munkalap vezérlők?Helyette inkább javasolnám a Ribbonra feltenni saját menüként - ha szeretnéd, tudok benne segíteni - a Custom UI programmal lehet megoldani.
Üdv.
Ui: csak estefelé leszek elérhető újra.
-
Fferi50
Topikgazda
válasz
Mittu88
#32179
üzenetére
Szia!
Sajnos csak tippelgetek (mint anno a rabbi a juhoknál
).
Milyen tartalma van annak a fájlnak, amiből megnyitod a másikat? Nem lehet, hogy nagy munkalap aktív éppen benne?
(Nekem volt olyan problémám régebben, hogy diagram makrós beszúrásánál nem adta hozzá a címet meg még egy-két dolgot makró futáskor, ha lépésenként futtattam, akkor viszont nem jött elő a hiba... Hosszú idő után az derült ki, hogy egy nagyon sok adatot tartalmazó munkalap után próbáltam beszúrni a diagramot és ez vitte "tévútra" a folyamatos futású makrót - valami miatt az aktív munkalapról akart adatot rakni a diagramba beszúráskor. Amint egy kis adattartalmú munkalap volt aktív, ez a probléma megszűnt.!)Nem tudom, hogy munkafüzet nyitáskor ilyen okozhat-e problémát.
Talán meg kellene próbálni egy teljesen üres, csak a makrókat (+ egy munkalap) tartalmazó munkafüzettel futtatni.Üdv.
-
Fferi50
Topikgazda
válasz
Mittu88
#32176
üzenetére
Szia!
Nem oka a hibának szerintem, de felesleges az Err változót definiálnod, mivel az rendszer függvény, ami az ErrObjectet adja vissza - alapértelmezett tulajdonsága a Number.
Talán az lehet a probléma, hogy sok időbe telik megtalálnia a fájlt a hálózaton, esetleg érdemes lenne megpróbálni, hogy előtte arra a könyvtárra ugrassz a makróban a chdir paranccsal.
A Type Mismatch hibát a wb változódra írja ki?
Üdv.
-
Fferi50
Topikgazda
válasz
Pikkolo^^
#32160
üzenetére
Szia!
Igen, meg kell nyitnod hozzá a Word alkalmazást az Excel makróban, abba kreálni egy új dokumentumot és az Excel tartalmat belemásolod.
Sub wordos()
Dim wrd As Object, wd As Document
Set wrd = CreateObject("word.application") 'Word nyit
wrd.Visible = True
Set wd = wrd.documents.Add 'új dokumentumot nyit
ActiveSheet.UsedRange.Copy 'kijelölöd a másolandó területet (pl. Range("A1:F25")
wrd.Selection.Paste 'ha képként szeretnéd beilleszteni, akkor PasteSpecial, paraméterekkel HELP segít
wrd.Activate
wd.Save 'itt meg kell adnod, hogy milyen néven mented
wrd.Quit ' Word bezár
End SubFigyelem! A makró futtatása előtt a VBA ablak Tools Menüjében a References menüpontban be kell jelölnöd a megfelelő Microsoft Word könyvtárat!!! (pl. 2016-os nál Microsoft Word 16.0 Object Library).
Üdv.
-
Fferi50
Topikgazda
válasz
bteebi
#32157
üzenetére
Szia!
Szerintem a dir() paranccsal végig tudsz menni az összes fájlon.
file=Dir("D:\Proba\lista_" & datum & "*.pdf"
do while file<>""
lista=lista & "," & file
file=dir()
loop
A listát használhatod egy cella érvényesítéséhez, amiből kiválasztható amelyiket meg kell nyitni, vagy csinálhatsz egy drop-down-t a munkalapon, aminek a forrása a lista.Ezen kívül lehet még olyan, hogy a FileDateTime(file) függvénnyel lekérdezed az adott fájl dátumát és a legfrissebbet kiválasztod megnyitásra.
Üdv.
-
Fferi50
Topikgazda
Szia!
Sajnos ezt csak úgy tudod megoldani, ha minden alakzathoz rendelsz egy makrót, ami alapján fogod tudni az adott alakzat nevét.
A közös makrót pedig a névvel paraméterezve hívod meg.
Pl.Sub makro_teglalap1
makro_kozos "teglalap1"
End Sub
Sub makro_kozos(ByVal neve As String)
Select Case neve
Case Is = "teglalap1"
'ide jön amit csinálnia kell
Case Is = "valami mas........"
'ide jön amit csinálnia kell
End Select
End SubAz egyenkénti makrót egyszer megírod, utána másolod és változtatod benne a neveket.
Üdv.
-
Fferi50
Topikgazda
válasz
Mittu88
#32128
üzenetére
Szia!
Thisworkbook.Worksheets("mlapnév").HpageBreak.Add "Adott cella" helyett
Thisworkbook.Worksheets("mlapnév").HpageBreakS.Add "Adott cella"
Az "Adott cella" egy Range objektum pl. worksheets("mlapnev").Range("A56") legyen.
A másik verzió pedig azért hibás, mert a Location objektum, ezért set és = formában kell értéket adni neki.
Set Thisworkbook.worksheets("mlapnév").HpageBreak(1).Location = "Adott cella"
Továbbá csak akkor működik, ha oldaltörés nézetben vagy.
Üdv.
-
Fferi50
Topikgazda
válasz
Ded&Dad
#32102
üzenetére
Szia!
"de bármit írtam a textboxokhoz nem akarta nekem kidobni a többi infót"
Valóban jó lenne látni, hogy mit sikerült eddig összehoznod, mivel többféle megoldás is lehetséges.
A textboxot hozzá lehet kötni cellához, akkor onnan veszi az értéket, de közvetlenül is lehet bele írni makróval - attól függ, milyen tipusú vezérlőt használsz.Üdv.
-
Fferi50
Topikgazda
válasz
dajkapeter
#32095
üzenetére
Szia!
Ha nem a tartomány első oszlopában kívánsz keresni, illetve a céloszlop előrébb van, mint ahol a keresés tárgya, akkor az INDEX - HOL.VAN függvény párost lehet használni, nem kell megvátoztatni az oszlopok helyzetét, Pl:
=INDEX(A:D;HOL.VAN(Keresem;C:C;0);2)
a B oszlopból írja ki azt az értéket, ami a C oszlopban keresett értékkel egy sorban van.Üdv.
-
Fferi50
Topikgazda
válasz
Nowitzki
#32075
üzenetére
Szia!
Bocs, egyrészt elírás is volt a képletben, mert Sheet1 helyett több helyen Sheet2 szerepelt, másrészt a képlet csak akkor ad helyes eredményt, ha azonos dbszám fordul elő minden tételből. Mea culpa.
Viszont a minta alapján egy lehetséges megoldás, amihez annyi szükséges - remélem megoldható -, hogy a Sheet1 munkalap adatai rendezve legyenek 1. szint termék, 2. szint dátum, 3. szint mennyiség (azaz D, L és K oszlop) szerint.
Ezután egy segédoszlopba beirod a következő képletet: (én az M oszlopba írtam, de gondolom ott lehetnek még adatok:
=HA(ÉS(D2=D1;K2=K1;L2=L1);0;HA(ÉS(D2=T(Sheet2!$A$35);L2>=Sheet2!$B$34;L2<=Sheet2!$C$34);K2;0))
Ez megy az M2 cellába, majd végig, ameddig adatok vannak.A Sheet2 munkalap A35 cellájába kerül a termék kód - itt vigyázni kell, mert a szám-szöveg ellentmondás bekavarhat - ha szövegként van a termék kódja a Sheet1 munkalapon, ide is szövegként kell bevinni.
A képlet a B5 cellába:
=SZUM(Sheet1!M:M)Ha változtatod a termék kódot, vagy a dátumot, természetesen változik az eredmény is.
Próbálok még vele ügyeskedni, de szerintem már ez is használható.
Üdv.
-
-
Fferi50
Topikgazda
válasz
Nowitzki
#32071
üzenetére
Szia!
A Szumhatöbb/Darabhatöbb függvények hányadosa lehet jó:
=SZUMHATÖBB(Sheet2!K:K;Sheet2!D:D;A35;Sheet1!L:L;">=" & $B$34;Sheet2!L:L;"<=" & $C$34)/DARABHATÖBB(Sheet2!D:D;A35;Sheet2!L:L;">=" & $B$34;Sheet2!L:L;"<=" & $C$34)
Ha A35 cellában van a cikkszám. A képlet pl. az E35 cellába és húzhatod lefelé az oszlopon.
Szóba jöhet még a kimutatás, ahol állíthatod a szűrőket tetszés szerint.
Üdv.
-
Fferi50
Topikgazda
válasz
alfa20
#32061
üzenetére
Szia!
Ha a munkalap visible tulajdonságát xlVeryHidden-re állítod, akkor semmilyen felhasználói listában, sem jobb egérgombos listában nem látszik.
Felfedni is csak makróból/VBA-ból lehet. Mivel a projekt közös használat esetén nem nyitható ki a VBA nézetben sem, ezért gyakorlott felhasználó is csak akkor tudja megnézni, ha a közös használatot feloldja - az pedig jelszóval (bár nem túl erősen, de) védhető.A közös használatnak - főleg a mentésekkor - lehetnek problémás helyzetei, erre figyelj oda nagyon.
Üdv.
-
Fferi50
Topikgazda
válasz
aviator
#32045
üzenetére
Szia!
"Összefüggő" irodalmat én még nem találtam (igaz,nem is nagyon kerestem) a Kovalcsik könyvön kívül. Sokat segít a makrórögzítés - bár abba elég sok felesleges művelet is bekerül, van pár jó fórum, A Microsoft MSDN, MS expertek fórumai.
Keresni kell a neten és találsz biztosan használhatót kérdés specifikusan.Üdv.
-
Fferi50
Topikgazda
válasz
aviator
#32043
üzenetére
Szia!
Az Excel nem tud ilyet, csak a VBA (a makró).
Makróban a Control.Parent tulajdonsága visszaadja, hogy melyik objektum az adott vezérlő "szülője".
Pl, ha egy Userformon létrehozol egy Frame-et, majd abba beleteszel vezérlőket, akkor
Userform1.Controls(1).Parent is Userform1.Controls(0) igaz értéket ad vissza, mert az első (0 indexű) vezérlő a Frame és a második (1 indexű) vezérlő a Framen belül van.Ezzel kicsit még ügyeskedve, minden vezérlőről megtudhatod, hova tartozik.
A vezérlők különböző tulajdonságai - mérete, színe, rajta levő vezérlők száma stb.szintén lekérdezhető a VBA-ban. Javaslom a HELP tanulmányozását.
Üdv.
-
Fferi50
Topikgazda
válasz
Pityke78
#32034
üzenetére
Szia!
Beállításoknál az Értékek beillesztése parancsot felteheted a menüszalagra egyéni menücsoportba, vagy a gyorselérési eszköztárba, ahol akkor aktiválódik, ha a másolás megtörtént.
A Ctrl+V letiltása, illetve "átprogramozása" makróval működik csak.
(Munkalap védelme esetén eldöntheted, hogy a zárolt cellák formázása lehetséges-e, vagy sem, viszont ebben az esetben nem lehet megváltoztatni a cella értékét.)
Üdv.
-
Fferi50
Topikgazda
válasz
bandus
#32028
üzenetére
Szia!
A probléma megoldásához tudnod kell, hogy az Excel a dátumokat és időt is számként tárolja, a következőképpen:
A szám egész része jelenti a dátumot ( 1900. 01. 01-től eltelt napok számát). míg a törtrész jelenti az időt. Ennek megfelelően 0,5 jelenti a 12 óra 0 percet. Ha a percet le szeretnéd valóságosan is vágni, nem csak a megjelenítésben, akkor a törtrészt kell megmanipulálni.
Az alábbi képlet az A1 cellában levő dátumértéket arra az órára kerekíti, amelyikben éppen van az időpont:
=INT(A1)+INT((A1-INT(A1))*24)/24
Tehát pl. 12:00-tól 12.59-ig a törtrész értéke 0,5 lesz - azaz 12 órát fog megjeleníteni a megfelelő cellaformátum (éééé.hh.nn óó).Üdv.
-
Fferi50
Topikgazda
válasz
w.miki
#32024
üzenetére
Szia!
Az a probléma, hogy a DARABHATÖBB függvény akkor számolja csak az értéket, ha minden feltételnek megfelel a cella.
Amikor a név a második oszlopban van, a függvény nem számolja hozzá, ezért azt külön meg kell számoltatni:
=DARABHATÖBB($A:$A;$G5;$D:$D;H$1)+DARABHATÖBB($A:$A;$G5;$E:$E;H$1)Üdv.
-
Fferi50
Topikgazda
válasz
Fferi50
#31998
üzenetére
Még egy kiegészítés az előbbihez:
Nagy eséllyel a képlet miatt az egyébként üresnek látszó cellákat a diagram nem fogja üresnek kezelni (még azután sem, hogy értékként visszamásoltad), emiatt még egy nem túl nagy kézi erőt igénylő műveletre van szükség:
Az adattáblára ráteszel egy autoszűrőt, majd minden egyes adatsornál (oszlopnál) kijelölöd az üres megjelölésű cellákat - egyben ütsz rájuk egyet a delete gombbal. Ezt végigcsinálva már valóban rendben lesz a diagram is. Természetesen utána törlöd a szűrőt.
(Sajnos azt nem tudom, miért van ez a mániája az Excelnek...
)Üdv.
-
Fferi50
Topikgazda
válasz
Zola007
#31993
üzenetére
Szia!
Ahhoz, hogy az általad kívánt forma kialakuljon, át kell szerkeszteni az adatokat, sajnos nem is egy, hanem több lépésben.
Először az időtengelyt kell közösíteni, amit a következőképpen javaslok:
Egy oszlopba egymás alá minden dátumot másolj le (ez egy sima másolás - beillesztés értékként - transzponálás ha az időértékeid sorokban vannak).
Ezután az Adatok -ismétlődések eltávolítása menüpottal eléred, hogy csak egy-egy időpont maradjon, majd rendezed az időt növekvő sorrendbe.
Ezzel megvan az "időskálád".
Az adatsorok hozzárendelése: Ha sorban vannak az adataid (mint a mintában), akkor a HAHIBA(VKERES) függvénnyel megkeresed az időponthoz tartozó adatokat.
Képlet pl. =HAHIBA($A$70;$A$1:$H$2;2;0);"") az első adatsornál, a második adatsornál a 3-4. sort használod és így tovább.
Ha minden adatsorod beképletezéssel megvan, akkor tanácsos a képleteket átalakítani értékké: kijelölöd az adatokat, másolás - irányított beillesztés értéket.Mostmár kész a diagramod alapadatainak tartománya. Ezután kijelölöd a tartományt, majd beszúrás, diagram - vonaldiagram jelölőkkel. Jobb egérgomb a diagramon - adatok kijelölése - rejtett és üres cellák gombra kattintasz - bejelölöd az adatpontok összekötése vonallal opciót, majd ok amíg ki nem lépsz a formázásból.
Elvileg ezzel meg is született a diagramod.

Üdv.
-
Fferi50
Topikgazda
válasz
alfa20
#31954
üzenetére
Szia!
Amint az előző példából láthatod, a munkalap változó maga "tudja", hogy melyik munkafüzethez tartozik, tehát a hozzá tartozó tartományok is tudják a teljes címet. Ebből következik, hogy nem szükséges külön definiálni munkafüzet változót is.
A példád szerintem a következőképpen "fordítható le":
"=VLOOKUP(RC[-1],'[" & makroWB & "]" & makroWB_netto & "'!C1:C2,2,0)""=VLOOKUP(RC[-1],"& lapSH.Range("C1:C2").Address(External:=True) & ",2,0)"Azt pedig Te döntöd el, hogy ez egyszerűbb, vagy bonyolultabb, mint amit eddig használtál.
Üdv.
-
Fferi50
Topikgazda
válasz
alfa20
#31951
üzenetére
Szia!
Nekem úgy tűnik, kevered a makrót (VBA-t) a képletekkel. Változókat csak VBA-ban tudsz használni, a Range.Formula és annak különböző változataiban tudod a képleteket megadni a definiált változókkal, de az bonyolultabb egy kicsit.
Pl. Range("A1").Formula="=" & lapSH.Range("C1").Address(External:=True) makró sor beírja az aktuális munkalap A1 cellájába az =[Munkafüzet1.xlsx]Munka1!$C$1 képletet.A változók használatának és érvényességi körének is megvannak a maga szabályai, ezt javaslom olvasd el a Help-ben.
Szerintem egyszerűbb, ha neveket használsz a munkafüzet1-ben és azt használod a munkafüzet2-ben.
De a példádban egyszerűen egy másik munkafüzet adott tartományára hivatkozol és ez működik akkor is, ha a hivatkozott munkafüzet éppen nincs nyitva(!).Üdv.
-
Fferi50
Topikgazda
Szia!
Ha van a sorokban egyedi azonosító,akkor meg lehet próbálni az FKERES, vagy a HOL.VAN függvényekkel megkeresni mindkét lapon a másikra vonatkozó értékeket.
Esetleg egy munkalapra összemásolni mindkét adathalmazt és feltételes formázással az ismétlődő értékeket színezni (2007--es Exceltől működik, de csak egy oszlopra).
Az ismétlődő adatokat el lehet távolítani - ez akár az egész sor ismétlődését is nézheti.Ha nincs egyedi azonosítód, akkor trükközni kell. Mindkét munkalapon az utolsó oszlop után össze kell fűzni az egész sor adatát és ez alapján kell keresni a másik munkalap hasonló oszlopában.
Az összemásolt adatokon is ezen az oszlopon kell az ismétlődést feltételes formázással színezni.Üdv.
Új hozzászólás Aktív témák
- Adobe Előfizetések - Adobe Creative Cloud All Apps - 12 Hónap - 15% AKCIÓ
- MEGA AKCIÓ! - Jogtiszta Windows - Office & Autodesk & CorelDRAW - Azonnal - Számlával - Garanciával
- Számlás!Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem.
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
)

)
