Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Datumsangaben ergänzen/interpolieren
#1
Hallo liebe Leute,

Ich denke mein Problem wird nicht ohne weiteres möglich sein, aber ich wurde schon oft eines besseren belehrt.  :19:

Ich habe eine Tabelle mit verschiedenen Datumsangaben in Spalte A (mit unterschiedlichen Tagen Abstand) und einen dazugehörigen Wert in Spalte B. Nun möchte ich irgendwie, dass alle Datumsangaben die fehlen, automatisch hinzufügt werden und am besten noch die Werte in Spalte B linear interpoliert werden

Also aus:

01.01.2016 | 2
04.01.2016 | 8

soll werden:

01.01.2016 | 2
02.01.2016 | 4
03.01.2016 | 6
04.01.2016 | 8

Gibts da irgendeine Möglichkeit? Unendlichen Dank im vorraus, ihr seid einfach klasse.

Liebe Grüße,
Tiger
Antworten Top
#2
Dafür gibt es sogar mehrere Möglichkeiten:
1. Formellösung - dafür braucht es einen der Formelcracks hier
2. Power Query - bin ich auch nicht der richtige Ansprechpartner
3. VBA - da kann ich helfen:


Code:
Sub Interpolieren()
Dim i As Long, j As Long
Dim Zeilen As Integer
Dim Differenz As Double, Wert As Double

With Sheets("Tabelle1")
   For i = .Cells(.Rows.Count, 1).End(xlUp).Row To 3 Step -1
       Zeilen = .Cells(i, 1) - .Cells(i - 1, 1) - 1
       Differenz = .Cells(i, 2) - .Cells(i - 1, 2)
       Wert = Differenz / (Zeilen + 1)
       If Zeilen >= 1 Then
           .Rows(i & ":" & i + Zeilen - 1).Insert shift:=xlDown
           For j = i To i + Zeilen
               .Cells(j, 1) = .Cells(j - 1, 1) + 1
               .Cells(j, 2) = .Cells(j - 1, 2) + Wert
           Next j
       End If
   Next i
End With

End Sub
Schöne Grüße
Berni
Antworten Top
#3
Hallo Tiger,

markiere die 4 Zellen und starte folgendes Makro:
Sub Auffuellen()
Dim varQ As Variant
Dim varZ As Variant
Dim i As Long
Dim dblW As Double
varQ = Selection.Value
ReDim varZ(1 To varQ(2, 1) - varQ(1, 1) + 1, 1 To 2)
dblW = (varQ(2, 2) - varQ(1, 2)) / (UBound(varZ) - 1)
varZ(1, 1) = varQ(1, 1)
varZ(1, 2) = varQ(1, 2)
For i = 2 To UBound(varZ)
varZ(i, 1) = varZ(i - 1, 1) + 1
varZ(i, 2) = varZ(i - 1, 2) + dblW
Next i
Selection.Cells(1, 1).Resize(UBound(varZ), 2) = varZ
End Sub
Gruß Uwe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste