Zamiana danych ze 100 wierszy na dane w 4 kolumnach

Użytkowanie arkusza kalkulacyjnego
krzysztof81
Posty: 4
Rejestracja: śr paź 18, 2023 10:59 am

Zamiana danych ze 100 wierszy na dane w 4 kolumnach

Post autor: krzysztof81 »

Witam, mam dane zapisane według tego samego schematu ale w wierszach:
Imię Nazwisko1
Ulica1
Miejscowość1
Nr telefonu1
Imię Nazwisko2
Ulica2
Miejscowość2
Nr telefonu2
Imię Nazwisko3
Ulica3
Miejscowość3
Nr telefonu3
i jest ich powiedzmy 100. Chcę je mieć w 4 kolumnach:
Imię Nazwisko1 | Ulica1 | Miejscowość1 | Nr telefonu1
Imię Nazwisko2 | Ulica2 | Miejscowość2 | Nr telefonu2
Imię Nazwisko3 | Ulica3 | Miejscowość3 | Nr telefonu3
Imię Nazwisko4 | Ulica4 | Miejscowość4 | Nr telefonu4

Nie mam pojęcia jak to w miarę automatycznie zrobić.
Apache OpenOffice 4.1.9
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Zamiana danych ze 100 wierszy na dane w 4 kolumnach

Post autor: Jan_J »

W Calcu trudno, we Writerze łatwo.

Pożonglujemy podziałami używając wyrażeń regularnych.
Więcej o wyrażeniach regularnych poczytasz tu: https://help.libreoffice.org/6.2/pl/tex ... 00001.html

Wczytaj tabelę adresową do Writera. Włącz widok znaków redakcyjnych („¶” na listwie narzędzi). Wywołaj formularz Znajdź–Zamień (Ctrl+H). Zaznacz opcję [x] Wyrażenia regularne.
Ma być jak na obrazku poniżej
adresy.png
adresy.png (98.93 KiB) Przejrzano 401 razy
Zakładam, że (tak jak na moim rysunku po wklejeniu Twoich danych):
* poszczególne dane są oddzielone od siebie nie Enterami (końcami akapitów), tylko shift-Enterami (końcami wierszy);
* numery telefonów są 9-cyfrowe pisane bez odstępów.
Jeśli jest inaczej, niezbędne będą drobne modyfikacje kroków poniżej.

Krok pierwszy. Wstaw „prawdziwe” Entery (końce bloków akapitowych) po numerach telefonów.
W rubryce Znajdź wpisz ([0-9]{9})\n
W rubryce Zamień wpisz $1\n
[Zamień wszystkie]
Ma być jak na obrazku poniżej
po-etapie-1.png
po-etapie-1.png (100.59 KiB) Przejrzano 401 razy
Krok drugi. Zastąp końce wierszy symbolami tabulacji.
W rubryce Znajdź wpisz \n
W rubryce Zamień wpisz \t
[Zamień wszystkie]
Ma być jak na obrazku poniżej
po-etapie-2.png
po-etapie-2.png (86.33 KiB) Przejrzano 400 razy
Gotowe. Kopiuj/wklej specjalnie do Calca.

Uwagi końcowe.
Calc też rozumie wyrażenia regularne, ale nie da się ich użyć do przeniesienia danych z komórki do komórki. Dlatego w tym przypadku wygodniejszy jest edytor tekstu.
Ta sama metoda przenosi się na wysokiej klasy edytory tekstu niesformatowanego (np. Notepad++).
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
krzysztof81
Posty: 4
Rejestracja: śr paź 18, 2023 10:59 am

Re: Zamiana danych ze 100 wierszy na dane w 4 kolumnach

Post autor: krzysztof81 »

Super, dziękuję za pomoc.
Niestety numery telefonu nie są zapisane jako 9 cyfrowe liczby.
Apache OpenOffice 4.1.9
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Zamiana danych ze 100 wierszy na dane w 4 kolumnach

Post autor: Jan_J »

Więc trzeba zmienić wyrażenie opisujące wiersze z numerami. Na pewno się da, tylko pokaż, jak je masz zapisane.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
krzysztof81
Posty: 4
Rejestracja: śr paź 18, 2023 10:59 am

