Hirdetés

2024. május 4., szombat

Gyorskeresés

Útvonal

Fórumok  »  OS, alkalmazások  »  Microsoft Excel topic (kiemelt téma)

Téma összefoglaló

Téma összefoglaló

  • Utoljára frissítve: 2023-11-13 08:31:56

LOGOUT.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.

Összefoglaló kinyitása ▼

Hozzászólások

(#29701) m.zmrzlina válasza coldfirexx (#29700) üzenetére


m.zmrzlina
senior tag

Szerintem a modulodnak amiben a kódod van az a neve, hogy "valasz". A kódban pedig van egy változó ugyanilyen néven.

Valamelyiket nevezd át!

(#29702) Batistuta7


Batistuta7
tag

Sziasztok

Kis segítséget szeretnék kérni.
Egy üzembe csináltam egy folyamatnaplót. Az utolsó oszlopban szeretném felvinni mindig az aktuális műszakban a gépek állásidejét. Olyan megoldásra gondoltam hogy ha az állásidő celléjára rákattintok és amit oda beírok az megjelenik ott plusz a kettes munkalapon megjelenik nap szerint egy másik táblázatban is, amiből rögtön egy diagramot is tudnék csinálni.Minden meg tudok csinálni , csak azt nem hogy hogy kell egy olyat cellát létrehoznom amibe ha beírok egy értéket akkor azt a másik munkalapra átírja a megfelelő nap megfelelő sorába.
linkelem a képeket ,úgy érthetőbb mit szeretnék.
előre is köszönöm a segítséget.
1
2

(#29703) Delila_1 válasza Batistuta7 (#29702) üzenetére


Delila_1
Topikgazda

Ha jól értem, az első lapra írod be az AC oszlopba a napi állásidőt az egyes gépekhez. Ezeket kell összesíteni a második lapon, ahol az A oszlop tartalmazza a gépek nevét, az első sor pedig a hét napját.

Fontos, hogy a 2 lapon megegyezzen a gépek neve, tehát ha az első lapon P1 a név, a másodikon is az legyen, nem 1.

Az első laphoz rendeltem egy eseményvezérelt makrót. Mikor beírod egy géphez az állásidőt, a második lapon a megfelelő géphez, és az aktuális naphoz beírja az értéket.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim WSO As Worksheet, sor, oszlop As Integer

Set WSO = Sheets("Összesítés")
If Target.Column = 29 And Target > "" Then
sor = Application.Match(Cells(Target.Row, 1), WSO.Columns(1), 0)
If VarType(sor) = vbError Then
sor = Application.Match(Cells(Target.Row - 1, 1), WSO.Columns(1), 0)
End If
oszlop = Application.Weekday(Date, 2) + 1
WSO.Cells(sor, oszlop) = WSO.Cells(sor, oszlop) + Target
End If
End Sub

A második lap J oszlopába betettem egy összesítést.
Nézd meg a csatolt füzetben a cellaformázást az első lap AC; valamint a második lap B:H és J oszlopában.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#29704) csongi


csongi
veterán

Sziasztok!
Az alábbit szeretném megoldani.

B1 cellába számoltatni
Ha h22= 2.csoport akkor g18*f7, ha h22= 4.csoport akkor g18*f8, ha h22= 6.csoport akkor g18*f9

Köszönöm!

(#29705) m.zmrzlina válasza csongi (#29704) üzenetére


m.zmrzlina
senior tag

=HA(H22="2.csoport";G18*F7;HA(H22="4.csoport";G18*F8;HA(H22="6.csoport";G18*F9;"")))

(#29706) m.zmrzlina


m.zmrzlina
senior tag

Az alábbi tartományt szeretném rendezni a következőképpen. Legfelülre azok a sorok melyeknél C és D oszlopban is van adat, alá ahol csak a C oszlopban van adat, legalulra ahol csak a D oszlopban van adat.

Hogy lehet ezt legegyszerűbben megoldani?

[ Szerkesztve ]

(#29707) sztanozs válasza csongi (#29704) üzenetére


sztanozs
veterán

Ennyi csoportnál szerintem már inkább choose:
=G18*CHOOSE(INT(LEFT(H22,2))/2,F7,F8,F9)

vagy Offset:
=G18*OFFSET(F7,(INT(LEFT(H22,2))/2)-1,0,1,1)

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#29708) sztanozs válasza m.zmrzlina (#29706) üzenetére


sztanozs
veterán

Adj hozzá egy E oszlopot (E1):
=(C1>"")*4+(D1>"")*2
és rakd az alábbi sorrendbe
E - csökkenő számsorrend
C - A -> Z
D - A -> Z

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#29709) csongi válasza m.zmrzlina (#29705) üzenetére


csongi
veterán

:R
sztanozs :R

(#29710) m.zmrzlina válasza sztanozs (#29708) üzenetére


m.zmrzlina
senior tag

Köszi. Ezt a módszert eddig nem ismertem.
:R

(#29711) Miv


Miv
tag

Sziasztok!

Adott egy kb. 100 munkalapot tartalmazó fájl. A feladatom az lenne, hogy egy új munkalapra kilistázzam a munkalapok nevét, és mindegyik mellé odaírjam pl. az adott munkalap A1-es cellájának az értékét.
Ez így elég ködös, de magyarázom: a munkalapok a dolgozók nevei, rajtuk a jelenléti ívük. Szeretnék egy listát, amin rajta lenne a dolgozók neve (=a munkalap neve), mellette pedig a jelenléti ívén lévő óraszám szumma cellájának (pl. A1 cella) értéke.
Megoldható valahogy? Nem igazán tudom, merre induljak el, amikor nem csak egy konkrét munkalappal akarok dolgozni, hanem sorba kellene venni az összeset, aminek nem tudom a nevét...

Minden segítséget köszönök!
miv

(#29712) sztanozs válasza Miv (#29711) üzenetére


sztanozs
veterán

Makróval a legegyszerűbb:
Sub Feltolt()
Dim s As Worksheet
Dim r(), ix
ReDim r(1 To ActiveWorkbook.Worksheets.Count, 1 To 2)
ix = 1
For Each s In ActiveWorkbook.Worksheets
If s.Type = xlWorksheet Then
r(ix, 1) = s.Name
r(ix, 2) = s.Cells(1, 1).Value2
ix = ix + 1
End If
Next
Set s = ActiveWorkbook.Worksheets.Add(Before:=ActiveWorkbook.Worksheets(1))
s.Range(s.Cells(1, 1), s.Cells(ActiveWorkbook.Worksheets.Count - 1, 2)).Value2 = r
End Sub

[ Szerkesztve ]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#29713) Miv válasza sztanozs (#29712) üzenetére


Miv
tag

Nagyon szépen köszönöm! Tökéletes!

(#29714) lizakattila


lizakattila
senior tag

Sziasztok!

Kicsit visszakeresve megtaláltam a számomra megfelelő megoldást (egy makró formájában, aminek a lényee, hogy, ha egy adott oszlop adott sorában lévő cellát kitöltök, akkor az A oszlop ugyanazon sorába írja be a most függvényt, és azt ne frissítse):

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
If Target.Value <> "" Then
Application.EnableEvents = False
Target.Offset(0, -1).Value = Now()
Application.EnableEvents = True
End If
End Sub

A kérdésem az lenne, hogy ebben mit kell módosítanom, ha azt akarom, hogy az "A" oszlopba akkor írja be a most függvényt, ha az "O" oszlopban lévő cellába írok be értéket?

"Ha próbára akarod tenni egy ember jellemét, adj neki hatalmat." - Abraham Lincoln

(#29715) Delila_1 válasza lizakattila (#29714) üzenetére


Delila_1
Topikgazda

Az

If Target.Column <> 2 Then Exit Sub

sorban a 2 helyett írj 15-öt, és a

Target.Offset(0, -1).Value = Now()

sorban a -1 helyett -14-et.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#29716) cs_dy


cs_dy
tag

Sziasztok!

Adott egy makró és adatbázis. Az adatbázis:
1. és a 3. oszlopban: pl nevek szerepelnek: De eltérnek.
a 2 és a 4-es oszlopban számok szerepelnek: pl. a nevekhez tartozó nyeremény

A különbséget akarom megtalálni. Ez a kód lefut de egyenlőre nem csinál semmit. A Cells-ek helyett a Range-el mindenhova "Nincs egyezést" tett.

Mi lehet a megoldása?

Köszönöm előre is a segítséget.

Sub Makró_hasonlító()
Dim i, j As Integer
i = 2
j = 2
Do Until j >= 883
Do Until i >= 883
If (Cells(i, 1).Value = Cells(j, 6).Value) And (Cells(i, 2).Value = Cells(j, 7).Value) Then
Range("I" & j).Value = "Van egyezés"
Else: Range("I" & j).Value = "Nincs egyezés"
End If
j = j + 1
If j >= 883 Then
Exit Do
End If
Loop
j = 2
i = i + 1
If i = 883 Then
Exit Do
End If
Loop
End Sub

AMD RYZEN 5 5600, 32 GB RAM, 1TB SSD, RTX 3060 TI

(#29717) sztanozs válasza cs_dy (#29716) üzenetére


sztanozs
veterán

Mi ez a kígyó kód? Hibák:
1) használj kód beillesztést
2) miért nem FOR cilkust használsz
3) miért kell hátul tesztelni (igazából nem is hátul, hanem ciklusban, ha elöl is tesztelsz
4) mindent letesztelsz mindennel. Vsz az a probléma, hogy az utolsó tesztelés nem ad vissza semmit, mivel a j. (jé-edik) mezőbe rakod a megjegyzést, nem az i.(í-edik) mezőbe.
5) Dim i, j As Integer - ez csak a j változót deklarálja Integerre, i az Variant lesz.

Sub Makró_hasonlító()
Dim i, j
For i = 2 To 833
Do
For j = 2 To 833
If (Cells(i, 1).Value = Cells(j, 6).Value) And (Cells(i, 2).Value = Cells(j, 7).Value) Then
Range("I" & i).Value = "Van egyezés"
Exit Do
End If
Next
Loop While False
Range("I" & i).Value = "Nincs egyezés"
Next
End Sub

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#29718) Maximusz


Maximusz
aktív tag

Sziasztok!

egy elég alap dolog okoz fennakadást számomra, és az a dühítő, hogy nem tudom mi lehet a gond.

A feladat:

A1-es cellában egy időpont: 09:33:33.912
A2-es cellában egy másik időpont: 09:33:34.877

a kettő közötti különbségre lenne szükségem másodpercben, de a "=A2-A1*86400" nem működik - szerintetek mivel tudnám ezt megoldani?

köszi

(#29719) Maximusz válasza Maximusz (#29718) üzenetére


Maximusz
aktív tag

persze zárójelben van a képlet

=(A2-A1)*86400

ami a hibát okozhatja a tized másodperc - de se vesszővel, se ponttal nem működik :(

[ Szerkesztve ]

(#29720) Delila_1 válasza Maximusz (#29719) üzenetére


Delila_1
Topikgazda

Nem kell szorozgatni. A képletet tartalmazó cella legyen A2-A1, a formátuma pedig [mm],000

Angol verziónál a vessző helyett pontot írj.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#29721) Maximusz válasza Delila_1 (#29720) üzenetére


Maximusz
aktív tag

köszönöm! - a szoszás -szerintem- mégis kell, mert másodpercben szeretném visszakapni a különbségeket, egy törtszámként.

(#29722) karlkani válasza Maximusz (#29721) üzenetére


karlkani
aktív tag

Pedig Delila_1 jól írja. A "végeredmény" formázását [m],000 vagy [S],000 adnám meg, program nyelvétől függően (előbbi magyar, utóbbi angol nyelvű excel esetén). Hülyén néz ki a 00,965 másodperc eredményként... :DDD

[ Szerkesztve ]

(#29723) MCGaiwer válasza MCGaiwer (#29581) üzenetére


MCGaiwer
addikt

[link]

hát végül nem sikerült boldogulnom a dologgal. Esetleg van bárki, aki bevállalná egy anonimizált táblával (vagy ha nem is megcsinálni, legalább ránézni, hogy értse mire lenne szükség)

Amazon.co.uk, £50 értékű Gift Card cserélhető/eladó

(#29724) Fferi50 válasza MCGaiwer (#29723) üzenetére


Fferi50
őstag

Szia!

"Egy olyan kimutatást kellene csinálnom, ami gombnyomásra összesíti az adott ember egész éves munkanapjait, és mutatja, hogy bizonyos hónapokban mennyit volt távol."

Próbálkoztál már a kimutatással? Nagyon sokféle lehetőséget rejt magában. Excel verzió függő a varázsló, de mindegyikben van (legalábbis 2010-ig).
Oldal mezőnek (vagy szűrőnek) felvenném a dolgozók nevét tartalmazó oszlopot.
Oszlopcimke az év, a hónap és a nap.
Lehet, hogy előtte a "fejléc" sorokat 3 szintűvé kellene tenni az előzőek szerint.

De ha felteszel valahova egy pár soros kitalált neveket tartalmazó táblát, biztosan lesz, aki gyakorlati példát is csinál számodra.

Üdv.

(#29725) MCGaiwer válasza Fferi50 (#29724) üzenetére


MCGaiwer
addikt

úgy van felépítve a táblázat, hogy nem igazán tudom normálisan összerakni a kimutatást. :(

Amazon.co.uk, £50 értékű Gift Card cserélhető/eladó

(#29726) Fferi50 válasza MCGaiwer (#29725) üzenetére


Fferi50
őstag

Szia!

Azért megmutatnád fals adatokkal, hátha mégis tudunk vele kezdeni valamit. Mert látatlanban biztosan nem fog menni...

Üdv.

(#29727) MCGaiwer válasza Fferi50 (#29726) üzenetére


MCGaiwer
addikt

Szia, anonimizáltam.

Onedrive_share

(nekem vmiért nem sikerül normálisan, de valószínűleg csak én vagyok a béna)

Amazon.co.uk, £50 értékű Gift Card cserélhető/eladó

(#29728) bteebi


bteebi
veterán

Sziasztok!

Van egy Excel file két munkalappal ("adat" és "forras"), az "adat" munkalapra szeretnék másolni a "forras" lapról úgy, hogy az "adat" 1. oszlopában lévő érték alapján bemásolok a 2. oszlopba egy értéket a "forras" lap 2. oszlopából, amihez az FKERES-t használnám. Mindkét munkalapon változó nagyságú tartomány van, viszont az "adat" 1. oszlopában szereplő érték a "forras" 1. oszlopában biztos, hogy megtalálható (és csak egyszer).

Sub kivalaszt()
Dim ar As String, lastrow As Integer, lr As Integer, sor As Integer
lastrow = Sheets("forras").UsedRange.Rows.Count
lr = Sheets("adat").UsedRange.Rows.Count
For sor = 2 To lr
ar = WorksheetFunction.VLookup(Sheets("adat").Cells(sor, 1), Sheets("forras").Range("A1:B" & lastrow), 2, False)
Sheets("adat").Cells(sor, 2) = ar

Erre run-time errort kapok (1004): "WorksheetFunction osztály VLookup tulajdonsága nem érhető el." Vajon mi lehet a hiba? Előre is köszönöm a segítségeteket! :R

[ Szerkesztve ]

Cancel all my meetings. Someone is wrong on the Internet.

(#29729) m.zmrzlina válasza bteebi (#29728) üzenetére


m.zmrzlina
senior tag

Lehet, hogy az adat lapodon lévő néhány cellában van egy-két nem kinyomtatható karakter (pl:szóköz vagy aposztróf). Próbáld ki, hogy lefut-e így:

Sub kivalaszt()
Dim ar As String, lastrow As Double, lr As Double, sor As Double
Dim tiszta As String
lastrow = Sheets("forras").UsedRange.Rows.Count
lr = Sheets("adat").UsedRange.Rows.Count
For sor = 2 To lr
tiszta = Application.WorksheetFunction.Trim(Sheets("adat").Cells(sor, 1))
ar = WorksheetFunction.VLookup(tiszta, Sheets("forras").Range("A1:B" & lastrow), 2, False)
Sheets("adat").Cells(sor, 2) = ar
Next
End Sub

[ Szerkesztve ]

(#29730) bteebi válasza m.zmrzlina (#29729) üzenetére


bteebi
veterán

Sajnos így is ugyanaz a hiba. Mindenesetre akkor - látszólag - szintaktikailag rendben van, amit írtam. Végiggondolom még egyszer, hogy mi lehet a hiba oka, de egyelőre elég tanácstalan vagyok, mert látszólag szerintem rendben van a kód.

Cancel all my meetings. Someone is wrong on the Internet.

(#29731) m.zmrzlina válasza bteebi (#29730) üzenetére


m.zmrzlina
senior tag

Mi történik, ha nem makróval, hanem egyszerű munkalapfüggvénnyel próbálod megoldani a problémát?

Írj fel próbára az adat munkalapodon egy egyszerű =FKERES()-t ezekre a tartományokra és nézzük meg mit ad vissza!

(#29732) bteebi válasza m.zmrzlina (#29731) üzenetére


bteebi
veterán

Úgy működik. Lehet, hogy megpróbálom kerülőúton úgy megcsinálni, hogy a képletet írja a cellába (és az majd visszaadja a helyes értéket), de jobb lenne, ha eleve csak az érték kerülne bele.

Cancel all my meetings. Someone is wrong on the Internet.

(#29733) poffsoft válasza bteebi (#29730) üzenetére


poffsoft
addikt

Option Explicit
Sub kivalaszt()
Dim ar As String, lastrow As Double, lr As Double, sor As Double

lastrow = Sheets("forras").UsedRange.Rows.Count
lr = Sheets("adat").UsedRange.Rows.Count
On Error Resume Next
For sor = 2 To lr
ar = Application.WorksheetFunction.VLookup(Sheets("adat").Cells(sor, 1), Sheets("forras").Range("A1:B" & lastrow), 2, False)
If Err.Number <> 0 Then ar = "'#HIÁNYZIK"
Sheets("adat").Cells(sor, 2) = ar
Next
End Sub

valójában nem találja a keresett adatot a vlookup...

[ Szerkesztve ]

(#29734) bteebi válasza m.zmrzlina (#29731) üzenetére


bteebi
veterán

Megvan a hiba, bocs. Természetesen user error, méghozzá a hülyébb fajtából B. A 3. sortól kellett volna kezdeni :W. A 2. sor üres volt, nem csoda, hogy nem működött. Most már viszont jó :DDD. Ahogy keresgéltem közben a megoldást, legalább annyi kiderült, hogy egy On Error Resume Next nem árt a makróba :).

Cancel all my meetings. Someone is wrong on the Internet.

(#29735) Delila_1 válasza MCGaiwer (#29727) üzenetére


Delila_1
Topikgazda

Feltöltöttem ide a fájlt, ahol a januári képleteket beírtam. Ennek alapján összeállíthatod a többi hónapot.

A Munka1 lap tartalmazza az idei ünnepeket (Ünnepek tartomány), és ledolgozandó szombati napokat (Mn tartomány).

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#29736) coldfirexx

Sziasztok!

Egy VBA kérdésem lenne.

Van egy kódom ami message box segítségével eldönti hogy automatikus vagy manuális lesz a folyamat:

Sub AUTOMANUAL()

valasz = MsgBox("Automatikusan futtatja a riportot?", vbYesNo)
If valasz = vbNo Then
Sheets("ZUTERT").Visible = True

Else
Sheets("ZUTERT").Visible = False
End If
End Sub

A probléma hogy a msg boxnal kiakad és a következő hibát dobja:

Másik fájlban ugyanez működik!

Mi lehet a baj?

[ Szerkesztve ]

(#29737) bteebi válasza coldfirexx (#29736) üzenetére


bteebi
veterán

Érdekes. Szemre jónak tűnt, ki is próbáltam, és nekem működött. Mondjuk neked is volt, ahol jó volt...

Cancel all my meetings. Someone is wrong on the Internet.

(#29738) bsh válasza coldfirexx (#29736) üzenetére


bsh
őstag

a modul neve ugyanaz (valasz) mint a változóé.

(#29739) MCGaiwer válasza Delila_1 (#29735) üzenetére


MCGaiwer
addikt

Szia, köszönöm szépen :R

A különböző jogcímen való távollétek szétszedésével próbálkozok még, remélem az már menni fog magamtól is :)

Amazon.co.uk, £50 értékű Gift Card cserélhető/eladó

(#29740) coldfirexx válasza bsh (#29738) üzenetére

Úristen!!!

És igen ez volt a baja. Egy életre megjegyeztem! :R :R

(#29741) Delila_1 válasza MCGaiwer (#29739) üzenetére


Delila_1
Topikgazda

Közben összeállítottam egy egyszerűbbet, egész évre.

Vigyázz, a 2. sorban 2013-as dátumok szerepeltek. Fontos, hogy az aktuálisak legyenek ott a feltételes formázás miatt, ami a hétvégék, ünnepnapok, és áthelyezett munkanapok hátterét adja.

Jövőre a Munka1 lapon át kell írnod a dátumokat, vagy csak folytatnod a listákat a 2016-osakkal.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#29742) Delila_1 válasza MCGaiwer (#29739) üzenetére


Delila_1
Topikgazda

Bevihetsz az F3:OB70 tartományra egy újabb formázást, ahol a nem ledolgozott napok karaktereit pirosra állítod, hogy jobban kiemelkedjenek a sok x közül. A képlet

=ÉS(SZÖVEG.E(F3);F3<>"x")

[ 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.

(#29743) bteebi válasza bsh (#29738) üzenetére


bteebi
veterán

Akkor miért van az, hogy időnként működik, máskor (más file-ban) meg nem? Nekem többszöri futás után se dobott hibát.

Cancel all my meetings. Someone is wrong on the Internet.

(#29744) bsh válasza bteebi (#29743) üzenetére


bsh
őstag

sehol nem írta, hogy "időnként működik". ha névütközések vannak, akkor ez sosem fog működni, mivel le sem fordul úgy a program. ha nincs ütközés, akkor lefordítja és akkor mindig működni is fog.
ebből következően ha más fájlban működik ugyanez a kód, akkor ott abban a fájlban a modul neve nem "valasz".

(#29745) poffsoft válasza bsh (#29744) üzenetére


poffsoft
addikt

Hanem mondjuk Module1

[ Szerkesztve ]

(#29746) m.zmrzlina válasza coldfirexx (#29740) üzenetére


m.zmrzlina
senior tag

Bocs, de te olvsod is ezt a fórumot, vagy csak írod? :DD

Erre a kérdésedre itt már egyszer megkaptad ugyanezt a választ. :K

(#29747) Delila_1 válasza m.zmrzlina (#29746) üzenetére


Delila_1
Topikgazda

Jogos! Én is emlékeztem rá, de lusta voltam kikeresni. :D

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

(#29748) MCGaiwer válasza Delila_1 (#29742) üzenetére


MCGaiwer
addikt

köszönöm szuperül működik!

Olyat hogy lenne érdemes csinálni benne, hogy ha egy munkavállaló év közben lép be, akkor a belépést megelőző időszakban ne jelenjen meg ledolgozott / távolléti időként?

Amazon.co.uk, £50 értékű Gift Card cserélhető/eladó

(#29749) Zimmy88


Zimmy88
tag

Sziasztok!

Egy két lépésből álló feladat gyorsítására szeretnék makrót, de még nem volt időm jobban elmélyedni a témában.
A feladat a következő:
Adott egy excel fájl, sok (30+) munkalappal. Első körben ezek egy részének (a B1 cellában található szöveg alapján szűrhető) megadott sorszámú soraiban a képletet értékre kellene cserélni (tehát nem az egész munkalapon).
A második lépés pedig ezeknek a (részben rögzített értékes) munkalapoknak a kimentése külön excel fájlba, az adott munkalap nevén.

Eddigi ismereteim szerint az alábbi részletet raktam össze (nem biztos hogy jó):

Sub SumIfFormulaToValue()

Rows("8:9,12:14,16:17,20:22,25:30,33:35,37:39,41:43,45:46,49:50,52:59,62:67,69:72,75:76,81:82,85:90,93:95,98:100,102:103,105:105,107:109,112:117,120:120,123:124,129:130,132:132").Select

For Each r In Selection.Areas
r.Select
Selection.Formula = Selection.Value
Next

End Sub

Előre is köszi a segítséget!

FZR2000 ®

(#29750) Delila_1 válasza MCGaiwer (#29748) üzenetére


Delila_1
Topikgazda

Az AK3 képlete legyen

=HA(DARABTELI(F3:AJ3;"x")>0;DARABTELI(F3:AJ3;"x");"")

az AL3-é pedig

=HA(DARABTELI(F3:AJ3;"<>x")-DARABTELI(F3:AJ3;"")>0;DARABTELI(F3:AJ3;"<>x")-DARABTELI(F3:AJ3;"");"")

Az AK3-ban próbáltam az egyszerűbbnek tetsző HAHIBA függvénnyel megoldani, de ledolgozott napok esetén az üres string helyett 0 értéket ad.

Figyelj, hogy a többi hónapban a megfelelő területet add meg a képletekben.

Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.

Útvonal

Fórumok  »  OS, alkalmazások  »  Microsoft Excel topic (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.