[LØST] Større eller mindre end tal i andet ark..

Brugerhjælp og support til regneark i LibreOffice Calc

Moderator: Lodahl

Post Reply
ChristensenM
Posts: 6
Joined: 31. May 2009 18:41

[LØST] Større eller mindre end tal i andet ark..

Post by ChristensenM »

Hej alle sammen..

På mit arbejde har man i sin tid lavet et ark med side tal, vare nr, vare tekst, priser, osv.. på alle vores produkter fra vores katalog..

Det ser cirka sådan her ud..
(Gammel liste)
Image
(Dette er selvfølgelig bare lige en skabelon.. :) )

Men nu er vi blevet importørere af et koncept hvor der meget tit bliver lavet prisændringer..
Disse pris ændringer får vi så tilsendt i et ark så vi kan lave dem om ved at sammenligne de to ark, hvilket jo nok heller ikke er det værste, men da det sker cirka 4 gange om året og det er 7000+ vare numre der er tale om så tager det altså noget tid at rette dem manuelt.

Det skal tilføjes at det ark vi modtager ikke er sat op på samme måde som vores da de har deres eget katalog med andre side tal, anden sproget vare tekst, anden opsætning af vare numrene osv..
Plus at vi også har andre varer i vores katalog som de ikke har i deres.

Og så er det her at i kommer ind i billedet, håber jeg.. :D

For at sætte dette eksempel op så lad os sige at det ark vi får tilsendt ser sådan her ud..

(Ny liste)
Image

Det jeg gerne vil er at:
Erstatte prisen i vores nuværende ark med prisen fra det nye ark.

Det jeg ikke kan finde ud af er at:
  1. Stort set alt :D (spøg til side)
  2. Få den nye pris vist istedet for den gamle hvis den er <>=
    Jah, = er nok lige meget men det ville være rart at man bare kunne kopiere en formel/makro til alle de celler der skal påvirkes hver gang.
  3. Da alle vare numrene står totalt blandet i den nye liste, så ved jeg ikke hvordan man kan redegøre for det så man ikke bare laver et stort rod.
Jeg havde forstillet mig at man kunne kryds referere vare nummeret først, og hvis prisen er <>, så blev den nye pris sat ind i stedet for den gamle.
Jeg opretter selvfølgelig en kopi af det nye ark som et separat ark i den gamle fil så altså begge ark er i en enkelt fil.

Altså, som eksempel tager vi B2 i den gamle liste, det er "T1904-S", dette nummer skal så findes i den nye liste, i dette tilfælde er det A6.
Så skal den så kontrollere om prisen i D2 i den gamle liste og C6 i den nye liste er forskellige, og hvis de er, skal tallet i den gamle ændres til tallet i den nye..


Jeg håber at jeg har forklaret det godt nok for jeg tror virkelig ikke at jeg kan forklare det på andre måder :D, og jeg håber selvfølgelig at der er nogle som kan hjælpe.

Mvh og på forhånd tak.
// Mikkel Christensen
Last edited by ChristensenM on 21. May 2010 20:55, edited 1 time in total.
Jens S
Posts: 1091
Joined: 25. Mar 2007 22:42

Post by Jens S »

Hej

Hvis tilføjer den tyske ny prisliste i et ark i din gamle prisliste og kalde arket Tysk (Du kan kopiere listen over eller højreklikke på arkfanen for at kopier/flytte hele arket). I din gl. prisliste skriver du 'Ny pris' i celle E1 og indtaster følgende formel i E2:
=HVIS(LOPSLAG(B2;$Tysk.$A$2:$C$12;3;0)=D2;"";LOPSLAG(B2;$Tysk.$A$2:$C$12;3;0))
Herefter markerer du celle E2 og dobbeltklikker på håndtaget for at kopiere nedad. Du må så manuel overføre prisen fra kolonnen 'Ny pris' til kolonnen 'Pris' (kopier/indsæt for de celler der skal rettes) og dette kan også automatiseres med en makro.

En database med dine priser er en bedre måde at styre din prisliste. Den kan, når du tilføjer den tyske prisliste som ny tabel, lave en opdateringsforespørgsel, og i en omgang opdatere din prislistetabel.

mvh
Jens
ChristensenM
Posts: 6
Joined: 31. May 2009 18:41

Post by ChristensenM »

"Works like a charm" :D

Mange tak for hjælpen..
Dog en lille request, hvis du vil være så venlig..

Da jeg ikke lige er super god til de her makro'er kunne jeg rigtig godt tænke mig en forklaring af hvad der egentlig sker i processen af denne makro.

Altså en uddybning af funktionerne i den.
Det ville nemlig være en meget stor hjælp til forståelse af makroen i stedet for at man/jeg bare kopiere den ind uden at fatte hvad der egentlig sker. :)

På forhånd mange tak for hjælpen.
Mvh.
// Mikkel Christensen

PS. Ja jeg har godt tænkt på at lave database istedet for, men da det egentlig ikke er mit ansvars område kan jeg ikke gøre så meget ved det.. :D
Jens S
Posts: 1091
Joined: 25. Mar 2007 22:42

