Wyszukiwanie tekstu w komórkach

Użytkowanie arkusza kalkulacyjnego
gery77
Posty: 22
Rejestracja: czw kwie 04, 2013 11:28 am

Wyszukiwanie tekstu w komórkach

Post autor: gery77 »

Mam takie zadanie do rozwiązania:
w komórce A1 mam słowo CNC, natomiast w komórce A2 mam cały opis produkcji gdzie występuje wyraz CNC lub nie występuje
moim zadaniem jest stworzenie takiej formuły w kolumnie A3 aby wyszukiwała tego tekstu i podała wartość 1 lub 0


pomóżcie bo to pilne:)
Libre Office 5.1.5.2
A_P
Posty: 38
Rejestracja: pt lis 18, 2016 3:49 pm

Re: Wyszukiwanie tekstu w komórkach

Post autor: A_P »

Formuła jest już zawarta w twoim zadaniu.

Kod: Zaznacz cały

=JEŻELI(A1="CNC";1;0)
Masz prezent na święta.
Następnym razem poczytaj trochę w pomocy o funkcjach!
LinuxMint 18, Windows 7, LibreOffice (6.0.7)-64bit
gery77
Posty: 22
Rejestracja: czw kwie 04, 2013 11:28 am

Re: Wyszukiwanie tekstu w komórkach

Post autor: gery77 »

he, he :)
tyle to i mój syn wie
mi chodziło o to że w komórce A2 będzie ciąg znaków wśród których będzie słowo CNC (lub też nie będzie) np. Wyciąć - oszlifować - CNC - itd...
formuła A3 ma przeszukać taką komórkę w poszukiwaniu takiego słowo i dopiero wtedy nadać wartość 1 dla występowania takiego słowa lub 0 kiedy nie występuję
Libre Office 5.1.5.2
A_P
Posty: 38
Rejestracja: pt lis 18, 2016 3:49 pm

Re: Wyszukiwanie tekstu w komórkach

Post autor: A_P »

