Hirdetés
- A Galaxy S26-tal együtt késik a One UI 8.5
- Lecsap az S26 Ultra az Exynos 2600-ra
- „Új mérce az Android világában” – Kezünkben a Vivo X300 és X300 Pro
- Samsung Galaxy S23 Ultra - non plus ultra
- Samsung Galaxy Z Fold5 - toldozás-foldozás
- Nokia E51 - kecs és fém
- Milyen okostelefont vegyek?
- Samsung Galaxy S22 és S22+ - a kis vagány meg a bátyja
- Bemutatkozott a Poco X7 és X7 Pro
- Vivo X200 Pro - a kétszázát!
-
Mobilarena
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
- ASZTALI GÉP / ALKATRÉSZ beárazás
- Elektromos autók - motorok
- Debrecen és környéke adok-veszek-beszélgetek
- Otthoni hálózat és internet megosztás
- Mercedes topic
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- sziku69: Szólánc.
- Vezetékes FÜLhallgatók
- OLED monitor topic
- CADA, Polymobil, és más építőkockák
- További aktív témák...
- BESZÁMÍTÁS! Apple MacBook Pro 16 M4 Pro 48GB RAM 4TB SSD macbook garanciával hibátlan működéssel
- MacBook, Apple M1 / M2 kompatibilis dokkolók, DisplayLink 4K, USB-C, Type-C
- MacBook felvásárlás!! MacBook, MacBook Air, MacBook Pro
- GYÖNYÖRŰ iPhone 13 Pro 256GB Sierra Blue - 1 ÉV GARANCIA, Kártyafüggetlen, 100% Akkumulátor,MS3379
- Bomba ár! Acer Travelmate P215 - i5-8GEN I 8GB I 256SSD I 15,6" FHD I Cam I W11 I Garancia!
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: Promenade Publishing House Kft.
Város: Budapest
Fferi50

