Hirdetés
- MasterDeeJay: Ram gondolatok 2026 január - DDR3-as gép is lehet megoldás? Mi a minimum?
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Candy: Kossuth Lajos azt üzente, elfogyott a gémergépe
- MasterDeeJay: i7 4980HQ asztali gépben (vs i7 4770)
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- eldiablo: 30 év után szakítottunk, de azért még beszélünk...
- sziku69: Szólánc.
- eBay-es kütyük kis pénzért
-
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
-
válasz
Fire/SOUL/CD
#49628
üzenetére
2 dolgot kell beállítanod a makróban, hogy HONNAN (eredeti adatok) és hogy HOVA (átalakított adatok) másolódjanak az adatok.
Mindkét állítandó érték elé az[EZT KELL BEÁLLÍTANOD]kommentet tettem.Module1-be másolandó kód
Option Explicit'Fire/SOUL/CD - 2022Public Sub Fire_Salex1_Process()'kötött formátum elválasztó karaktereConst MYDELIMITER = "-"'a feldogozandó adatok ebben az OSZLOP-ban és azon belül ebben a SOR-ban kezdődnekDim MySrcColumn, MySrcColumnFirstCell As String'tartomány, amit a makró a MySrcColumn és MySrcColumnFirstCell értéke alapján határoz meg/generálDim MySrcRange As Range'a feldolgozott adatokat ebbe a tartmányba írja a makróDim MyDestRange As Range'a MySrcRange tartományban található aktuális cella tartománya (1 cella)Dim MyCell As Range'Variant típusú dinamikus tömb, ami az N számosságú halmaz N0 - N-1 elemét tároljaDim MyUniqueSubStrArray() As Variant'Variant típusú dinamikus tömb, ami az N számosságú halmaz N0 - N-1 elemének feldolgozottságát tárolja (True/False)Dim MyUniqueSubStrProcessedArray() As Variant'szöveg típusú dinamikus tömb, amelynek elemei az aktuális cella'SPLIT parancs segítségével, MYDELIMITER paraméterrel elválasztott elemeit tartalmazzaDim MyTempArray() As String'átmeneti változóDim MyTempStr As String'átmeneti változó, ami meghatározza, hogy a MyTempStr változó szerepel-e a MyUniqueSubStrArray-benDim MySubStr As Variant'nem megfelelő cella adat esetén megjelenő ablak visszatérési értékeDim SelectedOptionOnWarningBox As Integer'makró-ciklusokban használt Long típusú változók (ciklus-számlálók)Dim i, j As Long'hogy gyorsabb legyen a makró, pár eseménykezelőt letiltunkApplication.ScreenUpdating = FalseApplication.EnableEvents = False'[EZT KELL BEÁLLÍTANOD] - forrástartomány kezdetének beállítása (itt a példában A1) innen kezdődnek a feldolgozandó adatokMySrcColumn = "A"MySrcColumnFirstCell = "1"Set MySrcRange = Range(MySrcColumn & MySrcColumnFirstCell & ":" & MySrcColumn & Cells(Cells.Rows.Count, MySrcColumn).End(xlUp).Row)'[EZT KELL BEÁLLÍTANOD] - ettől a tartománytól kezdve írodnak ki a feldolgozott adatok (itt a példában B1-től)Set MyDestRange = Range("B1")'dinamikus tömbök méretének beállítása, egyéb változók inicializálásaReDim MyUniqueSubStrArray(Cells(Cells.Rows.Count, MySrcColumn).End(xlUp).Row)ReDim MyUniqueSubStrProcessedArray(Cells(Cells.Rows.Count, MySrcColumn).End(xlUp).Row)MyTempStr = ""i = 0j = 0'végignézzük a forrástartomány celláit egyenkéntFor Each MyCell In MySrcRange'ha az aktuális cella üres, akkor kihagyjuk, egyébként feldolgozzukIf Not IsEmpty(MyCell.Value) Then'aktuális cellát feldaraboljuk az elválasztó-karakter szerint, kvázi, mint szövegből oszlopokMyTempArray = Split(MyCell.Value, MYDELIMITER)'kötött formátum szerint a MyTempArray elemeinek a száma 5-nek kell, hogy legyen'ezért megvizsgáljuk, hogy annyi-eIf WorksheetFunction.CountA(MyTempArray) = 5 Then'igen, 5 eleme van a tömbnek'a MyTempStr dinamikus tömbbe bemásoljuk a MyTempArray első 4 elemétMyTempStr = MyTempArray(0) + MYDELIMITER + MyTempArray(1) + MYDELIMITER + MyTempArray(2) + MYDELIMITER + MyTempArray(3)'megvizsgáljuk, hogy a MyUniqueSubStrArray tömb elemei (az összes) tartalmazzák-e a MyTempStr-tMySubStr = Filter(MyUniqueSubStrArray, MyTempStr)'ha igen, akkor az elemeire bontott értékeket a MyDestRange + j + index címre másoljuk'és a MyUniqueSubStrProcessedArray aktuális indexű elemét TRUE-ra állítjuk'hogy a továbbiakban ne kelljen feldolgozniIf UBound(MySubStr) < 0 ThenMyUniqueSubStrArray(i) = MyTempStrMyUniqueSubStrProcessedArray(i) = FalseIf (InStr(1, UCase(MyCell.Value), UCase(MyUniqueSubStrArray(i)), vbTextCompare)) And (MyUniqueSubStrProcessedArray(i) = False) ThenCells(MyDestRange.Row + j, MyDestRange.Column) = MyTempArray(0) + MYDELIMITER + MyTempArray(1)Cells(MyDestRange.Row + j + 1, MyDestRange.Column) = MyTempArray(0) + MYDELIMITER + MyTempArray(1) + MYDELIMITER + MyTempArray(2)Cells(MyDestRange.Row + j + 2, MyDestRange.Column) = MyTempArray(0) + MYDELIMITER + MyTempArray(1) + MYDELIMITER + MyTempArray(2) + MYDELIMITER + MyTempArray(3)Cells(MyDestRange.Row + j + 3, MyDestRange.Column) = MyCell.Valuej = j + 4MyUniqueSubStrProcessedArray(i) = TrueEnd Ifi = i + 1Else:'ha nem, akkor az adott cella értékét be kell másolni a MyDestRange + j címreCells(MyDestRange.Row + j, MyDestRange.Column) = MyCell.Valuej = j + 1End IfElse:'ha nem megfelelő a kötött formátum, akkor feltesszük a kérdést, hogy mi legyen'kihagyja a makró a feldolgozásból, avagy kilépjenSelectedOptionOnWarningBox = MsgBox("Nem szabványos formátumú adat a(z) " & MyCell.Address & " cellában:" & vbLf & _MyCell.Value & vbLf & vbLf & _"[OK] - hibás cella kihagyása" & vbLf & _"[Mégse] - makró megállítása", vbQuestion + vbOKCancel)If SelectedOptionOnWarningBox = vbCancel ThenExit SubEnd IfEnd IfEnd IfNext MyCell'eseménykezelőket újra engedélyezzükApplication.ScreenUpdating = TrueApplication.EnableEvents = TrueEnd Sub
Új hozzászólás Aktív témák
Hirdetés
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Game Pass Ultimate előfizetések 1 - 36 hónapig azonnali kézbesítéssel a LEGOLCSÓBBAN! AKCIÓ!
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- MEGA AKCIÓ! - Jogtiszta Windows - Office & Autodesk & CorelDRAW - Azonnal - Számlával - Garanciával
- Humble szökevények 500-1500Ft
- Lenovo IdeaPad Gaming 3 - 15,6"FHD IPS - i5-10300H - 8GB - 512GB SSD - Win10 - GTX 1650 Ti - MAGYAR
- BESZÁMÍTÁS! ASUS H510M i5 11400F 16GB DDR4 512GB SSD RX 6500 XT 8GB Gembird Fornax 500 DeepCool 400W
- BESZÁMÍTÁS! GIGABYTE B650 R7 7800X3D 32GB DDR5 1TB SSD RTX 5070 Ti 16GB be quiet! Pure Base 501 850W
- PS4 Pro 1TB + DualShock 4 Controller Játékkonzol
- HP 13 Elitebook 830 G7 FHD IPS 600nit i5-10210U 4.2Ghz 16GB RAM 256GB SSD Intel UHD W11 Pro Garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Fferi50
