[sv-users] Re: [sv-users] Re: [sv-users] BYT.UT / SÖK - funktion!

2013-02-03 tråd Johnny Rosenberg
Den 3 februari 2013 15:30 skrev Johnny Rosenberg gurus.knu...@gmail.com:
 Har klurilurat lite på ett makro som du kan testa om du vill. Det
 finns några länkar lite längre ner i texten där du kan ladda ner en
 testfil och själva koden. Har testat på lite olika värden och det
 VERKAR fungera, men det är bäst att du själv testar, som vet vilka
 konstigheter man kan råka ut för.

 I testdokumentet har jag lagt in två knappar direkt i kalkylbladet så
 att du lätt kan testköra. Det finns lite textrutor som förklarar lite
 av det jag gjort också.
 Makrot fungerar bara på första kolumnen i första bladet, men om detta
 inte passar är det väldigt enkelt att ändra det i makrot, eftersom jag
 har lagt kolumn och första rad i kolumnen som två variabler som du
 enkelt kan ändra. De ligger båda två som globala konstanter, så de är
 lätta att hitta.

 På rad 19 hittar du:
 Const iColumn=0
 Const iFirstRow=0

 När det gäller iColumn så betyder 0 kolumn A. Kolumn B=1 och så vidare.
 iFirstRow är vilket radnummer som första inmatningen finns. 0 betyder
 rad 1 och så vidare. Exempelvis befinner sig cell B17 på rad 16.

 Så om dina inmatningar börjar på D2 och fortsätter ner genom
 D-kolumnen, ändrar du till:
 Const iColumn=3
 Const iFirstRow=1

 Man ska inte leka med oprövade makron i skarpa filer, så testa min fil
 och lek lite med den. Du kan ju kopiera in en massa värden från din
 fil till A-kolumnen i min och se vad som händer när man klickar på de
 olika knapparna.
 När man konverterat en gång, kommer makrot nästa gång att fortsätta på
 raden efter den rad den senast slutade på. Information om nästa rad
 att bearbeta ligger i cell Z1, men det behöver du oftast inte bry dig
 om, eftersom jag lagt till en knapp som nollställer den automatiskt åt
 dig. Exempelvis om några rader tagits bort, så stämmer ju inte längre
 informationen i Z1. Då är ju botemedlet att nollställa den, vilket du
 alltså kan göra med ett klick. Det tar då lite längre tid att köra
 makrot, men det är ju bara den gången. Nästa gång börjar den åter där
 den senast slutade.

 Om du använder detta makro, behöver du inte alls så komplicerade
 formler på ditt andra blad för att göra om de inmatade värdena till
 ett mer enhetligt format. Frågan är om du behöver det andra bladet
 över huvud taget, men det kanske finns andra skäl att ha det kvar, det
 vet ju inte jag.

 Det finns en känd bugg i makrot, som det ser ut just nu, och det är
 att om det finns tomma celler här och var blandat med celler som inte
 är tomma (i den kolumnen alltså), kommer dessa att konverteras till 0
 och visas som ”0,00 kr”. Kommer det inte att förekomma några tomma
 rader, så gör det ju ingenting, annars kan jag kanske klura ut en
 lösning på det också. Dock kommer makrot förmodligen att gå
 långsammare då, men kanske fortfarande tillräckligt snabbt.

 Här är en länk till mitt exempelkalkylblad där makrot är ”installerat”
 och klart att köra (om du lägger filen i en mapp där du tillåter
 makron att köras – det där med makrosäkerhet och hur man ställer in
 det, kan vi ta vid ett senare tillfälle om det skulle bli problem med
 den biten):
 http://ubuntuone.com/1FNW42vD9X2KYVOceOAcLr

Jag råkade klanta mig lite när jag gjorde en mindre kosmetisk ändring
i koden. Flyttade på filen (för att kunna testköra makrot – det har
med mina makrosäkerhetsinställningar att göra, mer om det en helt
annan gång), ändrade och flyttade tillbaka igen, utan att tänka på att
det blir en ny webbadress till filen då. Tidigare har jag bara
KOPIERAT filen, ändrat och flyttat tillbaka så att den gamla ersatts
med den nya. Då har den gamla webbadressen bibehållits intakt.
Hur som helst, länken ovan fungerar därför inte längre, så här är den
nya länken, som jag just har testat. Den funkade.

http://ubuntuone.com/6yozRuVp4rlBSiue9lI5W2

 När du testat klart och känner dig redo att använda makrot i ditt eget
 dokument, kan du importera det från denna fil:
 http://ubuntuone.com/1HGRy1g919prfwtJjxArLh

Ovanstående länk ska fortfarande fungera. Om inte, säg till så tar jag
reda på den nya länken.


 Knappar eller kortkommandon måste du dock själv konfigurera. Om du
 inte vet hur man gör det, eller lyckas komma på det själv, är det bara
 att fråga, så tar vi det då.

 Om du testat filen och finner några fler buggar är det bara att höra
 av sig med information om vad som gick snett, så kan jag göra ett
 försök att få ordning på det. Har som sagt testat på ett antal olika
 värden och det har fungerat varje gång, men vem vet vad som kan gå
 snett när någon annan testar på andra värden? :P


 Johnny Rosenberg

