Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender Navigationstipps
Inhaltsverzeichnis

Trend - fehlende Messwerte interpolieren ?

Trend - fehlende Messwerte interpolieren ?
18.02.2005 23:06:04
Johannes
Hallo Spezialisten,
ich habe folgendes Problem: in meiner Datei werden Messwerte eingetragen. Solagne alle Messwerte vorhanden sind ist alle OK, wenn mal einer fehlt, wird der mit Mittelwert aus Vorgänger und Nachfolger "geschätzt".
Wenn aber zwei oder mehr in Folge fehlen geht das so nicht mehr wegen fehler Zirkelbezug.
Siehe Datei: https://www.herber.de/bbs/user/18317.xls
Kann mir hierbei jemand helfen? Vielen Dank schon jetzt für Eure Bemühungen.
Gruß
Johannes

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Können auch mal 3 oder mehr Werte fehlen? o.w.T
Reinhard
Ja - denkbar
18.02.2005 23:16:04
Johannes
Hallo Reinhard,
ja, ist (leider) denkbar.
Johannes
Trend - fehlende Messwerte interpolieren ?
19.02.2005 10:17:48
Johannes
Da mein Problem als nicht mehr offen steht, es mir aber wichtig ist, setze ich es wieder auf offen.
Gruß
Johannes
AW: Trend - fehlende Messwerte interpolieren ?
Reinhard
Hi Johannes,
wäre eine VBA-Lösung auch in Ordnung?
Gruß
Reinhard
AW: Trend - fehlende Messwerte interpolieren ?
19.02.2005 14:56:59
Johannes
Hallo Reinhard,
ja klar gerne geht das auch
Gruß
Johannes
nachfrage
th.heinrich
hallo Johannes,
sind die Eingaben immer in Zehnerschritten?
gruss thomas
AW: nachfrage
19.02.2005 17:47:27
Johannes
Hallo Thomas,
leider nein
Gruß
Johannes
AW: Trend - fehlende Messwerte interpolieren ?
Reinhard
Hi Johannes,
Alt+F11, entweder Einfügen--Modul, oder wenn schon Modul1 esitiert, links in der Liste Doppelklick auf Modul1, nachstehenden Code der Kunktion interpolieren reinkopieren, vba-Editor schliessen.

Function interpolieren() As Double
Application.Volatile
Set Zelle = Range(Application.Caller.Address).Offset(0, -4)
If Zelle.Value <> "" Then
interpolieren = -Zelle.Value
Else
oben = Zelle.End(xlUp).Row 'erste belegte zeile oberhalb
unten = Zelle.End(xlDown).Row 'erste belegte Zeile unterhalb
interpolieren = -(Cells(oben, 1) + (Zelle.Row - oben) * (Cells(unten, 1) - Cells(oben, 1)) / (unten - oben))
End If
Set Zelle = Nothing
End Function

Benutzung der Funktion, wie eine normale Excelfunktion, also Einfügen--Funktion--Benutzerdefiniert.
Tabellenblattname: Tabelle1
A29   B29   C29    D29      E29    F29
29                       FRQ   Links
30   20               125 Hz     -20
31   30               250 Hz     -30
32   40               500 Hz     -40
33   50               750 Hz     -50
34   60                    1     -60
35   70                  1,5     -70
36   80                    2     -80
37                         3     -90
38                         4    -100
39  110                    6    -110
40  120                    8    -120
Benutzte Formeln:
E30:  =-A30
E31:  =interpolieren()
E32:  =interpolieren()
E33:  =interpolieren()
E34:  =interpolieren()
E35:  =interpolieren()
E36:  =interpolieren()
E37:  =interpolieren()
E38:  =interpolieren()
E39:  =interpolieren()
E40:  =-A40
Gruß
Reinhard
Tabelle wurde eingefügt mit Code von https://www.herber.de/forum/technik/messages/1226.html

