- Felháborodott az Apple, a Meta az iPhone-felhasználók üzeneteit akarja olvasni
- A luxusmárkáknak kell a bitcoin, az USA jegybankjának nem
- Letiltja az USA a politikusokat a telefonhívásokról és szöveges üzenetekről
- Nagy áttörés jön a napelemek piacán, nem kell annyi hely a paneleknek
- Belenyúlt az USA az Epic Games igazgatótanácsába, nyomoz az NVIDIA
-
IT café
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
-
amdk7
aktív tag
Sziasztok,
Adott több változó hosszúságú oszlopom, amit táblázatkezelés kapcsán egymás alá szeretnék rendezni.
Ez megoldható képlettel?
Arra gondolok, hogy vizsgálja pl.: az A oszlopot és ha nincs ott érték, akkor kezdje a B oszlop cellatartalmát beírni. ha ott is üres cellatartalmat talál, akkor folytassa a C oszloppal (C1-től amíg üres cellát nem talál).Remélem érthetően írtam le, de itt egy kép:
- a G oszlopban lévő eredményt szeretném látni.
KöszönömAdataimat többé kevésbé az adatlapomon, illetve a személyigazolványomban találod meg. :)
-
Fferi50
Topikgazda
válasz mulli86 #44095 üzenetére
Szia!
Próbáld ki ezt a makrót légy szíves:Sub rendezo()
Dim sh1 As Worksheet, sh2 As Worksheet, cl As Range, cl2 As Range, xo As Byte, xu As Long, sh3 As Worksheet, x As Integer, oszlop, drb As Long, ido As Date
Application.ScreenUpdating = False
Set sh1 = Sheets("hiba_kod")
Set sh2 = Munka2 'Most ez az adatok munkalapja Névvel is hivatkozhatsz rá, nekem túl hosszú volt.
Set sh3 = Worksheets.Add(after:=Sheets(1))
sh3.Name = "hiba"
sh3.Cells(1, 1).Value = "Teszt"
xu = 3: xo = sh2.UsedRange.Rows(5).Columns.Count
sh2.UsedRange.Rows(5).Copy Destination:=sh3.Cells(2, 1)
ido = Time()
For Each cl In sh1.UsedRange.Rows(1).Cells ' a hiba-kódok listája
Application.StatusBar = cl.Value
oszlop = Application.Match(cl.Value, sh2.Rows(5), 0)'melyik oszlopban van?
If Not IsError(oszlop) Then
x = 1 'végig megyünk a hibakódok értékein
Do
drb = Application.CountIf(sh2.Columns(oszlop), cl.Offset(x, 0)) 'hány hibás tétel van
Set cl2 = sh2.Cells(1, oszlop)
Do While drb > 0
Set cl2 = sh2.UsedRange.Columns(oszlop).Find(what:=cl.Offset(x, 0).Value, LookIn:=xlValues, Lookat:=xlWhole, after:=cl2)
If Not cl2 Is Nothing Then
If sh2.Cells(cl2.Row, xo + 2).Value <> "x" Then 'ha még nincs másolva
sh2.UsedRange.Rows(cl2.Row).Copy Destination:=sh3.Range("A" & xu) 'másoljuk
sh2.Cells(cl2.Row, xo + 2).Value = "x" 'és jelöljük a másolást
xu = xu + 1
End If
drb = drb - 1
End If
Loop
x = x + 1
Loop While cl.Offset(x, 0) <> ""
End If
DoEvents
Next
Application.ScreenUpdating = True
Application.StatusBar = False
MsgBox "Futási idő indulás: " & Format(ido, "hh:mm:ss") & " vége:" & Format(Time(), "hh:mm:ss")
End Sub
Mit csinál?
A hiba-kod munkalapon levő kódokon megy végig. Megszámolja, hogy az adatok között az adott oszlopban hány hibás tétel fordul elő. Ezeket átmásolja. Mivel egy sorban több hiba is lehet, a duplázás elkerülése érdekében az átmásolt sor végére tesz egy x-et.
A végén pedig kiírja, mikor indult és mikor fejezte be.
Ha túl hosszúra nyúlna az idő akkor Ctrl+Break megállítja (ezért van benne a DoEvents sor. Ekkor az éppen aktuális sornál megáll. Meg lehet nézni az eredményt és leállítani vagy folytatni, ahogyan éppen szeretnéd.
Remélem, nem lesz túl lassú.
Ha ismételten tesztelsz, ne felejtsd el az x-es oszlopot törölni!
Üdv. -
mulli86
tag
válasz Fferi50 #44084 üzenetére
Szia! Tegnapi makrót feltettem, ahogy írtam is csak annyit változtattam rajta, amit mutt javasolt 1-2-6. ( #44074 HSZ-ben írtam). Plusz a hibakódoknál most nem keresek 0-1-et csak a 0b00, 0b01, 0b11-re keresek rá.
Tehát átváltottam Longra. Bár ezt többen is írtátok. For ciklus elé kitettem a két változót, meg beszúrtam a screenfalsh prancsokat az elejére és végére.Dim lastsor As Long
lastsor = Worksheets(1).Range("A5").End(xlDown).Row
Dim hibaname As Variant
Dim oszlopnumber As Integer
Application.ScreenUpdating = False
For x = 6 To lastsor
For y = 3 To 38
.....
Next y
jumppoint1:
Next x
Application.ScreenUpdating = True
közötte minden más maradt.Jobb félni, mint áldozatául esni egy hirtelen Ninja támadásnak!
-
Ivy.4.Ever
őstag
Sziasztok!
Próbáltatok már weblapot csinálni excellel? Mik a lehetőségek fizetős bővítmények nélkül?
Egy adatbázisból tud frissülni folyamatosan tárhelyen? Illetve ha űrlapot is lehetne kitölteni http-n keresztül az nagyon frankó lenne. Ezeket azért kérdezem, hogy ne kutassak hiába megoldás után, mert VBA-val is még csak mostanában kezdek. Alap php megy.[ Szerkesztve ]
-
Fferi50
Topikgazda
válasz tomi_x #44091 üzenetére
Szia!
"amint egy cellába valaki beír adatot az zárolt legyen'"
Aztán, ha javítani szeretne az adaton, mert elírta, akkor mi lesz?
Ezt egyébként csak makróval lehet megcsinálni és védetté kell tenni a munkalapot hozzá.
Azt írtad, közösen használjátok. Ez mit jelent? Közös használatúvá van téve a munkafüzet vagy egyszerre csak egy user használhatja egy időben, de többen is beleírhatnak?
Egyébként nézd meg a munkalap védelmet. Ott lehet tartományokat rendelni userekhez, amiket csak meghatározott felhasználók módosíthatnak. Nem elég ez neked?
Üdv. -
tomi_x
tag
válasz Véreshurka #44089 üzenetére
Így megy nekem is.
De úgy kellene megoldanom, hogy amint egy cellába valaki beír adatot az zárolt legyen, vagy esetleg egy vezérlő gombbal megoldani, hogy "adatbevitel lezárása". -
Mutt
senior tag
válasz mulli86 #44069 üzenetére
Szia,
A feltett fájlt megnézve makró mentesen Power Query-vel simán megoldható.
Importálni kell a hibakódokat és a CSV fájlt, majd annyiszor kell lekérdezések összefűzését használni ahány oszlopban akarod a hibakódot keresni. Kibontás és utána egy egyéni oszlopban megnézni, hogy hány esetben lett az eredmény üres (null). Ahol csak null volt azok hibamentes sorok vagyis dobhatók és a maradékot lehet betölteni egy új munkalapra.
Kb. 30 perc alatt megvan a Power Query aki jártas már benne és utána újrahasznosítható más fájlokkal.
Természetesen a Power Query-t tanulni kell, ami idő, de Youtube-on van jó sok segítség.4 oszlop csekkolása kb. így néz ki.
üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Véreshurka
senior tag
válasz tomi_x #44087 üzenetére
Saját parasztos megoldásom (biztos van elegánsabb is):
Ha kijelölöd a cellákat amiket védeni szeretnél, akkor jobb klikk --> cellaformázás --> védelem --> zárolt, majd véleményezés menüpont és ott a lapvédelemmel tudod jelszóval védeni.
(#44088) Fferi50: alapvetően amikor létrehoztam a makrót már Sub - End Sub közé illesztettem mert már ott volt. De nagyon nem értem még a makrózást, csak a makrórögzítést szoktam használni... Lényeg, hogy megy. Sokszor elfelejtem képletek elől a HAHIBA-t és csak a végén jut az eszembe, ezután már nem lesz gond Köszi még egyszer!
[ Szerkesztve ]
El Psy Kongroo
-
Fferi50
Topikgazda
válasz Véreshurka #44086 üzenetére
Szia!
Hát persze, ez csak a makró "teste" volt.
Sub - End Sub közé kell tenni.
Üdv.[ Szerkesztve ]
-
tomi_x
tag
Sziasztok !
Megint lenne kérdésem.
Adott egy táblázat, amelyet többen használunk. Szeretném a kitöltött cellákat zárolni, hogy csak jelszóval lehessen törölni vagy modosítani.
Csak makróval lehetséges ?Előre is köszi
-
Véreshurka
senior tag
válasz Fferi50 #44077 üzenetére
Próbálom is!
& (#44078) Delila_1: ezt is megnézem!
Köszönöm mindkettőtöknek!
szerk:
@Fferi: ez működik is. valószínű másnak egyértelmű, de először nem akart futni, makrófelvétellel lelestem egy létrehozott makrót és annak alapján ha még ezeket beírtam a makró elé akkor már szépen lefutott:
Sub hahiba()
'
' hahiba Makró
'
' Billentyűparancs: Ctrl+s
'
[ Szerkesztve ]
El Psy Kongroo
-
HREH
senior tag
válasz Delila_1 #44082 üzenetére
Milyen 1-2 hétről beszélsz? Tegnap reggel írtam ki a kérdést, az nálam nagyon nem 1-2 hét, de semmi gond.
Ebben a topikban mindig mindenki örömmel segített (köztük te is), nem értem mi a gondod... Elnézést, hogy pontosítottam a kérdésem.
Mindegy, akkor beszínezem manuálisan."Fun isn't something one considers when balancing the universe. But this... does put a smile on my face."
-
mulli86
tag
válasz Fferi50 #44081 üzenetére
Szia!
Én is alakítottam kicsit a hiba-kod lapfület így most csak a specifikus hibakódokra keres rá a makró. Abban az excelben amit küldtem én se találtam a makróval semmit. És amit manuálisan beleírtam, azt viszont kiszedte. Mutt modosításaival nemrég lepörgettem az egyik 200 megás excelt ami 1 millió sor*38 oszlop és kb egy órán keresztül minden microsoftos dolog meg volt makkanva a gépen, de miután végzett, szépen megcsinált mindent. Egyedül a 0-1 problémával nem tudok most mit kezdeni, de majd holnap a srácokkal összedugjuk a fejünket, meg bedobunk egy progress bart is, hogy nézni lehessen hogy megfagyott-e meló közben a gép.
[ Szerkesztve ]
Jobb félni, mint áldozatául esni egy hirtelen Ninja támadásnak!
-
Delila_1
veterán
Semmi gond, 1-2 hét alatt sikerül összehoznod a kérdést.
Igen, minden 4-est írj át 2-re.
Nem nekem könnyebb – bár ez is lehet(ne) szempont –, hanem jóval terjedelmesebb lenne a makró, és a futása is hosszabb időt venne igénybe, ha nem a számot tartalmazó oszlopot töltenéd ki először.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
HREH
senior tag
válasz Delila_1 #44057 üzenetére
D-re emlékeztem, de a B a helyes, gondolom elég csak a makróban a 4-eseket 2-esekre cserélni.
A B-be egy szám kerül (a feladat azonosítója), a G-H-I oszlop pedig 3 részfeladatot ír le, a megfelelő cellát színezem/üresen hagyom, annak függvényében, hogy elkezdtem-e az adott részfeladatot csinálni/kész vagyok-e az adott részfeladattal. (üres - nem kezdtem el, narancs - elkezdtem, de még nincs kész, zöld - teljesen kész).
Eddig a számot írtam be először , de ha Neked úgy könnyebb, akkor írhatom a színeket is először.
Itt a példa, hogy hogy néz ki az xls - a nem nyilvános részek kitakarva, de a lényeg látszik.@(#44064) Mutt: köszi, megnézem ezt a megoldást is ezt hogyan kell használni (nem láttam még ilyen megoldást)?
[ Szerkesztve ]
"Fun isn't something one considers when balancing the universe. But this... does put a smile on my face."
-
Fferi50
Topikgazda
válasz Véreshurka #44075 üzenetére
Szia!
A makró:For Each cl In Range("A1:A8").Cells
cl.formula="=IFERROR(" & mid(cl.Formula,2) & ","""")"
Next
A vessző és a zárójel közé 4 idézőjel kell. Így üres marad a cella hiba esetén.
Ha szöveget is szeretnél kiíratni, akkor két - két idézőjel közé írd be a szöveget.
Üdv. -
mulli86
tag
válasz Fferi50 #44070 üzenetére
"Temélem" Bocs
Igen, jól érted. Annyi hogy ami megkavarja a dolgokat, az az, hogy a többi excelben az oszlopok nem olyan sorrendben vannak, mint a hiba-kod lapfülön, ezért muszáj kerestetni vele.
Befrissítettem a makrót Mutt 1-2-6-os pontjával, így most nagyobb file is lefutott. De amit észrevettem, hogy a 0-1 hibakódokkal nem azt csinálja amit szeretnék, mert azokat a sorokat is kidobja, amikben szerepel 0 vagy egy, pedig ez az érték csak az ECP_Electric_Error és ECP_2_Electric_Error oszlopban szerepelnek. Ezért szeretnénk, hogy pld ezt a két hibakódot, csak ebben a két oszlopban keresse a többibe ne, mert fals sorokat fog kigyűjteni, ahogy most is teszi. A másik 3 tipusú hibakod-nál ilyen gond nincs, mert az nem lehet jó érték.Jobb félni, mint áldozatául esni egy hirtelen Ninja támadásnak!
-
Fferi50
Topikgazda
válasz Véreshurka #44071 üzenetére
Szia!
Képletfajtánként egyet-egyet átírsz, azután másolod a képletet.
Másképp nem megy sajnos.
Üdv. -
Véreshurka
senior tag
Sziasztok!
Lenne arra valamilyen mód, hogy több különböző képletet tartalmazó cellához ugyanazt a függvényt felvegyem? Most jöttem rá, hogy még egy HAHIBA függvényt jó lenne beírnom minden képlethez, hogy ne a hibákat kelljen nézni.
Előre is köszönöm!
El Psy Kongroo
-
Fferi50
Topikgazda
válasz mulli86 #44067 üzenetére
Szia!
"Temélem érthető voltam"
Majdnem...
Tehát
1. A hiba-kód munkalapon levő hibakódokat kell keresni a hibalistában (adatállományban)
2. Az hiba-kód munkalapon a hibakód oszlopában kell megkeresni az adatállományban az adott hibakódhoz tartozó értéket - ha benn van, akkor át kell tenni a hibalistára, ha nincs, akkor nem.
3. A hiba-kód munkalapon nem megtalálható hibakódokkal nem kell foglalkozni.
Pl.
ECP_block_Error
0b00
0b01
0b11
Ha az adatállomány x. sorában az ECP_block_Error cellában a fenti 3 érték valamelyike van, akkor megy a hibalistába, egyébként nem.
Jól gondolom?
Üdv.[ Szerkesztve ]
-
mulli86
tag
válasz Fferi50 #44068 üzenetére
Van ilyen excelből több darab. A makrót és a hiba-kod fület manuálisan hozzáadom.
Azt szeretném ettől, hogy a eredeti excelben vizsgálja át úgy a sorokat oszlop szerint, hogy kritériumként a hibakód lapfülön található adatokat használja.
Ha az első adatállományban az adott oszlopban talál olyan hibakódot vagy értéket, amit a hiba-kód lapfülön adott szolopban szerepel, akkor azt a komplett sort máslja ki és tegye egy hiba lapfülre, amit a makro hoz létre és kimásolja a fejlécet is a második sorba.
Ez egy teszt adatbázis, amiben hibakódokat keresek, de oszloponként lehet eltérés a hibakódok között. Itt is van legalább 5 különböző hibakód. illetve lehet bizonyos oszlopokban olyan teljesen jó érték, ami egyébként más oszlopban hibát jelent. Pld a 0,1 es hibakód.
A problémát az fokozza, hogy az excelekben valmiért az szlopok nem ugyanolyan sorrendben jönnek, ezért a makrónak elöször azonosítania kell hogy melyik oszlopban keres, aztán a hiba-kod lapfülön meg kell néznie hogy hol van ez az oszlop és a hozzá tartozó értékek alapján kéne átnézni az első lapfülön hogy van-e benn olyan érték vagy nincs.
Temélem érthető voltam[ Szerkesztve ]
Jobb félni, mint áldozatául esni egy hirtelen Ninja támadásnak!
-
Fferi50
Topikgazda
-
mulli86
tag
Szia,
1- ok
2- ok
3- amint látod a mintát a hibakódok számot és szöveget is tartalmaznak azért a variant.
4-5 ha látod a teljeses progit, láthatod hogy kell-e szerintünk oda kell rakni, de hát logikai felfogás kérdés ki hogy írja meg a programot asszem
6. Úgy rémlett hogy tettünk bele ilyet, de úgy látom mégse, csak akartunk.Egyébb észrevétel így hogy átlátjátok?
Egyébként nem találtam infót róla, mi az a karakter, amivel inaktívvá lehet tenni a két karakter közé zárt szövegrészt. C++-ban ez a {} volt. Itt micsoda?
Jobb félni, mint áldozatául esni egy hirtelen Ninja támadásnak!
-
Mutt
senior tag
Szia,
Delila válasza mellett itt egy UDF, amit feltételes formázásban használhatsz.
Function CellaSzinek(rng As Range, Optional szinkod As String, Optional mutasd As Boolean)
'cella színének változása nem eredményezi a képletek újra kiértekélését
Application.Volatile
Dim cella As Range
Dim szin As Long
If mutasd Then
CellaSzinek = CStr(rng.Range("A1").Interior.Color)
Else
CellaSzinek = True 'megelőlegezzük hogy a tartomány színe azonos
'ha nincs meg adva a viszonyításhoz színkód, akkor használjuk a tartomány elsõ cellájának színét
If szinkod = "" Then
szin = rng.Range("A1").Interior.Color
Else
szin = CLng(szinkod)
End If
For Each cella In rng
If cella.Interior.Color <> szin Then 'ha eltérés van akkor kilépünk a ciklusból
CellaSzinek = False
Exit For
End If
Next cella
End If
End FunctionTúlzásba vittem, mert 3 módon lehet használni.
- Ha csak 1 paramétert (a vizsgálandó tartományt) adsz meg, akkor a tartomány első cellájánák színéhez hasonlítja a többit. Ha azonosak, akkor IGAZ eredményt ad vissza.
- Ha 2 paramétert adsz meg, ahol a második az adott színkód macskakörmök között amelyet keresel, akkor pedig IGAZ lesz az eredmény, ha a tartományban a cellák színe azonos a megadottal.
- Ha a harmadik paraméter IGAZ, akkor pedig a kijelölt tartomány első cellájának színkódját kapod meg.üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
mulli86
tag
Bocsi az idöhuzásért, de elég macerás feltölteni ezen a hálozaton.
[link]Jobb félni, mint áldozatául esni egy hirtelen Ninja támadásnak!
-
Mutt
senior tag
válasz mulli86 #44058 üzenetére
Szia,
1. lastsor típusa Long legyen, mert az integer csak 32 ezer sorral fog bírni.
2. A hibaname és oszlopnumber a két for cikluson belül van inicilaziálva ami nem jó, hozd ki őket a for-ok elé.
3. Variant a hibaname típusa, de közben a cella értékét ellenőrzöd. Jobb lenne egy specifikus típust használnod pl. Double ha számok érdekelnek, vagy String ha szöveg.
4. Ha sokat dolgozol egy lapon akkor érdemes With ... End With-et használnod.
pl.With Worksheets(1)
lastsor = .Range("A5").End(xlDown).Row
For x ...
For y ...
hibaname = .Cells(5, y)
For p ...
If hibaname = Sheets(3).Cells(1,p) then
....
End If
Next p
Next y
Next x
End With5. A GoTo rész biztos hogy kell? Miért nem teszed az IF-be az ottani dolgokat?
6. Sokat gyorsít a "villódzás" kikapcsolása.
Application.ScreenUpdating = False a for ciklusok elé, majd = True a legvégén.üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Fferi50
Topikgazda
válasz mulli86 #44060 üzenetére
Szia!
Fel kell tenni valahova - pl. googlemaps, Data.hu, stb. -, ide pedig a linket.
Az biztos, hogy a lastsor deklarációd nem jó. Az integer típus az csak 32767-ig terjedhet.
Helyette a Long adattípust kell használni.
"Átmásolt 97 sort a 100-ból, pedig nem is szerepelnek benne olyan értékek, amikre keresek."
Nyilván nem egészen korrekt a feltételek ellenőrzése. Vagy a makró szerkezete. Nem egészséges ugrásokat használni.
Üdv.[ Szerkesztve ]
-
mulli86
tag
Hogy szoktátok feltölteni? Csak feldobjátok valahova?
Egyébként most átírtam, hogy csak 100 sorig vizsgálja. Átmásolt 97 sort a 100-ból, pedig nem is szerepelnek benne olyan értékek, amikre keresek.
Jobb félni, mint áldozatául esni egy hirtelen Ninja támadásnak!
-
mulli86
tag
Sziasztok!
Sikerült segítséggel megírni azt a kereső makrót. Félig manuális, mert egy másik lapfület be kell másolni előtte, ami tartalmazza a keresendő adatokat. Az excelek amiken elindítom CSV fájlok. Illetve vannak olyan excelek, amik 1 millió sorosak, tehát teljesen fel vannak töltve. A makró problémái, amik között nem látok öszefüggést, random csinálja a következő hiábakat
- Indítás után kifagy
- elindul, de már a sorok megszámlálása is olyan mérhetetlenül lassú, hogy esélytelen, hogy a mai nap folyamán akár egy excel is lefusson. (5perc alatt még csak az ~5000 sorig juottt csak el)
- hibára fut, ahol a sorok számolása nem tetszik neki.Mik lehetnek a problémák, és hogyan tudnám kiküszöbölni ezeket?
Jobb félni, mint áldozatául esni egy hirtelen Ninja támadásnak!
-
Delila_1
veterán
Mi a bevitel menete?
Beírod a számot a D oszlopba, majd színezed aG:I
oszlopokat?Legjobb lenne, ha a 3 cella színezését adnád meg először, majd beírnád a D oszlopba az értéket. Ebben az esetben a D oszlopba írást figyeltethetném. Amint beírod az értéket, arra a sorra lefutna a színezés.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sor As Long
If Target.Row > 2 And Target.Column = 4 Then
sor = Target.Row
If Cells(sor, 7).Interior.Color = vbGreen And Cells(sor, 8).Interior.Color = vbGreen And _
Cells(sor, 9).Interior.Color = vbGreen Then
Cells(sor, 4).Interior.Color = vbGreen
Else
Cells(sor, 4).Interior.Color = RGB(255, 198, 83)
End If
End If
End Sub[ 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.
-
HREH
senior tag
válasz Delila_1 #44054 üzenetére
Köszönöm!
A D oszlopban D3-tól lefelé kezdve fixen mindig egy nyolcjegyű szám van. Üres cella csak addig van, ameddig én kézzel nem írom bele a nyolcjegyű számot.Laphoz lehet rendelni, mint az első példában, vagy csak modulhoz? (van 4-5 munkalap, de csak az egyikre kell ez)
"Fun isn't something one considers when balancing the universe. But this... does put a smile on my face."
-
Delila_1
veterán
Megírtam. A makrót modulba tedd, a füzetedben tegyél ki egy gombot, ahhoz rendeld a makrót.
Nem mindegy, hogy milyen zöld a G-H-I oszlop zöldje. A cellák színezésénél a További színeknél az Egyéni fülön legyen az R és B nulla, a G 255.Sub Zold_Narancs()
Dim sor As Long
sor = 3
Do While Cells(sor, "D") <> ""
If Cells(sor, "G").Interior.Color = vbGreen And Cells(sor, "H").Interior.Color = vbGreen _
And Cells(sor, "I").Interior.Color = vbGreen Then
Cells(sor, "D").Interior.Color = vbGreen
Else
Cells(sor, "D").Interior.Color = RGB(255, 198, 83)
End If
sor = sor + 1
Loop
End Sub[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
veterán
Na látod, erről írtam. Nekiestem megírni a makrót, aztán kiderül, hogy egészem másról van szó, kezdhetem az elejétől. Még várok egy ideig, míg véglegesíted a feladat leírását.
A D oszlopban változó mennyiségű adat van? Nincsenek az adatok között üres cellák?
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
HREH
senior tag
válasz Delila_1 #44051 üzenetére
Összecseréltem a számozást, itt egy példa, hogy mire gondolok.
Tehát ha a G3/H3/I3 cellák mindegyike ki van töltve zölddel, akkor a D3 is legyen zölddel kitöltve, minden más esetben (tehát ha az egyik, vagy akár több cella is nem zölddel van kitöltve vagy egyáltalán nincs kitöltve, akkor pedig narancssárgával.)
Lényeg az lenne, hogy a D3-tól lefelé legyen érvényes a dolog, tehát a D4 akkor legyen zöld, ha a G4/H4/I4-re teljesül ugyanez, a D5 akkor, ha a G5/H5/I5 és így tovább, az egész munkalapon.
Adat csak a D oszlopban lévő cellákban lesz (egyszerű szöveg), a G/H/I oszlopokban nem.
Az első 2 sorra pedig ne vonatkozon (D1 ill. D2 cellák).[ Szerkesztve ]
"Fun isn't something one considers when balancing the universe. But this... does put a smile on my face."
-
Fferi50
Topikgazda
Szia!
Kipróbálhatnád, hogy a V oszlopba írod be ugyanígy a képletet. Ezután a képletet átalakítod értékké:
Range("V2:V" & sor).Value=Range("V2:V" & sor).Value
Ezután adnád hozzá a V oszlop érvényesítését!
Így minden kategória rendben lenne és a lista is meglenne szerintem.
Üdv. -
Delila_1
veterán
-
HREH
senior tag
válasz Delila_1 #44049 üzenetére
Máskor is így szoktam, sosem volt még gond belőle...
De akkor leírom pontosan: az első két sor kivételével, azaz a harmadik sortól kezdve minden sorban töltse ki a C4/D4/E4 stb... cellát zölddel, ha a C8+C9+C10/D8+D9+D10/E8+E9+E10 stb... cellák mindegyike ki van töltve zölddel, ha bármelyik nincs, akkor narancssárgával.
Köszi!"Fun isn't something one considers when balancing the universe. But this... does put a smile on my face."
-
Delila_1
veterán
Esetleg ha pontosítanád, hogy mekkora tartományra vonatkozzon a 4. sor celláinak a háttér kitöltése, nem kellene újra és újra átírni a makrót.
A kérdés feltevése előtt gondold át, mire van szükséged. Ha segítséget kérsz, ne pazarold a segítő idejét!Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
oke
senior tag
válasz Fferi50 #44047 üzenetére
Szia,
Igen, nagyon sok információ van a táblázattal kapcsolatban, nehéz eldönteni, mi az ami számíthat a későbbiekben.
Van egyedi azonosító. A Te segítségeddel eljutottam oda, hogy az aktuális munkalap V oszlopába, ami alapban üres, már belekerült a legördülő lista - kiválasztás nélkül. Mellé a W oszlopba meg sikerült beforgatni az előző napi lista beállítást, de csak mint értéket. Ez alapján gondoltam, hogy valahogy be lehetne állítani a cella értéket a V oszlopban, mindenhol a mellette lévő alapján.
Ezzel a részlettel hozom át az adatokat a "régi" fülből a V oszlopból, de ez nem listaként másolja át:
' "Előző kategória" másolása
sor = Range("A" & Rows.Count).End(xlUp).Row
Range("w2").Select
Application.CutCopyMode = False
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-22],régi!C[-22]:C[-1],22,0)"
Columns("w:w").EntireColumn.AutoFit
Selection.AutoFill Destination:=Range("w2:w" & sor)
[ Szerkesztve ]
-
Fferi50
Topikgazda
Szia!
Lövöldözünk jó távolról, aztán - mint a számítógépes játékban - fogynak az életek .
Meg az ötletek. De ha meg lehet nyitni egyszerre mindkét táblát, akkor egy VLOOKUP vagy INDEX azért segíthet a listaopció beállításában. Hiszen azt írtad van egyedi azonosító minden sorban.
Üdv. -
-
-
HREH
senior tag
válasz Delila_1 #44041 üzenetére
Köszi, a második megoldás jól működött.
Ki lehet egészíteni úgy, hogy a táblázat összes sorára működjön (B4 is legyen kitöltve, ha a B1+B2+B3 is kitöltött), de csak pl. a 3. sortól kezdődően? Az első 2 sor másra lenne használva, a 3. sortól kezdődően lenne mindenhol ugyanolyan formátumú a táblázat felépítése."Fun isn't something one considers when balancing the universe. But this... does put a smile on my face."
-
Fferi50
Topikgazda
Szia!
Akkor mi lenne, ha az előző napi aktuális táblából indulnál ki és azt szerkesztenéd - adnál hozzá új sorokat, a törlendőket pedig megjelölnéd. Ezután egy lépésben törölhetnéd a megjelölt sorokat. Nem kellene bajlódni a listaállapot "szinkronizálásával".
Talán a munkád is kevesebb lenne....
Üdv. -
oke
senior tag
válasz Fferi50 #44039 üzenetére
Szia,
Változik az aktuális tábla naponta, de nem teljesen, ahogy írtam jönnek be új sorok, illetve van sor, ami már nem szerepel benne az előzőhöz képest, de a nagy része megmarad az előző napiból. Amelyik sor mind a kettőben szerepel, ott kellene az előző napiból áthozni az aktuális táblába a V oszlopban szereplő legördülő lista alapján beállított értéket az aktuális tábla szintén V oszlopába. A legördülő lista elemei megtalálhatók mindkét táblázat 'lista' fülén.
Az "A" oszlop tartalmaz egy egyedi azonosítót.Remélem így már érthetőbb.
[ Szerkesztve ]
-
Delila_1
veterán
Ezt egy modulba másold, és indíthatod, amikor ki akarod színezni az A4 cella hátterét.
Sub Zold_Narancs()
If Range("A1").Interior.Color = vbGreen And Range("A2").Interior.Color = vbGreen And _
Range("A3").Interior.Color = vbGreen Then
Range("A4").Interior.Color = vbGreen
Else
Range("A4").Interior.Color = RGB(255, 198, 83)
End If
End SubAutomatizálhatod, ha a laphoz rendeled a lenti makrót.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("A1").Interior.Color = vbGreen And Range("A2").Interior.Color = vbGreen And _
Range("A3").Interior.Color = vbGreen Then
Range("A4").Interior.Color = vbGreen
Else
Range("A4").Interior.Color = RGB(255, 198, 83)
End If
End SubHa viszont az
A1:A3
tartományt feltételes formázással színezed, más a helyzet. Akkor az A4 cellába is feltételes formázás kell.[ 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.
-
Fferi50
Topikgazda
Szia!
"Az aktuális tábla sorai napi szinten változnak, kerülnek ki sorok, illetve érkeznek újak. Emiatt nem lehet a V oszlopot egy az egyben átmásolni."
Ez most éppen ellentmondásban van az előző hsz-ban írtakkal, idézem:
"Erre azért lenne szükség, mert nem találtam arra megoldást, hogy egy előző napi legördülő listát és a kiválasztott beállítást áthozzam az aktuális táblába."
Akkor most változik az aktuális tábla vagy nem? Az előző napi beállítás kell vagy másik?
Üdv. -
oke
senior tag
válasz Fferi50 #44035 üzenetére
Az aktuális tábla sorai napi szinten változnak, kerülnek ki sorok, illetve érkeznek újak. Emiatt nem lehet a V oszlopot egy az egyben átmásolni.
Úgy működik az egész, hogy van egy sablon munkafüzetem, amiben elvégzem a szükséges műveleteket, majd az eredményből egy szűrő által kiválasztott eredmény alapján 3 másik excel hozok létre - eddig a füleket másoltam át nem az excelt mentettem más néven, mivel a sablonban van a makró. Ezekben dolgoznak a többiek. Másnap ez a 3 táblázatot bemásolom a sablon egyik fülére és ennek bizonyos értékeit, eredményeit másolom be az aktuális táblázatba.
"w2-es cellában: körte --> ez alapján a v2-es cellában az alma érték kerülne kiválasztására"
Mondjuk ezt nem egészen értem, hogy miért így kellene.
Bocsánat, ezt elírtam, körte érték kerülne kiválasztásra, tehát a megegyező adatok. -
HREH
senior tag
Sziasztok!
Azt szeretném, hogy ha az A1, A2, A3-as cellák mindegyike pl. zöld színnel van kitöltve, akkor az A4 is automatikusan legyen kitöltve zölddel, de ha a három közül bármelyik is nem zöld, akkor az A4 már narancssárgával legyen kitöltve.
Ilyet lehet csinálni feltételes formázással, vagy mindképpen makróval kell?"Fun isn't something one considers when balancing the universe. But this... does put a smile on my face."
-
Fferi50
Topikgazda
Szia!
Mi lenne, ha az előző napi V oszlopot egyszerűen átmásolnád az aktuális táblába, a lista forrásával együtt.
"w2-es cellában: körte --> ez alapján a v2-es cellában az alma érték kerülne kiválasztására"
Mondjuk ezt nem egészen értem, hogy miért így kellene.Üdv.
[ Szerkesztve ]
-
oke
senior tag
válasz Fferi50 #44033 üzenetére
Köszönöm, akkor így javítom majd.
Még egy kérdés ehhez kapcsolódóan, be lehet-e állítani a lista értékét a cellákban a mellette lévő cella alapján?
V2 oszlop listájában mondjuk ezek vannak, alapértelmezetten nincs kiválasztva semmi:
alma
körte
szilvaw2-es cellában: körte --> ez alapján a v2-es cellában az alma érték kerülne kiválasztására
és így tovább. A W oszlopban csak olyan értékek vannak, ami a listában megtalálható. Ha W oszlop cellájában valahol nincs érték, akkor ne kerüljön kiválasztásra semmi.Erre azért lenne szükség, mert nem találtam arra megoldást, hogy egy előző napi legördülő listát és a kiválasztott beállítást áthozzam az aktuális táblába. Így most úgy csinálom, hogy a ÍW oszlopba áthozom VLOOKUP-al, majd ott manuálisan rászűrök az egyes értékekre és ez alapján a V oszlopba beállítom a lista értékét.
-
Fferi50
Topikgazda
Szia!
Az a gond, hogy az ucell változód az A oszlop utolsó celláját tartalmazza, ezért aRange(Range("V2"),ucell))
azA2:Vx
tartományra hivatkozik. Nem véletlenül volt a V benne, mert a V oszlop utolsó celláját kell megkeresni.
Ha ragaszkodsz az A oszlop utolsó cellájának megkereséséhez, akkorRange("V2:V" & ucell.Row)
legyen a tartományi hivatkozásod.
Üdv.[ Szerkesztve ]
-
oke
senior tag
válasz Fferi50 #43987 üzenetére
Szia,
Ezzel sajnos nem jutok előrébb, nem akartam bevonni plusz munkalapot, akkor a listát pakolom át a "Sablon" munkafüzetembe, amibe a többi adat is van.
Átalakítottam így a makrórészletet, viszont érdekes dolgot produkál, szinte mindegyik oszlopba berakja a legördülő listát, nem csak a V oszlopba. mi a rossz benne?
Dim ucell As Range
Set ucell = Range("A" & Rows.Count).End(xlUp) 'itt átírtam A-ra a V-t
With Range(Range("V2"), ucell).Validation
'Range("V2").Select
'With Selection.Validation 'az eredetiben benne volt, de ha bennhagyom,kiakad
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Lista!$A$2:$A$17"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
[ Szerkesztve ]
-
North15
csendes tag
Sziasztok!
Outlookkal szeretném elküldeni csatolmányként az Excel-táblázatom (2016-os) egy aktuálisan szűrt verzióját. Rendszeres feladatról van szó, ezért makrós megoldást kerestem. Ez meg is van, nincs problémám vele. Ami kérdésem, hogy meg lehet adni valahogy a VBA-ban, hogy ki legyen a levél feladója? Az Outlookban több postafiók is fel van véve, és fontos, hogy ne az alapértelmezett postafiók legyen a küldő.
-
azt hogy lehetne megoldani, excelben, hogy pár kiindulo adatbol, egy megadott idöintervallumon belül készitsen grafikont?
egy olyat akarok megcsinálni, ha egy kezdő értéket megadok és ahhoz hozzáadok bizonyos %-ot akkor azt automatikusan számolja ki X alkalommal és ezeket az értékeket egy grafikonon megjelenitse.
Visualizálni akarom a nyers adatokat, hogy hogyan viszonyulnak egymáshoz hosszabb távon. -
Fferi50
Topikgazda
Szia!
Nem tudom, hogy a 365-ben van-e makrórögzítés. Ha igen, akkor
- kiválasztod a célmunkalapot
- beindítod a makrórögzítést
- megcsinálod a speciális szűrést
- leállítod a makórögzítést
A makrót hozzárendeled egy billentyűkombinációhoz.
Előtte célszerű táblázattá alakítani a forrásodat, mert akkor csak a táblázat neve kell a szűrendő tartományhoz.
(A makró nagyjából 1 érdemi sort fog tartalmazni.
Ha nem sikerül a rögzítés, küldd el privibe/vagy tedd fel elérhetően a forrásod egy részletét - elég pár sor és blabla szöveggel, akkor megcsinálom hozzá a makrót.)
Üdv. -
Zoty4
őstag
na erre összejött Pferis módszerrel
Kilistázta úgy ahogy szerettem volna, már csak az a kérdésem, hogy erre van e gomb ami befrissiti?
vagy minden alkalommal amikor új tétel kerül a masterba újra irányított szűrés, ki kell jelölni stb
makrókat használhatok, de nem csináltam még sose
amúgy office 365 van -
félisten
válasz Taktoj #44022 üzenetére
Az Office 64 bites?
Naprakész? (Windows Update-ről minden elérhető frissítés fent van?)Ha mindkettőre igen a válasz, hogy elnavigálsz a Fájl menü/Beállítások/Speciális/Megjelenítés csoporthoz és ellenőrizd a Hardveres grafikus gyorsítás letiltása opciót. Ha be lenne jelölve, akkor szüntesd meg a kijelölést OK.
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
Fferi50
Topikgazda
válasz Taktoj #44022 üzenetére
Szia!
Mekkora a fájl mérete?
Elképzelhető, hogy az egész oszlopra érvényesülnek a szűrők, színezések. Ez nagyon be tudja lassítani. Helyette adj meg konkrét - de azért elég nagy - tartományokat.
Próbáld megnézni F5 - Ugrás - irányított - utolsó cella.
Így megnézheted, melyik az utolsó cella a munkalapon.
Ez alapján tudsz módosítani.
Üdv. -
Taktoj
aktív tag
Sziasztok. Magán használatra van egy kb 10 ezer soros 10 oszlopos adathalmazom, aholsok szűrés illetve szinezés van. Sokszor előfordul hogy egy egy szűrés eltart 20 30 másodpercig. Tudnék ezen valahogy gyorsítani? Office 2016 , s egy régebbi gép az alapja, ssd vel core 2 duo s xeon procival, 8gb rammal, néha írkálja hogy kevés a memória.
Köszi előre is.
Az élet olyan, mint egy doboz bonbon. Sosem tudhatod, mit veszel ki belőle.
-
Sesy
aktív tag
válasz Fferi50 #44020 üzenetére
köszönöm, hogy foglalkoztál vele...
én is sok időt eltöltöttem már a problémával, de nem sikerült sehogy sem vissza tölteni, ezek szerint lehet, hogy nem bennem van a hiba...az xml fájlt notepad-ban klasszul tudtam módosítani, és azt sikerrel vissza is tudtam tölteni az eredeti helyére...
ha menne excelben akkor sokkal egyszerűbben lehetne a szükséges információkat bevinni, így akkor marad a macerásabb út sajnos...
mindenesetre írok a graphisoft suportnak és megkérdezem tőlük, hogy van-e erre valamilyen megoldás... ha válaszolnak és van jó, működő megoldásuk, akkor majd feltétlenül megosztom veled...
még egyszer köszönöm, hogy időt szántál rá
Born stupid... Try again!
-
Fferi50
Topikgazda
Szia!
Szerintem ebben a szerkezetben sajnos nem lehet xml-be visszaexportálni excelből, több akadály miatt is. Nem normalizált a táblázat, lista szerepel benne, több származtatott gyermek is van.
Viszont szövegfájlként el lehet menteni, persze akkor az XML jelölések elvesznek belőle.
Üdv. -
Mutt
senior tag
Szia,
Excel verziót nem láttam, de ha Office365 Insidered van akkor csak a SZŰRŐ függvény kell.
Excel 2010-től kezdve az ÖSSZESÍT függvény tud segíteni:
Power Query marad máskorra.
üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Fferi50
Topikgazda
Szia!
Elvileg az egész táblázatot át kellene másolnia. Ha mégsem megy, akkor először a fejlécet másold át az új munkalapra.
A forrást átalakítod táblázattá és a táblázat nevével hivatkozhatsz rá. Akkor csak ismételten le kell "játszani" a szűrést. Ha lehet makrót használnod, akkor makrórögzítés után a makró futtatással frissítheted.
Üdv. -
Zoty4
őstag
már tényleg csak az a kérdés hogyan tudom befrissiteni ezt az uj táblázatot, miután új tételek jelennek meg a masterben? meg miért csak a B oszlop jelenik meg és a többi oszlop nem?
[ Szerkesztve ]
-
Fferi50
Topikgazda
Szia!
Nem értelek miért nem jó.
Mutatom a példát.
Kiindulás a Munka1 munkalapon:
Szűrő a Munka2 munkalapon a H1:H2 cellákban:
A párbeszédpanel képe a Munka2 munkalapról indulva:
Az eredmény a Munka2 munkalapon:Egyetlen fontos dolog, hogy legyen a szűrendő tételeknél fejléc (ez pedig gondolom a tr.listán van).
Üdv.
-
Mutt
senior tag
Szia,
Power Query-t tudom javasolni, de tömbfüggvénnyel is lehet sorokat megkeresni és onnantól INDEX-el kiíratni.
Ha van konkrétum, akkor dobd fel a fórumra.
üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Fferi50
Topikgazda
Szia!
Szerintem a szűrés - másolás - beillesztés másik munkalapra, utána a szűrés megszüntetése semmit nem változtat a "master" listádon.
DE: Van az Adatok - Speciális (lánykori nevén irányított) szűrő --> ezzel másolhatsz másik munkalapra is - csak onnan kell elindítani, ahova az adatokat szeretnéd átmásolni.Üdv.
-
Zoty4
őstag
-
Fferi50
Topikgazda
Szia!
Kicsit homályos a kérdésed...
A kimutatásban megadhatod, hogy az üres oszlopok ne kerüljenek be - hiszen te magad válogatsz közülük.
Mit értesz ezalatt, hogy "ne adja össze, csak gyűjtse ki" ? Ezt a szűrő megfelelő alkalmazásával meg tudod oldani szerintem.
De a kimutatást is lehet szűrni többféleképpen, sőt szeletelő is adható hozzá.
Üdv. -
Fferi50
Topikgazda
Szia!
Nézted már az XML - lel kapcsolatos Excel súgót?
Tanulmányozgatom, hátha tudok valamit segíteni. Megnyitni már megnyitja, de XML-ben nem lehet exportálni, mert nem exportálható az automatikusan létrehozott séma.
Talán először létre kellene hozni egy érvényes XML sémát és utána importálni.
Üdv. -
Zoty4
őstag
Azt hogy tudom megcsinálni kimutatással, vagy bármivel , hogy van egy nagy excel, 10 oszlop, és baromi sok sorral, ömlesztve csomó információval, és ha egy bizonyos oszlopban van info azt gyűjtse csak ki, de ne adja össze, csak gyűjtse ki, lehet 20x ugyanaz a típusú tétel is egymás alatt?
az üres (ahol nincs ebben az oszlopban info ) azokat ne gyüjtse le)Majd ebből szeretnék csak egy olyan kimutatást a végén amit tegnap mondtatok, de az világos
[ Szerkesztve ]
-
Sesy
aktív tag
esetleg erre:
tudna valaki, valami segítséget adni? nem jutok vele egyről a kettőre...
vagy ez annyira nem ide való probléma?Born stupid... Try again!
-
Delila_1
veterán
A táblázatban állva a menüsorban találsz egy Tervezés menüpontot, ahol a stílusok közül kiválasztod a legszimpatikusabbat.
Új stílust is létrehozhatsz, a felajánlott formák alatt van erre lehetőséged.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
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Viccrovat
- Fejhallgató erősítő és DAC topik
- Bemutatkozik az ASUS új, belépőszintű gaming notebookja, a V16
- Honor 200 Pro - mobilportré
- OLED TV topic
- Óra topik
- Milyen videókártyát?
- Samsung Galaxy A55 - új év, régi stratégia
- Apple iPhone 15 - a bevált módszer
- További aktív témák...
- Microsoft Office Home & Business 2024 PC/Mac EP2-06638
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Játékkulcsok a legjobb áron: Steam
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem, Újévi kedvező ár!
- Adobe Creative Cloud - 2024. 04. 05 - 2025. 04. 05-ig
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest