Date: prev next · Thread: first prev next last


Tack för Era svar!

Håller på att göra ett av mina kalkylblad för att underlätta för andra.
Det är ett prisfält som jag just nu blickar på.

På flik "1" skriver personal in eller kopierar in ett pris i 2st kolumner (inköp och försäljningspris).
Min önskan är inte att fokusera på prisets layout utan på prisets storlek.

Hur priset ser ut vid inmatning, kan se väldigt olika ut. Nedan följer några exempel, som jag träffat på vid olika tester.
123,50 kr
80.74
45,50
36,45 .-
78.50 :-
Med eller utan "blanksteg" mellan tal och krontecken.

Resultatet kommer på flik "3"
Med ovanstående invärden skulle jag vilja få ett resultat med följande innehåll och format.
(observera att det är decimal punkt)
123.50 eller 123.5
80.74
45.50 eller 45.5
36.45
78.50 eller 78.5

dvs.
1) Jag vill plocka bort alla olika förekommande krontecken som i ovanstående exempel är "kr", ".-"; ":-"
Att radera tecknet ":-" fungerar nu med formeln  (Bra idé med "ÄRFEL")
=OM(ÄRFEL(SÖK(":-";'Tabell1'.B3;1));'Tabell1'.B3;BYT.UT('Tabell1'.B3;":-";""))
Dock blir det en oönskad "nolla" om C6 inte innehåller något. (går säkert att lösa om man ytterligare tänker till.)
Att radera alla olika krontecken blir en ganska komplicerad formel.

2) Byta ut alla "komma" till "punkt"
Förslagsvis med formeln =OM('Tabell1'.B3<>"";BYT.UT('Tabell1'.B3;",";".");"")

3) Plocka bort alla ev omgivande blanksteg runt priset.
Här hade jag tänkt använda mig av funktionen
=RENSA(C6)

När alla ovanstående formler ska slås ihop, blir det en ganska komplicerad formel för att utföra våra önskemål.
Är det enda sättet att lösa mitt problem?

//Jan

Johnny Rosenberg skrev 2013-02-01 17:51:
Den 1 februari 2013 17:41 skrev Johnny Rosenberg <gurus.knugum@gmail.com>:
Den 1 februari 2013 10:40 skrev Jan Öhman <Jan_Ohman@glocalnet.net>:
Hej!

Mitt önskemål:
Jag vill söka och radera det sökta värdet om förekomst av olika
textkombinationer finns (t.ex. ":-" eller ".-" osv.)

Hade tänkt använda "BYT.UT" för att utföra borttagningen, men kommer inte på
om det går att skriva flera funktioner efter varandra...
Därför hade jag tänkt börja med OM och SÖK och vid "träff" BYT.UT (på något
sätt)

Men...
_______________________________________________
Antag
i cell B2 finns talet / texten "123" samt
i cell B3 finns talet / texten "123x".

i cell C2 finns formeln "=SÖK("x";B2;1)" och
i cell C3 finns formeln "=SÖK("x";B3;1)".

Resultatet för mig blir i C2 "#VÄRDE!" och i C3 "4"
Jag hade hoppats på att få resultatet "0" i C2, men så blev det inte.


Hur löser man detta?
=OM(ÄRFEL(SÖK("x";B2;1));0;SÖK("x";B2;1))

Nackdelen är att ”SÖK("x";B2;1)” räknas ut två gånger i värsta fall,
vilket inte är så lyckat om man har tusentals rader av detta slag (det
blir onödigt segt).


Men allvarligt talat, varför gör du inte bara en vanlig SÖK/ERSÄTT (Ctrl+h)?
Är det mer komplicerade saker du vill söka upp och ersätta, kan
reguljära uttryck vara till hjälp.

