Avatar billede JZA Nybegynder
16. august 2011 - 10:00 Der er 5 kommentarer og
1 løsning

linier interpolation (skriv i felter)

Hej Eksperter

Jeg er ved at lave et større regneark, hvor jeg sidder fast omkring følgende:
Jeg ønsker at kunne vælge to X-værdier og to Y-værdier, begge i intervallet 100, 200, 300, ... 50000, men uafhængige af hinanden.
eks. X1=200, Y1=300, X2=2600, Y2=30000.
Her af beregner jeg den største forskel, hvilket er på Y: 30000-300=27000
27000/100=270 (spring på 100) skal nu være grundlaget for antallet af linjer interpolations værdier, der skal beregnes på de tilhørende X-værdier.

Mit spørgsmål er nu:
Hvordan får jeg excel til automatisk at oprette felter til hver af værdierne mellem Y1 og Y2, så jeg til slut har en lille tabel med Y-værdierne 300, 400, 500, ...28000, 29000, 30000 og tilhørende interpolerede X-værdier?
Beregningen er ikke problemet, men den automatiske tildeling af Y-værdier til felterne.

Håber at mit spørgsmål er forståeligt og naturligvis at der er nogen der vil hjælpe.
Avatar billede Tryphon Nybegynder
16. august 2011 - 16:36 #1
Prøv med denne kode:

Koden er baseret på at
B1 indeholder Minimum Y værdi
B2 indeholder Maximum Y værdi

Værdier bliver indsat fra A4 og nedefter i én kolonne.

Du kan evt. selv rette til, hvis du vil have dataopbygningen anderledes.

Tryk Alt+F11 for at åbne Visual Basic Editor
tryk Ctrl+R, hvis du ikke kan se listen over dine ark
Højreklik på et arknavn i venstre pane
Indsæt modul
Kopier nedenstående ind i modulet
Kør koden ved at trykke F11 (Husk at gemme inden, så du ikke ødelægger noget) eller via funktioner/Makroer i Excel 2003 eller Makroer fra fanebladet "Vis" i Excel 2007/2010.

Option Explicit

Sub OpretY_Liste()
Dim y1 As Long, y2 As Long
Dim Raekke As Long, Kolonne As Long
Dim Val() As Long, v As Long, interval As Integer
Dim Val2() As Long
 
' Y1 = Min, Y2 = Max
  y1 = Range("b1").Value
  y2 = Range("b2").Value
 
' Indsæt y-værdier i kolonne A startende i række 4
  ReDim Val(1 To 1, 1 To y2) As Long
 
  Do
    If v = 0 Then
      v = LBound(Val, 2)
      Val(1, v) = y1
    Else
      Select Case Len(CStr(Val(1, v - 1)))
        Case 3
          interval = 100
        Case 4
          interval = 1000
        Case 5
          interval = 1000
      End Select
      Val(1, v) = Val(1, v - 1) + interval
    End If
    If Val(1, v) = y2 Then
      Exit Do
    End If
    v = v + 1
  Loop
  ReDim Preserve Val(LBound(Val, 1) To UBound(Val, 1), LBound(Val, 2) To v) As Long
 
' Vend Array for at kunne indlæse arrayet i Excel
  ReDim Val2(LBound(Val, 2) To UBound(Val, 2), LBound(Val, 1) To UBound(Val, 1)) As Long
    For Raekke = LBound(Val, 2) To UBound(Val, 2) Step 1
      For Kolonne = LBound(Val, 1) To UBound(Val, 1) Step 1
        Val2(Raekke, Kolonne) = Val(Kolonne, Raekke)
      Next Kolonne
    Next Raekke

' Indsæt værdier 
  Raekke = 4
  Kolonne = 1 
  Range(Cells(Raekke, Kolonne), Cells(Raekke + UBound(Val2, 1) - 1, Kolonne + UBound(Val2, 2) - 1)) = Val2()
End Sub
Avatar billede JZA Nybegynder
17. august 2011 - 10:25 #2
Hej Tryphon

Det ser meget fint ud og er lige hvad jeg skal bruge.

Mange tak for det.
Avatar billede Tryphon Nybegynder
17. august 2011 - 10:32 #3
Det glæder mig, at du kunne bruge det, men det ville være høfligt at tildele pointene til den, der svarer istedet for sig selv :-).

Nå, men det er ikke så vigtigt, men du må hellere huske det til næste gang. Nogen er mere obs på point end andre :-)
Avatar billede JZA Nybegynder
17. august 2011 - 10:43 #4
Beklager. Det var ikke min mening.
Det er vel for sent at lave om på eller? Det er første gang jeg bruger siden.
Avatar billede Tryphon Nybegynder
17. august 2011 - 12:27 #5
Lad det ligge. Det er ikke vigtigt. Man skal jo også lige lære, hvordan man gebærder sig på siden :-)
Avatar billede natkatten Mester
17. august 2011 - 12:36 #6
Men ellers kan du oprette et nyt spørgsmål med 60 points. Kald det blot "Point til Tryphon for svar" og lav en reference i teksten til spørgsmål http://www.eksperten.dk/spm/945151
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