Jakiej używać reguły aby kopiowała liczby bez pustych pol

Użytkowanie arkusza kalkulacyjnego
charyy
Posty: 9
Rejestracja: sob lut 06, 2021 11:17 am

Jakiej używać reguły aby kopiowała liczby bez pustych pol

Post autor: charyy »

Witam, przeszukałem forum ale ciężko jest coś znaleźć nie wiedząc jak szukać tego o co mi chodzi :), potrzebuje aby formuła kopiowała pełne pola z np pola od A2 do J2
np _2__5_7_9_ ( podałem 10 pól a _ to "puste" pole)
liczby ale bez pustych pól i wpisywała je kolejno w tabele rosnąco np w tabeli od góry A1 do A10
np
2
5
7
9
jezeli trzeba podeśle screena bardziej wyrafinowanego

przykład pełnych wszystkich pól w A2 do J2 np 1 2 3 4 5 6 7 8 9 10
a umieszczane w tabeli od góry A1 do A10
np
1
2
3
4
5
6
7
8
9
10
Ostatnio zmieniony sob lut 06, 2021 2:42 pm przez Rafkus, łącznie zmieniany 1 raz.
Powód: Przeniosłem temat do tego działu, myślę że jest bardziej odpowiedni
openoffice 4.1.5
Awatar użytkownika
Rafkus
Posty: 515
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: Rafkus »

Wykorzystaj funkcję MIN.K:

Kod: Zaznacz cały

=MIN.K( $A$2:$J$2; WIERSZ(A1) )
Funkcja ta zwraca n-tą najmniejszą wartość ze zbioru danych. Tą n-tą wartość wyznacza funkcja WIERSZ(), która zwraca tutaj numer wiersza komórki wpisanej w nawias.
Podana formuła wybiera tutaj z zakresu $A$2:$J$2 pierwszą najmniejszą wartość. Przeciągając tą formułę w dół A1 będzie zamieniane na kolejny wiersz (B1, C1 ... itd) dzięki czemu WIERSZ() będzie generował kolejne wartości dla funkcji MIN.K().
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
charyy
Posty: 9
Rejestracja: sob lut 06, 2021 11:17 am

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: charyy »

Super naprawdę Działa ale jeżeli wszystkie liczby są w tabeli a potrzebuje tak jak pisałem jeżeli występuje pomiędzy liczbami tabela bez wartości czyli pusta to wyskakuje błąd a jak wpisze w puste pola 0 to przesówa mi o ilość zer
0200507090 ( podałem 10 pól a 0 wpisałem w puste pola)
wychodzi tak
0
0
0
0
0
0
2
5
7
9
a chciał bym żeby puste pola omijało i zostało w tabeli samo
2
5
7
9
czy da rade jakoś to oszukać jeżeli np wieksze od 0 lub super bylo by jak puste by omijało
openoffice 4.1.5
Awatar użytkownika
Rafkus
Posty: 515
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: Rafkus »

Zastanawiałem się jaki błąd powstaje i myślę że on powstaje gdy chcesz otrzymać kolejną liczbę gdy zostały już podane wszystkie z danego zakresu. W takim przypadku należy zbudować formułę ukrywającą wartość błędu:

Kod: Zaznacz cały

=JEŻELI(CZY.BŁĄD(MIN.K($B$3:$G$3;  WIERSZ(A1)));   "";   MIN.K($B$3:$G$3;WIERSZ(A1)))
Jeżeli funkcja MIN.K(...) będzie generowała błąd, to do komórki zostanie wpisany tekst "" (tzn, tekst o długości 0 znaków) czyli komórka będzie pusta, w przeciwnym razie zostanie wstawiona wartość MIN.K(...).

PS. W Libre powyższa formuła byłaby nieco prostsza, bo posiada on funkcję:

Kod: Zaznacz cały

=JEŻELI.BŁĄD(MIN.K($B$3:$G$3;WIERSZ(A1));   "")
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Awatar użytkownika
Jermor
Posty: 2254
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: Jermor »

