Hirdetés
- bambano: Bambanő háza tája
- MasterDeeJay: Harc a DDR5 árak ellen
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- HUNNIA1920: Kínaiwebáruház, amit jobb elkerülni
- sh4d0w: Árnyékos sarok
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- eBay-es kütyük kis pénzért
- urandom0: Száműztem az AI-t az életemből
-
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
-
Delila_1
veterán
válasz
botond187
#22788
üzenetére
Egyszerűbben, és kicsit gyorsabban is meg lehet csinálni.
Kell egy segédtábla (nálam a K:M tartomány), ahol a K oszlop tartalmazza azt a szöveges formában tárolt adatot, amihez rendeljük a többit, az L és M szintén szövegesen a csatolandó min és max értékeket.Nem írtad, az Excelnek melyik verzióját használod, ezért 2003-ban írtam, azt a magasabb verziójú Excelek elfogadják, csak makróbarátként kell menteni.
A füzetet feltettem ide.
Módosítandó sorok, ha a segédtáblát máshova teszed:
1.Set sorS = Columns(11).Find(ehhez, LookIn:=xlValues)
A Columns(11) most a K oszlopra mutat, mert a K a 11. oszlop.
2.
If Mid(Cells(sorK, "A"), 3) >= Cells(sorS, "L") And _
Mid(Cells(sorK, "A"), 3) <= Cells(sorS, "M") ThenEzeknél az "L" és "M" helyett írd a saját oszlopaid betűjelét
-
Fferi50
Topikgazda
válasz
botond187
#22788
üzenetére
Szia!
Paraméterezheted is a makrót.
Csinálsz egy táblázatot, amelybe berakod egy-egy oszlopba a "főcikk" tól-ig cikkszámokat, a másik 2 oszlopba pedig a hozzátartozó "kiegészítő" cikkek tól-ig határait.
Ezután a makródnak azt kell megnéznie, hogy az adott cikkszám mely határok közé esik és onnan kivenni a hozzátartozó határértékeket.
Kicsit csúnya mert még egy for ciklus van benne, de most hirtelen nem jut jobb eszembe (pedig biztosan van).For xx= 1 to 200
cikkszam=cells(xx,1).value
kiegalso=""
kiegfelso=""
for zz=1 to főcikkfeltételszám
if cikkszam>=cells(zz,10).value and cikkszam<=cells(zz,11).value then
kiegalso=cells(zz,12).value
kiegfelso=cells(zz,13).value
exit for
endif
next
if kiegalso<>"" then
kieg=""
for yy=1 to 200
if cells(yy,1).value>=kiegalso and cells(yy,1).value<=kiegfelso then
if kieg="" then
kieg=cells(yy,1).value
else
kieg=kieg & elválasztó & cells(yy,1).value
endif
endif
next
if kieg<>"" then
cells(xx,2).value=kieg
endif
endif
nextA határokat tartalmazó táblázat a 10-12. oszlopban van. A ciklushatárokat igazítsd a feltöltött sorokhoz.
A belső yy-os ciklus elvileg indulhat xx -től egy (1) helyett, ha a kiegészítő termékek cikkszáma nagyobb, mint a főtermékeké és a cikkszámok sorba vannak rendezve. A működéshez ez nem szükséges, akkor marad az 1, mint cikluskezdő (hiszen lehet, hogy az első cikkszám nem főtermék, hanem kiegészítő).Üdv.
-
slashing
senior tag
válasz
botond187
#22788
üzenetére
hát innentől már csak annyit kell csinálni hogy d1=kezdőérték e1=végérték d2=kigyűjtés kezdő értéke e2=kigyűjtés végértéke a makróban meg ezeket a cellákat el kell nevezni és azokkal helyettesíteni.
valahogy így:
Dim k1, v1, ki1, ki2 As String
k1 = Range("D1")
v1 = Range("E1")
ki1 = Range("D2")
ki2 = Range("E2")if cells(yy,1).value>= K1 and cells(yy,1).value<= V1 then
ugyan így a másik kettőnél is.
és mondjuk a legvégén a next előtti cells(yy, 2)-t átírni mondjuk ActiveCell-re és akkor oda rakja az adatokat amelyik cellára ráállsz a makrófuttatás előtt. Esetleg még egy gombot kirakni a lapra ami indítja a makrót.
Elvileg ennek így működnie kell....
Bocs Fferi50 hogy belekondárkodtam, remélem nem haragszol meg érte.
Új hozzászólás Aktív témák
Állásajánlatok
Cég: ATW Internet Kft.
Város: Budapest
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Fferi50
