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: 64329 Skopiuj do schowka Rozdzielenie danych z jednej komórki po przecinku
Autor Wiadomość
matiz17 
Stały bywalec Excelforum


Posty: 461
Wysłany: 05-03-2019, 02:39   Rozdzielenie danych z jednej komórki po przecinku

Czy da się coś takiego zrobić w Excel-u?
Załączam plik z przykładowymi danymi do rozdzielenia (arkusz1) oraz plik z rozdzielonymi przeze mnie ręcznie danymi (arkusz2) tak dla przykładu jak to ma wyglądać.

Rozdzielenie tego tekstu na kolumny może zadziała tylko dzięki przecinkom, ale niestety w nazwach również mamy przecinki, co komplikuje sprawę. Jednak gdyby wziąć sprawę od końca? Mam na myśli coś takiego, że w kolumnach B C D E oraz F (arkusz2 - przykładowy) nie ma nigdy danych z przecinkami.

Wrzucam również przykładowy załącznik (dane pochodzą z serwisu RWG, w którym można swoje jazdy wyeksportować do pliku .csv).

screenzridewithgps.png
Plik ściągnięto 33 raz(y) 173.53 KB

jakrozdzielictekstnakolumny.xlsx
Pobierz Plik ściągnięto 18 raz(y) 10.45 KB

ID posta: 363644 Skopiuj do schowka
 
 
kuma 
Excel Expert


Pomógł: 1161 razy
Posty: 3474
Wysłany: 05-03-2019, 08:36   

Dla podanych przykładów przetestuj mój kod VBA z wykorzystaniem wyrażeń regularnych.
Kod:
Sub Rozdziel_kuma()
    Dim r   As Object, mCol As Object
    Dim ms As String
    Dim i As Integer
    Dim a(), v
   
    Application.ScreenUpdating = False
    Set r = CreateObject("VBScript.RegExp")
    With Sheets("Arkusz1")
        a = .Range("A2:A" & .Cells(Rows.Count, "A").End(3).Row).Value
    End With
    Application.ScreenUpdating = False
    Sheets("Arkusz2").[A1].CurrentRegion.Offset(1).ClearContents   
    With r
        .Global = True
        .IgnoreCase = True
        .Pattern = "(^\d{2,}\D\d{2,}\D\d{2,},|^.*[a-z\D],)(.*)"
        For i = 1 To UBound(a)
            ms = a(i, 1)
            If Len(ms) > 0 Then
                If .Test(ms) Then
                    Set mCol = r.Execute(ms)
                    v = Split(mCol.Item(0).SubMatches(1), ",")
                    With Sheets("Arkusz2")
                        ms = mCol.Item(0).SubMatches(0)
                        ms = Left(ms, Len(ms) - 1)
                        .Range("A" & .Cells(Rows.Count, "A").End(3).Row)(2) = ms
                        .Range("A" & .Cells(Rows.Count, "A").End(3).Row)(1, 2).Resize(1, UBound(v) + 1) = v
                    End With
                End If
            End If
        Next
    End With
    Set r = Nothing
End Sub
Pozdrawiam.
  
ID posta: 363649 Skopiuj do schowka
 
 
matiz17 
Stały bywalec Excelforum


Posty: 461
Wysłany: 05-03-2019, 09:51   

Bardzo pomogłeś, ale nie działa to we wszystkich przypadkach.
Da się naprawić?

jakrozdzielictekstnakolumny.xlsx
Pobierz Plik ściągnięto 12 raz(y) 10.45 KB

ID posta: 363653 Skopiuj do schowka
 
 
kuma 
Excel Expert


Pomógł: 1161 razy
Posty: 3474
Wysłany: 05-03-2019, 09:57   

U mnie działa poprawnie dla wszystkich przypadków w załączniku.
Musiałeś niewłaściwie skopiować mój kod.
Na przyszłość zawsze dołącz kod, który nie działa, a nie tylko wyniki.
Pozdrawiam.
ID posta: 363654 Skopiuj do schowka
 
 
matiz17 
Stały bywalec Excelforum


Posty: 461
Wysłany: 05-03-2019, 10:04   

Zerknij do ostatniego załącznika bo być może mówisz o tym pierwszym który Załączyłem i zobacz że w pewnych rozdziela źle. Dodałem kilka rekordów na których ten schemat nie działa.