Chyba coś nie tak opisałeś układ swoich danych. Jeśli twoje dane źródłowe znajdują się od A2 do J2 to komórka A2 znajduje się rwnoczesnie w obszarze wynikowym A1 do A10 (!).
Proponuję modyfikację formuły @Rafkus do postaci:
Dane źrólowe: B2:J2
Dane wynikowe A1:A9
Formuła w komórce A1

Kod: Zaznacz cały

=JEŻELI(WIERSZ()-WIERSZ($A$1)<ILE.LICZB($B$2:$J$2);MIN.K($B$2:$J$2;WIERSZ()-WIERSZ($A$1)+1);"")
i skopiowana w dół.
Formuła wyznacza kolejne wartości minimalne, czyniąc to tylko do ilości występujących w zakresie liczb. Gdy wyznaczone zostały wszystkie wartości liczbowe, w pozostałych komórkach wstawiany jest pusty ciąg znakowy.
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.
charyy
Posty: 9
Rejestracja: sob lut 06, 2021 11:17 am

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: charyy »

Jednak troche inny problem wystąpił, formule testowałem na tabeli 1 poziomej gdzie ręcznie wpisywałem liczby 2 0 0 4 5 itd i tu działa nawet bez wyłapywania 0 jak widac na zdjeciu tylko puste pola wykazują błąd ale tabela numer 2 pozioma ma liczby z danych z formuły =JEŻELI(V102>4;"1";"0") i przy braku wyników wstawiłem wstaw 0 (bo wcześniej było puste przy mniejszym od 4 czyli "" zamiast "0") a przy wyniku powyżej 4 jest np 1 i tu są od razu błędy i o takie segregowanie mi chodziło
Załączniki
dlaczego blad.png
dlaczego blad.png (11.42 KiB) Przejrzano 4011 razy
openoffice 4.1.5
Awatar użytkownika
Rafkus
Posty: 515
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: Rafkus »

@Jermor troszkę za bardzo kombinujesz: wynikiem WIERSZ($A$1) będzie zawsze 1, zatem wystarczyłaby formuła:

Kod: Zaznacz cały

JEŻELI(WIERSZ(A1)<=ILE.LICZB($B$3:$J$3);  MIN.K($B$3:$J$3;WIERSZ(A1));  "")

Używam polecenia WIERSZ(A1) bo dzięki temu formułę tą mogę wpisać do dowolnej komórki spoza zakresu źródłowego (dlatego przeoczyłem że wynik zahacza o dane)
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Awatar użytkownika
Rafkus
Posty: 515
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: Rafkus »

charyy pisze: gdzie ręcznie wpisywałem liczby 2 0 0 4 5 itd i tu działa nawet bez wyłapywania 0 jak widac na zdjeciu tylko puste pola wykazują błąd
I tam źle działa bo w komórce S3 masz wpisaną formułę MIN.K($U$9:$AD$9; WIERSZ(S3)). Wiersz(S3) = 3, zatem MIN.K zwraca trzecią najmniejszą wartość, można powiedzieć że na stałe pominąłeś dwie pierwsze najmniejsze wartości. Zrób eksperyment: zamiast 0 wpisz jakieś inne liczby (np 22 i 44) i zobacz czy wówczas najmniejszą liczbą będzie 2.
(Odpowiedź to: Nie, Zamiast S3 powinna być tam wpisane S1)

Aby wykluczyć 0 to proponuję zamiast WIERSZ(A1) użyć formuły:

Kod: Zaznacz cały

LICZ.JEŻELI($U$9:$AD$9; 0)+WIERSZ(A1)
Funkcja LICZ.JEŻELI poda ile liczb w danym zakresie jest równych 0 a kolejne wartości z WIERSZ zapewni podawanie kolejnych liczb (sumarycznie WIĘKSZYCH od 0). Jeśli w zakresie danych będą również liczby ujemne - to znowu trzeba będzie kombinować...
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Awatar użytkownika
Jermor
Posty: 2254
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: Jermor »

