Avatar billede marlene_v Nybegynder
05. maj 2006 - 11:51 Der 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
Avatar billede supertekst Ekspert
05. maj 2006 - 13:14 #1
Skulle nok være muligt!
Avatar billede supertekst Ekspert
05. maj 2006 - 13:56 #2
Hvordan er de enkelte filer organiseret?

Salg er vel en mappe med 12 faner.
Er kundevaluta i en mappe for sig selv eller?
Tilsvarende vedr. Valutakurser?

Mvh
Avatar billede marlene_v Nybegynder
05. maj 2006 - 14:07 #3
Mappen hedder salgsdata og her ligger 12 filer salg200501, ...., salgs200512.

Så er der en mappe der hedder valutakurser hvor filerne valuta200501, ...., salg200512 ligger.

Filen kundevaluta ligger i en mappe der hedder diverse
Avatar billede kjulius Novice
05. maj 2006 - 20:14 #4
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. :-)
Avatar billede zany Nybegynder
06. maj 2006 - 02:03 #5
sidder med samme problem...
kjulius>> hvordan kan det lade sig gøre i excel ?

jeg har en ide, med hvor man åbner de enkelte dokumenter via nedenstående kode, men det fuldender langt fra problemet...

Public Sub FindWorkbook()
    Dim wb As Workbook
    Dim WorkbookFound As Boolean

    WorkbookFound = False
    For Each wb In Workbooks
        If wb.Name = UCase("Solvsamp.xls") Then WorkbookFound = True
    Next wb

    If WorkbookFound Then
        Workbooks("Solvsamp.xls").Activate
    Else
        Workbooks.Open Filename:= _
            "F:\kap2\salgsdata.xls"
    End If
End Sub
Avatar billede supertekst Ekspert
06. maj 2006 - 12:27 #6
Løsning er programmeret - afsendes i morgen...
Avatar billede supertekst Ekspert
06. maj 2006 - 17:12 #7
I Userformen fra 1. løsning (Find Kunde) er indsat en knap, der kalder
OmregnValuta i modulet MODULE1, der indeholder nedenstående kode:

Const xSti1 = "D:\Eksperten\FindKunde_Valuta\"      'Diverse.xls // TILPASSES
Const xSti2 = "D:\Eksperten\FindKunde_Valuta\"      'ValutaKurser.xls // -"-

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
Avatar billede supertekst Ekspert
06. maj 2006 - 17:14 #8
Alle filer kan evt. sendes - mail til: pb@supertekst-it.dk
Avatar billede marlene_v Nybegynder
06. maj 2006 - 21:12 #9
Det ser lækkert ud, må se om jeg kan få det til at virke
Avatar billede marlene_v Nybegynder
07. maj 2006 - 14:38 #10
Jeg har forresten smidt alle mine filer ind i et array... er det så samme fremgangsmåde som overstående?
Avatar billede supertekst Ekspert
07. maj 2006 - 17:22 #11
Du får et svar- i tilfælde af, at du er tilfreds med den viste løsning.

-

Hvor meget har du smidt i et array? I hvor mange dimensioner? - er det valutakurser og Diverse - så skal søgningen ændres!
Avatar billede marlene_v Nybegynder
08. maj 2006 - 11:54 #12
Det er kundeid og valutakoden jeg har smidt ind i et array med 2 dimensioner
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