Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Rozwiązano] Notatnik i vba do skopiowania danych do Excela. Bardzo duża ilość danych

18 Wrz 2018 12:51 900 18
  • Poziom 6  
    W pliku w arkuszu 1 w kolumnie A odwzorowałem dane(przykładowe) jakie mam w notatniku. Chciałbym je przekopiować makrem do Excela, najlepiej tak jak jest w kolumnach od B do L. Jeżeli rozdzielanie danych jest problemem, to mi wystarczy skopiowanie danych do Excela, zrobić mogę tekst na kolumny. Problem jest następujący, że w pliku notatnika mam ponad 2 miliony wierszy takich danych. Nie da się tego zrobić skrótami Ctrl+a, Ctrl+C i w Excelu Ctrl+V. Ktoś mi pomoże?

    Uwaga między średnikami mogą wystąpić poza PESELEM, NIPEM, REGONEM, różne liczby, litery i znaki. Średniki rozdzielają dane w notatniku.

    ścieżka gdzie jest plik notatnika:

    C:\Users\koziel.andrzej\Desktop\komp\

    nazwa notatnika:"podmiot"

    Plik Excela do ktorego kopiuje"podmiot2"

    Plik Excela jest w tym samym folderze.
  • Poziom 6  
    Dotnetvb napisał:


    Wiem ile Excel ma wierszy i tu jest problem. BO nie moge zrobić zaznacz wszystko i wklej do excela. Makro jest jedynym jak dla mnie rozwiązaniem.
  • Poziom 32  
    A import z pliku nie tentego ?
  • Poziom 18  
    Podsumowując "wiem że butelka ma pojemność 1 litr, ale jak będę ją napelnial lejkiem to wejdą 2 litry".
    Makro nie sprawia że przeskoczysz ograniczenia, które nie wynikają z widzimisię twórców aplikacji, lecz pewnych uwarunkowań. Nawet jeśli upchasz te dane do Excela to ich opracowanie nie będzie zbyt wygodne. Może power query coś by pomogło ale nigdy nie podejmowałem się wrzucania do Excela takich ilości danych.
  • Poziom 23  
    Nic nie piszesz jak chcesz te dane przetworzyć. Bo chyba jakoś chcesz, wiedząc, że do Excela nie zapiszesz tylu wierszy. Więc może da się przetwarzać na bieżąco podczas wczytywania? Przynajmniej zredukować liczbę wierszy poniżej miliona?
  • Poziom 32  
    Można te dane podzielić przecież na arkusze (max milion na arkusz), ilość arkuszy jest limitowana tylko pamięcią. Poza tym bez przykładowego pliku (najlepiej większego niż potrzebny) nie ma co gdybać (a chyba już wszystko zostało zaproponowane :P)
  • Poziom 23  
    Może źle pamiętam, ale ilość arkuszy jest ograniczona nie tylko pamięcią.
    Skąd wiesz, że dane można podzielić na wiele arkuszy? Nie zauważyłem takiego opisu, a przecież między innymi o to pytałem. A może jest jeszcze lepiej, może da się zredukować liczbę wierszy na etapie wczytywania, takie agregowanie w locie. Ogólnie nie mam zaufania do przeglądania tak długich list danych. To dla człowieka za dużo. A jeżeli nie dla człowieka to po co?
  • Poziom 6  
    W notatniku jak wstawie kursor na ostania "linie" danych wyświetla mi się ilość wierszy. Jest ich ponad 2 miliony. Potrzebuje wybrać z notatnika ok 100000 wierszy. Taka ilość mi się zmieści w arkuszu Excela. Tylko jak je mam wybrać? z Excela umiem wybrać interesujące dane. Z notatnika już nie umiem.

    Importując dane z notatnika do Excela. Jak ja to robię.
    Wchodzę w zakładkę "dane" klikam na ikonkę "z tekstu" , wybieram plik i wstawiam od którego wiersza mają być pobrane dane. Jest problem bo nie pobiera mi na przykład 1000000 wierszy( na przykład ostatnich). Tyle by się zmieściło w arkuszu. Do innego arkusza mógł bym pobrać następne dane. Mógł bym rozbić pobieranie do innych skoroszytów. Tylko jest problem bo nie mogę tak zrobić. Pobiera mi dane w 10 %. Może coś źle robię. Nie mówię że nie, lecz wydaje mi się że wszystko robię dobrze. Jak mówi sentencja łacińska "Errare humanum est".

    Dlatego pomyślałem o VBA.

    Dodano po 1 [minuty]:

    Dotnetvb napisał:
    Podsumowując "wiem że butelka ma pojemność 1 litr, ale jak będę ją napelnial lejkiem to wejdą 2 litry".
    Makro nie sprawia że przeskoczysz ograniczenia, które nie wynikają z widzimisię twórców aplikacji, lecz pewnych uwarunkowań. Nawet jeśli upchasz te dane do Excela to ich opracowanie nie będzie zbyt wygodne. Może power query coś by pomogło ale nigdy nie podejmowałem się wrzucania do Excela takich ilości danych.


    Zawsze jak skończy się ilość komórek w kolumnie A, można je wkleić do komórek w kolumnie B.

    Dodano po 2 [minuty]:

    kinggustav napisał:
    Nic nie piszesz jak chcesz te dane przetworzyć. Bo chyba jakoś chcesz, wiedząc, że do Excela nie zapiszesz tylu wierszy. Więc może da się przetwarzać na bieżąco podczas wczytywania? Przynajmniej zredukować liczbę wierszy poniżej miliona?


    Z tej bazy potrzebuję wyciągnąć 100 tyś przypisanych PESEL-ów i NIP-ów. Umiem to zrobić w Excelu, tylko nie umiem tego wybrać z notatnika. Musiał bym z miesiąc siedzieć i ręcznie wybierać.

    Dodano po 2 [minuty]:

    Tak jak w przykładowym pliku są dane w kolumnie A, mogę je mieć taka samo już w Excelu, resztę, tzn wybranie danych mi potrzebnych będę umiał. Zawszę mogę podzielić tekst na kolumny i z danej/danych kolumn wybrać takie dane jaki mi są potrzebne. Tylko jak to zrobić aby one się w Excelu znalazły?
  • Poziom 32  
    1) Import from file ma opcję start at row, możesz też ten plik podzielić na mniejsze
    2) Możesz tego pliku nie ładować wcale - przekonwertuj go na csv, zrób do niego link do excela jako tabelę przestawną
    3) Przed importem usuń nieinteresujące cię wiersze wyrażeniem regularnym

    Co do ilości arkuszy - tak prawi ms na swojej stronie (jak jest na prawdę nie mam pojęcia, nie używam excela jako bazy danych)
    Co do podziału danych - każde dane da się podzielić ze względu na wiersze lub kolumny, jednak to co w wypadku sql przyspiesza operacje, tak w excelu komplikuje formuły i je spowalnia
  • Poziom 6  
    drobok napisał:
    1) Import from file ma opcję start at row, możesz też ten plik podzielić na mniejsze
    2) Możesz tego pliku nie ładować wcale - przekonwertuj go na csv, zrób do niego link do excela jako tabelę przestawną
    3) Przed importem usuń nieinteresujące cię wiersze wyrażeniem regularnym

    Co do ilości arkuszy - tak prawi ms na swojej stronie (jak jest na prawdę nie mam pojęcia, nie używam excela jako bazy danych)
    Co do podziału danych - każde dane da się podzielić ze względu na wiersze lub kolumny, jednak to co w wypadku sql przyspiesza operacje, tak w excelu komplikuje formuły i je spowalnia


    odp. pkt.2
    Nie mogę przekonwertować pliku bo nie mogę mieć na stacji takich programów, tez nie mogę przekonwertować online-blokada amina. Zgody nie dostane. Wiem, że mogę zmienić rodzaj pliku txt na csv i będę miał dane w "excelu" tylko w ten sposób zgubi mi ponad 50% danych.

    odp pkt 1. mogę tylko zaznaczyć od którego wiersza mogę pobrać dane. nie mogę zaznaczyć od którego i do którego ma pobrać wiersze. Nie znam aż tak excela.

    Odp pkt 3. Nagłówek potrzebny/nie potrzebny kwestia 1 wiersza. to najmniejszy problem

    Dodano po 5 [minuty]:

    import robię w ten sposób.
    Dane-> z tekstu-> wybieram lokalizację pliku-> wpisuje od którego wiersza ma być zrobiony import danych z notatnika-> 3 razy klikamy dalej-> wpisuje od której komórki mają być wstawione zaimportowane dane-> i enter.

    W ten sposób pobiera mi 10% danych, czyli z 1milona, zrobiony jest import 100000 wierszy.
    Wiersze nie zawsze wybierane są w kolejności.

    Dlatego pojawił się mój post na forum.
  • Poziom 18  
    Wiersze maja być wybrane losowo? Jeśli tak to ustawiasz kursor na początku wiersza w notatniku przewijasz o x wierszy trzymasz shift i klikasz na końcu wiersza, kopiujesz i wklejasz do Excela, możesz tak skopiować wszystko partiami do kilku plików excel, myślę że max godzina i miałbyś już to zrobione. Kopiuj ac po 50k wierszy wykonał bys ok 40 operacji kopiuj wklej, nie ma tragedii.
  • Poziom 34  
    A co tam chcesz to masz makro na 3mln wierszy (po milion na kolumnę można na arkusze) ile to będzie wczytywało nie wiem czy da radę nie wiem
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod
  • Poziom 23  
    A potrafisz z góry określić który wiersz masz importować a który nie? Bo jeżeli tak to zmień schemat algorytmu na:
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    I nie masz kłopotu z wielką liczbą wierszy.