-
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
-
lenkei83
tag
Sziasztok!
Egy nagyon (számomra nem ) egyszerű dologra lenne szükségem VBA-ban.
Van 20 munkalapom, 10 x-re végzőik és 10 y-ra.
Szeretném egyszerre kijelölni csak az x végűeket.
Tudna valaki ebben segíteni?
köszi
-
lenkei83
tag
válasz Delila_1 #21522 üzenetére
Megoldottam máshogy...
Minden lapon van fix cellám ami nem változik:
Sub AR_APSELECT()
Dim SheetArray() As Variant
Dim ws As Worksheet
Dim indx As Integer
For Each ws In ThisWorkbook.Sheets
If ws.Range("A6") = "Company" Then
ReDim Preserve SheetArray(indx)
SheetArray(indx) = ws.Index
indx = indx + 1
End If
Next
If indx > 0 Then
Sheets(SheetArray()).Select
End If
End Sub -
lenkei83
tag
Sziasztok!
Mostanában kicsit elborult az agyam, és van pár elvetemült ötletem, ez is egy ilyen.
Van egy összesítő táblám a sample fülön A24:O47-ben és sok másik alatta amiből összesít.
A szum fügvényt kicsit megbolondítottam (Pl: C26 cella), így tudok összegezni úgy, hogy a kritérium mindig csak a szummázandó tábla feletti részben szerepel azonos elhelyezkedésben. Ez így ok.
Amit viszont még elméletben sem tudok lemodellezni (és itt nem VBA megoldásra lennék kíváncsi hanem excel képletre) az az, hogy ugyanezt hogyan tudom megcsinálni szumhatöbbel? Hogyan tudom megadni azt, hogy a sample fül A52 cellában lévő érték tartozzon kritériumként az A55:A66-hoz?
Egyébként a sales kivonat fülön (PL.: H oszlopában) kellene ilyet varázsolni, ahol már csak ez hiányzik a képletből.
Könnyű lenne ha minden sorba beraknám a kritériumot, de én ilyen mazochista huligán vagyok. Nem szeretem az egyszerű dolgokat.
Csinált már valaki ilyet? Lehet egyáltalán?
üdv
P.[ Szerkesztve ]
-
lenkei83
tag
válasz DeFranco #28901 üzenetére
Elvileg "'" nélkül is működik, ez akkor szükséges, ha szóköz van a munkalap nevében. Enélkül nem tudná értelmezni a munkalap nevében lévő szóközöket.
Példával szemléltetve:
szumhatöbb képlet "sample1" fülre hivatkozva
=SZUMHATÖBB(Sample1!B;G:G;1)szumhatöbb képlet "sample 1" fülre hivatkozva
=SZUMHATÖBB('Sample 1'!B;G:G;1)Mindkettőt szerkesztőlécről másoltam, csak a munkalap nevét változtattam egy szóközzel. Tehát az excel ezt dinamikusan kezeli, viszont ilyen "összerakott" képleteknél célszerű már az elején befoglalni a képletbe a későbbi problémák megelőzésének érdekében.
-
lenkei83
tag
-
lenkei83
tag
válasz DeFranco #28915 üzenetére
Jó a meglátás, jelen esetben sehogyan sem. A helyes képlet így nézne ki:
[...]INDIREKT("'" & $F2 & "'!$A$"[...]
Az első idézőjelek között egy aposztrófnak kell szerepelnie és a felkiáltójel előtt szintén, ami lefordítva így nézne ki amennyiben F2="sales":
'F2'!A2 --> 'sales'!A2A korábban taglalt képlet ilyen szempontból valóban hibás, viszont nem kellett kezelnem sem numerikus karaktereket, sem szóközöket a munkalapok neveiben, ezért nem is foglalkoztam vele.
üdv
-
lenkei83
tag
Azt esetleg tudja valaki, hogy logikailag ebben mi a hiba?
ActiveCell.Formula = "=sumifs(Range("F2") & "!" & "B", Range("F2") & "!" & "V:V", Range("E2"))"
-
lenkei83
tag
válasz Delila_1 #28938 üzenetére
Dehogy kell! Ez egy sima egysoros képlet lenne, független mindentől. Immediateban futtatható, csak valamit benézek a felépítésében és nem tudom felépíteni.
Ha lefutott a 3 projekt, megköszönném ha rá tudnál nézni. (Holnap is jó)
ActiveCell.Formula = "=sumifs(Range("F2") & "!" & "B:B", Range("F2") & "!" & "V:V", Range("E2"))"
-
lenkei83
tag
válasz poffsoft #28946 üzenetére
worksheets().name = range("f2").text -el
F oszlopban vannak a munkalapok nevei, range("f2").text-et írok be, azzal is működik.Ami csavar a dologban, hogy a munkalapok egymás alatt vannak egy oszlopban és ezeket kellene valahogy bepakolni képletbe. Mármint hogy ne mindig az F2-t vegye fel értéknek hanem az F(adott_sort)
Most így néz ki: (tudom, nem nagy dolog VBA-ban egy képletet megírni, utólag belegondolva nem is értem miért nem ment )
Set ws = Sheets(salesK_sheet.Range("F2").Value)
oszlop.Formula = "=sumifs('" & ws.name & "'!B, '" & ws.Name & "'!A:A, B2, '" & ws.Name & "'!V:V,E2)"A ws.name-et kellene valahogy változóba rakni adott sornak megfelelően.
Van erre valami ötlet?
-
lenkei83
tag
válasz sedyke #28954 üzenetére
Szia!
Akkor a szumhatöbb helyett ezt használd:
=SZUM(ELTOLÁS($A$16;HOL.VAN($A4;$A$17:$A$25;0);1;1;$D$1))
Az előző táblád struktúráját ha nem módosítottad, akkor a C4 cellába írd be ezt a képletet és húzd le az összes összegezendő kritériumhoz.Arra figyelj, hogy az összegezendő tartományt (ha szükséges) javítsd a képletben, mert a fenti csak A17:A25 közötti sorokat vizsgálja.
Valamint amit még észrevettem, hogy az első 3 hónap a tábla végén volt, ez remélem nem direkt volt így.
A módosított minta táblát itt találod:
[összegző]üdv
-
lenkei83
tag
válasz csadi0011 #28978 üzenetére
Ha biztosan nem lesz több az 56 sorból, és lehet beszúrni 2 oszlopot a táblába, akkor a pivot is jó. 2 kattintással frissíthető a tartalma, és szerkesztgetned sem kell.
Ha növekszik az elemszám, akkor bizony kicsit bele kell ásni magadat a pivot rejtelmeibe. Youtube-on rengeteg videó van róla.Ha belinkeled a táblát megnézem, és hátha közben másnak is eszébe jut valami más megoldás.
-
lenkei83
tag
válasz csadi0011 #28980 üzenetére
Jó reggelt!
Akkor képletelés helyett manuális megoldást tudok még javasolni:
Az excelnek van egy olyan funkciója, hogy ismétlődések eltávolítása
- Adatok/Adateszközök/Ismétlődések eltávolítása - menü alatt taláod.Működése elég egyszerű, kijelölöd a vizsgálandó tartományt, megnyomod a menüben az Ismétlődések eltávolítása gombot, itt látod a kijelölt tartomány oszlopát (választhatsz, hogy fejléccel vagy anélkül jelölted e ki), nyomsz egy OK-ot és kész.
De ez ugyanúgy kézi megoldás, mindig meg kell csinálni amikor változik az alaptáblád. Képlethez nem igazán találtam használható megoldást. (Ez nem azt jelenti, hogy nincs)
üdv
-
lenkei83
tag
Sziasztok!
A következő problémával találkoztam. Excel 2010 - HUN, diagram, kettő féle adatot tartalmaz, normál szám, és számított százalék, tehát képletezett, nem fix érték.
Ami a gondom, ha ráengedek egy worksheet.protect-et az egész munkafüzetre, a százalékok normál számokká változnak. (Unprotect-nél nem változnak vissza )
Nem tudtam még rájönni az okára, de adatsor formázáson, meg formátum csatolás a forráshoz stb... ezeken már túl vagyok. Azt is próbáltam, hogy csak az adatokat tartalmazó lapot nem védem le, de ez sem vált be.
Ha kézzel ráfrissítek a képletekre, akkor visszaáll a diában normális formátumba.Van valakinek ötlete?
üdv
P.[ Szerkesztve ]
-
lenkei83
tag
válasz twingos #29098 üzenetére
Szia!
Két kérdésem is van:
Az egyik, hogy melyik oszlopban kell figyelembe venni, az utolsó aktív sort?
A másik, hogy milyen exceled van? Ha 2007 vagy frissebb, akkor én így használnám a képletet:
=HAHIBA(HOL.VAN(V2;AB:AB;0);"") --> A V:V-t lecseréltem V2-re, feltételezve, hogy az első sor fejlécet tartalmaz:Ha 2007 előttit használsz akkor pedig hasonló mint a tiéd: =HA(HIBÁS(HOL.VAN(V1;AB:AB;0));"";HOL.VAN(V1;AB:AB;0))
A kód pedig ennyi lenne 2007-es excelt (vagy későbbit) feltételezve
Sub InsertFormula()
Range("X2:X" & Cells(Rows.Count, "A").End(xlUp).Row).Formula = "=iferror(match(V1,AB:AB,0),"""")"
End SubAmire figyelned kell: X2:X tehát az X oszlop második sorától indul a képlet, ha az első sorba is kell, akkor X1-re javítsd.
Valamint a Cells(Rows.Count, "A") az az oszlop, ahol az utolsó aktív sort kell figyelni, itt az "A"-t módosítsd ha szükséges.
üdv
[ Szerkesztve ]
-
lenkei83
tag
Sziasztok!
Tud valaki megoldást arra, hogy CTRL+H-val hogyan lehet ezt a karaktersort "MTD" adott sheet-en lecserélni ilyenre? "*MTD*"
Tehát csillag kellene elé és utána.üdv
P. -
lenkei83
tag
válasz szatocs1981 #29151 üzenetére
Igen, ez a megoldás, köszi.
-
lenkei83
tag
Sziasztok!
Gondolom, ezzel nem mutatok újat. Range("A1").Formula = "=sum(selection)"
Ez excelre lefordítva pl így nézhet ki: =SZUM($E$9;$D$7)De hogyan lehet azt megcsinálni, hogy ne szum legyen, hanem egyszerű összeadás, vagyis azt szeretném, hogy így nézzen ki:
=$E$9+$D$7üdv
P. -
lenkei83
tag
válasz Delila_1 #29171 üzenetére
Kérdezek inkább konkrétabban:
Itt ez a kód, ami munkalapon belül tök jól működik: írj be véletlenszerűen 12-es számot celláka, "A1"-ben összedja. Mondjuk Munka1-en.
Ami a bajom, hogy ha a szum képletet nem activesheet-re szeretném, hanem Munka2-re (de az összeadandó értékeim maradnak Munka1-en), akkor hogyan tudom megadni minden range elé, a parent.name-et? Vagyis, hogy a szum képlet hivatkozzon Munka1-reKülönálló celláknál még egyszerűbb a helyzet, de mi van akkor, ha úgy jön ki a range, hogy 3 cella van egymás alatt, aztán egy cella valahol máshol, aztán megint 4 egymás mellett máshol stb...
Sub FindAll()
Dim fnd As String, FirstFound As String
Dim FoundCell As Range, rng As Range
Dim myRange As Range, LastCell As Range
fnd = "12"
Set myRange = ActiveSheet.UsedRange
Set LastCell = myRange.Cells(myRange.Cells.Count)
Set FoundCell = myRange.Find(what:=fnd, after:=LastCell)
If Not FoundCell Is Nothing Then
FirstFound = FoundCell.Address
Else
GoTo NothingFound
End If
Set rng = FoundCell
Do Until FoundCell Is Nothing
Set FoundCell = myRange.FindNext(after:=FoundCell)
Set rng = Union(rng, FoundCell)
If FoundCell.Address = FirstFound Then Exit Do
Loop
' rng.Select
Range("A1").Formula = "=sum(" & rng.Address & ")"
Exit Sub
NothingFound:
MsgBox "Nem található a keresett érték: " & fnd
End Sub -
-
lenkei83
tag
Sziasztok!
Rá tudna nézni valaki, hogy miért akad ki a szinescella.Locked = False sornál?
Köszi
P.Sub zarolas_()
Dim ws As Worksheet
Dim cella As Range
Dim psw As Variant
Dim szinescella As Range
Application.FindFormat.Clear
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
Application.FindFormat.Interior.Color = RGB(255, 255, 0)
Application.ReplaceFormat.Interior.Color = RGB(255, 255, 0)
psw = ""
For Each ws In ThisWorkbook.Worksheets
ws.UsedRange.Cells.Locked = True
For Each cella In ws.UsedRange.Cells
Set szinescella = cella.Find(what:="", searchformat:=True)
szinescella.Locked = False
Next cella
Next ws
ws.Protect Password:=psw, userinterfaceonly:=True
MsgBox "Munkalapok zárolva"
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub -
lenkei83
tag
válasz Fferi50 #29247 üzenetére
Hello!
Közben összeraktam egy kis puskázással... Nem teljesen értem a logikát, de működik.
És amiért nem értem: nem elég ennyi simán zárolni az összes cellát?
For Each ws In ThisWorkbook.Worksheets
ws.UsedRange.Cells.Locked = True
For Each cella In ws.UsedRange.Cells
If cella.Interior.Color = RGB(204, 236, 255) Then
cella.Interior.Color = RGB(255, 255, 0)
cella.MergeArea.Locked = False
Next cella
Next wsTesztelgettem pár dolgot és úgy látom, hogy a cella.MergeArea.Locked = False lekezeli az egyesített és a nem egyesített cellát egyaránt, interior colortól függően. Jól látom, hogy nem kell bele külön kezelés normál és egyesített cellákra, valamint a FindFormat sincs így szükség?
Vagy valamit benézek?üdv
P. -
lenkei83
tag
Sziasztok!
Ha olyan worksheetet vizsgálok amin nincs cella (diagram sheet), akkor ez miért száll el nincs ilyen cella hibával?
If IsError(rnSelect.SpecialCells(xlCellTypeAllFormatConditions).Address) = FalseNem az lenne a normális, hogy ha már egyszer iserrorba rakom és hibára fut, akkor lekezeli rendesen? Lehet ez valami VBA hiányosság, vagy valamit nem jól csinálok?
üdv.:
P. -
lenkei83
tag
válasz Fferi50 #29285 üzenetére
Szia!
Megoldottam kivétellel és hibakezeléssel, csak nem értem. Ha hiba akkor legyen már hiba és kezelje rendesen.
Ami viszont szembejött:
Adott munkalapon beraktam egy range-be a színezett cellákat, hogy ne egyesével csinálja a feltételes formázást:Set rnSelect = Union(rnSelect, cella)
Viszont ha ugyanilyen módon törölni akarom a formázást, akkor az egyesített cellákat szétszedi. Lehet ezt valahogy kezelni?Üdv.:
P.[ Szerkesztve ]
-
lenkei83
tag
Sziasztok!
Inputboxnál hogyan tudom megkülönböztetni, hogy cancel-t nyomok, vagy üresen hagyom és OK-ot nyomok?
Mindkettő nulla értéket ad. Van erre valami megoldás?Köszi
P.
Új hozzászólás Aktív témák
- Bontatlan - BATTLEFIELD 1 Collectors Edition - Játékszoftver nélkül
- Windows 10/11 Home/Pro , Office OEM/Retail kulcsok
- Eredeti Windows, telepítéssel! Digital Doctor Számítógép Szerviz
- Game Pass Ultimate előfizetések 1 - 25 hónapig azonnali kézbesítéssel a LEGOLCSÓBBAN!
- Adobe Creative Cloud - 2024. 04. 05 - 2025. 04. 05-ig