-- 
For unsubscribe instructions e-mail to: users+h...@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


Re: [sv-users] Re: [sv-users] BYT.UT / SÖK - funktion!

2013-02-02 tråd Jan Öhman

Tack för ditt engagemang!

Håller med om det mesta du skriver.
Dock tycker jag att personerna som jobbar med att fylla i priserna mm. 
ska kunna fokusera på detta istället för att fundera om det ska vara 
punkt komma, versaler eller annat format.
Om 300 priser med krontecken :- kopieras in i kalkylbladet tar det en 
stund att manuellt förändra (fortfarande med risk att det blir fel, 
genom att missa något), eftersom de inte kan hantera sök / ersätt osv. 
(och helst inte ska fokusera på detta). Just nu skickar de originalfilen 
till mig och jag har ersatt t.ex. priser så dessa blir i valuta format. 
(enkelt att överblicka ev. felaktigheter). Övriga produkter har jag 
jobbat med sök och ersätt, men funderar nu på att automatisera 
priserna så jag inte behöver fundera på detta.


Använde mig av den framtagna formeln du gav mig. Den visade sig inte 
fungera till fullo.
Ett av de problem jag stötte på, var på de priser som krontecknet :- 
satt ihop med priset (tex.100:-.)


Tog fram en egen formel med samma metod som du beskrev.
Den blev inte snäll. Funderar just nu om den skulle gå att förenkla på 
något sätt. (1185tkn lång)
Alternativet är att bygga upp ett separat kalkylblad med alla kontroll 
stegen för att lättare kunna kontrollera ev. fel i formeln och enklare 
göra förändringar.


Men här följer formeln med en lite annan strategi.
=RENSA(BYT.UT(OM(OM(OM(ICKE(ÄRFEL(VÄNSTER('FDT Import'.J5;SÖK(.-;'FDT 
Import'.J5;1)-1)));VÄNSTER('FDT Import'.J5;SÖK(.-;'FDT 
Import'.J5;1)-1));OM(ICKE(ÄRFEL(VÄNSTER('FDT Import'.J5;SÖK(.-;'FDT 
Import'.J5;1)-1)));VÄNSTER('FDT Import'.J5;SÖK(.-;'FDT 
Import'.J5;1)-1)); OM(LÄNGD(OM(ICKE(ÄRFEL(VÄNSTER('FDT 
Import'.J5;SÖK(kr;'FDT Import'.J5;1)-1)));VÄNSTER('FDT 
Import'.J5;SÖK(kr;'FDT Import'.J5;1)-1)))1;OM(ICKE(ÄRFEL(VÄNSTER('FDT 
Import'.J5;SÖK(kr;'FDT Import'.J5;1)-1)));VÄNSTER('FDT 
Import'.J5;SÖK(kr;'FDT Import'.J5;1)-1)); VÄNSTER('FDT 
Import'.J5;LÄNGD('FDT Import'.J50;OM(OM(ICKE(ÄRFEL(VÄNSTER('FDT 
Import'.J5;SÖK(.-;'FDT Import'.J5;1)-1)));VÄNSTER('FDT 
Import'.J5;SÖK(.-;'FDT Import'.J5;1)-1));OM(ICKE(ÄRFEL(VÄNSTER('FDT 
Import'.J5;SÖK(.-;'FDT Import'.J5;1)-1)));VÄNSTER('FDT 
Import'.J5;SÖK(.-;'FDT Import'.J5;1)-1)); 
OM(LÄNGD(OM(ICKE(ÄRFEL(VÄNSTER('FDT Import'.J5;SÖK(kr;'FDT 
Import'.J5;1)-1)));VÄNSTER('FDT Import'.J5;SÖK(kr;'FDT 
Import'.J5;1)-1)))1;OM(ICKE(ÄRFEL(VÄNSTER('FDT Import'.J5;SÖK(kr;'FDT 
Import'.J5;1)-1)));VÄNSTER('FDT Import'.J5;SÖK(kr;'FDT 
Import'.J5;1)-1)); VÄNSTER('FDT Import'.J5;LÄNGD('FDT 
Import'.J5;);,;.))


//Jan

Johnny Rosenberg skrev 2013-02-02 12:24:

Den 2 februari 2013 12:21 skrev Johnny Rosenberg gurus.knu...@gmail.com:

Den 2 februari 2013 00:19 skrev Jan Öhman jan_oh...@glocalnet.net:

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?

Så länge du tillåter folk att klistra in priser hur som helst, så blir
det nog så, ja. Ja, du kan ju läsa det med ett makro förstås, som
söker upp alla klant-inmatningar och rättar till dem, så blir allt
annat jobb så mycket enklare.

Men om du nu envisas med att låta folk göra lite som de vill, så
verkar detta gå att åstadkomma med en gigantisk formel. Har testat den
på lite olika värden, men kan ändå inte garantera att den funkar på
allt.

Ett enkelt sätt att skiva långa formler är att först dela upp dem. Så
här gjorde jag:

Testvärden i kolumn A, jag kopierade dina exempel för att verifiera
att åtminstone dessa fungerar.
Sedan gäller det att få formeln så generell som möjligt.
Det första jag gjorde var att leta upp