ID tematu: 75875
 |
podziel tekst wg znacznika |
Autor |
Wiadomość |
wojtas4444
Exceloholic

Posty: 187
|
Wysłany: 29-05-2024, 15: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
|
|
|
 |
|
|
|
hurgadion
ExcelSpec


Wersja: Win Office 2021
Pomógł: 1217 razy Posty: 2810
|
Wysłany: 29-05-2024, 15: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
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...
znacznik.xlsm
|
Pobierz Plik ściągnięto 31 raz(y) 13.77 KB |
|
|
 | ID posta:
435573
|
|
|
 |
|
|
beret
ExcelGaduła 500+

Wersja: Win Office 365
Pomógł: 28 razy Posty: 1487
|
Wysłany: 30-05-2024, 06: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
|
|
|
 |
|
|
Marecki
Excel Expert


Wersja: Win Office 2021
Pomógł: 2642 razy Posty: 8821
|
Wysłany: 30-05-2024, 09: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 na. |
_________________ Hardware - ta część komputera, którą można kopnąć kiedy software przestanie funkcjonować.
FB |
|
 | ID posta:
435585
|
|
|
 |
|
|
Tajan

Pomógł: 5583 razy Posty: 12105
|
Wysłany: 30-05-2024, 10: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
|
|
|
 |
|
|
beret
ExcelGaduła 500+

Wersja: Win Office 365
Pomógł: 28 razy Posty: 1487
|
Wysłany: 31-05-2024, 10:02
|
|
|
Serdecznie dziękuję za wyjaśnienia.
Pozdrawiam Beret |
|
 | ID posta:
435607
|
|
|
 |
|
|
|
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
|
|
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
|