PNG32 PNG32 PNG32 PNG32
PNG32
Forum Excel, VBA, VSTO, Exceltips, Excelhj�lp PNG32 drivs av Excelspecialisten    Logga in     English
PNG32
PNG32 PNG32
PNG32

Logga in

PNG32

Du är inte inloggad. Logga in eller registrera dig för att skriva inlägg eller svara på inlägg.

För frågor om forumet, kontakta oss på webmaster@excelforum.se

PNG32 PNG32
PNG32 PNG32
PNG32

Excelforum

PNG32

 
ForumForumDiskussionerDiskussionerExcelExcelReturnera närmaste datumReturnera närmaste datum
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2015-12-01 14:45
 

Hej

Är väl lite nybörjare. Och det är förmodligen väldigt enkelt att lösa det problemet jag har.

Jag har en lista med mötesdatum och vill i en ny kolumn i samma lista returnera närmaste möjliga datum från en kolumn i ett annat blad innehållandes olika mötesdatum.

Hur gör jag?

 

Nytt inlägg
 2015-12-01 17:16
 

Nej, det är inte enkelt men det går om man krånglar...

Antar:

Blad1 kolumn A innehåller dina de datum du vill hitta (i alla exempel är det datumet i A1 vi letar efter)

Blad2 kolumn A1-A100  innehåller de datum du vill jämföra med. 

 

En enkel variant är att använda "LETARAD()" med ungefärlig matchning. Då kommer du att hamna nästan rätt. Den här formeln borde hitta det närmaste lägre datumet jämfört med blad1 A1

=LETARAD(A1;Blad2!$A$1:$A$100;1;SANT)

Men tyvärr hämtar den det altid det närmaste mindre värdet om det inte finns någon exakt match. Även om det finns ett senare datum som ligger närmare (kräver dessutom att daumen i blad2 är sorterade).

 

Då får man istället göra en krånglig variant 

=MIN(INDEX(ABS(A1-Blad2!$A$1:$A$100);0))

Räknar ut det minsta antalet dagar (+-) som datumen i blad2 avviker jämfört med A1. Sen får man testa sig fram

Finns det en exakt match, en minsumatch eller en plus

exakt samma datum:

 LETARAD(A1;Blad2!$A$1:$A$100;1;FALSKT)

annars x dagar före

LETARAD(A1-MIN(INDEX(ABS(A1-Blad2!$A$1:$A$100);0));Blad2!$A$1:$A$100;1;FALSKT)

 eller x dagar efter

LETARAD(A1+MIN(INDEX(ABS(A1-Blad2!$A$1:$A$100);0));Blad2!$A$1:$A$100;1;FALSKT)

 

Totala formeln blir

=OMFEL(LETARAD(A1;Blad2!$A$1:$A$100;1;FALSKT);OMFEL(LETARAD(A1-MIN(INDEX(ABS(A1-Blad2!$A$1:$A$100);0));Blad2!$A$1:$A$100;1;FALSKT);LETARAD(A1+MIN(INDEX(ABS(A1-Blad2!$A$1:$A$100);0));Blad2!$A$1:$A$100;1;FALSKT)))

 

Klistra in formeln i B1 och kopiera ner den så borde du se de närmaste datumen

 

PS:

1. om du frågar ett excelprofs så vill de hellre ha PASSA/index än Letarad, men det sttruntar vi i. Fomeln blev stor nog.

2. förutsätter att du har Excel 2007 eller nyare. annars finns inte Omfel()

3.  ändra Blad2!$A$1:$A$100 till något lämplig

 4.  om arbetsboken blir seg så kan du bryta isär formlen och skapa några hjälp-kolumner med t.ex Min-formeln så att den bara behöver beräknas en gång per rad.

Nytt inlägg
 2015-12-03 10:47
 

Stort tack!. Kan väl tycka att det är lite konstigt att MS inte har lagt in en enkel funktion för det hela.

Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerExcelExcelReturnera närmaste datumReturnera närmaste datum

PNG32 PNG32
Excelforum drivs av Excelspecialisten som bedriver utbildning i Excel och VBA, tillhandahåller support och hjälp med Excel, utvecklar program i Excel. Är ni i behov av en konsult inom Excel, VBA eller VSTO, eller söker en excelkurs, kontakta oss.
Copyright 2013 ExcelSpecialisten XLS AB   Användarvillkor  Personliga uppgifter