Zamiana danych ze 100 wierszy na dane w 4 kolumnach
-
- Posty: 4
- Rejestracja: śr paź 18, 2023 10:59 am
Zamiana danych ze 100 wierszy na dane w 4 kolumnach
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ć.
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
Re: Zamiana danych ze 100 wierszy na dane w 4 kolumnach
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 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 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 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++).
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 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 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 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 (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
-
- Posty: 4
- Rejestracja: śr paź 18, 2023 10:59 am
Re: Zamiana danych ze 100 wierszy na dane w 4 kolumnach
Super, dziękuję za pomoc.
Niestety numery telefonu nie są zapisane jako 9 cyfrowe liczby.
Niestety numery telefonu nie są zapisane jako 9 cyfrowe liczby.
Apache OpenOffice 4.1.9
Re: Zamiana danych ze 100 wierszy na dane w 4 kolumnach
Więc trzeba zmienić wyrażenie opisujące wiersze z numerami. Na pewno się da, tylko pokaż, jak je masz zapisane.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
-
- Posty: 4
- Rejestracja: śr paź 18, 2023 10:59 am
Re: Zamiana danych ze 100 wierszy na dane w 4 kolumnach
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
tel. xx xx xx xxx
Apache OpenOffice 4.1.9
Re: Zamiana danych ze 100 wierszy na dane w 4 kolumnach
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,
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.
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,
Szkoda. Ale można sobie poradzić inaczej.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.
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 (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Zamiana danych ze 100 wierszy na dane w 4 kolumnach
Propozycja wykorzystująca formułę w Calc:
- Importuję / wklejam specjalnie dane do Calc: Arkusz1, kolumna A
- 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 - W wierszu wprowadzania wpisuję formułę:
i zatwierdzam kombinacją klawiszy Alt+Enter
Kod: Zaznacz cały
=ADR.POŚR("Arkusz1.A" & 4*(WIERSZ()-1)+KOLUMNA())
- Kopiuję zakres i wstawiam specjalnie bez formuł.
OpenOffice 1.1.5 – 4.1.15
LibreOffice 3.3.0.4 – 24.8
Windows 7,10,11 64-bit
LibreOffice 3.3.0.4 – 24.8
Windows 7,10,11 64-bit
-
- Posty: 4
- Rejestracja: śr paź 18, 2023 10:59 am
Re: Zamiana danych ze 100 wierszy na dane w 4 kolumnach
Wielkie dzięki. Problem rozwiązany.
Apache OpenOffice 4.1.9