Rafkus pisze:@Jermor troszkę za bardzo kombinujesz: wynikiem WIERSZ($A$1) będzie zawsze 1
Wpisałem ten adres raczej dla uzmysłowienia, że obliczanie kolejnego rzędu w funkcji MIN.K() zależy od położenia pierwszego wyniku.
Dopiero teraz zdałem sobie sprawę z tego co napisał @Rafkus. Rzeczywiście niepotrzebnie skomplikowałem formułę. Funkcja WIERSZ(A1) zapisana w dowolnej komórce a następnie powielana w dół zwróci kolejne liczby całkowite zaczynając od 1. Zafiksowałem się na konieczności obliczania tych liczb od położenia komórki startowej a to nie jest potrzebne.
charyy pisze:liczby z danych z formuły =JEŻELI(V102>4;"1";"0")
Podana formuła zwraca liczby jako ciąg tekstowy, a funkcja MIN.K() ignoruje ciągi tekstowe w obliczeniach. Czyli powinno raczej być =JEŻELI(V102>4;1;0)
Ostatnio zmieniony ndz lut 07, 2021 11:27 am przez Jermor, łącznie zmieniany 1 raz.
Powód: Rację ma @Rafkus, że formuła jest niepotrzebnie tak rozbudowana.
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.
charyy
Posty: 9
Rejestracja: sob lut 06, 2021 11:17 am

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: charyy »

SUPER działa, już nawet wymyśliłem co z zerami zrobić dam malejąco i wtedy zera będę mieć na samym dole a u góry liczby czyli o tak bo mam określoną ilość tabeli a wiec liczby z zerami wypełnią całość

68
64
61
60
59
0
0
0
0
0
Załączniki
dlaczego dont work.png
dlaczego dont work.png (10.67 KiB) Przejrzano 4007 razy
openoffice 4.1.5
Awatar użytkownika
Jermor
Posty: 2254
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: Jermor »

Możesz zatem zapisać formułę =JEŻELI(BJ133>14;59;"")
Co do formuły podstawowej, to zwróć uwagę na podaną przez @Rafkus formułę jaka możesz wprowadzić w Calc LibreOffice:
=JEŻELI.BŁĄD(MIN.K($B$3:$G$3;WIERSZ(A1));"")
Ta funkcja [JEŻELI.BŁĄD()] bardzo ułatwia i upraszcza tworzenie obliczeń warunkowych obsługujących sytuacje błędne, a takich funkcji dostępnych w LibreOffice lecz nie zaimplementowanych w Apache OpenOffice, jest więcej. Może więc warto przesiąść się na ten nowszy projekt?
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.
charyy
Posty: 9
Rejestracja: sob lut 06, 2021 11:17 am

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: charyy »

Wystąpił następny czasochłonny problem, czy jest możliwość zakotwiczyć tabele w formule żeby nie zmieniało kolumny ale zmieniało całą resztę?

