Avatar billede Michael_Sorensen Juniormester
16. februar 2018 - 14:24 Der er 13 kommentarer

Udligne bankposteringer i Excel

Hej Eksperter.

Jeg har 2 udtræk i Excel.

- 1 regneark med udtræk af bankposteringer for hele 2017 udtrukket fra banken
- 1 regneark med udtræk af bankposteringer for hele 2017 udtrukket fra bogføringsprogrammet

Da der er differencer mellem de to sidder jeg lige nu manuelt og udligner beløbene, der er på begge kontoudtog for at finde ud af, hvilke poster, der kun figurerer på den ene og ikke den anden.

Kan Excel gøre det smartere og hurtigere end jeg (jeg kan fortælle, at jeg nu kun er nået de første 100 ud af 3104 linjer i mit ene regneark og jeg har allerede fundet ud af, at det er jeg ikke hurtig nok til og opgaven ikke spændende nok til at fastholde mig :)
Avatar billede falster Ekspert
16. februar 2018 - 16:32 #1
Der må skulle være er "matematisk" sammenligningskriterium mellem de to arks poster. Hvad er det? Måske beløb.

(En sammenligning med oplistning af, hvilke beløbsposter, der findes i det ene ark og ikke i det andet - og den omvendte sammenligning, er let at udføre med Acces.)

Google på "Compare two sheets in the same workbook" giver ca. 2,5 mio. hits.
Avatar billede Michael_Sorensen Juniormester
16. februar 2018 - 17:09 #2
Ja, det er beløbene, som der skal søges på.

Jeg havde forestillet mig noget kode, der kunne markere alle beløb, der findes i begge regneark.

Alle beløb, der ikke var markeret var herefter differecner
Avatar billede Michael_Sorensen Juniormester
16. februar 2018 - 19:21 #4
Hej Falster.

Og tak for dit bidrag. Måske læser jeg det forkert, men er ovenstående links ikke betinget af, at de to Excel filer har samme antal data, der står i samme rækkefølge?

Sammenligner de ikke kun på række niveau (dvs. række 1 sammenlignes med række 1; række 2 sammenlignes med række 2; osv.)?

Mine ark er forsimplet således

Bankudtog (en tekstkolonne og en beløbskolonne)
xxx 1000
xxx 2000
xxx 800
xxx 3000
xxx 50
xxx 2000

Bogføringsfil (en tekstkolonne og en beløbskolonne)
xxx 50
xxx 1001
xxx 800
xxx 2000

Her ville jeg godt have markeret 1000, 2000 (er der 2x i ark 1 men kun 1x i ark 2) og 3000 i første regneark og 1001 i regneark nr. 2.
Avatar billede falster Ekspert
16. februar 2018 - 21:10 #5
Jeg håber, at "Excel-interesserede" giver dig gode indspark i denne tråd :-)

Jeg ville aldrig lave den slags øvelser i Excel.

Access (eller andre databaseprogrammer) er som skabt til det.

Opret en database, importer de 2 regneark, som tabeller, opret forespørgsler om "Find ikke-relaterede poster". I Acces er der grafiske guider til det hele.

En god anledning til at komme i gang med Access. Især hvis du også skal lave lignende øvelser i fremtiden. F.eks. om et år for 2018 bankforespørgsler og udtræk fra bogføringsprogrammet.
Avatar billede Michael_Sorensen Juniormester
16. februar 2018 - 21:21 #6
Hej Falster.

Jeg har ikke erfaring med Acces / databaser og havde slet ikke tænkt i den retning, at det var en brugbar vej til den løsning. Sådan kan man heldigvis udvikle sin horisont.

Det er ikke bare næste år, jeg får samme udfordring. Det er en øvelse, som jeg laver flere gange om måneden, så måske jeg lige skal bruge en time på at introducere mig selv for Access i weekenden for at se på muligheden og måske erkende, at Excel ikke er redskabet.
Avatar billede Mads32 Ekspert
16. februar 2018 - 22:21 #7
Hej Michael Sorensen

Jeg har lavet et eksempel med et løsningsforslag i Exel.

Jeg har lavet et lille eksempel med ca 30 postering på hvert ark.

Jeg vedlægger et link

https://www.dropbox.com/s/o1ba8yd9b0x0t6p/Udligne%20bankposter%20i%20exel_95.xlsx?dl=0
Avatar billede excelent Ekspert
17. februar 2018 - 10:11 #8
Ret arknavne og range i koden til aktuel
kolonne B i ark_2 skal være fri, ellers indsæt en tom kolonne

Røde celler i ark1 findes ikke eller ikke i samme antal i ark2
Grønne celler i ark2 findes også i ark1

Sub Forskel()

Set Ark_1 = Sheets("Ark1").Range("A1:A3200")
Set Ark_2 = Sheets("Ark2").Range("A1:A3200")
Sheets("Ark2").Select

For Each c In Ark_1
If Application.CountIf(Ark_2, c) Then
  flag = 1
  Ark_2.Find(c, LookIn:=xlValues).Select
    Selection.Cut Selection.Offset(0, 1)
  End If
  If flag = 0 Then c.Interior.ColorIndex = 3
flag = 0
Next

For Each c In Ark_2.Offset(0, 1)
If c <> "" Then c.Cut c.Offset(0, -1): c.Interior.ColorIndex = 4
Next

End Sub
Avatar billede Michael_Sorensen Juniormester
18. februar 2018 - 11:43 #9
@Mads32

Ud fra dit eksempel tænker jeg, at det vil fungere fint (om end der laves nogle krumspring for at nå målet). Jeg tester det med egne data i morgen, og vender tilbage, men ud fra dit eksempel, ser det klart brugbart ud. Når jeg så får tilføjet kolonne til bilagsnummer og dato, så vil det blive nemt at finde frem til differencerne.

@excellent

Jeg får en fejl, når jeg kører makroen på nogle testdata.

Jeg fik en fejl ved følgende linje
Ark_2.Find(c, LookIn:=xlValues).Select

I mit Excel ark opstod fejlen hvor 1. linje i ark 1 blev matchet med 9. linje i ark 2 (ens værdier)

I ark 2 række 9 flyttede koden samtidig min værdi over i celle B9 (fra A9 der blev blank)
Avatar billede excelent Ekspert
18. februar 2018 - 14:38 #10
Hvis du har tilrettet koden så vis den lige her, og hvad hedder dine ark
Avatar billede Michael_Sorensen Juniormester
18. februar 2018 - 14:59 #11
Koden er copy/pasted herinde fra - i uændret form.

Mine ark hedder ark1 og ark2 (uændrede default navne)

Jeg har beløb i kolonne A, dato i kolonne B og tekst i kolonne C
Avatar billede excelent Ekspert
18. februar 2018 - 17:03 #12
Prøv mit eks-ark
du skal lige gemme det på hd før du kører koden

http://excel.pm/Eksperten/Forskel.xlsm
Avatar billede excelent Ekspert
18. februar 2018 - 17:26 #13
Husk kolonne B skal være tom i ark2 ellers indsæt en tom midlertidig
Koden flytter matchende værdier over i kolonne B under kørsel og tilbage igen sidst i koden
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

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