Interpolation einer Exceltabelle

Bild

Betrifft: Interpolation einer Exceltabelle
von: MK
Geschrieben am: 29.09.2015 11:53:34

Moin Gemeinde!
Habe da ein Prob das ich nicht hinkriege. Habe da eine Tabelle deren Werte ich mit Excel horizontal wie vertikal interpolieren möchte.
Tabelle sieht so aus:
A K Z
1
50
100
Habe also zB diese neun Daten (A,K,Z, 1, 50, 100) und will die Zwischenräume interpolieren. Jetzt krieg ich das vertikal von Hand hin hin (zB mit slines.xls oder mit der site von arndt brünner). Horizontal aber nicht.
Was ich dazu bräuchte wäre ein Excel Werkzeug, das mir in beide Ebenen interpoliert.
Kann da vlt jemand von Euch helfen?
grüsse M
(leider kann ich nicht richtig formatieren. Die Tabelle hat also doppelten Eingang)

Bild

Betrifft: AW: Interpolation einer Exceltabelle
von: Quellkot
Geschrieben am: 30.09.2015 13:52:57
Ich weiß leider nicht genau was eine Interpolation ist. Aber wenn du ein Makro brauchst, dass bestimmte Zellen anspricht (Ich gehe davon aus, dass mit Zwischenräume Zellen ohne Eintrag gemeint sind), dann könnte dir das hier vllt helfen?
Aufgepasst, iLetzteZeile wird anhand von Spalte A definiert, und iLetzteSpalte anhand von Zeile 1. Möglicherweise muss dass noch angepasst werden, damit auch definitiv alle letzten Einträge gefunden werden.
Natürlich müsste hier noch definiert werden, was genau die Interpolation machen soll, aber wenn du mir da ein wenig auf die Sprünge helfen kannst, helfe ich dir auch gerne damit weiter. :)

Sub Interpolation()
Dim strDeineTabelle As String, iLetzteZeile As Integer, iLetzteSpalte As Integer, iSpalte As  _
Integer, iZeile As Integer, strZwischenraum As String
'Anpassen
strDeineTabelle = "Tabelle1"
strZwischenraum = ""
iLetzteZeile = Worksheets(strDeineTabelle).Range("A65536").End(xlUp).Row 'LetzteZeile in A  _
finden
iLetzteSpalte = Worksheets(strDeineTabelle).Cells(1, 256).End(xlToLeft).Column 'LetzteSpalte in  _
Zeile A finden
For iSpalte = 1 To iLetzteSpalte
    For iZeile = 1 To iLetzteZeile
        If Worksheets(strDeineTabelle).Cells(iZeile, iSpalte).Value = strZwischenraum Then
            Worksheets(strDeineTabelle).Cells(iZeile, iSpalte).Value = "Interpolation"
        End If
    Next iZeile
Next iSpalte
End Sub


Bild

Betrifft: AW: Interpolation einer Exceltabelle
von: ChrisL
Geschrieben am: 30.09.2015 16:08:42
Hi
Folgende Probleme:
1. Ausgangslage unklar (wie sieht deine Tabelle wirklich aus)
2. Mir fehlen die Mathematik-Kenntnisse :)
http://www.timaios.org/2015/02/18/serie-interpolieren-lineare-interpolation/3/
Trotzdem war ich mal googlen.
Lösungsansatz eindimensional:
http://www.excelformeln.de/formeln.html?welcher=373
Lösungsansatz zweidimensional:
http://www.office-loesung.de/ftopic560099_0_0_asc.php
Wie ich verstehe bekommst du die eindimensionale Variante horizontal hin, dann müsste es auch vertikal gehen ;)
Nun frage ich mich, ob du nicht einfach den Mittelwert vom horizontalen und vertikalen Ergebnis nehmen kannst. Im obigen Beispiel zweidimensional wurde dies m.E. auch so gelöst. Ob dies mathematisch korrekt ist und ob eine lineare Variante überhaupt richtig ist, kann ich nicht beurteilen.
cu
Chris

Bild

Betrifft: AW: Interpolation einer Exceltabelle
von: M
Geschrieben am: 01.10.2015 15:14:40
@Quellkot:
Danke für Deine Antwort!
Interpolation? Also Du hast eine Tabelle. Zum Eingangswert der Tabelle suchst Du den Tabellenwert. Falls aber Dein Eingangswert in der Tabelle nicht existiert, was dann? Dann mußt Du einen der existierenden Werte nehmen, der mehr oder minder weit von Deinem Eingangswert weg ist und nimmt den dazugehörigen Tabellenwert, der nun aber ungebnau sein muß. Oder Du nimmst auf irgendwelche Art und Weise einen Zwischenwert und berechnest angepasst an Deine Art und Weise einen dazugehörigen Tabellenwert. Am einfachsten wäre eine lineare Interpolation (du tust so als seien die Tabellenwerte zwei Punkte einer Geraden und nimmt dann den dem Eingangswert genau entsprechenden Geradenwert.) Eine andere Art einen Tabellenwert zu erzeugen wären zB Splines(s.ZB splines.xls[findest du im Netz].
Du hast genau recht: Zwischenräume sind Leerzellen, die ich mit den interpolierten Werten füllen will.
Ich habe also eine Tabelle mit beliebig vielen Zeilen und pro Zeile 8 Zellen mit aufsteigenden Nummern. Sagen wir 10, 20, ... 80. In diesen 8 Zellen [Zeile#;Spalte#] stehen Tabellenwerte. Diese Tabelle will ich ergänzen durch Zwischenzellen also für 11,12..19,21,22..79. Das wären die Werte, die es zu interpolieren gilt.
Hoffe ich habe das soweit klar ausdrücken können.
Splines.xls arbeitet leider mit zwei Spalten und man kann die Werte nicht dazwischenschieben.
Was ich also bräuchte wäre eine excel-Formel, die ich in die zu füllenden Zellen schreibe und beliebig in andere kopieren kann. Insbesondere in die nächsten Zeilen! Das alles spielt sich Zeile für Zeile unabhängig ab. Ich könnte jetzt zB dahin gehen: http://www.arndt-bruenner.de/mathe/scripts/kubspline.htm. Da müsste ich dann pro Zeile 8 Werte eingeben und pro Zwischenzelle ein Abfrage starten und jeweils das Ergebnis übertragen. Da säße ich Weihnachten noch dran.
Nachfrage: Wie kriege ich denn Deinen Code in Exel zu laufen? Als benutzerdefinierte Formel? Und wie gebe ich die ein? Ich bin da nicht bewandert mit!
@ChrisL:
Du hast das schon richtig verstanden!
Aber das "Hinkriegen mit der horizontalen Variante" hat so seine Schwierigkeit. Da müssten alle Bezüge geändert werden, man müsste den Quellcode durchschauen und müsste was von VBA verstehen. Ist nicht so mein Ding. Leider.
sonnige Grüsse M


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Summenbildung Range/Cells"