Obróbka dużego cennika

Użytkowanie arkusza kalkulacyjnego
Mroku
Posty: 6
Rejestracja: wt wrz 26, 2017 2:56 pm

Obróbka dużego cennika

Post autor: Mroku »

Witam serdecznie,
mam plik w OO (arkusz) posiadający ca 15.000 wierszy. Jest to cennik części zamiennych. Chciałbym wczytać go do systemu sprzedaży jednak jest pewien problem. System sprzedaży musi mieć unikatowy symbol identyfikujący produkt. Oczywiście dostawca cennika posiada unikatowe oznaczenia swoich produktów. Jednak występują powtórzenia tych pozycji w cenniku. Jest to spowodowane faktem, że jedna unikatowa pozycja dostawcy odpowiada kilku pozycjom oryginalnym. A ponieważ odpowiednik oryginału jest jednym z pól każdego wiersza - to w tej sytuacji występuje w cenniku tyle razy - ile jest odpowiedników oryginalnych. Np jeśli pozycja dostawcy LA657 (symbol unikatowy) odpowiada numerom oryginalnym A,B i C - to wystąpi 3 razy w cenniku. Raz z numerem oryginalnym A, raz z numerem oryginalnym B i raz z C. Dodam, że pozycja odpowiednika oryginału jest ostatnim polem w każdej pozycji cennika. Oczywiście każde wystąpienie tej pozycji zawiera powtarzający się komplet innych informacji - jak opis, wagę, cenę itd.. a różni się wyłącznie jednym, ostatnim polem - odpowiednik numeru oryginalnego. Potrzebuje przerobić ten cennik tak aby każda pozycja dostawcy występowała tylko raz (unikatowy symbol) - natomiast aby odpowiednie numery oryginalne znalazły się w ostatnich kolumnach danej pozycji - jedna po drugiej. Czyli chciałbym uzyskać efekt z mojego przykładu :
LA657 /tu są inne informacje - tzn, inne pola - opis, waga, cena.../ i na końcu w kolejnych kolumnach A,B,C (w 3 kolejnych kolumnach tego samego wiersza)
W ten sposób uzyskałbym plik spełniający warunek konieczny systemu - unikatowy symbol produktu (pierwsze pole każdego wiersza) oraz zmienna ilość pól końcowych (w zależności od ilości odpowiednich numerów oryginalnych)
I wielka prośba - mimo , że miałem do czynienia w pisaniu makr w Excellu - robiłem to dość dawno i już niewiele pamiętam - dlatego pomoc w postać "trzeba napisać makro" nie za bardzo mi sie przyda. Bardzo będę wdzięczny za konkretne opisanie krok po kroku jak to zrobić w OO - o ile taka możliwość istnieje (na co mam nadzieję)
Z góry dziękuję za pomoc
Open Office 4.1.2
Windows 10 Home 64 bit
Awatar użytkownika
Jermor
Posty: 2254
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Obróbka dużego cennika

Post autor: Jermor »

Mam pewien pomysł ale potrzebne są dodatkowe informacje.
Zakładam, że operacja ma zostać wykonana tylko raz aby utworzyć cennik, a jego aktualizacja będzie przebiegała w innym trybie.
By pominąć makra trzeba wiedzieć ile może wystąpić najwięcej symboli przypisanych do takiego samego numeru dostawcy. W Twoim przykładzie do LA657 przypisane mogą być 3 symbole.
Nie można utworzyć zmiennej ilości kolumn w każdym rekordzie a z opisu wynika, że do każdego symbolu dostawcy przypisany jest przynajmniej jeden symbol, o którym piszesz "oryginalny".
Utworzony wynikowy cennik musi mieć stałą liczbę kolumn dodatkowych, np 5 i w przypadku Twojego przykładowego symbolu LA657 zawierałyby wpisy A, B, C x, x, w których x oznaczałoby brak pozycji czwartej i piątej. Oczywiście faktyczny wpis x jest do ustalenia.
Trzeba wykonać kilka kroków aby zrealizować cały proces, dla 15000 zapisów warto to zrobić.
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.
Mroku
Posty: 6
Rejestracja: wt wrz 26, 2017 2:56 pm

Re: Obróbka dużego cennika