Poczytałeś już w pomocy o formułach? czy czekasz na gotowca.
Znowu odpowiedziałeś sobie zadając pytanie. Wystarczy przeczytać ze zrozumieniem!
jeżeli znajdziesz szukany "tekst" wpisz 1
=JEŻELI(ZNAJDŹ("CNC";A1;1)>0;"1"
jeśli go tam niema to wpisz 0
JEŻELI.BŁĄD(ZNAJDŹ("CNC";A1;1)<0;"0")
czyli razem
=JEŻELI(ZNAJDŹ("CNC";A1;1)>0;"1";JEŻELI.BŁĄD(ZNAJDŹ("CNC";A1;1)<0;"0"))
Ważne!
W cudzysłowie tekst jest wpisany dużymi literami więc formuła znajdzie tylko tekst pisany dużymi, natomiast tekst pisany małymi odda wartość 0.
LinuxMint 18, Windows 7, LibreOffice (6.0.7)-64bit
Awatar użytkownika
Jermor
Posty: 2464
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wyszukiwanie tekstu w komórkach

Post autor: Jermor »

Upewnij się, że w opcjach Calc masz włączone "Włącz wyrażenia regularne w formułach" (Narzedzia - Opcje - Calc - Oblicz - Ogólne obliczenia)
Użyj formuły:

Kod: Zaznacz cały

=LICZ.JEZELI(A1;".*CNC.*")
Niestety w tych formułach nie jest rozróżniana wielkość liter, więc znalezione zostaną ciągi cnc, CNC, CnC itd.
AOO 4.1.15, LO 25.8 (x64) na Windows 11 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
Jermor
Posty: 2464
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wyszukiwanie tekstu w komórkach

Post autor: Jermor »

Uzupełniając post A_P zmodyfikuj formułe do:

Kod: Zaznacz cały

=JEŻELI.BŁĄD(JEŻELI(ZNAJDŹ("CNC";A1)>0;1;0);0)
AOO 4.1.15, LO 25.8 (x64) na Windows 11 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.
A_P
Posty: 38
Rejestracja: pt lis 18, 2016 3:49 pm

Re: Wyszukiwanie tekstu w komórkach

Post autor: A_P »

Wyręczyłeś mnie Jermor uzupełniając mój post.
Miał to być ostatni krok w toku rozumowania, który przedstawiłem. Nie wszystko naraz.

Nie przekonałeś mnie z tą formułą licz.jeżeli ponieważ próbowałem przy włączonej opcji "włącz wyrażenia regularne" i zawsze wychodzi 0. Jeśli masz rację podrzuć przykład.
LinuxMint 18, Windows 7, LibreOffice (6.0.7)-64bit
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Wyszukiwanie tekstu w komórkach

Post autor: belstar »

Jermor pisze:Upewnij się, że w opcjach Calc masz włączone "Włącz wyrażenia regularne w formułach" (Narzedzia - Opcje - Calc - Oblicz - Ogólne obliczenia)
Można ominąć wyrażenia regularne, każdy ciąg zmieniając na duże litery.

Kod: Zaznacz cały

=JEŻELI.BŁĄD(JEŻELI(ZNAJDŹ("CNC";LITERY.WIELKIE(A1))>0;1;0);0)
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Awatar użytkownika
Jermor
Posty: 2464
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wyszukiwanie tekstu w komórkach

Post autor: Jermor »

Belstar
LITERY.WIELKIE zamieniają ciąg na wielkie litery i dopiero wtedy porównują z podanym ciągiem. Więc to niczego nie zmienia. Napisałem, że dotyczy to funkcji LICZ.JEŻELI, dla której można skorzystać z wyrażeń regularnych. Z takich wyrażeń można skorzystać jedynie dla niektórych funkcji. Oto lista tych funkcji
'SUMIF', 'COUNTIF',
'MATCH', 'SEARCH', 'LOOKUP', 'HLOOKUP', 'VLOOKUP',
'DCOUNT', 'DCOUNTA', 'DSUM', 'DPRODUCT',
'DMAX', 'DMIN', 'DAVERAGE', 'DSTDEV', 'DSTDEVP', 'DVAR', 'DVARP',
'DGET'
Nie chce mi się teraz szukać polskich odpowiedników tych nazw. Zawsze byłem i jestem przeciwnikiem spolszczania nazw funkcji.
Przykład dla A_P załączam poniżej, w tym przykładzie wyszukiwanym ciągiem jest "ga".
W przykładzie załączam także wykorzystanie formuły w postaci

Kod: Zaznacz cały

=JEŻELI.BŁĄD(ZNAJDŹ("ga";A1)/BIEŻĄCY();0)
Dla niezorientowanych: Funkcja JEŻELI.BŁĄD zwraca wartość drugiego argumentu gdy pierwszy argument zwraca bład. Funkcja ZNAJDŹ podaje pozycję na której znaleziono ciąg. Jeśli szukanego ciągu nie ma wartością funkcji jest #VALUE! (błąd). Funkcja BIEŻĄCY podaje wartość formuły obliczoną do momentu pojawienia się funkcji BIEŻĄCY, czyli w tym przypadku także pozycję na której ciąg występuje, albo #VALUE! jeśli ciąg nie został znaleziony. Jeśli ciąg wystąpił to obliczona wartość wynosi 1 (pozycja ciągu podzielona przez pozycję ciągu) a jeśli nie to funkcja JEŻELI.BŁĄD zwraca 0.
Ta formuła także wyznaczy wartości 1 gdy ciąg zostanie znaleziony i 0 gdy nie.
Środowisko takie jak w stopce.
Załączniki
wr.ods
(11.6 KiB) Pobrany 205 razy
AOO 4.1.15, LO 25.8 (x64) na Windows 11 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.
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Wyszukiwanie tekstu w komórkach

Post autor: belstar »

Choć to wszystko co napisałeś o wykorzystaniu wyrażeń regularnych jest prawdą, to mam wrażenie że nie o to chodzi autorowi tematu.
Wracamy do początku:
1) w komórce A1 mam słowo "CNC".
2) w komórce A2 mam cały opis produkcji gdzie występuje wyraz "CNC" lub nie.
3) w kolumnie (ma na myśli komórkę) A3 aby wyszukiwała tego tekstu i podała wartość 1 lub 0

