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: 70190 Skopiuj do schowka podział tekstu z danej komórki na dwie części
Autor Wiadomość
liliput 
Świeżak


Wersja: Win Office 2010
Posty: 2
Wysłany: 19-02-2021, 14:57   podział tekstu z danej komórki na dwie części

Czy ktoś mogłby mi podpowiedzieć formułe z podziałem tekstu na dwie części tj mam kolumne z tekstem (zwykle kilka słow), musze go podzielić na dwie części, pierwsza część nie może być dłuższa niż 14 znaków a w drugiej kolumnie ma być reszta tekstu ze zrodłowej kolumny. Napisałam taką formułę korzystajac z funkcji left right ale dzieli słowa w połowie a to jest niedopuszczalne. Powinno podzielić tak żeby słowa były całe. Jesli podział za 14tym znakiem wypada w polowie slowa to cale to slowo musi być przeniesione do drugiej kolumny. Będę mega wdzięczna za pomoc.

Moje formuły:
w pierwszej kolumnie po podziale mam: LEFT(A1,14) a w drugiej =Rght(A1,LEN(A1)-14). Kolumna zrodlowa to oczywiscie A.
  
ID posta: 400695 Skopiuj do schowka
 
 
umiejead 
Excel Expert


Wersja: Win Office 2013
Pomógł: 771 razy
Posty: 4155
Wysłany: 19-02-2021, 16:20   

Witamy na Forum.

Makro:
Kod:
Private Sub CommandButton1_Click()
Dim d&, i&, s$, j%

d = Cells(Rows.Count, "A").End(xlUp).Row

For i = 1 To d
    s = Mid(Cells(i, 1).Value, 15, 1)
    If s = " " Then
        Cells(i, 2).Value = Left(Cells(i, 1).Value, 14)
        Cells(i, 3).Value = Right(Cells(i, 1).Value, Len(Cells(i, 1).Value) - 15)
    Else
        For j = 14 To 1 Step -1
            If Mid(Cells(i, 1).Value, j, 1) = " " Then
                Cells(i, 2).Value = Left(Cells(i, 1).Value, j)
                Cells(i, 3).Value = Right(Cells(i, 1).Value, Len(Cells(i, 1).Value) - j)
            End If
        Next j
    End If
Next i

End Sub


Zeszyt2.xlsm
Pobierz Plik ściągnięto 3 raz(y) 19.27 KB

_________________
.
Jak poprawnie opisać problem: http://www.excelforum.pl/...ika-vt59262.htm
Chcesz precyzyjną odpowiedź - zadaj precyzyjne pytanie.
ID posta: 400706 Skopiuj do schowka
 
 
Artik 



Wersja: Win Office 365
Pomógł: 3091 razy
Posty: 10240
Wysłany: 19-02-2021, 20:05   

A ja w pamięci. :-)
Kod:
Sub Divider()
    Dim rngSel      As Range
    Dim vVal        As Variant
    Dim vTmp        As Variant
    Dim strTmp      As String
    Dim i           As Long
    Dim k           As Long

    If TypeName(Selection) <> "Range" Then Exit Sub

    Set rngSel = Selection

    If rngSel.Columns.Count > 1 Then
        MsgBox "Zaznacz tylko jedną kolumnę", vbExclamation
        Exit Sub
    End If

    Set rngSel = rngSel.Resize(, 2)

    vVal = rngSel.Value

    For i = 1 To UBound(vVal)
        vTmp = Split(vVal(i, 1))
        strTmp = vbNullString

        For k = 0 To UBound(vTmp) - 1
            strTmp = strTmp & (vTmp(k) & " ")
            If Len(strTmp & vTmp(k + 1)) > 14 Then
                vVal(i, 1) = Trim(strTmp)
                Exit For
            End If
        Next k

        If k <= UBound(vTmp) - 1 Then
            strTmp = vbNullString

            For k = k + 1 To UBound(vTmp)
                strTmp = strTmp & (vTmp(k) & " ")
            Next k

            vVal(i, 2) = Trim(strTmp)
        End If

    Next i

    rngSel.Offset(, 2).Value = vVal
End Sub

Przed uruchomieniem makra należy zaznaczyć dane do podziału.

Artik

Rozdzielacz_2.xlsm
Pobierz Plik ściągnięto 4 raz(y) 15.89 KB

_________________
Persistence is a virtue in the world of programming.
ID posta: 400718 Skopiuj do schowka
 
 
Maciej Gonet 
Excel Expert


Wersja: Win Office 2016
Pomógł: 2027 razy
Posty: 6409
Wysłany: 19-02-2021, 22:07   

A można i formułami - co kto lubi.
Początek max. 14 znaków:
Kod:
=USUŃ.ZBĘDNE.ODSTĘPY(LEWY(PODSTAW(A1;" ";POWT(" ";50);DŁ(LEWY(A1;15))-DŁ(PODSTAW(LEWY(A1;15);" ";"")));50))

Reszta tekstu:
Kod:
=USUŃ.ZBĘDNE.ODSTĘPY(PRAWY(PODSTAW(A1;" ";POWT(" ";50);DŁ(LEWY(A1;15))-DŁ(PODSTAW(LEWY(A1;15);" ";"")));50))

Formuły różnią się tylko użyciem funkcji LEWY i PRAWY.
Liczba użyta w formule musi być o 1 większa od max. liczby znaków w pierwszym fragmencie.

Podział_tekstu.xlsx
Pobierz Plik ściągnięto 2 raz(y) 8.96 KB

ID posta: 400725 Skopiuj do schowka
 
 
Artik 



Wersja: Win Office 365
Pomógł: 3091 razy
Posty: 10240
Wysłany: 20-02-2021, 18:43   

liliput, już poza konkursem, wykaż się starannością w pisaniu.
Tylko popatrz.

Artik

Błędy orto.png
Plik ściągnięto 11 raz(y) 23.53 KB

_________________
Persistence is a virtue in the world of programming.
ID posta: 400751 Skopiuj do schowka
 
 
liliput 
Świeżak


Wersja: Win Office 2010
Posty: 2
Wysłany: 22-02-2021, 08:31   

Dziękuje koledze Maciejowi. Formuły działają wedle założeń, oczywiście po zmianie ";" na przecinki.
Makr nie mogę użyć, ale też zapewne działają :)
  
ID posta: 400821 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