16. august 2011 - 10:00Der 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.
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
' 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
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
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.