Jeśli jednak mówisz o ostatnim załączniku to wydaje mi się że dobrze skopiowałem bo zrobiłem zwyczajne kopiuj wklej tego co załączył, jeśli u Ciebie działa to pokaż mi proszę w załączniku.
ID posta: 363655 Skopiuj do schowka
 
 
kuma 
Excel Expert


Pomógł: 1161 razy
Posty: 3474
Wysłany: 05-03-2019, 10:08   

Daj załącznik z kodem, który skopiowałeś i ponoć źle działa - wtedy można coś powiedzieć.
Mój kod działa również prawidłowo z Twoim ostatnim załącznikiem - skopiowałem mój kod i było bez zarzutu.
Pozdrawiam.
ID posta: 363656 Skopiuj do schowka
 
 
matiz17 
Stały bywalec Excelforum


Posty: 461
Wysłany: 07-03-2019, 02:34   

Zerknij na komórki G25 i G29 w arkuszu 2.

jakrozdzielicpokazujeblad.xlsx
Pobierz Plik ściągnięto 8 raz(y) 11.68 KB

ID posta: 363770 Skopiuj do schowka
 
 
kuma 
Excel Expert


Pomógł: 1161 razy
Posty: 3474
Wysłany: 07-03-2019, 09:42   

Spróbuj podmienić, w moim kodzie, pattern na
Kod:
.Pattern = "(^\d{2,}\D\d{2,}\D\d{2,},|^.*(?=\d{4}\D\d{2}\D\d{2}))(.*)"
Powinno być ok w podanych przez Ciebie tekstach.
Pozdrawiam.
  
ID posta: 363776 Skopiuj do schowka
 
 
matiz17 
Stały bywalec Excelforum


Posty: 461
Wysłany: 08-03-2019, 00:05   

Magia :D
Działa, dzięki @kuma.
ID posta: 363822 Skopiuj do schowka
 
 
matiz17 
Stały bywalec Excelforum


Posty: 461
Wysłany: 16-03-2019, 14:37   

A jeszcze takie coś mam do rozdzielenia.
Pomoże Ktoś?

Na niebiesko rozdzielona ręcznie pierwsza z linijek.

rozdzielenie.xlsx
Pobierz Plik ściągnięto 4 raz(y) 9.16 KB

ID posta: 364349 Skopiuj do schowka
 
 
Cezary Czajka 
Excel Expert


Pomógł: 135 razy
Posty: 649
Wysłany: 16-03-2019, 15:29   

Za pomocą PQ. Dodaj kolejne dane i odśwież

rozdzielenie.xlsx
Pobierz Plik ściągnięto 5 raz(y) 20.91 KB

_________________
W sumie - jest git
ID posta: 364351 Skopiuj do schowka
 
 
kuma 
Excel Expert


Pomógł: 1161 razy
Posty: 3474
Wysłany: 16-03-2019, 15:50   

Próbowałeś użyć mojego rozwiązania (kodu)?
I jakie masz problemy po zastosowaniu?
Załącz plik z moim rozwiązaniem i pokaż co Ci nie odpowiada.
Chyba nie bardzo przyłożyłeś się do rozwiązania zadania ;-)
Pozdrawiam.
ID posta: 364352 Skopiuj do schowka
 
 
matiz17 
Stały bywalec Excelforum


Posty: 461
Wysłany: 16-03-2019, 17:15   

Cezary Czajka, dziękuję za zaproponowane rozwiązanie - estetycznie i poprawnie.

kuma, faktycznie - Twój kod jest uniwersalny, polecam każdemu. Dzięki.
ID posta: 364355 Skopiuj do schowka
 
 
matiz17 
Stały bywalec Excelforum


Posty: 461
Wysłany: 16-03-2019, 21:17   

@kuma, niestety nie działa tutaj.

tuniedziala.xlsm
Pobierz Plik ściągnięto 2 raz(y) 19.58 KB

ID posta: 364362 Skopiuj do schowka
 
 
matiz17 
Stały bywalec Excelforum


Posty: 461
Wysłany: 16-03-2019, 23:29   

Zrobiłem konwersję pliku .csv na .xlsx i wszystko pięknie mi działa :clap
ID posta: 364365 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.marketingNET.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