Hallo RedHead,
Maar ik ben het
volkomen met je eens! Als ik zou moeten omschrijven hoe ik zelf de dingen benader kan ik beter gewoon je tekst kopiëren.
Vanzelfsprekend geldt dat ook voor
Ik zie het daarnast op fora regelmatig gebeuren dat een TS al geholpen is met een oplossing, maar dat helpers elkaar helpen op een hoger niveau te komen en dat een draadje nog even "doorsuddert". Dát lijkt mij persoonlijk een heel goede zaak
Een
héél goede zaak!
En ook met deze voel ik mij verwant
Zie hier de ellende soms van het geschreven woord... Er kunnen dingen opgemaakt worden die nooit gezegd zijn maar misschien op een bepaalde wijze kunnen worden opgevat
Ik kom dat ook op regelmatige basis tegen, zowel aan het ene als aan het andere eind van de kwestie!
In concreto: hoogstens zag ik jouw posts ten onrechte als een soort uitdaging, maar dan wel een leuke, anders was ik er niet op ingegaan. Maar aan de andere kant was mijn reactie ook hoegenaamd niet als
tegenaanval bedoeld (zoals jij misschien hebt gedacht?)
Nu ja, er zijn nuttiger en interessanter zaken om over te praten. Toevallig ben ik ook sinds heel kort aan Dictionaries begonnen maar mee werken durf ik het nog niet noemen, eerst nog maar wat beter uitpluizen lijkt mij aangewezen...
Wat ik tegenwoordig veel doe is sql implementeren in vba. Het grote voordeel is dat je basisgegevens dan zowat overal mogen staan, ook buiten Excel dus. Neem me niet kwalijk als het iets is wat je ook al lang hanteert. In het andere geval hoop ik ten zeerste dat je hier misschien iets aan hebt. Om het dan even bij dit topic te houden, dat zou ik dus zo doen:
Sub sql_methode()
bron = ActiveWorkbook.Path & "\origineel.xlsx"
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:="odbc;dsn=excel files;dbq=" & bron, Destination:=Range("$A$1")).QueryTable
.CommandText = "select [nieuw$].*, [oud$].omschrijving from [nieuw$] " _
& "inner join [oud$] on [nieuw$].bedrag = [oud$].bedrag " _
& "and [nieuw$].kostensoort = [oud$].kostensoort " _
& "and [nieuw$].periode = [oud$].periode " _
& "order by [nieuw$].kostensoort"
.Refresh BackgroundQuery:=False
End With
End Sub
Deze code staat dus in een leeg werkboek en de gegevens in "origineel.xlsx" (in het voorbeeld beide in dezelfde map maar hoeft uiteraard niet).
De snelheid zit in dezelfde grootteorde maar in andere situaties zoals (delen van) grote databases uitlezen bewijst het pas zijn grote nut.
Maar zoals gezegd: please don't shoot the piano player als ik je niets nieuws vertel
Groeten,
pitufo