Just nu i M3-nätverket
Gå till innehåll

Hitta tidigaste och senaste datum


ZebulonM

Rekommendera Poster

Hej,

 

Har åkt på en klurig grejj. Försöker plocka första och sista datumet i en kolumn, men får inte ordning på hur jag ska hantera detta med min och max sökning. oavsett hur jag söker i kolumn, range eller array och hur jag deklarerar mina variabler får jag noll tillbaka.

har labbat med date, datevalue, mm. men kommer inte loss här.

 

   lastD = Application.WorksheetFunction.Max(myrange)
   firstD = Application.WorksheetFunction.Min(myrange)

så här ser datumen ut:

 

2009/04/17

2009/04/30

2009/05/22

2009/08/31

2009/09/22

2009/11/20

2009/12/30

2010/01/25

 

Kan givetvis loopa mig runt detta, men det känns som att det skall funka. Vad gör jag för fel? :blink:

 

Höpp!

Länk till kommentar
Dela på andra webbplatser

tja, det är inga datumvärden du har kanske? Är cellerna formaterade som datum eller är det text?

Länk till kommentar
Dela på andra webbplatser

Hmm, trodde jag hade postat i VBA. :unsure:

 

Hur som helst, kolumnen är i datumformat.

Ska man ändra properties till text eller general för kolumnen istället?

Länk till kommentar
Dela på andra webbplatser

Kolumnen formaterad som datum men är det verkligen datum? Kolla det. Om jag testar och skriver in några datum, säger

2009-01-01, 2009-01-02 osv så fungerar de formler du använder som de ska. Givet då att myrange verkligen är en referens till de cellerna du räkna på.

 

Med andra ord, några saker att kontrollera/testa

Skriv in nya datum

Kontrollera att det verkligen är datum (testa med former på bladet, exempelvis =ÅR(A1))

Kontrollera att myrange refererar dit den ska.

Länk till kommentar
Dela på andra webbplatser

Tror att jag har för dålig koll på hur man hanterar ranges och adresseringar runt detta, dvs det är sannolikt punkt tre som är problemet. :unsure:

Skriva in nya datum går bra.

Cellrefernser går bra.

"Myrange" refererar dit jag har tänkt mig när jag lägger till select.

Men, när jag tilldelar min variabel en range missar jag kanske något?

Jag bifogar ett exempel på datum och lite av dagens testning. Kolumner och range funkar när jag inte använder mig av variabel-tilldelning.

I exemplet jag testade med igår, så kör jag från en modul till en extern arbetsbok, vilket säkert kan innebära att jag går vilse i adresseringar. Det som var extra klurigt att jag lyckades få min och max att funka på data som inte var i datumformat... :(

date_range.xls

Länk till kommentar
Dela på andra webbplatser

Ah, du gör ett par klassiska fel

 

1: I VBA editorn, öppna menyn Verktyg -> Alternativ. Bocka där för att variabler alltid måste deklareras. Detta ger att VBA lägger till raden

Option Explicit

i början på varje NY modul. I existerande får du lägga till det själv. Typdeklarera bör man annars kan det gå fel och bli svårt att felsöka.

 

2: Om du gjort så hade raden

myrange = Sheet2.Range("B2:B12")

gett ett felvärde om du deklarerat myrange som en range

Dim myrange as Range

 

Range är ett objekt, för att tilldela ett objekt ett värde måste man använda Set

Set myrange = Sheet2....

utan Set kopieras värdena i cellen/cellerna till variabeln

 

Sådär, nu bör du få ordning på det.

 

Flyttar tråden till VBA dessutom.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...