Post autor: Mroku »

witam i dziękuję za odpowiedź.
1) plik ma być obrobiony jednokrotnie i doprowadzony do formy - pierwsze pole jako unikatowy kod dostawcy, potem standardowe dane (opis, cena, waga, grupa itd.) i na końcu dodatkowe pola z numerami oryginałów
2) najwięcej wystapień numerów oryginalnych odpowiadających jednej pozycji to 5. Mozna przyjąć, że dodajemy na końcu 5 pół i czasem będą 4 puste i tylko jedno wypełnione a czasem 5 wypełnionych
3) ja nie dyskwalifikowałem rozwiązania typu macro. Z uwagi tylko na moja niewiedzę - prosiłem o konkretne punkty jak to zrobić - a wtedy powinienem dać sobie radę
Pozdrawiam
Open Office 4.1.2
Windows 10 Home 64 bit
Awatar użytkownika
Jermor
Posty: 2254
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Obróbka dużego cennika

Post autor: Jermor »

Oto moja propozycja:
Zakładam, że zgodnie ze stopką Twojego postu korzystasz z Apache OpenOffice.
Wykorzystane zostaną dwa arkusze. Arkusz1 zawiera oryginalny cennik.
Należy posortować cennik wg klucza: unikatowy dostawca.
Dla wygody obszar cennika (bez ewentualnych nagłówków) nazwałem "cennik".
Kolumnę zawierającą klucz unikatowego dostawcy skopiowałem do arkusza Arkusz2 do kolumny A.
Także dla wygody nazwałem ten obszar "numer". Ta nazwa także nie obejmuje nagłówka tej kolumny, jeśli kolumna została skopiowana łącznie z nagłówkiem.
Zaznaczam obszar "numer" i wywołuję polecenie "Dane -> Filtr -> Filtr standardowy"
Zaznaczam opcje tak jak na ilustracji.
170927164944_2.jpg
Najważniejsze to "Bez duplikatów" oraz wskazuję miejsce gdzie mają zostać umieszczone odfiltrowane klucze.
W efekcie tego działania dostanę kolumnę zawierającą klucze dostawcy tylko w pojedynczej reprezentacji.
Teraz z lewej strony tej nowej kolumny tworzę dwa pola pomocnicze. Pierwsze wyznacza położenie pierwszego elementu klucza dostawcy w posortowanym cenniku. Drugie na podstawie tych wartości wylicza ile pozycji oryginałów występuje dla danego klucza. Ta druga wartość do nizcego nie jest wykorzystana, poza tym, że informuje ile numerów oryginału jest związanych z danym kluczem dostawcy.
Na końcu w kolumnie wyznaczającej pozycję umieszczam formułę =LICZBA.WIERSZY(numer)+1 wstawia ona powiększony o 1 numer ostatniego wiersza i potrzebna jest do "obsłużenia" ostatniej pozycji w cenniku.
Mając numer pierwszej pozycji każdego klucza mogę utworzyć kolumny ze wszystkimi podstawowymi informacjami jako wynik formuły
=INDEKS(cennik;pozycja, n), w którym pozycja to znalezione położenie klucza w obszarze "numer", co odpowiada także jego położeniu w obszarze "cennik"
"n" odpowiada kolejnym kolumnom od 2 do zawierającej numer oryginału.
Za tą ostatnia kolumną znajdują się kolejne cztery, w których mają się znaleźć pozostałe numery oryginału.
Formuły umieszczone w tych kolumnach lokują w nich numer oryginału (jeśli taki jest) lub "x", gdy tego kolejnego numeru oryginału już nie ma.
Można to zobaczyć w załączonym przykładzie.
Ostatnią czynnością jest skopiowanie całego tak utworzonego obszaru i wklejenie go (Wklej specjalnie) z opcją tylko ciągi znaków i liczby.
Powstanie czysty nowy cennik bez żadnych formuł.
Załączniki
cennik.ods
(10.1 KiB) Pobrany 183 razy
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.
Mroku
Posty: 6
Rejestracja: wt wrz 26, 2017 2:56 pm

Re: Obróbka dużego cennika

Post autor: Mroku »