=LICZ.JEŻELI(F14999:Y14999;DM102)+LICZ.JEŻELI(F14999:Y14999;102) tyczy sie kolumny F do Y ale jak kopiowane w górę to żeby zmieniało liczby 14999 na 14998 97 96 ...itd jednym słowem tak jak kopiuje w inną tabele żeby F14999:Y14999 (F :Y pozostało to samo ale przy kopiowaniu w prawo zmieniało DM102 na DN102 a jak kopiowane w górę to żeby zmieniało, trochę może za dużo rozpisałem ale podsumowując F do Y ma być stałe przy zmianie w prawo bo w górę zmienia się liczba porządkowa, wierzcie mi szukałem wszędzie a to jest potrzebne do szybkiej edycji bez wprowadzania zmiany przy każdej komórce

po to są fora żeby pytać jak nie można znaleźć ogólnie sam się domyśliłem po próbach i błędach że potrzebuje $ żeby na stałe przytrzymać komórke
Załączniki
zapytanie.png
zapytanie.png (3.98 KiB) Przejrzano 3930 razy
Ostatnio zmieniony śr lut 17, 2021 7:32 am przez charyy, łącznie zmieniany 2 razy.
openoffice 4.1.5
Awatar użytkownika
Jermor
Posty: 2254
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: Jermor »

Strasznie zawile to wyjaśniasz. Z tego co piszesz powinieneś zapoznać się z wykorzystywaniem różnych sposobów adresowania komórek. A dokładniej z używaniem adresów względnych i bezwzględnych i mieszanych. O tym jak to działa znajdziesz np. tu https://yestok.pl/gen/yak04.php ale i w wielu innych miejscach w Internecie.
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.
charyy
Posty: 9
Rejestracja: sob lut 06, 2021 11:17 am

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: charyy »

Mam kolejny problem może pomożecie lub jak ostatnio nakierujecie, zainstalowałem liberty jak mi doradzone ale potrzebował bym w formułe np. =JEŻELI($Arkusz3.R451>0;$Arkusz3.R451;"")
wpisać część danych formuły w innej tabelce żeby po jej zmianie zmieniało wpisaną formułę w kilku set formułach na raz
czyli nap w tabeli a1 wpisany miał bym "arkusz3." a w tabeli a2 wpisane miał bym "r451" i czy da sie skompresować formułę tak żeby przykładowo wyglądała tak =JEŻELI(${=a1}{a2}>0;$Arkusz3.R451;"") oczywiście ten przykład jest błędny tylko próbuje nakierować co potrzeba, jeżeli da się z prostszą formułą jak =(a1)+(b2) to też by pomogło
openoffice 4.1.5
Awatar użytkownika
Jermor
Posty: 2254
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: Jermor »

Da się to uzyskać. Musisz skorzystać z funkcji ADR.POŚR(). Funkcja jako argument musi mieć wpisany tekstowo adres komórki. Zwraca natomiast to, co jest pod tym adresem. Jeżeli w komórce A1 wpiszesz nazwę arkusza np. "Arkusz3" a w komórce B1 adres komórki bez przedrostka arkuszowego, np. "R451", to formuła tworząca tekstowy zapis ostatecznego adresu będzie miała postać =A1&"."&B1, a więc funkcja ADR.POŚR wyglądałaby tak: ADR.POŚR(A1&"."&B1) zaś twoja formuła JEŻELI

Kod: Zaznacz cały

=JEŻELI(ADR.POŚR(A1&"."&B1)>);ADR.POŚR(A1&"."&B1);"")
Przyglądając się twojemu przykładowi, można przypuszczać, że zechcesz aby taka formuła odnosiła się analogicznie do kolejnych wierszy, czyli w wierszu 452 dotyczyła komórki R452 a w wierszu 350 do komórki R350.
Jeśli taka sytuacja zachodzi, to powyżej wspomniane rozwiązanie nie spełni oczekiwań, ze względu na sposób adresowania argumentów, w tym przypadku adresowania względnego. Gdy skopiujesz podaną powyżej formułę w dół, do wiersza 451, adres A1 zmieni się na A2 a adres B1 na B2 a w tych komórkach nie ma już żadnych informacji.
Komórkę A1 możesz określić jako adres bezwzględny ($A$1), bo nazwa arkusza w formule będzie zawsze taka sama. Problemem jest druga część adresu, w której tylko litera "R" jest niezmienna, natomiast musi zmieniać się numer wiersza. Trzeba zatem zmienić formułę, która utworzy tekstowy adres komórki, zgodnie z wierszem, w którym się znajduje. Taką formułą wyznaczającą adres może być np. =$A$1&".R"&WIERSZ(). Funkcja wiersz zwraca liczbę odpowiadającą numerowi wiersza tej komórki, która jest argumentem tej funkcji a jeśli argumentu nie podano, numerowi tego wiersza, w którym funkcja została wpisana. Zatem cała formuła JEŻELI przyjmie postać:

Kod: Zaznacz cały

