Avatar billede lineriber Praktikant
17. september 2010 - 10:57 Der er 3 kommentarer og
1 løsning

Formel eller VBA til at finde den nugældende pris

Hej Eksperter

Jeg har et excel 2007 regneark med en tabel med en masse priser i. Priserne er angivet pr. udbyder, land og by med angivelse af hvilken dato prisen gælder fra og til.
For hver gang der kommer en ny pris, laves en ny linie med angivelse af udbyder, land, by, pris, gælder fra og gælder til.

Jeg skal ved hjælp af en formel eller VBA, for hver udbyder, land og by, kunne smide den nugældende pris's linie, over i en anden fane
Det skal IKKE være manuelt, hvor jeg skal filtrere mig frem til det, men skal kunne gøres automatisk enten vha en formel eller VBA.


Regnearket er bygget op med følgende kolonner:
A: Udbyder
B: land
C: by
D: pris
E: gældende fra
F: gældende til
Der er på nuværende tidspunkt godt 500 rækker, men der kommer jo hele tiden flere til.

Jeg kan godt i en anden fane i regnearket, angive hvilke kombinationer prislinierne skal findes for, hvis det hjælper. Fx:
Udbyder1, Danmark, Herning
Udbyder1, Danmark, Ålborg
Udbyder1, Danmark, Århus
Udbyder1, Tyskland, Hamburg
Udbyder1, Tyskland, Berling
Udbyder1, Tyskland, Flensborg
Udbyder2, Danmark, Herning
Udbyder2, Danmark, Ålborg
Udbyder2, Danmark, Århus
Udbyder2, Tyskland, Hamburg
Udbyder2, Tyskland, Berling
Udbyder2, Tyskland, Flensborg


Nogen der kan hjælpe med en snedig måde at løse denne udfordring på ??

Mvh
Line
Avatar billede martin_moth Mester
17. september 2010 - 14:21 #1
Ikke helt med - hvad skal helt kontret kopieres hvornår - skal du bare kopiere nederste linje over i et andet sheet?
Avatar billede anlu Nybegynder
17. september 2010 - 16:59 #2
Hvis jeg har forstået dig rigtigt kan en array formel gøre tricket:
Jeg antager at dine prislinier ligger i Sheet1, og at du i Sheet2 har angivet dine kombinationer med Udbyder i kolonne A, land i kolonne B og by i kolonne C.
Hvis du så i kolonne D2 skriver en formel a la denne:

=SUM((Sheet1!$A$2:$A$13=Sheet2!A2) *(Sheet1!$B$2:$B$13=Sheet2!B2) *(Sheet1!$C$2:$C$13=Sheet2!C2) *(Sheet1!$E$2:$E$13<=TODAY()) *(Sheet1!$F$2:$F$13>=TODAY()) *Sheet1!$D$2:$D$13)

OG holder Ctrl+Shift nede når du trykker Enter for at afsluttede redigering af formlen, bør du få det ønskede resultat. (Du kan se at det er er "array-formel" ved at der er krøllede parenteser omkring formlen, når du ser den i formellinjen.) Husk også at trykke Ctrl+Shift+Enter når du retter i formlen. Formlen kan kopieres til øvrige rækker i kolonne D som sædvanligt (dvs. du behøver ikke noget med Ctrl+Shift eller andet hokus pokus)

Denne formel kigger i række 2 til 13 i Sheet1 - det skal du selvfølgelig rette til så det passer med hvor du har dine data.

(Jeg benytter en engelsk udgave af Excel, så jeg ved ikke om du skal oversætte SUM og TODAY-funktionerne, hvis du kører dansk version - og husk evt. at omdøbe arkene hvis de ikke hedder Sheet1 og Sheet2.)
Avatar billede lineriber Praktikant
18. september 2010 - 11:10 #3
Hej anlu

Det virker helt perfekt - Tusinde tak for hjælpen :-)
Smider du et svar??
Avatar billede anlu Nybegynder
18. september 2010 - 12:34 #4
Glad for at kunne hjælpe :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester