05. maj 2006 - 11:51Der er
11 kommentarer og 1 løsning
VBA i Excel - HJÆÆLP
Jeg har nogle forskellige filer jeg skal have koblet sammen på en eller anden måde... Der er 12 filer med salgstal: salg200501 salg200502 ... salg200512 (altså en for hver måned i 2005)
Disse filer ser alle således ud: Kunde Januar 1 xxx 2 xxx .... 100 xxx
Derefter har jeg en fil med kundevaluta der indeholder: Kunde Valuta 1 GBP 2 DDK .... 100 USD (altså hvilke valuta kunde ønsker at handle med)
Derefter er der nogen filer med valutakurser der ser således ud: Januar Februar Amerika USD 570,9 Amerika USD 561,4 Australien AUD 442,27 Australien AUD 444,89 ..... ..... Ungarn HUF 3,03 Ungarn HUF 3,08
Det er så meningen at man i filerne salgsdata skal beregne salgstalene om så de alle står i DDK. Man skal bruge den kundevaluta som kunden ønsker at benytte og derefter bruge den rigtige kurs for den rigtige måned...
Håber det giver mening og at der er nogen der kan hjælpe mig
Kommunerne har digitaliseret indgangen for borgerne. Men bag skærmen håndteres mange arbejdsgange stadig manuelt mellem systemer, mails og organisatoriske siloer.
Har du Access installeret? Det er nemlig en type opgave, som er 1000 gange nemmere at løse ved at importere dine regneark ind i Access, og så lave en rapport her (eller for den sags skyld bare lave forepørgslen i Access og så eksportere det færdige resultat til Excel, hvis du foretrækker det).
Selvfølgelig kan det også lade sig gøre i Excel, men det bliver både besværligt og sløvt. :-)
Dim xlsDiverse As Object, xlsValutaKurser as Object
Sub omregnValuta() 'ProgramStart åbnDiverse åbnValutaKurser
gennemløbSalgsMåneder
xlsDiverse.Quit xlsValutaKurser.Quit
Set xlsDiverse = Nothing Set xlsValutaKurser = Nothing End Sub Private Sub gennemløbSalgsMåneder() Dim arkNr, række, maxrækker, knr, valuta For arkNr = 1 To ActiveWorkbook.Sheets.Count ActiveWorkbook.Sheets(arkNr).Activate ActiveSheet.Cells(1, 1).Select maxrækker = ActiveCell.SpecialCells(xlLastCell).Row
For række = 2 To maxrækker 'Overskrift i række 1 If Cells(række, 1) <> "" Then knr = Cells(række, 1) valuta = findKundeValuta(knr) If valuta <> "" And valuta <> DDK Then kurs = findKurs(arkNr, valuta) If kurs <> 0 Then Cells(række, 3) = (Cells(række, 2) * kurs) / 100 Else MsgBox ("Kurs for " + valuta + "i måned: " + CStr(arkNr) + " findes ikke") End If Else MsgBox ("Valuta for kundenr." + CStr(knr) + " kunne ikke findes!") End If End If Next række Next arkNr findKunde = "" End Sub Private Function findKundeValuta(knr) Dim række, maxrækker With xlsDiverse maxrækker = .ActiveCell.SpecialCells(xlLastCell).Row For række = 2 To maxrækker If .Cells(række, 1) = knr Then findKundeValuta = .Cells(række, 2) Exit Function End If Next række End With findKundeValuta = "" End Function Private Function findKurs(arkNr, valuta) Dim række, maxrækker With xlsValutaKurser .Sheets(arkNr).Activate maxrækker = .ActiveCell.SpecialCells(xlLastCell).Row For række = 2 To maxrækker If .Cells(række, 2) = valuta Then findKurs = .Cells(række, 3) Exit Function End If Next række End With findKurs = 0 End Function Private Sub åbnDiverse() Set xlsDiverse = CreateObject("Excel.application")
With xlsDiverse .Workbooks.Open xSti1 + "Diverse.xls" .Visible = False End With
End Sub Private Sub åbnValutaKurser() Set xlsValutaKurser = CreateObject("Excel.application")
With xlsValutaKurser .Workbooks.Open xSti2 + "ValutaKurser.xls" .Visible = False End With End Sub
Det er kundeid og valutakoden jeg har smidt ind i et array med 2 dimensioner
Synes godt om
Ny brugerNybegynder
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.