=JEŻELI(ADR.POŚR($A$1&".R"&WIERSZ())>0;ADR.POŚR($A$1&".R"&WIERSZ());"")
Teraz jeśli skopiujesz taką formułę w dół lub w górę, funkcja WIERSZ() wyznaczy numer wiersza odpowiednio powiększony lub pomniejszony, czyli dołączony do litery "R" numer będzie odpowiadał wierszowi, w którym znajduje się formuła, co łącznie z poprzedzającym prefiksem da właściwy adres.
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.
charyy
Posty: 9
Rejestracja: sob lut 06, 2021 11:17 am

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: charyy »

witam, formuła ADR.POŚR(A1&"."&B1) działa elegancko i dzięki ci za to ale w tych kolejnych jest gdzieś błąd lub mi wyskakuje i nie wiem jak go ominąć
=JEŻELI(ADR.POŚR(A1&"."&B1)>);ADR.POŚR(A1&"."&B1);"")
=JEŻELI(ADR.POŚR($A$1&".R"&WIERSZ())>0;ADR.POŚR($A$1&".R"&WIERSZ());"")

co śmieszne poprawiłem ten błąd w jednym z dwóch coś zmieniając i chodziło ale nie zapisałem przed przeniesieniem go docelowo nie mogę dojść co poprawiłem że działało a może wpisałem tylko ADR.POŚR(A1&"."&B1), jak byś mógł sprawdzić co nie hula to był bym wdzięczny uzupełniając dane docelowo żeby brało ten wpisany arkusz3 z tabeli A1, a adres komórki brała z B1 gdzie wpisane jest R451, a dane z tabeli arkusz3R451 wynikają z formuły =MIN.K( H427:CI427; WIERSZ($K$40) ) gdzie właśnie może być 0 lub liczba dlatego przy 0 nie chce żeby mi zapełniało tabeli bo nic nie widać jak dużo zer tylko dawało puste pole przy zerze lub liczbę jeżeli się pojawi



P.S Już znalazłem przyczynę w obydwu przypadkach, dziękuje z góry jesteście wielcy!! to ja szukam dalej niemożliwych dla mnie rzeczy aby Was podpytać :)
openoffice 4.1.5
charyy
Posty: 9
Rejestracja: sob lut 06, 2021 11:17 am

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: charyy »

Jak widać u mnie nie trzeba długo czekać jestem kompetentny pod tym względem:)
jest następujący problem potrzebuje mieć w tabeli liczbę 2 jeżeli wf12 jest coś a jeżeli nie ma nić to puste i niestety w tym przypadku użycie tej formuły =JEŻELI(F12>0;2;"") działa pomimo że tabela teoretycznie jest pusta to i tak pokazuje 2 działa tylko jak ma pokazać zamiast 2 to to co jest w f12 a jaknie ma w f12 nic to daje puste pole we wpisanej kratce czyli jak wpisze tak =JEŻELI(F12>0;F12;"") próbowałęm nawet dać 2 w innej tabeli zeby ją pobierało czyli dałem 2 w G4 i wpisałem inną formułe =JEŻELI(F12>0;G4;"") i dalej pokazuje czy pusta f12 czy nie to jest nadal 2
co jest przyczyną a no napewno formułą poniżej a nie powinna

w f12 znajduje sie natomiast formuła o którą walczyłem =JEŻELI(ADR.POŚR(F$7&"."&$C12)>0;ADR.POŚR(F$7&"."&$C12);"")
openoffice 4.1.5
Awatar użytkownika
Jermor
Posty: 2254
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: Jermor »

Taki wynik oznacza, że w F12 jest coś większego od zera.
Sprawdzanie warunku typu F12>0 da wynik PRAWDA także wtedy, gdy w komórce F12 będzie jakiś inny wpis, to nie musi być liczba. Zobacz, czy przypadkiem w twojej formule
=JEŻELI(ADR.POŚR(F$7&"."&$C12)>0;ADR.POŚR(F$7&"."&$C12);"")
na końcu nie wpisałeś " " zamiast "". Spacja wstawiona do komórki (jej przecież nie widzisz, więc możesz sądzić, że komórka jest pusta) jest traktowana jako większa od 0
A przy okazji, "Tabela" to określenie pewnego zakresu komórek w arkuszu lub (rzadziej) synonim całego arkusza. Konkretny adres w arkuszu, to komórka (nie kratka). Aby być dobrze zrozumiany przez czytających twoje posty, powinieneś używać właściwej terminologii.
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: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: Rafkus »

