Excel kérdés

Jelentkezz be a hozzászóláshoz.

Delila1
#1314

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

Delila1
#1313
Makró a +3 oszlop elrejtéséhez:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
On Error GoTo 0
Cells.Find(What:=Target, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Select
Exit Sub
End If
If Target.Row = 2 Then
Dim oszlop As Long
oszlop = Target.Column
If Target = 1 Then
Columns(oszlop).Hidden = True
Columns(oszlop + 1).Hidden = True
Columns(oszlop + 2).Hidden = True
Columns(oszlop + 3).Hidden = True
End If
End If
End Sub

A feltételes formázás megadása:



A leírásodból arra következtettem, hogy a 2007-es verziójú Excelt használsz. A fenti formázás megadása után már tudod másolni a formátumfestõ ecsettel.

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

wollnerd
#1312
Tudom.<#rolleyes>
De nem tudtam megkérdezni a tanáromat...
Én tudtam hogy HA függvény kell a M4-be.

PC konfigom a Be quiet! Pure Base 500DX White házban: GIGABYTE Z490 GAMING X, Intel i7 10700K 3.8 Ghz (5 Ghz) , 32 GB DDR4 RAM, NVIDIA GeForce RTX3080, Windows 10 Pro 64bit, HP Reverb G2

Delila1
#1311
H4: =BAL(A4;2)&JOBB(A4;1)&"-"&ÉV(B4)
I4: =H4
M4: =HA(L4<40;"Nem felelt meg";"Megfelelt")

Ha ez gyakorlás, akkor nem szerencsés dolog egy fórumon rákérdezni, csak ha a kapott választ jól átgondolod utána. <#wow3>

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

wollnerd
#1310
A 2_mo munkalapot is meg kellene nézni, ott vannak a megoldások!
Tehát a M oszlopba "Megfelelt" és a "Nem felelt meg" képlet kell!
Ja, és a G oszlop pedig nem feltételezve 18 éves korral kell számolni, az biztos. Szóval a G tartomány passz, mert NINCSEN megadva a "tanulmányok kezdetének az évszáma" adat! Pedig a feladat azt mondja!<#conf><#nemtudom>

PC konfigom a Be quiet! Pure Base 500DX White házban: GIGABYTE Z490 GAMING X, Intel i7 10700K 3.8 Ghz (5 Ghz) , 32 GB DDR4 RAM, NVIDIA GeForce RTX3080, Windows 10 Pro 64bit, HP Reverb G2

wollnerd
#1309
Hát még a H4:H15 és a I4:I105 tartományra is gondoltam! 😊

PC konfigom a Be quiet! Pure Base 500DX White házban: GIGABYTE Z490 GAMING X, Intel i7 10700K 3.8 Ghz (5 Ghz) , 32 GB DDR4 RAM, NVIDIA GeForce RTX3080, Windows 10 Pro 64bit, HP Reverb G2

#1308
És még a feltételes formázásról egy kérdés.
írok 1 példát arra amit csináltam:
Feltételes formázásnál új szabályt csinálok.
A1-D1 egyesített cellák. Ha Az értékük "a" akkor A1-D8 tartományt beszínezi pirosra ha az érték "b" akkor kékre stb. Ez teljesen jól mûködik pont ahogy szeretném a gondom csak az hogy ha ezt megpróbálom másolni akkor a feltétel ugyan ugy az A1-D1 egyesített cellát vizsgálja nem pedig amit kell(pl E1-H1)
Van rá esély hogy másoljam ezt a feltételes formázást?
Mert ezt még amúgy be kéne állítanom legalább 40x és ehhez is jön 6 külön szabály a színek miatt és ez rengeteg hogy egyesével csináljam meg!:S
#1307
hali megint
a tegnap kapott segítséghez lenne még 1 kérdésem.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
On Error GoTo 0
Cells.Find(What:=Target, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Select
Exit Sub
End If
If Target.Row = 2 Then
If Target = 1 Then Target.Columns.Hidden = True
End If
End Sub

Ez teljesen jól mûködik csak még azt szeretném hogy amikor elrejti az oszlopot nem lehet azt megoldani hogy ne csak az aktuális oszlopot rejtse el hanem pl az utána következõ 3mat is? (ez azért van mert a vizsgált cellák 1esített cellák és 3 oszlopot kellene elrejteni - ezt próbáltam ugy is megoldani hogy szétosztom õket és a másik 3 cella automatikusan megkapja az 1 értéket amikor beírom ez persze nem mûködik mert ugye csak a target.columns.hidden lesz igaz.) sajna nem értek a vba-hoz de nem lehet ennél a feltételnél megadni hogy ne csak ezen az oszlopon végezze el a dolgot?:S
köszi
Delila1
#1306
A G4:G105, és M4:M105 tartományokra gondoltál?
Olyan rovatot nem látok, hogy mikor kezdte a fõiskolát. Feltételezve, hogy 18 évesen, a G4 képlete =C4-18

A minõsítéshez meg kell határozni, hogy hány pont milyen minõsítést von maga után. Hasraütõs módszerrel a V4:V8 tartományba ezt vittem be:
1, 18, 35, 50, 60. Mellé a W4:W8-ba elégtelen, elégséges, közepes, jó, kiváló. Ez azt jelenti, hogy 1 és 17 közötti pontszám elégtelen, 18 és 34 közötti elégséges, stb. eredményt ad.
Az M4 képlete: =FKERES(L4;$V$4:$W$8;2;1)

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

wollnerd
#1305
Sziasztok! Gyakorlásképen próbálok egy munkafüzetet csinálni, amiben bonyolult képletekkel beírni az adatokat.
Nos, én elakadtam. Nem tudom milyen képleteket hogyan kell beírni.
Valaki tudna segíteni mondja meg nekem milyen képletet kell beírnom a üres cellákba (G-M4-g-M105)
Munkafüzetem letöltése
2_adatok nevû munkalapon van gond. Feladat leírása: 2_feladat munkalap.
A segítségeteket elõre is nagyon megköszönöm! 😊

PC konfigom a Be quiet! Pure Base 500DX White házban: GIGABYTE Z490 GAMING X, Intel i7 10700K 3.8 Ghz (5 Ghz) , 32 GB DDR4 RAM, NVIDIA GeForce RTX3080, Windows 10 Pro 64bit, HP Reverb G2

Delila1
#1304
Hopsz, az utolsó képletbõl kimaradt egy $ jel, helyesen az A6:C10 képlete a formázáshoz =$A$5<>"asd".

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

Delila1
#1303
Olyant akarsz beállítani, hogy ha az A5 értéke "asd", akkor az A1:C5 tartomány legyen pl. piros, ha meg nem, akkor a teljes A1:C10?
Ebben az esetben az A1:C5 tartományt színezd be fixen pirosra, és az A6:C10 tartománynak adj ilyen feltételt: =$A$5<>"asd".

Ha viszont elírtad, és A5="asd" esetén az A1:C5 legyen színes, ellenkezõ esetben az A6:C10, akkor a felsõ tartomány képlete a formázásnál =$A$5="asd", az alsóé =A$5<>"asd".

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

#1302
az elõzõ dologhoz annyi h akkor a feltételes formázásnál a tartományt nem tudom kijelölni a feltételtõl függõen? pl ha teljesül akkor A1-C5 ig tegye a formázást ha másik teljesül A1-C10ig
#1301
A cella egyesítés azért kellett mert a feltételes formázásnál csináltam 1 új feltételt ami beszínezi x színûre egy tartományt ha a feltétel teljesül, ha más teljesül más színre, viszont mikor a mellette lévõ cellatartományra áthúztam ezt a formázást akkor az elsõ oszlopban nézte meg a feltételt nem az aktuálisban ezt megoldottam azzal hogy a feltétnél kivettem a $ jelet az oszlop betûje elõl ami így néz ki pl:
=A$5="asd" ez így mûködik is viszont így nem az egész cellatartományt színezi be hanem csak azokat ami a feltétel oszlopában vannak(itt a példában A oszlop) de nekem kéne A5-C10ig (ha viszont nem törlöm ki a $ jelet -$A$5="asd"- akkor az összeset beszínezi A5-C10)
Cellaegyesítésel legalább a felsõ 3 cellát átszínezte és így még aztmondom jó volt

Ezt csak azért írtam le mert lehet valamit én rontottam el a feltételben ha nem nembaj megoldom valahogy😊 köszi az összes helpet nagyon gyorsan jött és sokat segített😊
Delila1
#1300
NE egyesíts cellákat, ha nem muszáj, éppen az ilyen jellegû hibalehetõségek miatt.
jelöld ki az egymás melletti cellákat, cellaformázás, igazítás, a vízszintes elrendezésnél a kijelölés közepére opciót jelöld ki. Szépen középre teszi a beírt értéket, és még a szegélyeket is rendesen hozza. Ha ezeken a cellákon a szegélyek közül a "minden szegély"-t választod, a belsõ szegélyeket elhagyja.
Formátumot képlettel nem lehet másolni, erre a formátumfestõ ecset való.

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

#1299
Nem mûködött a képfeltöltés de beszúrom a linket:
http://tinypic.com/view.php?pic=2qc3r5x&s=7
#1298
Átolvasva lehet hogy nem voltam érthetõ megpróbálom most😊Remélem menni fog a képfeltöltés

ha minden igaz akkor a másolandó dolgokat lehet látni.(adatok nélkül de persze lesznek benne)
Szóval ha a feltétel 1 igaz az 1-es tábla kerül be ha a felt. 2 akkor ugye a 2es viszont ha ez megvolt akkor alatta lenne még 1 ugyan ilyen függvény ami ugyan ezt teszi.
a gond csak az hogy ugye az egyik tábla nagyobb mint a másik és a tábla fejléce egyesítve van így nem tudom elõre beállítani a második feltételnél hogy a fejléc 3 egyesített cella legyen mert nem tudom még a pontos helyét (ugye ez függ attól hogy mi került fölé)
remélem jobban sikerült😊
#1297
Akadt még egy gondom nem annyira fontos de szuper lenne ha meg lehetne oldani.
HA függvénnyel töltök fel pár cellát és az a gondom hogy:
1: ezzel az egy elágazással több cellát nem tudnék feltölteni? mert így külön 5-6hoz be kell írnom a függvényt pedig ugyan az a feltétel.
2: valahogy megoldani hogy a HA függvény formátumot is másoljon(ha épp másolok vele adatokat)?
(azt tudom hogy van a feltételes formázás ami jól megy is kivéve egy dolgot, hogy cellákat nem tudok vele egyesíteni és ez fontos lenne mert ugye ha egyesítve van ahol nem kéne akkor elesek adatoktól)

Remélem h nem túl zavarosan mondtam el amit szeretnék:S
Köszi
#1296
Köszönöm szépen mûködött😊 1000 hála😊
Delila1
#1295
Az elsõ makró végignézi a jelenlegi 2. sort, és ahol 1-es értéket talál, azt az oszlopot elrejti. Ezt egyszer kell lefuttatni.

Sub Rejt()
Dim oszlop As Long, uoszlop As Long
uoszlop = ActiveSheet.UsedRange.Columns.Count

For oszlop = 1 To uoszlop
If Cells(2, oszlop) = 1 Then Columns(oszlop).Hidden = True
Next
End Sub

A másodikat a laphoz kell rendelned. Ez, amikor beírsz egy értéket a 2. sorba, megnézi, hogy egyenlõ-e 1-gyel, ha igen, elrejti az oszlopot.
Ugyanez a makró figyeli az A1 cellába írt értéket, ahova a keresett dátumot írod. Ha olyan dátumot írsz be, ami létezik a munkalapodon, arra a cellára áll, ha nem létezõt írtál be az A1-be, nem csinál semmit.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
On Error GoTo 0
Cells.Find(What:=Target, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Select
Exit Sub
End If
If Target.Row = 2 Then
If Target = 1 Then Target.Columns.Hidden = True
End If
End Sub

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

#1294
Sziasztok.
Az lenne a gondom, hogy nem vagyok túlzottan otthon az excel-ben de amennyit kitudtam deríteni az egyik problémámat csak macro-val lehet megoldani amihez semennyire sem értek:S
1:
Azt szeretném megvalósítani hogy ha a második sorom celláiban van egy érték (pl.: 1) akkor rejtse el az oszlopot amúgy pedig ne tegyen semmit és ezt a cellát minden oszlopban ellenõrizze és rejtse el az oszlopokat ha kell.
2:
A másik kérdésem pedig az hogy, hogy tudok egy bizonyos cellára ugrani.
pl. egy sorban a dátumok vannak felsorolva és van 1 keresõ cellám amibe ha beírom a dátumot és enter-t ütök a cursor a megfelelõ cellára ugrik a dátum soromban.
elõre is nagyon köszi a helpet.


Delila1
#1293
Szívesen. Remélem, érthetõ volt.

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

#1292
Köszönöm a részletes magyarázatot.

Delila1
#1291
A 10 a J oszlop sorszáma (A=1, B=2, ... J=10). A 20, ami most 37-re módosult, az utolsó sor száma.

Az If Target.Column = 10 And Target.Row < 37 Then sor azt teszi, hogy akkor hajtódjon végre a számolás, ha a lapon a 10. oszlopban áll be változás, ott is alacsonyabb, mint a 37. sorban.

A Range("H1") = Cells(36, 10) - Cells(35, 10) a H1 cellába beírja a J36-J35 értéket, mikor a J35-ben talál értéket.

Ha nincs a J35-ben szám, akkor a Range("H1") = Cells(36, 10) - Cells(Range("J36").End(xlUp).Row, 10) sor hajtódik végre. Itt a Cells(Range("J36").End(xlUp).Row, 10) rész annak a mûveletnek a VB-s leírása, mikor a J36-on állva egy Ctrl+fel nyilat nyomsz, ami a fölötte lévõ elsõ, értéket tartalmazó sorra áll, ezzel választom ki a kivonandó cella helyét.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 And Target.Row < 37 Then
If Range("J36") = "" Then Range("H1") = "": Exit Sub
If Range("J35") > "" Then
Range("H1") = Cells(36, 10) - Cells(35, 10)
Else
Range("H1") = Cells(36, 10) - Cells(Range("J36").End(xlUp).Row, 10)
End If
End If
End Sub

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

#1290
Köszi!
Ha lehet akkor egy kis módosítást kérek: A "J" oszlop 36-ig tart(próbáltam a 19 helyére, de nem volt jó).
A 10 és 20 számok mit jelentenek?

Delila1
#1289
Ahhoz a laphoz kell rendelned az alábbi makrót, amelyiken a számítást végre akarod hajtani (lapfülön jobb klikk, Kód megjelenítése, a VB szerkesztõbe jutottál, a jobb oldali üres lapra másold be).

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 And Target.Row < 20 Then
If Range("J19") = "" Then Range("H1") = "": Exit Sub
If Range("J18") > "" Then
Range("H1") = Cells(19, 10) - Cells(18, 10)
Else
Range("H1") = Cells(19, 10) - Cells(Range("J19").End(xlUp).Row, 10)
End If
End If
End Sub

Ez a makró figyeli a J1:J19 tartomány változását. Mikor erre a területre viszel be egy új összeget, a H1 cellába beírja az eredményt.
A makróban 3 helyen szerepel a H1, ezeket kell átírnod a saját cellád címére.

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

#1288
Sziasztok
=HA(J19>="";"";J19-(HA(J18="";J17;J18)))
Abban kérném a segítségeteket, hogy ha a J17 is üres cella akkor addig menjen felfelé az oszlop celláiban amíg talál olyan cellát amiben szám van és végezze el a mûveletet.
Kösz

#1287
Sziasztok!

Egy függvényt tartalmazó cellából hogyan lehet lekérdezni, hogy hány darab cella szerepel a függvényben?
Pl. A3 cella függvénye =SUM(A1:A2) Ebbõl én az A5 cellába szeretném kiíratni azt, hogy "2".

A segítségeteket elõre is köszönöm.

#1286
Sziasztok,
valószínûleg megoldhatatlan, de megkérdezem:
Adatok/Érvényesítés...
Megengedve: Lista
Legördülõ lista kipipálva

Na... itt jön az, hogy lehetséges valahogy megoldani hogy ne csak a görgetõsávval, hanem egérrel scroll-ozni is lehessen?

És azt valahogy esetleg, hogy elkezdje beírni a szöveget, és a lista az adott pontra ugorjon?
(nevén nevezve a listám magyarország települései, és praktikus lenne, ha amikor elkezdem írni, hogy "BUD" akkor a bud kezdetû településeknél állna már.)

Eleo

Delila1
#1285
Azt akarod elérni, hogy választható legyen a figyelmeztetés az egyes sorok hiányáról?
Az Msgboxba nem tudsz ilyent betenni, de külön igen, és a futtatás elõtt választhatsz.
A ComboBox csatolását (LinkedCell) a J2 cellába tettem – ezt eltakarja a fölé rajzolt ComboBox –, a két szöveget (Kérek figyelmeztetést, és Nem kérek figyelmeztetést) az L1:L2 cellákba, ez a ComboBox bemeneti (ListFillRange) tartománya.

A kibõvített makró:

Sub Osszevet()
Dim sorA As Integer, usorA As Integer
Dim sorD As Integer, usorD As Integer
Dim talal, keres
Dim sz As String, figy As String

Application.ScreenUpdating = False

usorA = Range("A1").End(xlDown).Row
usorD = Range("D1").End(xlDown).Row
figy = Left(Cells(2, 10), 3)
sz = ". sorban nem kapott megfelelõ értéket... "

For sorA = 2 To usorA 'A keresése D-ben
Cells(sorA, 1).Select
talal = 0
For sorD = 2 To usorD
keres = Cells(sorA, 1)
If Cells(sorD, 4) = keres Then
talal = 1
Exit For
End If
Next
If talal = 0 Then
If figy = "Kér" Then MsgBox "Az elsõ táblázat a másodikból a(z) " & sorA & sz
Cells(usorD + 1, 4) = Cells(sorA, 1)
Cells(usorD + 1, 5) = Cells(sorA, 2)
Cells(usorD + 1, 6) = Cells(sorA, 3)
usorD = usorD + 1
End If
Next

For sorD = 2 To usorD 'D keresése A-ban
Cells(sorD, 4).Select
talal = 0
For sorA = 2 To usorA
keres = Cells(sorD, 4)
If Cells(sorA, 1) = keres Then
talal = 1
Exit For
End If
Next
If talal = 0 Then
If figy = "Kér" Then MsgBox "A második táblázat az elsõbõl a(z) " & sorD & sz
Cells(usorA + 1, 1) = Cells(sorD, 4)
Cells(usorA + 1, 2) = Cells(sorD, 5)
Cells(usorA + 1, 3) = Cells(sorD, 6)
usorA = usorA + 1
End If
Next

'Rendezés
Columns("A:F").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Application.ScreenUpdating = False

Cells(1).Select
End Sub

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

Delila1
#1284
Háromszor elolvastam, de még mindig nem értem. Ha nem akarod, hogy megjelenjen az msgbox, töröld a makróból.

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

#1283
Ja igen értem, mert nem az activecellre hívatkoztál a ciklusokban hanem direkt a cellákra. Ok kivettem, de van egy olyan kérdésem, hogy bettem egy msgbox "A(z) elsõ táblázat" & sorA & "ban nem kapott megfelelõ értéket a második táblázatból.... "
Meg tudok-e adni egy CheckBox ot ebben a standard msgbox ban, azzal az opcióval, hogy ne jelenjen meg a következõkben ez a figyelmeztetés?

Delila1
#1282
Két sort, amit a próbához írtam be, de kifejezetten lassítja a futást, ki kellene törölnöd.
Ez a két külsõ for-next ciklus elsõ sora, a cells(sorA,1).select, és a cells(sor_D,4).select.

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

Delila1
#1281
Az msgboxot a frissítés engedélyezése után tedd be.
Sokat adattal számoló makróknál érdemes még a futás idejére letiltani az automatikus számolást (Application.Calculation = xlCalculationManual), a végén pedig vissza kell állítani (Application.Calculation = xlCalculationAutomatic)

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

#1280
Delila köszönöm. Még fel sem ébredtem, épp neki akarok fogni, hogy agyaljak ki valamit s hát már itt is a megoldás. Te vagy a fórum mindent járó malmocskája, vagy terülj terülj asztalkája. 😊) Mégegyszer köszönöm, tetszik az a képernyõ letíltás ezt fogom használni máshol is csak próbáljam ki, a msgboxokat megjeleníti-e?
Elnora ez a függvény sokszor kellett volna és még sokszor hasznát vehetem, ha tudom, hogy van akkor talán neki sem fogok a makróírásnak. Tulajdonképpen két függvény van amelyeket itt a fórumon ismertem meg, az egyik ez HOL.VAN a másik meg az INDIREKT köszi.


Delila1
#1279
Lassúbb, de hibátlan mûködést biztosít, ha az A oszlop minden tagját összehasonlítjuk a D minden tagjával, és fordítva is.
A makró elején a futás gyorsítása érdekében letiltottam a képernyõ frissítését, a végén engedélyeztem. Az új makró végére betettem a rendezést.

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

#1278
MATCH angolul tudtommal és "A HOL.VAN függvény egy adott elemet keres egy cellatartományban (tartomány: Két vagy több cella egy lapon. Az adott tartományban lehetnek szomszédos és nem szomszédos cellák is.), majd visszaadja az elem tartománybeli relatív pozícióját. "

#1277
Köszonom mindenkinek,
Delila, ez jól müködik, csak ha van ez aprobléma akkor gondolom, hogy a
Set talal = .Find(Cells(sor, 1).Value, LookIn:=xlValues)
If talal Is Nothing Then
úgy hasonlítja össze az értékeket, mintha stringek lennének?
Akkor ez helyett (amit nem nagyon értek, mármint a szintaktikát) használok egy olyasmit
usor1=Range("D1").End(xlDown).Row
kontr=0
for j=2 to usor1
if cells(sor,1)<>cells(j,4)

Cells(
na ebbe belegabalyodtam, reggel átgondolom, de ezt sejtem a megoldásnak, hogy minden poziciót az A oszlopból összehasonlít monden pozicióval a D oszlopban
Az irány az tetszik köszi
Elnora sajnos ki kell valahonnan a HOL.VAN fügvényt?, mert angol excelem van s ezt kapásból nem ismerem de, ha ez az amit sejtek akkor hasznos lesz
#1276
Sziasztok,

csak fél megoldás, mert nem rendezi, de ellenõrzésnek jó lehet...

Létrehozol egy kontroll-oszlopot, amiben minden szám benne van (A oszlop minden számlát és D oszlop minden számát bemásolod, majd az ismétlõdéseket kiszeded a duplikálódásokat, aztán abc-be rendezés) /nekem ez a G:G oszlop lett - a képletben látod majd/
Ezek után egy oszlopba (ami az A-B-C tömbödet fogja vizsgálni, az alábbi képletet A1 cellába beírod és lehúzod:
=HA(HOL.VAN(A:A;G:G)=SOR(A1);"OK";SOR(A1)-HOL.VAN(A:A;G:G))
Ez OK-t ír, ha jó helyen van a sorrendben, ha nem, megadja negatív értékben, hány sorral lejjebb kellene lennie.
Ugyanezt a D oszlopra is megcsinálod.

De rendezni nem tudom ezzel ugye. A lenne a nem létezõ makró-programozói képességem. XD

Delila1
#1275

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

Delila1
#1274
És akkor a makró:


Sub Osszevet()
Dim sor As Integer, usor As Integer, usor_1 As Integer
Dim talal

usor = Range("A1").End(xlDown).Row
For sor = 2 To usor
With Columns("D😄")
Set talal = .Find(Cells(sor, 1).Value, LookIn:=xlValues)
If talal Is Nothing Then
Cells(usor + 1, 4) = Cells(sor, 1)
Cells(usor + 1, 5) = Cells(sor, 2)
Cells(usor + 1, 6) = Cells(sor, 3)
usor = usor + 1
End If
End With
Next

usor_1 = Range("A1").End(xlDown).Row
For sor = 2 To usor
With Columns("A:A")
Set talal = .Find(Cells(sor, 4), LookIn:=xlValues)
If talal Is Nothing Then
Cells(usor_1 + 1, 1) = Cells(sor, 4)
Cells(usor_1 + 1, 2) = Cells(sor, 5)
Cells(usor_1 + 1, 3) = Cells(sor, 6)
usor_1 = usor_1 + 1
End If
End With
Next
End Sub

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

Delila1
#1273
A lenti makró beírja az A:C adatait a D:F tartomány aljára, ha ott nem találta meg, a D:F tartomány többletét pedig az A:C aljára.
Hibája: ha pl. az A oszlopban szerepel egy 54-es szám, ami nincs meg a D oszlopban, viszont a D-ben van egy 254-es érték, azt találatnak veszi.

A makró végére írhatsz egy újabb rendezést.

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

#1272
Sziasztok
Megint kérdések, igazából, egyelõre az egyikkel foglalkozom most. Van két táblázatom amelyek elvileg egyformák kellene legyenek. Gyakorlatilag nem azok.Mindkét táblázat 3 oszlopos (A,B,C) és (D,E,F) Az A és D oszlopokban számok vannak csökkenõ sorrendben, amelyek egyenlõek de van valamenyi sor amelyek hianyoznak vagy az egyik vagy a násik táblázatból. Azt kellene, hogy ahol nincs meg a másik sorban a megfelelõje, ott betegyen abba a sorba egy üres sort, a többit nyomja lefele egy sorral.
Egy ötlet, hogy induljak, vagy mire építsem fel az egészet?
Ti hogy csinálnátok?
#1271
Mindenképp érdekelne. ((o:

Delila1
#1270
Összeállítottam egy füzetet, aminél nem kell az adatokat levélben küldözgetni.
Új cégnév felvitelekor bekéri a címet és az adószámot, beírja ezeket az adatokat a rejtett adatlap elsõ üres sorába. Ugyanakkor rendezi is a rejtett adatokat a cégnév szerint, hogy könnyebben lehessen kiválasztani az érvényesítésben.
Ha érdekel, elküldöm.

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

#1269
Adatok/Érvényesítés/Hibajelzés fülön kivettem a pipát arról, hogy "Érvénytelen adatok beírásakor hibaüzenet jelenlejen meg". Lényegében csak a legördülõ lista miatt van érvényesítve a cella.

Eredetileg hasonlóan volt, ahogy te mondod, de sajnos az életben nem mûködött. A vevõk tartomány rejtett fül - isten ments, hogy hozzá nyúljanak <#csodalk>- egy figyelmeztetõ párbeszédpanel arról jelezett, hogy nekem e-mailben küldjék az adatokat. De ez nagyban lassította a folyamatot.
Ez egy számlakérõ form, és ha új partner esetén muszáj, hogy a formot kitöltõ személy be tudja írni az új adatokat, és mivel nem számítógépes emberek, ezt lehetõleg úgy tehessék, hogy a gép semmit nem akar velük kommunikálni. (o:

Delila1
#1268
Hogy csinálod, hogy érvényesítést tartalmazó cellába az elõre megadott Vevõk-ön kívül egyebet is be lehet vinni? Úgy tudom, éppen arra való az érvényesítés, hogy ilyent ne lehessen tenni.
A figyelmeztetést az érvényesítés párbeszéd ablak Hibajelzés fülén a Hibaüzenethez írnám. Be sem engedi írni az új adatot a (C8) cellába, jön a figyelmeztetés, hogy a Vevõk tartományba írja az adatokat, majd akkor kiválaszthatja.

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

#1267
Szia,

a cégneveknél az utolsó után volt két üres sor, majd még egy adatsor (ezt akartam alapesetben, kvázi instrukciókat tartalmazott volna, és azért két sor kihagyás után, hogy a C8as cellában a legördülõ listában ne el legyen szeparálva). Na, ezt az adatsort kitöröltem, és megoldódott az egész.
A probléma csak az, hogy nem értem, hogy miért. Miért a 64-sortól adott hibás választ, ha változtattam az adatok sorrendjén, akkor miért máshonnan, és egyáltalán, miért adott hibás mûködést!?

A HIBÁS függvény egyébként valóban elegánsabb, köszönöm, átírom.

Viszont a #1263-as nem stimmel, mert pont abból lett a kavarodás, hogy cégnének nem csak az elõre bevitt adatokból választhat, hanem bármit beírhat, és akkor kell egy figyelmeztetés a C9be, hogy töltse ki mindenképp.Viszont ha jól értelmezem, te úgy gondolod, hogy a C8as cella csak az listából érvényesített adatokat engedélyezni.

És millió köszönet a válaszért!

Delila1
#1266
Ez viszont tényleg a saját hozzászólásom javítása.
A képlet helyesen: =FKERES(C8;vevõk;2;0)

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.

Delila1
#1265
Az elõzõ BéZé-nek szólt. <#pardon1>

Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.