Exempelvis, för att ta bort alla förekomster (på ett blad eller i ett
markerat område), välj reguljära uttryck och fyll i fälten enligt
följande:
Sök: (.*)\.-$|(.*):-$
Det gick visst att använda | för en del av uttrycket också, inte bara
för hela. Då blir det lite kortare:
(.*)(\.-|:-)$

Okänt antal valfria tecken följt av .- ELLER :- och därefter ett radslut.
Vill man specificera att de okända tecknen framför måste vara siffror,
finns flera sätt:
([0123456789]*)(\.-|:-)$
är samma sak som
([0-9]*)(\.-|:-)$
är samma sak som
([:digit:]*)(\.-|:-)$

[0-9] betyder ETT tecken från 0 till och med 9. Asterisken (*) efter
ändrar antalet till ”0 eller flera”
Ett plus kan också användas: [0-9]+ → EN eller flera siffror.
Man kan också specificera antalet exakt: [0-9]{3} → Exakt TRE siffror.
[0-9]{3,5} → Minst TRE och högst FEM siffror.

Som sagt, hjälpen är bra hjälp i detta sammanhang. Enklast är att
klicka på hjälp-knappen i SÖK/ERSÄTT-dialogen, därefter klicka på
länken ”Reguljära uttryck”.


Johnny Rosenberg

Ersätt med: $1

Om du bara vill jobba i ett område som du redan markerat, välj ”Endast
aktuell markering”. Annars är det hela bladet som gäller.
Klicka ”Sök alla” för att se att du får markering på de celler du
tänkt dig. Ser det rätt ut, klicka ”Ersätt alla”.

Om du inte kan reguljära uttryck finns det beskrivet i hjälpen. I
detta fall kan jag bidra med en enkel förklaring av ovanstående
sökning:
(.*) – Punkten betyder ”valfritt tecken”, asterisken anger ”noll eller
fler av föregående tecken”.
\. – Eftersom punkt betyder ”valfritt tecken”, måste vi föregå punkten
med ett ”escape-tecken”, ”\”, om vi vill söka efter en punkt.
- – Ett minustecken.
$ – Radslut.
: – Ett vanligt kolon.
| – ”Eller”.

Så i detta fall:
Sök efter ett okänt antal valfria tecken (”noll eller flera”) följt av
en punkt, ett minustecken och ett radslut ELLER ett okänt antal
valfria tecken följt av ett kolon, ett minustecken och ett radslut.
I ersätt har jag angett ”$1”. Varför då?
Jo, det har att göra med parentesen i sök-fältet. En parentes anger
att det som anges inuti ska kommas ihåg. Första parentesen kan sedan
kallas fram i Ersätt-fältet med $1, den andra med $2 och så vidare. I
detta fall har vi visserligen två parenteser, men egentligen är det ju
bara en eftersom vi har en ELLER emellan. Därför kan ju aldrig BÅDA
parenteserna hittas.

Fler användbara saker framgår av hjälpen. Exempelvis kanske man vill
veta hur man anger början av en rad, nu när vi vet hur radens slut ($)
anges. Då hittar man snart i tabellen i hjälp tecknet ^.
Observera att samma tecken kan betyda olika saker beroende på var man
skriver dem. Exempelvis kan ^-tecknet också användas som ”ICKE”:
[^acgrt] – valfritt tecken UTOM a, c, g, r eller t.
Ja, det finns mycket kul man kan göra med reguljära uttryck. Synd bara
att begreppet är lite funktionshindrat i LibreOffice. Vissa saker går
helt enkelt inte att göra, men det är ändå värdefullt, det som trots
allt finns. Speciellt när man vant sig vid tankesättet…





Johnny Rosenberg


//Jan

--
For unsubscribe instructions e-mail to: users+help@sv.libreoffice.org
Problems?
http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/sv/users/
All messages sent to this list will be publicly archived and cannot be
deleted



--
For unsubscribe instructions e-mail to: users+help@sv.libreoffice.org
Problems? http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/sv/users/
All messages sent to this list will be publicly archived and cannot be deleted

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.