Odwrócenie kolejności numeru zamówienia [Solved]

Użytkowanie arkusza kalkulacyjnego
Pariasenator
Posty: 3
Rejestracja: pn gru 02, 2019 1:50 pm

Odwrócenie kolejności numeru zamówienia [Solved]

Post autor: Pariasenator »

Cześć,
Mam takie pytanie, jak zrobić taką rzecz:

Mam bazę danych zamówień w szyku NUMER/MIESIĄC/ROK ze względu na szyk nie jestem w stanie tego wysortować według daty.
Czy można odwrócić tą kolejność za pomocą jakiejś formuły by było ROK/MIESIĄC/NUMER?
Ostatnio zmieniony śr maja 19, 2021 12:45 pm przez Pariasenator, łącznie zmieniany 1 raz.
Apache Open Office 4.1.7
Windows 10
Awatar użytkownika
Jermor
Posty: 2254
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Odwrócenie kolejności numeru zamówienia

Post autor: Jermor »

Zakładając, że rok jest zawsze liczbą 4 cyfrową a miesiąc dwucyfrową, oraz że podany przez ciebie sposób numerowania wygląda tak: 9/03/2021 i wpisany jest do komórki A1, możesz utworzyć formułę następującą:

Kod: Zaznacz cały

=POŁĄCZ.TEKSTY("/";1;PRAWY(A1;4);LEWY(PRAWY(A1;7);2);LEWY(A1;DŁ(A1)-8))
W Apache OpenOffice brak jest funkcji POŁĄCZ.TEKSTY(), więc utwórz formułę:

Kod: Zaznacz cały

=PRAWY(A1;4)&"/"&LEWY(PRAWY(A1;7);2)&"/"&LEWY(A1;DŁ(A1)-8)
Ostatnio zmieniony śr maja 19, 2021 11:05 am przez Jermor, łącznie zmieniany 1 raz.
Powód: W Apache OpenOffice nie ma funkcji POŁĄCZ.TEKSTY()
AOO 4.1.15, LO 7.5.9 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Awatar użytkownika
Rafkus
Posty: 515
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Odwrócenie kolejności numeru zamówienia

Post autor: Rafkus »

@Jermor podał tobie rozwiązanie dla Libre, wykorzystując funkcję POŁĄCZ.TEKSTY(), której nie ma w OpenOffice.
W Open Office (dla podobnych założeń: cztero cyfrowy rok i dwucyfrowa data) możesz to zrobić w następujący sposób:

Kod: Zaznacz cały

=ZŁĄCZ.TEKSTY(PRAWY(A1;4);  MID(A1;ZNAJDŹ("/";A1);4);  LEWY(A1;ZNAJDŹ("/";A1)-1))
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Pariasenator
Posty: 3
Rejestracja: pn gru 02, 2019 1:50 pm

Re: Odwrócenie kolejności numeru zamówienia

Post autor: Pariasenator »

Rafkus pisze:@Jermor podał tobie rozwiązanie dla Libre, wykorzystując funkcję POŁĄCZ.TEKSTY(), której nie ma w OpenOffice.
W Open Office (dla podobnych założeń: cztero cyfrowy rok i dwucyfrowa data) możesz to zrobić w następujący sposób:

Kod: Zaznacz cały

=ZŁĄCZ.TEKSTY(PRAWY(A1;4);  MID(A1;ZNAJDŹ("/";A1);4);  LEWY(A1;ZNAJDŹ("/";A1)-1))
Dzięki, działa. Zamykam
Apache Open Office 4.1.7
Windows 10
Awatar użytkownika
Jermor
Posty: 2254
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Odwrócenie kolejności numeru zamówienia [Solved]

Post autor: Jermor »

Mimo że @Pariasenator zamknął temat, chciałbym dodać jeszcze trzy grosze.
Pierwsza sprawa, to jednak wyższość LibreOffice nad Apache OpenOffice. W swojej pierwszej odpowiedzi skorzystałem z funkcji: POŁĄCZ.TEKSTY(), która występuje wyłącznie w LibreOffice Calc. Ta funkcja jak i rozwiązanie dla Apache OpenOffice wykorzystały inne funkcje programu Calc, które pozwalają na wyodrębnienie z tekstu źródłowego potrzebnych fragmentów i połączenie ich we wskazanej kolejności.
Rozwiązując to zagadnienie, można skorzystać z jeszcze jednej funkcji, której także nie ma w Apache OpenOffice, mianowicie funkcji REGEX(). Pozwala ona na wykonanie takiej zamiany kolejności elementów jedną funkcją. Postać jej dla tego zagadnienia to:

Kod: Zaznacz cały

=REGEX(A1;"([0-9]+)(/[0-9]{2}/)([0-9]{4})";"$3$2$1")
Funkcja wykorzystuje zdefiniowany "wzorzec" wyszukiwania tekstu stanowiący wyrażenie regularne. W tym przypadku takim wzorcem jest ciąg złożony z przynajmniej jednej cyfry, znaku ukośnika, dwóch cyfr, kolejnego znaku ukośnika i czterech kolejnych cyfr. We wzorcu zdefiniowano trzy grupy, z których wzorzec się składa. Funkcja ma zamienić znaleziony i odpowiadający temu wzorcowi ciąg grupami tego wzorca ustawionymi we wskazanej kolejności. Tutaj: grupa trzecia, grupa druga i grupa pierwsza.

Drugie rozwiązanie dotyczy sytuacji, gdy chcemy zastąpić ten sposób zapisu nowym. Wówczas nie są potrzebne żadne funkcje a sposób zadziała w każdej wersji programu Calc. Wystarczy skorzystać z operacji "Znajdź i zamień", wykorzystując takie same wyrażenia regularne, jakie zostały użyte w funkcji REGEX(). W polu "Znajdź" należałoby zatem wpisać ciąg: ([0-9]+)(/[0-9]{2}/)([0-9]{4}) a w polu "Zamień" ciąg: $3$2$1. Przed wykonaniem zamiany należy upewnić się, że zaznaczona jest opcja "Wyrażenia regularne".
AOO 4.1.15, LO 7.5.9 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Odwrócenie kolejności numeru zamówienia [Solved]

Post autor: Jan_J »

Drugie rozwiązanie dotyczy sytuacji, gdy chcemy zastąpić ten sposób zapisu nowym. Wówczas nie są potrzebne żadne funkcje a sposób zadziała w każdej wersji programu Calc. Wystarczy skorzystać z operacji "Znajdź i zamień", wykorzystując takie same wyrażenia regularne, jakie zostały użyte w funkcji REGEX(). W polu "Znajdź" należałoby zatem wpisać ciąg: ([0-9]+)(/[0-9]{2}/)([0-9]{4}) a w polu "Zamień" ciąg: $3$2$1. Przed wykonaniem zamiany należy upewnić się, że zaznaczona jest opcja "Wyrażenia regularne".
Jest to dobry sposób, kiedy dane są wpisane jako wartości do komórek.
W przypadku występowania formuł z wynikami datowymi sprawa wymaga ostrożności: jeśli niebacznie zaznaczymy „wyszukiwanie w wartościach” i „zamień wszystkie”, zawartość komórek z formułami o wynikach pasujących do wzorca zostanie zastąpiona wartościami STAŁYMI o postaci opisanej przez wzorzec zastępujący.
Taka zmiana nie jest w interesie zarządzającego skoroszytem. Nie ma potrzeby jej przeprowadzania, bo w przypadku formuł datowych wystarczyłaby zmiana formatu komórki. Ale same narzędzia są ostre i da się je zastosować na oślep; trzeba uważać, żeby czegoś nie uszkodzić.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