Bardzo dziękuje za odpowiedź.
Ideę zrozumiałem - widzę tylko, że w podanym przykładzie nie do końca zgadzają się wyniki w kolumnie arkuszu 2 pozycja - bo chyba wyniki powinny być :
Pozycja Ilość Numer
2 2 abc
4 3 abcc
7 3 eee
a jest nieco inaczej - przez co wynik jest nie do końca prawidłowy. Tzn. mając prawidłowe wartości "Pozycja" i "Ilość" rozumiem jak niejako stworzyć nowy arkusz w oparciu o wyszukiwanie i wstawianie pól z pierwotnego. Jednak jak prawidłowo określić parametry "Pozycja" i "Ilość" = bo tutaj jest chyba jakiś błąd. Czy nie ma funkcji podającej ilość "wystąpień" danej pozycji w zakresie "numer" (a tym samym "cennik") - bo to byłoby chyba najbardziej bezpieczne - i to powinna być wartość pola "Ilość".
Pozdrawiam
Open Office 4.1.2
Windows 10 Home 64 bit
Mroku
Posty: 6
Rejestracja: wt wrz 26, 2017 2:56 pm

Re: Obróbka dużego cennika

Post autor: Mroku »

wszystko się zgadza jeśli zmienimy w formule Podaj.Pozycje parametr logiczny na "0" wtedy podaje pierwszą pozycję wystąpienia danej sekwencji w "numer" i wszystko się wtedy zgadza. W przypadku wartości logicznej "1" - podaje pozycje ostatniego wystapienia szukanej sekwencji
Dzięki za podpowiedź
Open Office 4.1.2
Windows 10 Home 64 bit
Mroku
Posty: 6
Rejestracja: wt wrz 26, 2017 2:56 pm

Re: Obróbka dużego cennika

Post autor: Mroku »

I mam od razu jeszcze jedno pytanie - czy jest jakaś droga aby pierwszy krok (filtrowanie bez powtórzeń) dotyczył większego zakresu arkusza - a nie tylko jednej kolumny "numer" ? Chciałbym uniknąć budowania całego arkusza od nowa wpisując kolejne pola w każdym wierszu za pozycją "numer" - a uzyskać arkusz bez powtórzeń z wszystkimi polami (tzn tak jak filtrujemy "numer" ale od razu z innymi polami - opis, waga, cena.. itd) i dopisywać tylko z arkusza "cennik" wyłącznie ostatnie pola numerów oryginalnych ?
Open Office 4.1.2
Windows 10 Home 64 bit
Awatar użytkownika
Jermor
Posty: 2254
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Obróbka dużego cennika

Post autor: Jermor »

Oczywiście, że można, wystarczy zaznaczyć w cenniku obszar z wieloma kolumnami. Wówczas takie same wartości muszą się znajdować we wszystkich kolumnach w wierszu. Myślałem o tym, ale jest taki problem, że wśród 15000 rekordów może się trafić, że z jednym numerem oryginalnym będzie wpis np "35 cm" a w drugim, dotyczącym tego samego klucza, "35cm" i to spowoduje, że rekordy już nie będą takie same. Wtedy ten sam klucz dostawcy pojawi się dwukrotnie. Stwierdzenie, że kolumny opisowe zawierają takie same wpisy dla tego samego klucza dostawcy nie musi być prawdziwe bo plik tworzył ktoś inny i to on twierdzi, że tak jest. Więc lepiej dmuchać na zimne.
A w ten sposób na pewno wszystkie wpisy zostaną unormowane wg pierwszego rekordu klucza dostawcy.

Nie wiem dlaczego zmieniłem ten trzeci argument funkcji PODAJ.POZYCJĘ na 1, bo wszystko testowałem przy wartości 0
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.
Mroku
Posty: 6
Rejestracja: wt wrz 26, 2017 2:56 pm

Re: Obróbka dużego cennika

Post autor: Mroku »

Masz w 100% rację - sprawdziłem to i faktycznie przy filtrowaniu większej ilości kolumn są nieprawidłowości (nawet spacja więcej przy opisie zmienia sprawę) - dlatego zaproponowane przez ciebie rozwiązanie jest jedynym słusznym.
Bardzo dziękuje za pomoc
Pozdrawiam
Open Office 4.1.2
Windows 10 Home 64 bit
ODPOWIEDZ