- GoodSpeed: Bye PET Palack, hello SodaStream
- sh4d0w: Netflix? Ugyan, VW előfizetés!
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- eBay-es kütyük kis pénzért
- sziku69: Fűzzük össze a szavakat :)
- Geri Bátyó: Agglegénykonyha – bevezető - igényfelmérés
- LordAthis: AI Kérdés érkezett - 3600 soros Spagetti kód refaktorálása és budget
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- Elektromos rásegítésű kerékpárok
-
LOGOUT
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
-
róland
veterán
válasz
Delila_1 #23799 üzenetére
Ha jól nézem akkor a következő részlet átalakítása akár nekem is jó lehet?
If Target.Column = 7 Then
sor = Target.Row
Application.EnableEvents = Fals
Range(Cells(sor, "B"), Cells(sor, "F")).Copy
Range("H18").PasteSpecial xlPasteValues
Application.CutCopyMode = False
Range("B4").Select
Application.EnableEvents = True
End If -
róland
veterán
válasz
slashing #23797 üzenetére
Képlet akkor használható, ha a végső helyen dolgozok.
Ez egy segédtábla, ami minden nap üresen nyílik meg, beírnak pár adatot, majd a végső tábla megfelelő sorába kell azt átrakni. (A kérdéses sort a HOL.VAN függvénnyel lehet megkerestetni.)
A képlet akkor jó, ha a célhelyen kezdeményezem a keresést a források között. Itt viszont a forrásból kezdeményezem az adat átadását.
Mint írtam az is cél, hogy az adatot rögzítő a teljes adattáblához ne férjen hozzá. Kizárólag az aznapi adatokat látná.
-
slashing
senior tag
válasz
róland #23794 üzenetére
sőt ezt szerintem képlettel is le lehetne írni: ha/dátum/most/kisebb/nagyobb vagy valamilyen keres függvényekkkel.... ezek csak hírtelnjében kippattant fügvények amikkel lehet hogy le lehet írni. Nem tartom kizártnak bár rövid az nem lenne, lehet tényleg egyszerűbb macro-val..
-
Fferi50
Topikgazda
válasz
nebulo0128 #23792 üzenetére
Szia!
Most egy olyan dodonai választ fogsz kapni, hogy "az excel sokmindenre képes, de sokmindenre nem".
Alapjában véve táblázatkezelőnek "indult", de mára már "adatbázis kezelő" is nyomokban.Ahhoz amit szeretnél, szerintem kell egy olyan makró, amelyik a cella beírása után lefuttatja a cella értékének megfelelő lekérdezést és az eredményt beírja a cella melletti tartományba. Vagyis minden cellaértékre külön-külön kell lefutnia a lekérdezésnek. Viszont ez a lekérdezés (querytable) lehet egy konkrét helyen (akár rejtett munkalapon) és onnan másolódik be az adott cella mellé.
Vagyis a lekérdezés tábla értéke mindig változik az aktuális cella értékének megfelelően, viszont az egyszer már a cella mellé másolt értékek nem változnak.Pl. querytable helye munka2!A1:X2 egy sor fejléc egy sor adat
Munka1.A1 cellájába beírod "valami", a worksheet_change esemény erre lefuttatja a lekérdezést az A1 ez az eseménykezelőben Target nevű objektumként található - értékével, majd a Munka2!A2:X2 értéket bemásolja a Munka1. B1 cellájától kezdődően.
Ezután
Munka1 A2 cellájába beírod "valami2", a worksheet_change esemény megcsinálja a fentieket a Target.value értékkel -azaz az A2-ben levő valami2 -vel majd Munka2!A2:X2 értékekekt bemásolja a Munka1.B2 cellájától kezdődően (Munka1.B2 cella = Target.Offset(0,1) az eseménykezelőben.
És így tovább...."Csak" a lekérdezést és az eseménykezelőt kell jól megírni........ Nyilván ellenőrizni kell, hogy valóban olyan helyre írtak be értéket, ahova a cikkszám való és valóban létező cikkszámot írtak be.
Remélem, tudod hasznosítani amit írtam, ha gondolod privi is jöhet.
Üdv.
-
róland
veterán
-
nebulo0128
csendes tag
válasz
Fferi50 #23790 üzenetére
köszi,
úgy oldottam meg közbe, hogy MS Query-vel odbc adatforrásból betöltöttem, és ott új lekérdezésként annyit adtam csak meg, hogy [ ] ez után fájl>hozzáadás excelhez, és ott kéri az, hogy melyik cellát akarod megadni a paramétert.annyi bajom lenne vele, hogy ezt a lekérdezést nem lehet lefele sokszorozni, és hogy mindig a mellette lévő adatból vegye feltételt. (olyanban gondolkozok, hogy egy nagy adatbázisból dolgozna (amit egy másik forrás progival használunk), én beírom a cikkszámot napi gyártáshoz, és azonnal kilistázza nekem elektronikát, címke nyomtatáshoz linket stb.. )
ilyenre esetleg képes az excel? vagy inkább hagyjam ezt az ötletemet -
róland
veterán
Ugyan nem Excel, de adott az alábbi makró:
sub Adatrogzites
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$B$2"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$B$2:$M$2"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Nr"
args4(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args4())
rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "ToPoint"
args5(0).Value = "$B$290"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
end subA lényege, hogy egy berögzített adatsort átmásolna (kijelölés-másolás-beillesztés módszerrel) egy táblázat megfelelő sorába.
Ezt szeretném módosítani oly módon, hogy az adott dátumnak megfelelő sorba szúrja be az adatokat. (A dátumnak megfelelő sor kiszámított sorszámát az eredeti munkalap egyik (jelen esetben A3) mezője tartalmazza.Úgy néztem, hogy ebben a részben határozza meg, hogy hová is kell beszúrni:
rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "ToPoint"
args5(0).Value = "$B$290"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())Azaz ezt szeretném úgy módosítani, hogy $B$290 érték helyett a mindenkori kívánt cellába illessze be az adatokat.
Hogy lehet ezt megoldani?
-
Fferi50
Topikgazda
válasz
nebulo0128 #23783 üzenetére
Szia!
Még az előző hozzászólásomhoz annyit:
Ha a feltételt a cellából veszi, akkor csak "WHERE (f_orszag like '" & Munka1!A1 & "')"
Amit az előbb írtam, a makrós megoldásra jó.
Üdv.
-
Fferi50
Topikgazda
válasz
nebulo0128 #23783 üzenetére
Szia!
Szerintem próbáld így:
WHERE " (f_orszag like ' & sheets("Munka1").range('A1").value & "')"
Üdv.
-
Xterms
tag
válasz
Delila_1 #23779 üzenetére
Óó király vagy, kezd alakulni.
Megoldható az, hogy a gomb egy kijelölt sort másoljon be A-ból, és ne mindenképp azt, amelyikkel egy sorban van?
m.zmrzlina: külön cellákban vannak, sőt, igazából egymás mellett is több cellányi tartalom lenne, csak ezt még nem mertem felhozni, majd napról napra bonyolítom, és eljutunk valahová remélem
-
nebulo0128
csendes tag
Hello,
SQL lekérdezést szeretnék betenni excelbe, úgy hogy a feltételt az egyik cellából veszi
adatkapcsolat létrejön sqlexpress ki is tudom listázni, pl
SELECT f_nev1
FROM "proba"."dbo"."orszag"
WHERE (f_orszag like 'DE')
ez kiírja akkor hogy Németország
azt szeretném, hogy a feltételben a DE-t a táblázat egyik mezőjéből vegye, pl A1próbáltam azt, hogy:
SELECT f_nev1
FROM "proba"."dbo"."orszag"
WHERE (f_orszag like '%=Munka1(A1)%')meg ennek változatait de nem listáz ki semmit
hogyan kell helyesen megadni, hogy a táblázatomból vegye a feltételt? (ha lehet egyáltalán)
-
mdk01
addikt
válasz
m.zmrzlina #23778 üzenetére
Úgy néz ki megoldódott.
,
Köszi -
Delila_1
veterán
válasz
Xterms #23761 üzenetére
Az A oszlopba írtam az adatokat, B-be gombok helyett csak a Windings betűtípus 0240-es kódját tettem. A fekete hátterű cellák a C oszlopban vannak.
A makrót a laphoz kell rendelni.Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim sor As Long
sor = Target.Row
If Target.Column = 2 Then
If Cells(sor, 3) = "" Then
Cells(sor, 3) = Cells(sor, 1)
Else
Application.DisplayAlerts = False
Do While Cells(sor, 3) <> ""
Cells(sor, 3) = Cells(sor + 1, 3)
sor = sor + 1
Application.DisplayAlerts = True
Loop
End If
End If
End Sub -
mdk01
addikt
válasz
m.zmrzlina #23776 üzenetére
Ott ahol nem működik a képlet nézd meg, hogy nincs-e a hivatkozott cellában szóköz vagy egyéb nem kinyomtatható karakter.
Aha, erre nem gondoltam.
Hivatkozás van benne, de a hivatkozott cella is üres így nem ír ki semmit.
Akkor gondolom ilyen esetben a hivatkozott cellára kellene nekem is hivatkozni.Köszönöm
-
mdk01
addikt
válasz
m.zmrzlina #23774 üzenetére
Igen, köszönöm pont ezt próbáltam meg most, és működik valamelyiknél, vaamelyiknél pedig nem.
Nem teljesen értem, szerintem valami zavar van a képletben és megkeveredik.És ha nem akarom hogy az üres szót kiírja, hanem ne írjon ki semmit akkor mit kell írni?
Most csak simán így hagytam, de ez is zavaros neki.=HA(A1="";"";A1)
Köszönöm
-
m.zmrzlina
senior tag
Próbáld így:
=Vágáslista!A3&"_"&Vágáslista!S3&"_"&HA(Vágáslista!R3="";"";KÖZÉP(Vágáslista!R3;1;10)&"_"&HA(Vágáslista!Q3="";"";Vágáslista!Q3)&"_"&Vágáslista!D3)
Ha üres cella esetén szeretnél valamit csinálni, vagy nem csinálni akkor a következő képletet használd:
=HA(A1="";"üres";A1)Lefordítva: (a képlet mondjuk B1-ben van):
Ha A1 nem tartalmaz adatot akkor B1 értéke az üres szó (vagy ami az üres helyén az idézőjelek közt van) egyébként B1 megkapja A1 értékét -
mdk01
addikt
Sziasztok,
Lenne egy kérdésem megint.=Vágáslista!A3&"_"&Vágáslista!S3&"_"&HA(Vágáslista!R3="üres";"üres";KÖZÉP(Vágáslista!R3;1;10)&"_"&HA(Vágáslista!Q3="üres";"üres";Vágáslista!Q3)&"_"&Vágáslista!D3)
Itt az "üres" részével volna kérdésem, hogy ezt így jól csináltam?
A lényeg annyi csak hogy ha a cella üres akkor ne írjon ki semmit, ha pedig van bene valami érték akkor írja ki azt.
Az nem tetszik hogy nem csinálja meg automatikusan ha lemásolom a képletet a többi cellára, csak akkor ha beírok abba a bizonyos cellába egy értéket, akkor azt megjeleníti és utána ezt az értéket kitörlöm és akkor nem jelenít meg semmit.
Szóvel ez az "üres" érték nem tetszik neki lehet, vagy nem is tudom. Ezt így kell jelölni?Köszönöm
-
A214
aktív tag
válasz
m.zmrzlina #23768 üzenetére
egyszerűbb megadni azt, hogy mi ne kapjon sorszámot
-
A214
aktív tag
Hali
Ez csak egy példa volt, nem nevek vannak, hanem helyiségek(WC,fürdő,konyha,szoba stb minden féle)
Szóval ezekhez nem akarok sorszámot, viszont ami a helyiségen belül van ahhoz igen. -
m.zmrzlina
senior tag
válasz
m.zmrzlina #23765 üzenetére
Persze ha az L oszlop képleteit felülírod az értékükkel akkor a segédoszlopokat simán lehet törölni.
Kérdés az, hogy milyen könnyen tudod előállítani a (nálam) O oszlopban lévő listát.
-
-
plaschil
aktív tag
Gondolom a nevek elé nem akarsz sorszámot.
Sub Macro1()
Dim text As String, result As String
text = "Ádám"
result = Left(text, 1)
'MsgBox is for demo only
MsgBox result
If (result = UCase(result)) Then MsgBox ("true")
End SubEz a kis kód megmondja, hogy melyik cellában van név. (feltételezve, hogy nagybetűvel van írva a név)
Így hogy tudod, melyikben mi van, könnyű megírni rá a kódot most már. -
A214
aktív tag
üdv!
Adott egy táblázat amit sorszámozni szeretnék.
Viszont a táblázat tartalmaz olyan sorokat is amit nem akarok sorszámmal ellátni.Tehát:
Tibor
1alma
2körte
István
3banán
4szilva
5citrom
6füge
Ádám
7banán
8szilva
9citrom
10füge
11cseresznyeLétezik erre valami trükk?
-
Xterms
tag
Sziasztok!
A képen láthatót szeretném megvalósítani excelben.
Van A és B listám. B listán minden sorhoz tartozik egy gomb. Ha A listáról kijelölök egy sort, és megnyomom B listán a gombot, akkor azt a sort bemásolja oda (a példában aaaaa... és bbbbbb... sorok). Ha újra megnyomom a gombot, ami melletti sor nem üres ( a példában aaaaaa... soránál) akkor törli, ami mellette van, és az alatta lévő sorok egyet feljebb ugranak.
Na, ehhez hogy fogjak hozzá?
-
Delila_1
veterán
válasz
plaschil #23757 üzenetére
Függvénnyel nem, de egy rövid kis makróval megoldható.
Sub Hiba()
Dim ter As Range, CV As Range, usor As Long
Sheets("A").Activate
usor = Cells(1).End(xlDown).Row
Set ter = Range("A1:A" & usor)
For Each CV In ter
If CV.Interior.Color = vbRed Then Sheets("B").Cells(CV.Row, "X") = "Hiba"
Next
End SubA Sheets("A").Activate, és az
If CV.Interior.Color = vbRed Then Sheets("B").Cells(CV.Row, "X") = "Hiba"
sorokban írd be az "A" és "B" helyére a lapjaid igazi nevét, idézőjelek között. -
plaschil
aktív tag
Szervusztok!
Kérdésem az volna, hogy egy sima if-fel tudom-e vizsgálni hogy egy adott cellatartományban van-e valamilyen színezés?
Ötletem arra irányul, hogy ha egy sheet-en (pl. A) mondjuk a 4. sorban van valahol piros háttérszín, akkor egy másik sheet-en (pl. B) ugyanígy a 4. sor X. cellájába írja be, hogy hiba.
-
Delila_1
veterán
válasz
Teejay83 #23755 üzenetére
Nem tudom, melyek a "hasznos" értékek.
Két oszlop tartalmát több módon össze lehet hasonlítani. A képen ezek közül 1-et látsz. A második oszlop azt mutatja, hogy a mellette balra lévő szám melyik sorban található az E oszlopban, az F pedig a mellette lévő szám előfordulási helyét adja az A oszlopban.Használhatod még a DARABTELI függvényt, vagy makrót.
Az A és E oszlopra feltételes formázást adtam. A-ra: =HOL.VAN(A2;E:E;0)>0, E-re a fordítottja.
-
Teejay83
tag
Sziasztok
Segítsetek légyszi
Excel 2010-ben kellene két oszlopot összehasonlítani amiben azonosító számok találhatók.
Az egyik oszlop 140 sorból a másik 560-ból áll
Hogy lehetne legegyszerűbben leszűrni a két oszlop tartalmát a szerint,hogy melyek az azonos értékek? -
Attys01
csendes tag
Sziasztok,
sajnos nem tudok megoldást találni a problémámra ezért kérnék segítséget.
Van egy excel táblám, és kördiagramot kellene készítenem. Fiktíven írtam fel adatokat, csak hogy érzékeltessem a problémát (egyes diagramon kötelezően feltüntetendő magyarázatok elég hosszúak.) A kördiagramot elkészítve, általában meg sem jelenik az összes magyarázat. Tudom, ha széthúzom meg minden, akkor látszódni fog minden.De a kérdésem van megoldás arra, hogy aaaaa…. és bbb…. közötti térközt lecsökkentsem, már ami eszembe jutott kipróbáltam, és nem sikerült. Sajnos az semmiféleképpen sem járható út, hogy a magyarázat hosszát csökkenthessem, ukáz, hogy ki kell írni az egészet…
-
Delila_1
veterán
válasz
slashing #23751 üzenetére
Klassz az oldal.
Többnyire ahhoz szükséges 1-1 függvény angol neve, ha makróban szeretnénk alkalmazni. Internet nélkül is megtudhatjuk a nevét.
Beírjuk a függvényt a lapra, így kipróbálhatjuk, hogy működik-e. Lapfülön jobb klikk, Beszúrás, Nemzetközi makrólap. Kapunk egy új lapot Makró1 névvel.
Átmásoljuk a függvényt tartalmazó-, valamint az(oka)t a cellá(ka)t, ami(k)re hivatkozik.Az új lapon a függvény cellájában, és a szerkesztőlécen angolul jelenik meg a függvénynév, ha rákattintunk, magyarul láthatjuk.
-
slashing
senior tag
Excel függvények angolról magyarra vagy fordítva
Nem emlékszem hogy valaha is lett volna olyan függvényem amit nem tudott volna átfordítani. Nagyszerű oldal!
-
Delila_1
veterán
Igen, mindegyikre tesz, de nem kötelező minden oszlopodat szűrni. Ha csak a típust szűröd, pl. C30/37-16/F3-ra, akkor 2 féle kitét látszik, a képlet értéke 54. Ha a kitétet is szűröd XC2 XV2 XD2 XA1-re, az eredmény 47.
Jobb, ha kimutatást készítesz, új lapra.
Javaslom, hogy a Munka1 lap A2:C495 tartományát alakítsd táblázattá. Kijelöl, Beszúrás, Táblázatok, Táblázat. Ez azért jó, mert az ebből készített kimutatás ilyenkor a táblázatod bővülésekor az újabb sorok adataival is számol frissítéskor.
Ebből érdemes kimutatást készíteni.Szerk.: a C495-ben helytelen adat van!
-
adam_
senior tag
-
Delila_1
veterán
Egyszerűen megoldható.
A 2. sorba autoszűrőt teszel. Szűröd a tartományt típusra és kitétre. Az E2 cella képlete
=RÉSZÖSSZEG(9;C:C)
Ez mindig az aktuális szűrésnek megfelelő összeget adja.Kimutatással megoldhatod a kérdésed második részét.
A sorcímkékhez adod a típust, oszlopcímkékhez a kitétet, és az értékekhez a mennyiséget. -
adam_
senior tag
Sziasztok!
Adott három oszlop, betontípus, kitéti osztály, és mennyiség. Egy olyan legördülő szűrési opciót szeretnék kialakítani, amelyből ki lehet választani a betontípust és hozzá mellette a hozzá tartozó kitéti osztályát lehozza szintén legördülő listából és az ezekhez tartozó mennyiségeket összeadja egy harmadik mellette lévő oszlopban.
Egy külön részben pedig listázza az osszes kombinaciot eloszor. Mert több betontípushoz több kitéti osztály is tartozhat. Ezt gondolom Fkeressel kéne elsőkörben?
Előre is köszönöm a válaszokat.
-
Szép napot (legalábbis süthetne)
Adott egy excel fájl, amit többen is használnak. Egy illető aki használja, szeretné azt beállítani, hogy megadott cellát zárolvá tegyen úgy, hogy abba ő tudjon beleírni, de más ne. Lehetséges-e ez ? -
Fferi50
Topikgazda
válasz
Delila_1 #23738 üzenetére
Szia!
Félreértettél, nem azt írtam, hogy nincs hibakezelés a makródban - természetesen láttam, hogy ott van az on error goto tovabb és a tovabb cimke - , sőt, még azt sem írtam, hogy nem jó a ws.match, hanem azt, hogy app.match esetén nem kell külön hibakezelést beépíteni a makróba.
Üdv.
Idézet a 23730-ból:
"A worksheetfunction.match helyett célszerűbb az application.match függvényt alkalmazni, (ezt én is egy másik topicban tanultam), mivel így más módon kell a hibakezeléssel foglalkozni." -
Delila_1
veterán
-
bteebi
veterán
-
Fferi50
Topikgazda
válasz
Snoop-y #23732 üzenetére
Szia!
Ha nem írod, hogy milyen nyelvű és verziójú excel verziót használsz, akkor bizony ilyen előfordulhat. Mivel a fórumon általában magyar nyelvű excellel találkozunk, ezért a magyar nyelvű függvényeket szoktuk megadni (kivéve makró).
De tudjuk ám az angol nevüket is....Üdv.
-
m.zmrzlina
senior tag
válasz
samfishR #23727 üzenetére
"A.xlsx" munkafüzetet megnyitod (ez az amiben te módosítasz nem a képletek)
Alt+F11-gyel VB editort megnyitodbal oldalon lesz a projekt tallózó ablakban, egy olyan hogy "VBAProject(A.xlsx)"
természetesen nem (A.xlsx) hanem a te fájlod neve lesz itt.
Ez alatt a ThisWorkBook-on jobbklikk majd View CodeAz így megnyíló ablakba bemáslod a 23634-es hsz-ben lévő kódot.
Ezt a fájlodat (az "A.xlsx"-t amiben te módosítasz nem a képletek) makróbarátként (.xlsm) kell menteni. Onnantól kezdve A.xlsm lesz a neve. Természetesen az "A" helyén a te fájlod neve szerepel.Ezen a két helyen munkafüzetek neveit átírod a saját munkafüzeteid neveire.
Workbooks.Open ThisWorkbook.Path & "\B.xlsx"
Workbooks.Open ThisWorkbook.Path & "\C.xlsx"Mindhárom munkafüzeted legyen ugyanabban a mappában legyen.
-
Fferi50
Topikgazda
válasz
Delila_1 #23724 üzenetére
Szia!
Néhány apró észrevétel:
" Cells(sor + 1, oszlop).Select
usor = Selection.End(xlDown).Row
"A select teljesen felesleges, egyszerűen usor=cells(sor+1,oszlop).end(xldown).row elég.
A worksheetfunction.match helyett célszerűbb az application.match függvényt alkalmazni, (ezt én is egy másik topicban tanultam), mivel így más módon kell a hibakezeléssel foglalkozni.
A ws.match hibát generál, ha nem találja a keresett értéket, az app.match hibaértékkel tér vissza, amit változóban vagy függvényben is "elkaphatsz", akár az iserror, akár az iferror függvény működik. Tehát ebben az esetben nem kell az on error goto vagy on error resume next sor és a hozzá kapcsolódó dolgok.Ha iserrort használsz, akkor "csak" arra kell figyelned, hogy a változó, amibe kéred a match eredményét, variantnak legyen definiálva - mivel értéke lehet szám és lehet hibaérték is. Iferrornál nem kerül a változóba hiba, tehát ott jó a double is.
Üdv.
-
slashing
senior tag
válasz
Delila_1 #23724 üzenetére
annyi módosításban még segítenél hogy a WS1 az mindig annak a workbooknak az activesheetje legyen ahol éppen áll, mert ezelőtt a kód előtt van egy sheet.add-om a ws2 meg egy fix workbook fix sheetje amibe végül bekerül
(egy mappában lesznek)
Szerk:
(#23728) Fferi50 Nézem, köszi -
Fferi50
Topikgazda
válasz
slashing #23726 üzenetére
Szia!
Azért javaslom, nézd meg ezt is. Egyetlen követelmény, hogy a másolandó adatok az első oszlopban kövessék egymást - úgy ahogyan a képeken is van.
Sub masolo()
Dim mlap1 As Worksheet, masolando As Range, mlap2 As Worksheet, hovasor As Double, hovaoszlop As Double
Set mlap1 = Workbooks("Munkafüzet3").Sheets("Munka1")
Set mlap2 = Workbooks("Munkafüzet4").Sheets("Munka1")
Set terulet = mlap2.UsedRange
hovasor = terulet.Rows.Count
If terulet.Cells(1, hovasor) = "" Then
Do While True
If terulet(1, hovasor).End(xlToRight).Column < terulet.Columns.Count Then Exit Do
hovasor = hovasor - 1
Loop
End If
hovasor = hovasor + 1
Set terulet = mlap1.Range("A1").CurrentRegion
Do While True
For oszlop = 1 To terulet.Columns.Count
hovaoszlop = Application.IfError(Application.Match(terulet.Cells(1, oszlop), mlap2.Rows("1:1"), 0), 0)
If hovaoszlop <> 0 Then
Intersect(terulet, terulet.Offset(1, 0)).Columns(oszlop).Copy mlap2.Cells(hovasor, hovaoszlop)
End If
Next
hovasor = hovasor + terulet.Rows.Count - 1
Set terulet = terulet.Range("A1").End(xlDown).End(xlDown).CurrentRegion
If Intersect(mlap1.UsedRange, terulet) Is Nothing Then Exit Do
Loop
MsgBox "A másolás megtörtént!", vbInformation, "Másolás"
End SubÜdv.
-
samfishR
senior tag
válasz
m.zmrzlina #23633 üzenetére
Köszi a tippet!
Sajnos a makrókhoz semmi közöm, ebben tudna valaki segíteni?
-
-
slashing
senior tag
Köszi, nekem most van egy verzióm ami manuálisan félig kész már csak valahogy ciklusba kellene raknom amit még egyenlőre nem tudom hogyan kell.
Ez most ott tart hogy a keresendo =cells(1,1) itt adom meg neki hogy melyik fejlécet keresse, kijelöli most még csak így manuálisan az Fejléc alatti adatokat(A2 xldown) és másolja, megnyitja a célfájlt, megállapítja az utolsó sort és azonosítja az oszlopot amiben szerepel a cells(1,1) fejléc majd odaugrik annak az oszlopnak az utolsó sorábá és bemásolja az adatokat.
Nah ezt kéne ciklusba rakni valahogy úgy hogy ha berakta az első oszlop adatait visszaugrik kimásolja a B1 alatti adatokat, berakja az afölötti fejléces oszloppal rendelkező oszlopba megint visszaugrik kimásolja a C1 alattit azt is bemásolja a megfelelő fejléccel ellátott oszlopba majd ha már nem talál adatot kilépjen.
Sub akarmdi()
Dim LastRow As Long
keresendo = Cells(1, 1)
Range("A2").Select
Range(Cells(ActiveCell.Row, ActiveCell.Column), Cells(ActiveCell.End(xlDown).Row, ActiveCell.Column)).Select
Selection.Copy
Pathname = "q:\SPC 2010-2012-2013\Bosch\"
Filename = "0000-0000.xlsx"
Workbooks.Open Filename:=Pathname & Filename
LastRow = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LastRow = LastRow + 1
oszlopazonositas = Application.Match(keresendo, Workbooks("0000-0000.xlsx").Worksheets("munka1").[1:1], 0)
ActiveSheet.Cells(LastRow, oszlopazonositas).Select
Selection.PasteSpecial Paste:=xlPasteValues
End Sub(#23724) Delila_1 Próbálom
-
Delila_1
veterán
válasz
Delila_1 #23723 üzenetére
Meg is van.
Sub Oszlopok_1()
Dim WS1 As Worksheet, WS2 As Worksheet, sor As Long, usor As Long
Dim oszlop As Integer, uoszlop As Integer, cim As String, oszlophova As Integer
Dim WF As WorksheetFunction, sorhova As Long
Set WS1 = Sheets("Munka1")
Set WS2 = Sheets("Munka2")
Set WF = Application.WorksheetFunction
sor = 1
WS1.Select
Do While Cells(sor, 1) <> ""
uoszlop = WS1.Range("A" & sor).End(xlToRight).Column
sorhova = WS2.UsedRange.Rows.Count + 1
For oszlop = 1 To uoszlop
cim = Cells(sor, oszlop)
On Error GoTo Tovabb
oszlophova = WF.Match(cim, WS2.Rows(1), 0)
Cells(sor + 1, oszlop).Select
usor = Selection.End(xlDown).Row
Range(Cells(sor + 1, oszlop), Cells(usor, oszlop)).Copy WS2.Cells(sorhova, oszlophova)
Tovabb:
On Error GoTo 0
Next
sor = Range("A" & sor).End(xlDown).Row
sor = Range("A" & sor).End(xlDown).Row
Loop
End Sub -
Delila_1
veterán
válasz
slashing #23720 üzenetére
Nem teljesen olyan, mint a képen, de hasonlít.
Ha kevesebb dolgom lesz, megpróbálom azt a formát kihozni.
Sub Oszlopok()
Dim WS1 As Worksheet, WS2 As Worksheet, sor As Long, usor As Long
Dim oszlop As Integer, uoszlop As Integer, cim As String, oszlophova As Integer
Dim WF As WorksheetFunction, sorhova As Long
Set WS1 = Sheets("Munka1")
Set WS2 = Sheets("Munka2")
Set WF = Application.WorksheetFunction
sor = 1
WS1.Select
Do While Cells(sor, 1) <> ""
uoszlop = WS1.Range("A" & sor).End(xlToRight).Column
For oszlop = 1 To uoszlop
cim = Cells(sor, oszlop)
On Error GoTo Tovabb
oszlophova = WF.Match(cim, WS2.Rows(1), 0)
Cells(sor + 1, oszlop).Select
usor = Selection.End(xlDown).Row
sorhova = WS2.Cells(Rows.Count, oszlophova).End(xlUp).Row + 1
Range(Cells(sor + 1, oszlop), Cells(usor, oszlop)).Copy WS2.Cells(sorhova, oszlophova)
Tovabb:
On Error GoTo 0
Next
sor = Range("A" & sor).End(xlDown).Row
sor = Range("A" & sor).End(xlDown).Row
Loop
End Sub -
Fferi50
Topikgazda
válasz
slashing #23720 üzenetére
Szia!
Most ellenőriztem, sajnos a speciális szűrés nem megy, mert ha nincs olyan fejléc a szűrendő mezőben, akkor hibát dob (bár nem egészen értem a logikáját, hogy miért, de ez van, ezt kell elfogadni.)
Másik ötlet:
Képlet szinten: Hol.van függvénnyel meghatároznám, hogy az adott fejléc hanyadik oszlopban van a másik táblában és abba az oszlopba kell tenni az adatot. (Nyilván ezt le lehet makróval rendezni (match függvény)).
Tehát: kb.így nézne ki
set mlap1=workbooks("Munkafüzet3").sheets("Munka1")
set mlap2=workbooks("Munkafüzet4").sheets("Munka1")
itt kezdheted az oszlopok ciklusát
oszlop=application.match(mlap1.range("A1").value;mlap2.rows('"1:1"),0)
if not iserror(oszlop) then ' ez csak azért kell, ha mégsem lenne olyan fejléc a másik munkalapon
yy=mlap.cells(40000,oszlop).end(xlup).row+1
for xx=2 to mlap1.range("A2").end(xldown).row
mlap2.cells(yy,oszlop).value=mlap1.cells(yy,"A").value
yy=yy+1
next
else
msgbox "Nincs ilyen fejléc: " & mlap1.range("A1").value
endif
next oszlopokA makró csak szemléltető, nem feltétlenül hibátlan.
Ezt végigcsinálod minden oszlopon, és minden kis táblán.
Ha deklarálod a változókat, az oszlop mindenképpen variant legyen, mert annak értéke hiba is lehet, mint látod.Remélem érthető és tudod használni.
Üdv.
-
slashing
senior tag
válasz
slashing #23720 üzenetére
Amúgy én úgy képzelem/képzeltem el hogy először megkerestetem a célfájl azon sorát amiben a legtovább van adat ezt eltározom egy változóban sorazonosítóként aztán van egy ciklusom ami végigfut az első tábla fejlécsorán mégpedig úgy hogy csinál egy keresést a másik fájl fejlécében és ahol megtalálja az egyezőt ott eltározom az oszlop azonosítót ha ez meg van akkor van egy sor és oszlopazonosítom ahova bemásolhatja az adatokat. Arra mondjuk figyelni kell hogy a sorazonosító ne legyen ciklusban nehogy lépcsős legyen az egész. Így leírva milyen egyszerű
-
slashing
senior tag
válasz
Fferi50 #23719 üzenetére
Csak hogy tuti ne beszéljünk el egymás mellett:
Bal oldalt van 3 variáció ahogy kiköpi a kigyűjtős macrom az adatokat. A jobb oldali végeredményt szeretném elérni. Kigyűjti a macro az adatokat változó fejléccel meghívja a következő macrot ami belerakja a jobb oldali táblába ahol már fix fejléc van csak mindig oda kerül az adat amelyik alá tartozik.
-
Fferi50
Topikgazda
válasz
slashing #23716 üzenetére
Szia!
Ha jól értem, akkor a fejlécek különbözőek, csak más-más sorrendben vannak.
Ebben az esetben én a következőt javaslom:
Csinálj egy "átmeneti" táblát(munkalapot), ahová a fejléceket a második táblában levő sorrendbe teszed be. (Praktikusan beillesztesz egy munkalapot és ide bemásolod a második tábla első sorát).Ezután az első tábládra csinálsz egy "advanced filtert", ahol a szűrendő tartomány az első tábla usedrange, a szűrőfeltétel az átmeneti tábla első sora és új helyre másolás helyének kijelölöd az átmeneti tábla első sorát.
Végrehajtod az irányított/speciális szűrést - ekkor az átmeneti tábládban már ugyanolyan sorrendben lesznek az oszlopok, mint a második táblában. Innen már csak egy sima copy kell és az átmeneti tábla törlése.DE még egyszerűbb szerintem a következő:
Szintén advanced filter, a következők szerint:
Szűrendő az első táblád
Feltétel: a második táblád fejléc sora (csak az első sor!)
Másolás helye: a második táblád vége!
Új helyre másolással a szűrés végrehajtása.
Az tábla közben (az eredeti második tábla utolsó sora után) keletkező "álfejléc" sor törlése. Nyilván ezt akkor tudod megtenni, ha megjegyezted, melyik sort jelölted ki másolási célnak.Talán bonyolultnak tűnik, de hidd el egyszerűbb megcsinálni, mint leírni volt.
Én rögtön a második verzióval kezdeném.Üdv.
-
slashing
senior tag
Ötleteket várnék arra hogyan lehetséges megoldani a következő másolás beillesztést aztán megpróbláom magamtól megcsinálni
Első sor a fejléc és az alatta lévő adatokat kéne átmásolnom egy másik fájlnak ugyan olyan fejléccel rendelkező oszlopába. Fontos a fejléc szerinti cellaérték alapján menni mert változó sorrenben fognak lesznek a fejlécben az adatok egyszer 1x,2x,3x, mások meg lehet hogy csak 1x,4x van
Pl. Ha A1-ben az van hogy 1x akkor a másik fájl azon oszlopába kéne másolnom az adatokat aminek a fejlécében az A1 van, mindezt úgy hogy ismételhető legyen egymás után akárhányszor szóval ha új adat van akkor a második fájlnak mindig a végére rakja de fontos hogy a kiinduló fájl fejlécében lévő szöveg alatti adatok a végleges fájl azonos fejléccel rendelkező oszlopába kerüljenek mindig a végére.
Attól félek hogy baromi lassú lesz, mivel a legdurvább esetben a kiindulási pontban akár 200 fejléces oszlop is lehet és ezek mindegyikét egyesével kell gondolom valahogy ellenőriztetni és átmásolni...
-
Saua
tag
válasz
Fferi50 #23708 üzenetére
Köszönöm a segítségeteket de csak nem boldogulok.
Sajnos nagyon korlátozottak az excel ismereteim, azt szeretném ha nem kellene állandóan beírni a város nevét az i oszlopban levő DARABTELI képletbe, hanem a képlet másolható lenne és a városnevek automatikusan kerülnének az G oszlopból a feltétel helyére. Tehát az i oszlopban megjelenjen hogy például Balatonlelle hányszor szerepel az E oszlopban.
Nem világos, hogy hogy néz ki a teljes DARABTELI képlet. -
Visormail
addikt
Sziasztok. Ha egy táblázaton bekapcsolom a korrektúra/lapvédelem funkciót, akkor nem engedi használni az adatok/szűrők törlése gombot se. Tehát ha több szűrőt beállít valaki, utána nem tudja gyorsan alaphelyzetbe állítani, hanem egyesével kell a szűrőket vissza kikapcsolni.
Pedig ez nem szerkesztési művelet csak kényelmi funkció az autószűrőhöz. Ha a lapvédelemnél kipipálnék mindent amit felajánl engedélyezésre, ezt akkor is letiltja. Ezzel nem lehet valamit kezdeni?
-
Saua
tag
-
bteebi
veterán
válasz
HS 2142 #23692 üzenetére
Ha nem kellenek a nyers adatok, csak a transzponált táblázat, akkor azt meg tudod csinálni, hogy a vágólapra helyezett táblázatot irányított beillesztéssel bemásolod képként (Enhanced metafile), majd ezt elforgatod Wordben 90°-kal. Jó minőségű és gyors, de sajnos az adatok nem lesznek szerkeszthetőek.
Vagy:
Elforgatod az összes szöveget 90°-kal, a sormagasságokat oszlopszélességűre veszed és fordítva, és akkor jó lesz. -
Snoop-y
veterán
Sziasztok,
A kovetkezoben kernek segitseget:
Van 3 oszlopom es a negyedikben szeretnem megjeleniteni ezek eredmenyet a kovetkezokeppen:
Ha elso oszlop nem ures akkor annak az erteket
Ha ures akkor a masodikat ha az is ures akkor a harmadikat. -
Fferi50
Topikgazda
Szia!
Egy oszlopot csinálj a városnevekből irányított szűrővel, csak az egyedi adatokra szűrve, másolás másik helyre. Utána az első cella mellé beírod a darabteli képletet és végighúzod az oszlopon.(A darabteli képletben $E$2:$E$4000 legyen a tartomány!)
Utána a darabtelis oszlopot átalakítod értékké. (másolás, irányított beillesztés - értéket).
Majd a két oszlopot rendezed a második oszlopra kívánalmaid szerint.Üdv.
Új hozzászólás Aktív témák
Hirdetés
- Nők, nőügyek (18+)
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- Renault, Dacia topik
- Milyen videókártyát?
- Commodore 64
- Soundbar, soundplate, hangprojektor
- Milyen TV-t vegyek?
- Banggood
- GoodSpeed: Bye PET Palack, hello SodaStream
- Android alkalmazások - szoftver kibeszélő topik
- További aktív témák...
- Ventillátorok és tápkábel modding kitűnő árakon! Most extra 10% kedvezmény!
- Lenovo ThinkPad X270 (16) - i5-7300U, 16GB, 512GB SSD, 12" FULL HD (ELKELT)
- Eladó karcmentes Huawei Nova 8i 6/128GB / 12 hó jótállással
- Seagate IronWolf Pro 4TB 3,5 Recertified HDD
- Telefon felvásárlás!! Samsung Galaxy A16, Samsung Galaxy A26, Samsung Galaxy A36, Samsung Galaxy A56
Állásajánlatok
Cég: FOTC
Város: Budapest