- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- AMD Radeon™ RX 470 / 480 és RX 570 / 580 / 590
- Egy helyre gyűjti az eltérő áruházak játékait a Microsoft
- Videós, mozgóképes topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Milyen digitális videókamerát?
- Sony MILC fényképezőgépcsalád
- Kezdő fotósok digitális fényképei
- Házimozi belépő szinten
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
-
PROHARDVER!
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
-
Fferi50
Topikgazda
válasz
m.zmrzlina #25459 üzenetére
Szia!
A VBA-ban a nevek nem úgy működnek, mint a munkalapon. A names("név").referstorange mutat a név által meghatározott területre, a names("név").refersto pedig az adott névhez tartozó terület címét adja meg.
Tehát ezt a sor részt:
Workbooks("forrásadatok.xlsx").Names("gyümölcsök")ki kell egészíteni:
Workbooks("forrásadatok.xlsx").Names("gyümölcsök").referstorange
Másrészt, sokkal gyorsabb, ha a range.replace tulajdonságát használod:
wsKabelo.Range("C2:C129").replace what:="ALMA",replacement:=1,lookat:=xlwhole
ami az egész tartományban kicseréli az ALMA szót az 1 számra.
A javított makró pedig a Gyümölcsök tartományon megy végig - és kicseréli az első oszlopban található gyümölcsneveket a második oszlopban található számokra:
Set rng_gyümölcsök = Workbooks("forrásadatok.xlsx").Names("gyümölcsök").referstorange
Set wsKabelo = ActiveSheet
for each cl in rng_gyümölcsök.columns(1).cells
wsKabelo.range("C2:C129").replace what:=cl.value,replacement:=cl.offset(0,1).value, lookat:=xlwhole
nextEgyébként annyit javaslok még, hogy ne használj ékezetes karaktereket a makrókban és a neveknél, mert ebben az esetben nem hordozható a munkafüzeted, más (pl.angol) környezetben hibásan /vagy nem működik.
Üdv.
-
m.zmrzlina
senior tag
válasz
m.zmrzlina #25459 üzenetére
Ha az objektumváltozót a következőképpen deklarálom akkor megy:
Set rng_gyümölcsök = Workbooks("forrásadatok.xlsx").Names("gyümölcsök").RefersToRange
Set wsKabelo = ActiveSheet
For Each rngCella In wsKabelo.Range("C2:C129")
If rngCella.Value <> "" Then
rngCella.Value = Application.WorksheetFunction.VLookup(rngCella.Value, rng_gyümölcsök, 2, 0)
End If
Next
Új hozzászólás Aktív témák
- Magga: PLEX: multimédia az egész lakásban
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Hosszabb bemutatót kapott a Borderlands 4
- Genshin Impact (PC, PS4, Android, iOS)
- Windows Insider Program
- Autós topik
- Nagyrobogósok baráti topikja
- Milyen okostelefont vegyek?
- AMD Radeon™ RX 470 / 480 és RX 570 / 580 / 590
- Mibe tegyem a megtakarításaimat?
- További aktív témák...
- Samsung Galaxy Tab A8 (2021) , 3/32 GB,
- Apple iPhone 14 128GB , Kártyafüggetlen
- Bomba ár! Lenovo ThinkPad T15 G1 - i5-10GEN I 16GB I 256GB SSD I 15,6" FHD Touch I Cam I W11 I Gari!
- Azonnali készpénzes AMD Ryzen 1xxx 2xxx 3xxx 5xxx processzor felvásárlás személyesen / csomagküldés
- 130+131+132+133 - Lenovo Legion Pro 7 (16IRX9H) - Intel Core i9-14900HX, RTX 4080
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest