Gå til innhold

Featured Replies

Skrevet

Skal nå sjekke at jeg har fått med alle linjene jeg har lastet ned. De er nummerert fra 1 og oppover. Samt vil jeg ha melding om hvilke linjenummer som mangler. Det må også sjekke om noen nummer er lagt inn flere ganger. Hva gjør jeg?

 

Kjell

Skrevet

Å sjekke hvilke linjenummer som mangler høres ut som en jobb for en makro som teller fra 1 til det siste linjenummeret og finner ut hvilke linjenumre som ikke finnes i lista.

 

Å sjekke om et nummer eksisterer flere ganger i en så stor tabell høres også umiddelbart som en makro-jobb. Å sjekke om et tall oppstår flere ganger er én enkel funksjon i Excel, men å sjekke om tusenvis av tall oppstår flere ganger i ei liste kan gjøres enkelt ved litt programmering.

 

Nå spurte du ikke om hvordan man kan telle antall linjer det er i tabellen så jeg regner med at du alt har kontroll på den biten. Uansett vil man kunne lese av tallene på venstre side av regnearket og finne det ut derfra, eller man kan benytte ANTALL-funksjonen (norsk versjon).

 

"Oh yes... han har kanskje løsningen?".

For et par år siden kanskje. Nå husker jeg ikke så mye VB-språket i makroene. Kan utforske litt å se om jeg finner ut noe men inntil da så håper jeg noen andre finner en smart løsning her.

Skrevet
  • Forfatter

Ja har sjekket noen og fått tatt vekk noen doble og triple tall. Men listen er på nesten 12000 navn. Det er ett nummer på hver linje og alle data er unike. Det er totalt åtte kolonner på den liste, men antallet der skal ikke ha noe å bety.

 

Kjell

Skrevet

Først... lagre alt før du prøver deg på dette. Jeg gir ingen garantier, men det fungerte i min 10-linjers testdatabase. Kopier helst databasefila først og kjør dette på kopien

 

I excel...

Verktøy -> Makro -> Makroer...

Skriv sjekkdobletall og klikk "Lag"

 

Disse to vil være i det nye vinduet:

Sub sjekkdobletall()

End Sub

 

Se nedenfor og lim slik at du ser det som står nedenfor i vinduet. Dersom regnearket heter noe annet enn Ark1 så må du endre dette i koden før du prøver den ut:

 

 


Sub sjekkdobletall()
Start = InputBox("Radnummer første post")
Stopp = InputBox("Radnummeret på siste post")
Kolonne = InputBox("Hvilken kolonne i regnearket står nummeret for raden?")
For n = Start To Stopp
   If Ark1.Cells(n, Kolonne) = Ark1.Cells(n + 1, Kolonne) Then MsgBox ("Rad med nummeret " & n & " er identisk med raden under")
Next
MsgBox ("Ferdig med gjennomgangen")
End Sub

 

Lukk så Visual Basic-vinduet

 

Velg Verktøy -> makro -> makroer, velg sjekkdobletall og klikk kjør.

 

Når programmet refererer til rad så gjelder dette plassering i excel-arket og ikke i databasen. F.eks. om din database har en overskrift og begynner først i Celle A5 skriver du 5 på første spørsmål. På andre spørsmål skriver du hvilken excelark-rad databasen slutter. Tredje spørsmål er i hvilken kolonne linje-ID'en til databasen befinner seg i... altså i hvilken excel-kolonne kontrollere.

 

Tror det er best å gjøre det på denne måten... semimanuelt, det er i alle fall det jeg får til nå på kort tid. Let me know hvordan det gikk.

 

OG HUSK Å LAGRE ALT FØRST :) -og kjør dette på en kopi av databasen.

Skrevet

OK... laget litt til...

 

Lag enda en makro du kaller sjekksammenheng og lim inn det som står fra "Sub sjekksammenheng()" og "End Sub" nedenfor. Jeg har limt inn begge makroene denne gang.

 

Når du har begynt å kjøre en slik så går den igjennom HELE excelarket innen de grensens du setter når programmet spør om dette. Det er bare å notere og i fall du sletter doble linjer vil jo radnummeret for alt nedenfor endres. Derfor kan det være greit å notere først og så endre databasen nedenfra og opp basert på radene du noterte fra du kjørte makroene...

 

Det var i alle fall mitt forslag.

 

Sub sjekkdobletall()
Start = InputBox("Føste excelrad")
Stopp = InputBox("Radnummeret på siste post")
Kolonne = InputBox("Hvilken kolonne i regnearket står nummeret for raden?")
For n = Start To Stopp
   If Ark1.Cells(n, Kolonne) = Ark1.Cells(n + 1, Kolonne) Then MsgBox ("Rad med nummeret " & n & " er identisk med raden under")
Next
MsgBox ("Ferdig med gjennomgangen")
End Sub
Sub sjekksammenheng()
Start = InputBox("Første excelrad")
Stopp = InputBox("Radnummeret på siste post")
Kolonne = InputBox("Hvilken kolonne i regnearket står nummeret for raden?")
For n = Start To Stopp
   If Ark1.Cells(n, Kolonne) <> Ark1.Cells(n + 1, Kolonne) - 1 Then MsgBox ("Det er en feil i sammenhengen mellom kolonne " & n & " og kolonnen etter")
Next
MsgBox ("Ferdig med gjennomgangen")
End Sub

Skrevet
  • Forfatter

Tusen takk Andreas. Dette var ett kjempeprogram. Det var ca 300 feil, dubletter og navn som manglet. Nå er den 100 % korrekt. Har allerede tatt kopi til annen disk allerede. Nok en gang Tusen takk.

 

Ha en fortreffelig aften

 

Kjell

Skrevet
  • Forfatter

Jeg vet at Excel er et kraftig program og skulle gjerne lært meg makro programmering. Programmet kan jo nesten brukes til alt. Har du tips til bøker?

I gamle dager kunne jeg makro til Lotus 1-2-3. men det virker vel ikke slik i dag.

 

Kjell

Skrevet

Man kommer langt selv med Excels funksjoner alene uten bruk av macro. For dette holder det med et typisk "Lær deg Excel-blablabla" narvesen-hefte.

 

For makroer kan du se etter bøker som heter noe i samme dur som "Visual Basic for Appliactions".

 

Ellers finnes det sikkert noen som har skrevet noe på nett... http://www.google.no/search?q=visual+basic+for+applications

Bli med i diskusjonen!

Du kan poste innlegg nå og registrere deg senere. Hvis du har en brukerkonto kan du logge inn nå for å poste med din egen konto.

Gjest
Skriv svar til emnet …