Avatar billede bejstrup Juniormester
29. januar 2006 - 11:25 Der er 5 kommentarer og
1 løsning

Sand/falsk autoændres til et fordelt beløb

Hej, eksperter
Jeg har en matrix hvor der på x-aksen er ca 25 fejlkoder. På Y-aksen er der et antal varenumre. Matrixen er importeret fra en database. Når matrixen er importeret står der sand/falsk du for hver fejlkode. Det vil jeg gerne have ændre, så det er fejlomkostningen der kommer til at stå i feltet. Hvis der er fler fejlkoder med sand, skal omkostningen fordelesligeligt på hvert felt med "sand". (omkostningerne står i en kolonne for sig selv). Jeg kan evt. maile matrixen!
Avatar billede fojensen Nybegynder
30. januar 2006 - 10:21 #1
man må kunne lave en funktion, som du kan afvikle efter importen af data...

men hvis funktion skal løbe felterne igennem, skal vi kende (eller kunne finde frem til) længde på x- og y-akserne - eller har de samme størrelse hver gang?
Avatar billede bejstrup Juniormester
30. januar 2006 - 17:14 #2
X-aksen har samme længde hver gang, men data på y-aksen bliver længere des flere data der tilføres. Jeg vill egentlig gerne lave en pivo-tabel, men min pc kan ikke klare de ca. 30 poster på x-aksen :-(
Avatar billede fojensen Nybegynder
30. januar 2006 - 17:58 #3
Har klampet en funktion sammen som løber et antal celler igennem.

hvis den finder 3 true i en kolonne, løber den kolonnen igennem igen og erstatter true med din fejlomkostning delt med 3 - er det noget i den stil du søger, eller...

mvh Folmer
Avatar billede fojensen Nybegynder
30. januar 2006 - 17:59 #4
nå'e ja, den kommer her...

Sub true_ret()

' vi henter data fra data-arket og smider dem i arrays
Dim DataArray
Dim Faktor_x
Dim Fejlomkostning
Dim x, y, x_Dimention, y_Dimention, x_Cycle, y_Cycle, x_Start, y_Start, x_StartOffset, y_StartOffset, s_Index As Integer

' indstillinger skrives ind herunder
s_Index = 1 'index for hvilket ark dataene ligger i - arket længst til venstre er valgt
x_Start = 3 'rowindex for hvilken række der startes i
y_Start = 2 'columnindex for hvilken kolonne der startes i
x_Dimention = 25 'max antal rækker skal vi søge igennem efter data
y_Dimention = 100 'max antal kolonner skal vi søge igennem efter data
Fejlomkostning = 210 'værdi for Fejlomkostning

' værdier som beregnes
x_StartOffset = x_Start - 1 'offset udregnet ud fra x_Start
y_StartOffset = y_Start - 1 'offset udregnet ud fra y_Start

'arket vælges
Sheets(s_Index).Select

' værdierne fra arket smides i et 2-dimentionelt array
DataArray = Range(Cells(x_Start, y_Start), Cells(x_Start + x_Dimention, y_Start + y_Dimention))

x_Cycle = UBound(DataArray, 1)
y_Cycle = UBound(DataArray, 2)

'MsgBox "dimention x er " & UBound(DataArray, 1) & ", og dimention y er " & UBound(DataArray, 2)

' vi cykler array'et igennem
For y = 1 To y_Cycle ' løkke til y-aksen starter
  Faktor_x = 0
  For x = 1 To x_Cycle ' cykler kolonne igennem og tæller op hvor mange true der findes
    If DataArray(x, y) = True Then
    Faktor_x = Faktor_x + 1
    End If
  Next x

  If Faktor_x > 0 Then
    For x = 1 To UBound(DataArray, 1) ' cykler kolonne igennem igen og sætter beløb på hvis true
      If DataArray(x, y) = True Then
      Cells(x + x_StartOffset, y + y_StartOffset).Value = Fejlomkostning / Faktor_x
      End If
    Next x
  ' som test har vi lige et output via msgbox
  MsgBox "Der er fundet " & Faktor_x & " 'TRUE' i kolonne " & y & ", så fejlomkostning er sat til " & Fejlomkostning / Faktor_x & " kr."
  End If
Next y

End Sub
Avatar billede bejstrup Juniormester
30. januar 2006 - 21:11 #5
super, sender du et svar
Avatar billede fojensen Nybegynder
30. januar 2006 - 23:46 #6
hermed et svar...
det er jo herligt, hvis det er brugbart - eller hvis du selv ka' lave det om til det du skal bruge

mvh Folmer
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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