Kod: Zaznacz cały

=JEŻELI(ADR.POŚR(F$7&"."&$C12)>0;ADR.POŚR(F$7&"."&$C12);"")
Wynikiem tej funkcji będzie wartość z pola określonego dzięki funkcji ADR.POŚR() lub tekst o długości 0 znaków - TO NIE JEST PUSTA KOMÓRKA . Jakbyś tą wynikową kolumnę posegregował rosnąco, to na początku tabeli wylądują wiersze z liczbami, natomiast na końcu tabeli wartości, których wynikiem jest ="".
Mówiąc wprost jeżeli wynikiem w F12 jest "", to ten warunek: "">0 jest prawdziwy.
Proponuję zastosować taką formułę:

Kod: Zaznacz cały

=JEŻELI( (F12>0)*CZY.LICZBA(F12); G4; "") 
LUB
=JEŻELI( (F12>0)*(F12<""); G4; "")
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Awatar użytkownika
Jermor
Posty: 2254
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: Jermor »

Jeszcze jedna odpowiedź, dotycząca
charyy pisze:dane z tabeli arkusz3R451 wynikają z formuły =MIN.K( H427:CI427; WIERSZ($K$40) ) gdzie właśnie może być 0 lub liczba dlatego przy 0 nie chce żeby mi zapełniało tabeli bo nic nie widać jak dużo zer tylko dawało puste pole przy zerze lub liczbę jeżeli się pojawi
Rozumiem, że ta wartość minimalna w twoim projekcie nigdy nie jest ujemna.
Zamiast budowania takiej formuły
=JEŻELI(ADR.POŚR(F$7&"."&$C12)>0;ADR.POŚR(F$7&"."&$C12);"")
możesz wpisać po prostu
=ADR.POŚR(F$7&"."&$C12)
i przypisać komórce (lub komórkom) spersonalizowane formatowanie, czyli format wyświetlania jaki sobie ty wymyśliłeś. A w tym przypadku tym formatem jest zapis #. Spowoduje on, że wartości wynoszące 0 (a dokładniej wszystkie, które mają część całkowitą 0 i dowolną część ułamkową) będą pokazywane jak komórka niewypełniona, zawierająca jednak wynikową wartość. Nie wiem czy ten sposób prezentacji będzie ci odpowiadał, ale wydaje się lepszym sposobem niepokazywania wyników zerowych niż generowanie formuł.
O formatowaniu komórek możesz poczytać w tym opracowaniu: https://yestok.pl/ooo/y55.php
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.
charyy
Posty: 9
Rejestracja: sob lut 06, 2021 11:17 am

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: charyy »

Rafkus pisze:

Kod: Zaznacz cały

=JEŻELI(ADR.POŚR(F$7&"."&$C12)>0;ADR.POŚR(F$7&"."&$C12);"")
Wynikiem tej funkcji będzie wartość z pola określonego dzięki funkcji ADR.POŚR() lub tekst o długości 0 znaków - TO NIE JEST PUSTA KOMÓRKA . Jakbyś tą wynikową kolumnę posegregował rosnąco, to na początku tabeli wylądują wiersze z liczbami, natomiast na końcu tabeli wartości, których wynikiem jest ="".
Mówiąc wprost jeżeli wynikiem w F12 jest "", to ten warunek: "">0 jest prawdziwy.
Proponuję zastosować taką formułę:

Kod: Zaznacz cały

=JEŻELI( (F12>0)*CZY.LICZBA(F12); G4; "") 
LUB
=JEŻELI( (F12>0)*(F12<""); G4; "")