Anzeige
function =interpolieren() Bitte Hilfe
19.02.2005 21:29:37
Johannes
Hallo Spezialisten,
ich habe von Reinhard diese super Function erhalten, Danke nochmal, allerdings arbeitet sie bei mehr als einer Spalte (siehe Datei) nicht richtig - was habe ich hier in der Umsetzung von Reinhards Idee falsch gemacht?
https://www.herber.de/bbs/user/18359.xls
Wenn mir jemand hier helfen könnte? Herzlichen Dank schon jetzt.
Gruß
Johannes
AW: function =interpolieren() Bitte Hilfe
Reinhard
Hi Johannes,
in der Ausgangsdatei wurde die Funktion in Spalte E aufgerufen und bezog sich auf Werte in Spalte A, also -4, du hast das ja korekt umgesetzt für die F-Spalte und das auf -5 erhöht.
Allerdings hing sich die Funktion daran auf, dass ich bei oben und unten ja in Spalte 1 suchte, deshalb klappte es in Spalte F aber in G,H usw nicht mehr, also machte ich aus der 1 die Zelle.Column, also die Spalte wo die (mit -5 bezogen auf die Aufrufspalte) versetzte "Zelle" ihre Spalte hat.
Oder so ähnlich, jedenfalls klappts jetzt wirst schon verstehen wieso jetzt.
Gruß
Reinhard
die Datei: https://www.herber.de/bbs/user/18360.xls
der Code in Modul1:

Function interpolieren() As Double
Application.Volatile
Set Zelle = Range(Application.Caller.Address).Offset(0, -5)
If Zelle.Value <> "" Then
interpolieren = -Zelle.Value
Else
oben = Zelle.End(xlUp).Row 'erste belegte zeile oberhalb
unten = Zelle.End(xlDown).Row 'erste belegte Zeile unterhalb
interpolieren = -(Cells(oben, Zelle.Column) + (Zelle.Row - oben) * (Cells(unten, Zelle.Column) - Cells(oben, Zelle.Column)) / (unten - oben))
End If
Set Zelle = Nothing
End Function

