Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 75875 Skopiuj do schowka podziel tekst wg znacznika
Autor Wiadomość
wojtas4444
Exceloholic


Posty: 183
Wysłany: 29-05-2024, 16:10   podziel tekst wg znacznika

Hej

W kolumnie A mam ilestam wierszy wypełnionych takimi danymi jak niżej.
To jest oczywiście przykład bo tego jest więcej

R|ACPF7|HEDI1|CONT1
R|MC05|ACPF2|HEDI1|CONT1
R01|MC1302|CONT1
R01|MC09|CONT1

Szukam makra które przejedzie od wiersza 2 do końca i w kolejnych kolumnach od B wzwyż wypluje kolejne teksty które znajduja się pomiedzy znakami "|"
Fajnie gdybym mógł ten separator ustawić w makrze bo czasami może byc nim srednik.

Dzięki
ID posta: 435571 Skopiuj do schowka
 
 
hurgadion 
ExcelSpec



Wersja: Win Office 2021
Pomógł: 1194 razy
Posty: 2746
Wysłany: 29-05-2024, 16:43   

Hej,
powinno wystarczyć takie makro:
Kod:

Sub znacznik()
Dim i&, tbl1

For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
   tbl1 = Split(Cells(i, 1).Value, "|")
   Cells(i, 2).Resize(, UBound(tbl1) + 1) = tbl1
Next i
End Sub

W funkcji Split wybieramy separator, ustawiony jest "|", potestuj w załączniku jak to działa, pozdrawiam :lol:

PS. Następnym razem, o ile to możliwe, umieść swój przykład w załączniku, aby nie trzeba było tworzyć go od zera... :lol:

znacznik.xlsm
Pobierz Plik ściągnięto 10 raz(y) 13.77 KB

ID posta: 435573 Skopiuj do schowka
 
 
beret
ExcelGaduła 500+


Wersja: Win Office 365
Pomógł: 27 razy
Posty: 1344
Wysłany: 30-05-2024, 07:59   

Co dodać do powyższego makra, aby liczby przechowywanie jako tekst konwertować na liczby?
Ja, metodą prób i błędów zrobiłem tak:
Kod:
Sub znacznik()
Dim i&, tbl1, k&
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
   tbl1 = Split(Cells(i, 1).Value, "|")
   Cells(i, 2).Resize(, UBound(tbl1) + 1) = tbl1
   For k = 2 To UBound(tbl1) + 2
    If IsNumeric(Cells(i, k)) Then Cells(i, k) = CSng(Cells(i, k))
   Next k
Next i
End Sub
Pewnie to można robić inaczej.
ID posta: 435581 Skopiuj do schowka
 
 
Marecki 
Excel Expert



Wersja: Win Office 2021
Pomógł: 2638 razy
Posty: 8805
Wysłany: 30-05-2024, 10:13   

beret napisał/a:
Pewnie to można robić inaczej.
1.Można, ale po co skoro działa.
Pytanie tylko czy potrzebujesz precyzji typu Single.
2. Nie zdawaj się na domyślne włąściwości obiektu Range, tylko zawsze je jawnie określaj.
Inaczej mówiąc popraw
Kod:
Cells(i, k)
na
Kod:
Cells(i, k).value
.
_________________
Hardware - ta część komputera, którą można kopnąć kiedy software przestanie funkcjonować.

FB
ID posta: 435585 Skopiuj do schowka
 
 
Tajan


Pomógł: 5480 razy
Posty: 11920
Wysłany: 30-05-2024, 11:54   

W przypadku większej ilości danych możliwe, że wydajniejsze będzie operowanie w pamięci, z wykorzystaniem dodatkowej tablicy:
Kod:
Sub znacznik()
Dim i&, tbl1, k&
Dim tbl2(), xVar$
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
   tbl1 = Split(Cells(i, 1).Value, "|")
   ReDim tbl2(0 To UBound(tbl1))
   For k = 0 To UBound(tbl1)
       xVar = tbl1(k)
       If IsNumeric(xVar) Then tbl2(k) = CSng(xVar) Else tbl2(k) = xVar
   Next k
   Cells(i, 2).Resize(, UBound(tbl1) + 1).Value = tbl2
Next i
End Sub
ID posta: 435592 Skopiuj do schowka
 
 
beret
ExcelGaduła 500+


Wersja: Win Office 365
Pomógł: 27 razy
Posty: 1344
Wysłany: 31-05-2024, 11:02   

Serdecznie dziękuję za wyjaśnienia.
Pozdrawiam Beret
ID posta: 435607 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.wip.pl

Archiwum

Strona uĹźywa plikĂłw cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przegl�darce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
SprawdĹş, w jaki sposĂłb przetwarzamy dane osobowe