A1 = "CNC"
A2 = "Pociąć, oszlifować, powiercić, frezarka cnc, Pomalować, wyrzucić"
A3 = Ciąg z komórki A1 został znaleziony w ciągu z komórki A2, zwróć 1, nie został zwróć 0.

Kod: Zaznacz cały

=JEŻELI.BŁĄD(JEŻELI(ZNAJDŹ(A1;A2)>0;1;0);0)
Formuła w tej postaci zwróci 0 bo funkcja ZNAJDŹ() rozróżnia wielkość liter. Żeby doprowadzić do sytuacji elastycznej możemy skorzystać z funkcji wymienionych przez ciebie (włączyć opcje wyrażenia regularne w formułach) lub zmodyfikować już istniejącą.

Kod: Zaznacz cały

=JEŻELI.BŁĄD(JEŻELI(ZNAJDŹ(A1;LITERY.WIELKIE(A2))>0;1;0);0)
Formuła zmienia wielkość liter z komórki A2 i dopiero szuka ciągu z komórki A1. Niestety rozwiązanie jest połowicze bo musimy pamiętać o tym by zawsze szukaną frazę wpisywać z dużej litery, modyfikujemy dalej

Kod: Zaznacz cały

=JEŻELI.BŁĄD(JEŻELI(ZNAJDŹ(LITERY.WIELKIE(A1);LITERY.WIELKIE(A2))>0;1;0);0)
Doprowadziliśmy do sytuacji że ciąg szukany i przeszukiwany jest zmieniany na duże litery i dopiero podany dalszej obróbce i to bez mieszania w opcjach. A czy to jest lepsze rozwiązanie czy gorsze, niech zdecyduje autor pytania.
A stwierdzenie "Więc to niczego nie zmienia" nie jest do końca uprawnione tym bardziej że nie ja jestem autorem formuły z wykorzystaniem funkcji ZNAJDŹ().
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Awatar użytkownika
Jermor
Posty: 2464
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Wyszukiwanie tekstu w komórkach

Post autor: Jermor »

Witam belstarze świątecznie.
Najpierw wytłumaczenie się. Nie wiem dlaczego odniosłem użycie funkcji LITERY.WIELKIE do zaproponowanego przeze mnie sposobu LICZ.JEŻELI + wyrażenia regularne a nie do funkcji ZNAJDŹ. Zastosowanie w funkcji ZNAJDŹ jest jak najbardziej stosowne i wskazane. Tak jak to podałeś powyżej w ostatniej formule.
Masz też rację co do stosowania wyrażeń regularnych w tym sensie, że ktoś słabo zorientowany w arkuszu, po przekopiowaniu pliku do innego komputera, może nagle stracić funkcjonalność arkusza i nie będzie wiedział, że stało się to z powodu inaczej ustawionych opcji.
W tym stanie rzeczy może właściwym byłoby wprowadzenie przez autorów Calca takich zmian, aby właściwość korzystania z wyrażeń regularnych była przenoszona z plikiem?
W końcu oczywistą oczywistością (jak mawia pewien klasyk) jest, że autor pytania sam podejmie decyzję co i jak.
Ze Świątecznymi i Noworocznymi pozdrowieniami.
AOO 4.1.15, LO 25.8 (x64) na Windows 11 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.
gery77
Posty: 22
Rejestracja: czw kwie 04, 2013 11:28 am

Re: Wyszukiwanie tekstu w komórkach

Post autor: gery77 »

Dziękuje, jest ok.
=LICZ.JEZELI(A1;".*CNC.*")
ta formuła jest dla mnie najlepsza, gdyż zależało mi aby wyszukiwał mi zapisu "CNC" niezależnie jakimi literami będzie wpisane

pozdrawiam i jeszcze raz dzięki
Libre Office 5.1.5.2
ODPOWIEDZ