Tabellenblattname: Auswertung
A  | B  | C  | D  |   E    |   F   |   G   |   H   |   I   | J |
1|    |    |    |    |        |       |       |       |       |   |
2|    |    |    |    |    FRQ | Links | Links | Links | Links |   |
3| 10 | 40 | 50 | 60 | 125 Hz |   -10 |   -40 |   -50 |   -60 |   |
4|    |    |    |    | 250 Hz |   -15 |   -43 |   -53 |   -63 |   |
5|    |    |    |    | 500 Hz |   -20 |   -46 |   -56 |   -66 |   |
6|    |    |    |    | 750 Hz |   -25 |   -49 |   -59 |   -69 |   |
7|    |    |    |    |      1 |   -30 |   -52 |   -62 |   -72 |   |
8|    |    |    |    |    1,5 |   -35 |   -55 |   -65 |   -75 |   |
9|    |    |    |    |      2 |   -40 |   -58 |   -68 |   -78 |   |
10|    |    |    |    |      3 |   -45 |   -61 |   -71 |   -81 |   |
11|    |    |    |    |      4 |   -50 |   -64 |   -74 |   -84 |   |
12|    |    |    |    |      6 |   -55 |   -67 |   -77 |   -87 |   |
13| 60 | 70 | 80 | 90 |      8 |   -60 |   -70 |   -80 |   -90 |   |
Benutzte Formeln:
A3:  =WENN(Eingabe!A3<>"";Eingabe!A3;"")
A4:  =WENN(Eingabe!A4<>"";Eingabe!A4;"")
A5:  =WENN(Eingabe!A5<>"";Eingabe!A5;"")
A6:  =WENN(Eingabe!A6<>"";Eingabe!A6;"")
A7:  =WENN(Eingabe!A7<>"";Eingabe!A7;"")
A8:  =WENN(Eingabe!A8<>"";Eingabe!A8;"")
A9:  =WENN(Eingabe!A9<>"";Eingabe!A9;"")
A10:  =WENN(Eingabe!A10<>"";Eingabe!A10;"")
A11:  =WENN(Eingabe!A11<>"";Eingabe!A11;"")
A12:  =WENN(Eingabe!A12<>"";Eingabe!A12;"")
A13:  =WENN(Eingabe!A13<>"";Eingabe!A13;"")
B3:  =WENN(Eingabe!B3<>"";Eingabe!B3;"")
B4:  =WENN(Eingabe!B4<>"";Eingabe!B4;"")
B5:  =WENN(Eingabe!B5<>"";Eingabe!B5;"")
B6:  =WENN(Eingabe!B6<>"";Eingabe!B6;"")
B7:  =WENN(Eingabe!B7<>"";Eingabe!B7;"")
B8:  =WENN(Eingabe!B8<>"";Eingabe!B8;"")
B9:  =WENN(Eingabe!B9<>"";Eingabe!B9;"")
B10:  =WENN(Eingabe!B10<>"";Eingabe!B10;"")
B11:  =WENN(Eingabe!B11<>"";Eingabe!B11;"")
B12:  =WENN(Eingabe!B12<>"";Eingabe!B12;"")
B13:  =WENN(Eingabe!B13<>"";Eingabe!B13;"")
C3:  =WENN(Eingabe!C3<>"";Eingabe!C3;"")
C4:  =WENN(Eingabe!C4<>"";Eingabe!C4;"")
C5:  =WENN(Eingabe!C5<>"";Eingabe!C5;"")
C6:  =WENN(Eingabe!C6<>"";Eingabe!C6;"")
C7:  =WENN(Eingabe!C7<>"";Eingabe!C7;"")
C8:  =WENN(Eingabe!C8<>"";Eingabe!C8;"")
C9:  =WENN(Eingabe!C9<>"";Eingabe!C9;"")
C10:  =WENN(Eingabe!C10<>"";Eingabe!C10;"")
C11:  =WENN(Eingabe!C11<>"";Eingabe!C11;"")
C12:  =WENN(Eingabe!C12<>"";Eingabe!C12;"")
C13:  =WENN(Eingabe!C13<>"";Eingabe!C13;"")
D4:  =WENN(Eingabe!D4<>"";Eingabe!D4;"")
D5:  =WENN(Eingabe!D5<>"";Eingabe!D5;"")
D6:  =WENN(Eingabe!D6<>"";Eingabe!D6;"")
D7:  =WENN(Eingabe!D7<>"";Eingabe!D7;"")
D8:  =WENN(Eingabe!D8<>"";Eingabe!D8;"")
D9:  =WENN(Eingabe!D9<>"";Eingabe!D9;"")
D10:  =WENN(Eingabe!D10<>"";Eingabe!D10;"")
D11:  =WENN(Eingabe!D11<>"";Eingabe!D11;"")
D12:  =WENN(Eingabe!D12<>"";Eingabe!D12;"")
D13:  =WENN(Eingabe!D13<>"";Eingabe!D13;"")
F3:  =-A3
F4:  =interpolieren()
F5:  =interpolieren()
F6:  =interpolieren()
F7:  =interpolieren()
F8:  =interpolieren()
F9:  =interpolieren()
F10:  =interpolieren()
F11:  =interpolieren()
F12:  =interpolieren()
F13:  =-A13
G3:  =-B3
G4:  =interpolieren()
G5:  =interpolieren()
G6:  =interpolieren()
G7:  =interpolieren()
G8:  =interpolieren()
G9:  =interpolieren()
G10:  =interpolieren()
G11:  =interpolieren()
G12:  =interpolieren()
G13:  =-B13
H3:  =-C3
H4:  =interpolieren()
H5:  =interpolieren()
H6:  =interpolieren()
H7:  =interpolieren()
H8:  =interpolieren()
H9:  =interpolieren()
H10:  =interpolieren()
H11:  =interpolieren()
H12:  =interpolieren()
H13:  =-C13
I3:  =-D3
I4:  =interpolieren()
I5:  =interpolieren()
I6:  =interpolieren()
I7:  =interpolieren()
I8:  =interpolieren()
I9:  =interpolieren()
I10:  =interpolieren()
I11:  =interpolieren()
I12:  =interpolieren()
I13:  =-D13
Gruß
Reinhard
Tabelle wurde eingefügt mit Code von https://www.herber.de/forum/technik/messages/1226.html 

Anzeige
ich bin beeindruckt - herzlichen Dank o.w.T.
20.02.2005 00:00:31
Johannes

206 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige