Rozdzielanie danych po spacji i ich wczytywanie do excela

0

Witam !
Mam plik xls (może być ewentualnie txt) w którym w jednej komórce jest ciąg znaków, np:
w komórce A1 jest: 20 2 120 3432 1455
Takich wierszy w kolumnie A mam mnóstwo...
i teraz potrzebuję to rozdzielić po spacji - znalazłem 2 makra do tego = niestety rozdzielają jedną kolumnę kilkanaście minut a kolumn mam tysiące ( i w każdej mnóstwo wierszy z danymi) - najszybciej rozdzielać je ręcznie w excelu przyciskiem "tekst jako kolumny" - niestety kolumn mi przybywa i nie dałbym rady tego zrobić.
Szukam najszybszego rozwiązania i jedyne co mi przychodzi to zastosowanie np c++
Jako że jestem zielony w programowaniu to może ktoś mi pomoże...

Czy dałoby radę stworzyć jakiś programik który np rozdzieli dane z pliki abc.xls lub abc.txt na pięć plików ?
W 1 pliku byłoby 20
2 - 2
3 - 120
4 - 3432
5 - 1455

Następnie makrem już wczytywałbym po kolei dane z pliku 1 do kolumny A i następnie dane z pliku 2 do kolumny B itd.

A może jest jakiś lepszy sposób na rozdzielanie danych ? Może program sam bez rozdzielania pliku potrafiłby to jakoś wklejać do pliku excela ?

0

Jedno z:

  1. Zaznaczasz wszystkie wierszy po czym wybierasz "tekst jako kolumny".
  2. Otwierasz w Wordzie, zamieniasz poprzez <ctrl-H> spacje na ^t - czyli tabulacje, po czym wczytujesz plik.
1

Mam excel'a 2007 zakładka Dane -> Z pliku txt;
Wybierz plik tekstowy ustaw w wizardzie rozdzielany, ogranicznik spacja

0

nie zrozumieliście mnie - ręcznie to ja umiem rozdzielać ale tych danych mam tak dużo że chciałbym to automatycznie rozdzielić - rozdzielone dane wczytywane są do excela i ten automatycznie makrem różne prowadzi obliczenia - następnie wczytują się kolejne dane do excela i znowu makro oblicza - problem jest w tym że obliczenia w excelu trwają minutę ale rozdzielanie 1 kolumny trwa kilkanaście minut i dlatego szukam wspomagacza który te dane rozdzieli bardzo szybko ...

0

To może pokaż kawałek makra odpowiedzialnego za to rozdzielanie - może uda się coś zoptymalizować... ja tu nie pomogę, ale może @aurel coś podpowie bo to chyba jej dziedzina.

0
Sub rozdziel()
With Application
  .Calculation = xlCalculationManual
  .ScreenUpdating = False
 End With
    Dim tbl, i&, j&
    For j = 1 To 100000
        tbl = Split(Cells(j, 1).Value, " ")
        For i = 1 To UBound(tbl) + 1
            Cells(j, i).Value = tbl(i - 1)
        Next i
    Next j
    With Application
  .Calculation = xlCalculationAutomatic
  .ScreenUpdating = True
 End With
End Sub

jeśli chodzi o rozdzielanie tekstu na kolumny to przeszukałem mnóstwo tematów i jeśli przycisk w excelu rozdziela 10 sekund to np makro 10 minut - na jednym z forum excela poinformowano mnie że szybciej rozdzielać się nie da ;)

dodanie znacznika <code class="vbnet"> - fp

2

Ja zrobiłam tak:

  1. Wpisałam do komórki A1 jakiś tekst ze spacjmi i zaznaczyłam ją
  2. W zakładce deweloper wybrałam "Zarejestruj makro"
  3. W zakładce dane wybrałam "Tekst jako kolumny" (dalej, dalej, OK)
  4. W zakładce deweloper "Zatrzymaj rejestrowanie"
  5. Alt + F11, wybieram Module1 i voila!
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 1), Array(3, 1), Array(7, 1), Array(11, 1)), _
        TrailingMinusNumbers:=True

Czyli trzeba dorobić tylko przygotowanie odpowiedniego Selection. Argument FieldInfo możesz pominąć, jeśli domyślne działanie cię satysfakcjonuje.

0

ja cie piernicze - siedzę na forum excela od roku i nikt mi tak prostego sposobu nie podał tylko ludzie pisali skomplikowane makra itd
aurel - wieeeeelkie dzięki ! chciałem wcześniej zapytać czy można ustawić tzw. automatyczne wciskanie się przycisku "tekst jako kolumny" ale wydawało mi się że to pytanie dość głupie a tu proszę ;-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1