Post by Jens S »

Hej Mikkel
Du har ikke fået en makro fra mig, du har fået en formel der viser de nye priser i kolonne D ved siden af de gamle priser i kolonne C. Nu skal du så have overført prisen fra kolonne D til kolonne C. Det kan du gøre ved manuel at taste prisen ind eller du kan bruge en makro til at gøre arbejdet.
Du gør følgende:
Start med at tage en sikkerhedskopi af din prisliste (hvis det skulle gå galt) - tryk Alt+ F11 - Vælg dit dokument 'Prisliste.ods' nederst i venstre kolonne - Tryk på knappen Ny(t) - Systemet spørger om den skal hedde 'Modul1', tryk på OK.
Du kan nu se at der under dit dokument Prisliste.ods er dannet et Standard bibliotek med 1 modul. Klik på modulet og herefter på knappen 'Rediger'.
Inde i modulet står der noget med Sub Main osv. - slet alt og erstat med følgende kode:

Code: Select all

REM  *****  BASIC  *****

Sub OpdaterPriser
dim i, Kol, Rk as integer

Kol=4  'kolonne 5
Rk =1 'række 2 for start
Ark = ThisComponent.CurrentController.ActiveSheet

For i = 1 To 20 'rækker i prislisten ret 20 til 7000 hvis du har så mange
	If Ark.getCellByPosition(Kol, Rk).value <> Ark.geTCellByPosition(Kol-1,Rk).value and Ark.getCellByPosition(Kol, Rk).value <>0 then
	Ark.getCellByPosition(Kol-1,Rk).value = Ark.getCellByPosition(Kol,Rk).value
	endif
	Rk = Rk + 1
Next i

End Sub
Enkelt anførselstegn står foran kommentarer til koden.

Når du nu vil køre makroen, åbner du Prisliste.ods, trykker Alt + F11, går ned til modul1, i højre side kan du se 'Eksisterende makroer i Modul1', marker 'OpdaterPriser' og tryk på knappen 'Udfør'


Når du har kørt makroen forsvinder alle værdier i kolonne E fordi prislisten er opdateret. Øv dig nogle gange, hvis du ikke er vant til makroer, du kan nemlig ikke fortryde.

mvh
Jens
ChristensenM
Posts: 6
Joined: 31. May 2009 18:41

Post by ChristensenM »

Ja okay.. :D
Jeg tror du misforstod mig lidt..
Det var en uddybning af processen i =HVIS(LOPSLAG(B2;$Tysk.$A$2:$C$12;3;0)=D2;"";LOPSLAG(B2;$Tysk.$A$2:$C$12;3;0)) - jeg godt kunne bruge :)

Men det andet er også cool, selvom jeg dog fandt en anden måde at gøre det på..
Jeg markerede hele D kolonnen og kopierede den, så satte jeg dem ind i E kolonnen ved kun at indsætte Tal (Indsæt Speciel), derefter markerede jeg kolonne E, lavede en Søg (ctrl+e) og ersattede alle #N/A med blank, altså ikke noget, (#N/A kom kun der hvor der i den gamle liste var varer numre som ikke var med i den nye).
Derefter kopierede jeg så hele kolonne E igen, markerede kolonne C og via Indsæt Speciel indsatte jeg kun Tal og sprang tomme felter over.
Efter det kunne jeg slette kolonne D og E igen, og så var jeg færdig..

Det virkede ihvertfald også :), og det kan fortrydes.

Men jeg anede slet ikke at man kunne gøre noget i den stil som det modul ting der, det vil jeg bestemt også kigge på, så du skal ihvertfald have tak for det også.

Mvh.
// Mikkel Christensen
Jens S
Posts: 1091
Joined: 25. Mar 2007 22:42

Post by Jens S »

Det var en uddybning af processen i =HVIS(LOPSLAG(B2;$Tysk.$A$2:$C$12;3;0)=D2;"";LOPSLAG(B2;$Tysk.$A$2:$C$12;3;0)) - jeg godt kunne bruge
HVIS undersøger blot om den gamle pris er den samme som den ny pris. Er dette tilfældet , er resultatet en tom celle (""). Er der forskel på priserne , er resultatet den ny pris.
LOPSLAG sammenligner varenummer i gl. liste med varenummer i ny liste og hvor de er ens, vælger den 3 kolonne (den med prisen) i den række der er fundet. Det sidste 0 betyder at listen ikke er sorteret.

Når du kopierer værdierne fra den ny pris over i kolonnen med gl. pris, skal du være opmærksom på de tomme celler (hvor der ikke er sket ændringer) vil slette indholdet i gl. pris. Der er også problem med varenumre der ikke hører til det tyske udvalg(resultat #N/A). Alt dette skulle makroen klare.

mvh
Jens
ChristensenM
Posts: 6
Joined: 31. May 2009 18:41

Post by ChristensenM »

Jeg siger rigtig mange gange tak for hjælpen.
Du har været yderst hjælpsom.

Mvh.
// Mikkel Christensen
Post Reply