Re: Zamiana danych ze 100 wierszy na dane w 4 kolumnach

Post autor: krzysztof81 »

Numery telefonu są zapisywane w oddzielnej kolumnie w formacie xx xx xx xxx lub xxx xxx xxx lub xxxxxxxxx, ale są poprzedzone zawsze "tel." Czyli komórka zawierająca dane wygląda np. tak:
tel. xx xx xx xxx
Apache OpenOffice 4.1.9
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Zamiana danych ze 100 wierszy na dane w 4 kolumnach

Post autor: Jan_J »

Wobec tego zamiast ([0-9]{9})\n
zapisałbym wzorzec „wiersz aczyna się od tel., a potem tylko cyfry albo spacje”, czyli
^(tel.[0-9 ]+)\n
i zamieniamy jak poprzednio na
$1\n

Druga wątpliwość jest taka: symbole końca wiersza (niebieskie złamane strzałki) dostałem podczas importu Twojego opisu do Writera. Ale nie z Calca, tylko z Firefoksa.
Nie jest jasne, czy Tobie zaimportują się tak samo. Przy wklejeniu do Writera tekstu z Calca dostaję w tych miejscach końce akapitów (widoczne jako niebieskie ¶). One powinny zostać.

Zamiana ¶ na cokolwiek jest możliwa: znajdź $ zamień na cokolwiek. Tylko że — jak pisze Mike Kaganski, jeden z współtwórców pakietu — patrz https://ask.libreoffice.org/t/regex-for ... ne/52665/8,
The different issue is that there’s no way to insert line break in F&R dialog - neither in Writer, nor in Calc. That’s tdf#58744.
Szkoda. Ale można sobie poradzić inaczej.

Krok 1. Zamienić ¶ po numerze telefonu na coś, czego nie ma w całym tekście, np. @ (o ile nie masz zanotowanych adresów e-mailowych)
znajdź ^(tel.[0-9 ]+)$
zamień na $1@

Krok 2. Zamienić wszystkie pozostałe ¶ na tabulatory
znajdź $
zamień na \t

Krok 3. Zamienić @ na ¶
znajdź @
zamień na \n

Uwaga: po kroku 2. wszystkie Twoje dane chwilowo znajdą się w jednym akapicie. Writer ma (chyba wciąż) ograniczenie na liczbę znaków w ramach akapitu: nie może przekraczać 64kB.
Szacuję, że przy 100 wierszach będziesz mieć mniej więcej 100*(20 + 20 + 50 + 15) = nieco ponad 10kB. Ale uważaj; jeśli będzie zbyt dużo, przekształć kilka fragmentów po kolei.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
cwolan
Posty: 54
Rejestracja: pn sty 25, 2021 11:17 pm

Re: Zamiana danych ze 100 wierszy na dane w 4 kolumnach

Post autor: cwolan »

Propozycja wykorzystująca formułę w Calc:
  1. Importuję / wklejam specjalnie dane do Calc: Arkusz1, kolumna A
  2. Arkusz2: zaznaczam zakres od A1 odpowiadający danym ustawionym w 4 kolumnach (A-D),
    np. dla 100 wierszy = 25 * (4) będzie to zakres A1:D25
  3. W wierszu wprowadzania wpisuję formułę:

    Kod: Zaznacz cały

    =ADR.POŚR("Arkusz1.A" & 4*(WIERSZ()-1)+KOLUMNA())
    i zatwierdzam kombinacją klawiszy Alt+Enter
  4. Kopiuję zakres i wstawiam specjalnie bez formuł.
Plik z przykładem:
testFILE.ods
(10 KiB) Pobrany 50 razy
OpenOffice 1.1.5 – 4.1.15
LibreOffice 3.3.0.4 – 7.6.6
Windows 7,10,11 64-bit
krzysztof81
Posty: 4
Rejestracja: śr paź 18, 2023 10:59 am

Re: Zamiana danych ze 100 wierszy na dane w 4 kolumnach

Post autor: krzysztof81 »

Wielkie dzięki. Problem rozwiązany.
Apache OpenOffice 4.1.9
Zablokowany