Excel - Masowe usunięcie fragmentu


(Issem10) #1

Cześć.

Mam 1000 pozycji w "A". Jest to baza danych i potrzebuje usunąć tam część rzeczy, ręcznie trwało by to kilka dobrych godzin.

Teraz wygląda to tak:

A

1,"pull"

2,"cold"

Muszę wyciągnąć w Excelu tylko to co jest w " ". Czyli np. żeby w A1 zostało tylko Pull a żeby usuneło się cudzysłów (" "), numerek czyli w tym przypadku 1 oraz przecinek (,).

Jak to zrobić szybko, jakaś komenda, może opcja w Excelu na masowe usunięcie lub wyciągnięcie danych tylko z cudzysłowia, mogę też wygenerować taką bazę w .sql jeżeli by z tamtąd dało się pobrać.


(Tomek Matz) #2

Raczej jesteś w tym konkretnym przypadku "skazany" na VBA. Możesz napisać funkcję, która będzie przechodzić pętlą po wszystkich znakach danego stringa i zwracać tylko to co zawarte jest w cudzysłowie lub funkcję, która będzie korzystać z wyrażeń regularnych. Ta druga będzie bardziej uniwersalnym rozwiązaniem. Poniżej zamieszczam kod.

Function RegExpReplace(ReplaceIn, ReplaceWhat As String, ReplaceWith As String, Optional IgnoreCase As Boolean = False)

    Dim objRegExp As Object

    Set objRegExp = CreateObject("vbscript.regexp")

    With objRegExp

        .Pattern = ReplaceWhat

        .IgnoreCase = IgnoreCase

        .Global = True

    End With

    RegExpReplace = objRegExp.Replace(ReplaceIn, ReplaceWith)

End Function

Wywołujesz to w następujący sposób =RegExpReplace(A1;".*""([^""]+).*";"$1") zakładając, że w komórce A1 znajduje się 1,"pull". Testowałem to przy użyciu Excel 2007 i działa.

Mógłbym pomyśleć też nad zapytaniem SQL, ale wpierw podaj informację o jaką bazę danych chodzi.


(Kris401) #3

Możesz spróbować (u mnie zadziałało) przy pomocy ASAP Utilities. Jest tam zakładka "text" a w niej pozycja zaawansowane usuwanie/zamiana znaków. Powodzenia


(Drobok) #4

Mógłbyś sobie wkleić coś takiego:

=FRAGMENT.TEKSTU(A4;ZNAJDŹ("""";A4;1)+1;ZNAJDŹ("""";A4;ZNAJDŹ("""";A4;1)+1)-ZNAJDŹ("""";A4;1)-1)

oczywiście metoda matzu jest lepsza, jednak trzeba sobie jakoś radzić ;]


(Issem10) #5

Już znalazłem lepszy sposób -> zakładka Dane -> Tekst jako kolumny i w 5 sekund jest elegancko :slight_smile:


(Tomek Matz) #6

@webwebweb

Bardzo sprytne rozwiązanie.