Avatar billede fhansen82 Mester
08. september 2013 - 12:14 Der er 1 løsning

Excel VBA der tjekker data i to kolonner og returnerer svar hvis korrekt

Har brug for at udlæse hvilke brugere, som ikke har benyttet et system fra en given dato. Fra systemet har jeg en CSV-fil. Det jeg ikke kan få til at spille, er at få min kode til, at:

1. Kontrollere i en kolonne, om navneforekomsten stemmer over ens med min liste af brugere.
2. samtidigt med at den dato jeg angiver, skal være overholdt.

Beskrevet i detaljer, så:

I kolonne A fremgår en liste over de datoer hvor brugerne logget ind.
I kolonne B fremgår en liste over brugernavne som er logget ind. Samme brugernavn kan godt fremgå i kolonne B, hvis brugeren har benyttet systemet flere gange, fx. både 2013-01-01 og 2013-01-02. Denne kolonne er sorteret alfabetisk fra A-Z(Å)
I kolonne C fremgår en liste over brugernavne sorteret som unikke forekomster, hentet fra kolonne B. Her fremgår ikke duplikater.
Det min kode skal er, at åbne en dialogboks hvor skæringsdato indtastes af bruger, og derefter med udgangspunkt i C2 (det første brugernavn i listen), lede efter forekomster af brugernavnet i kolonne B, samtidigt med at datoen i kolonne A i samme række som der søges efter brugernavn i i kolonne B, ikke må være ældre end angivne skæringsdato. Hvis brugernavnet findes og datoen er inden for skæringsdatoen, kopieres brugernavnet fra kolonne B i samme række som der søges i til kolonne D startende i D2 og så nedefter. Der skal efterfølgende søges på næste brugernavn i kolonne C. Koden skal stoppe når sidste celle med indhold nås i kolonne C.

Lige nu kopierer min kode bare alle brugernavnene, hvilket tyder på, at jeg gør et eller andet forkert i forhold til den dato jeg indtaster. Har prøvet at deklarere variablen til både, String, Date, Integer og Long, hvor kun String har fungeret for mig. Kolonne A er formateret som 'Brugerdefineret/Custom', hvor angivelsen er dd-mm-yyyy. Selve data i cellerne har angivelsen dd-mm-yyyy  tt:nn. Tænker at det er noget her som driller mig, men kan ikke gennemskue hvad.

Derudover så er min kode kun opbygget af en IF-sætning, hvilket jeg lige selv kunne finde ud af. Det ideelle er selvfølgelig nok en FOR-løkke, som håndterer søgningen ned gennem rækkerne. Men kan ikke selv få stablet sådan en på benene. Jeg tænker at celler med indhold skal tælles op med Rows.Count. Når jeg benytter Rows.Count lige nu, får jeg en fejl efter et stykke tid. Går ud fra, at det er fordi jeg ikke håndterer stoppunktet ordentligt. Tænker at det er unødvendigt at poste koden, da den højst sandsynligt kan erstattes af meget bedre kode. Jeg kan uploade mit foreløbige arbejde til GratisUpload.dk, hvis ønsket.

Min erfaring med VBA er stadig meget lille, og 90% af koden er fundet rundt omkring på nettet, og rettet ind til formålet. Koden er delt op i opgaver som udføres i steps ved klik på knapper, for at jeg bedre kan overskue de enkelte dele. Jeg slår måske dele af koden sammen senere. Men til st starte med har jeg blot brug for at få sammenligningen til at virke.
Avatar billede fhansen82 Mester
16. september 2013 - 13:47 #1
Lukker det spørgsmål og genopretter reformuleret.
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
Kurser inden for grundlæggende programmering

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