SUPER działa, a może znacie sposób albo inną aplikacje gdzie te same formuły będą działać szybciej bo ma co przeliczać i długo ładuje. ram mam 8gb i procesor wystarczający
openoffice 4.1.5
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: Jan_J »

Samo zadanie jest dość proste i użycie akurat formuł arkusza kalkulacyjnego dla jego rozwiązania raczej je utrudnia niż upraszcza. min.k jako technika sortowania + adresowanie pośrednie są po prostu nieefektywne.

Niżej zamieszczam pewne studium przypadku. Warto się z nim zapoznać tylko wtedy, gdy rozwiązanie podane wyżej jest mało efektywne, z powodu liczby danych albo liczby arkuszy.

Dla ilustracji programik w modnym ostatnio (słusznie) Pythonie.

Kod: Zaznacz cały

nazwapliku = 'a.txt'
separator=' '
with open(nazwapliku) as p:
    dane = p.readline().split(separator)

dane = sorted([ int(x) for x in dane if x.isdigit() ])

with open(nazwapliku, 'a') as p:
    for x in dane:
        p.write('{}\n'.format(x))

Kluczowa jest wyizolowana instrukcja pośrodku. Cała reszta służy przeczytaniu danych i wypisaniu wyników.
Ta wersja działa na plikach tekstowych (csv) i produkuje wynik tekstowy dopisywany do końca pliku, z którego pierwszego wiersza pobrano dane.
Na przykład zawartość pliku

Kod: Zaznacz cały

3 55 12 _ 77 21 _ _ 33 11 1 0 2
modyfikuje do postaci

Kod: Zaznacz cały

3 55 12 _ 77 21 _ _ 33 11 1 0 2
0
1
2
3
11
12
21
33
55
77
Nic nie stoi na przeszkodzie, by ten pomysł zaadaptować do współpracy z Calcem jako makropolecenie,
np. działające na bieżącym arkuszu bieżącego skoroszytu albo na całym bieżącym skoroszycie strona po stronie. To zależy od przewidywanego sposobu użycia. Patrz niżej.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Jakiej używać reguły aby kopiowała liczby bez pustych po

Post autor: Jan_J »

Ad hoc adaptacja jako makra dla Calca mogłaby wyglądać tak:

Kod: Zaznacz cały

def ZrobTo():
    # ile danych wczytać
    n = 100
    # z którego wiersza
    wi = 0
    # do której kolumny wpisać wynik
    ko = 0
    # od którego wiersza wpisać wynik
    wo = 1
    # na którym arkuszu pracować
    d = XSCRIPTCONTEXT.getDocument()
    a = d.getCurrentController().getActiveSheet()

    # tu zaczyna się właściwa praca
    dane = [ a.getCellByPosition(i, wi).getString() for i in range(n) ] 

    dane = sorted([ int(x) for x in dane if x.isdigit() ])

    for i, x in enumerate(dane):
        a.getCellByPosition(ko, i+wo).setValue(x)


Jak tego użyć:
* zapisać kod w pliku z rozszerzeniem .py – z DOKŁADNYM zachowaniem układu graficznego tekstu: podział na wiersze, liczba spacji na początku każdego wiersza; kodowanie UTF-8
* umieścić kopię tego pliku w osobistym katalogu konfiguracyjnym pakietu, w podfolderze Scripts/python (Scripts raczej istnieje, python być może trzeba utworzyć)
* odpalić Calca, otworzyć jakikolwiek skoroszyt z liczbami i nie-liczbami w pierwszym wierszu
* wybrać z menu Narzędzia/Makra/Zarządzaj/Python/Moje makra/(znajdź plik)/(rozwiń)/ZrobTo/[Uruchom]
* zapewne zadziała... miejmy nadzieję

* warto zmienić nazwę funkcji (ZrobTo jest naprawdę głupią nazwą)
* warto pomyśleć nad zamierzonym sposobem użycia, tak żeby ze szkicu zrobić dopracowane pod względem wygody narzędzie
* warto podpiąć pod skrót klawiszowy żeby nie grzebać w menu.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