[sv-users] Re: [sv-users] Re: [sv-users] BYT.UT / SÖK - funktion!
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!
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