Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
188to192
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
188to192
188to192
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

500 Konstanten

500 Konstanten
04.12.2002 12:44:21
Katina
Hallo ExcelFreunde!

Ich möchte gerne 500 Konstanten in einer Function unterbringen, möglichst in einem Array, damit der Schreibaufwand nicht so hoch wird. Ich benötige die Hinterlegung dieser Konstanten dazu, um die Dichte von Wasser in Abhängigkeit von Druck und Temperatur berechnen/ interpolieren zu können. Ich habe dazu schon ein Programm geschrieben (siehe unten). Es funktioniert leider nur bis Konstante 188, dann ist der Speicher des Arrays voll.
Was kann ich als nächstes machen?

Gruß
Katina

Function DichteWasser(TWert, pWert)
Dim XT, Xp, Zähler, Feld
Dim TSpalte As Integer, pZeile As Integer
Dim EingangsvariableT As Single, Eingangsvariablep As Single
Dim iiT As Integer, iip As Integer
Dim MW1 As Double, MW2 As Double, MW3 As Double, MW4 As Double, MW12 As Double, MW34 As Double
Dim T1 As Integer, T2 As Integer, p1 As Integer, p2 As Integer

EingangsvariableT = TWert
Eingangsvariablep = pWert
'Messwertbereiche von T und p
XT = Array(0, 25, 50, 75, 100, 150, 200, 250, 300, 350, 400, 450, 500, 600, 700, 800, 900, 1000)
Xp = Array(1, 5, 10, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 600, 700, 800, 900, 1000)
Zähler = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)

'Druckzeile
If Eingangsvariablep < Xp(0) Then
pZeile = Zähler(0)
p1 = Xp(0)
p2 = Xp(1)
Else
For iip = 0 To 17
If Eingangsvariablep < Xp(iip) Then
pZeile = Zähler(iip - 1)
p2 = Xp(iip)
p1 = Xp(iip - 1)
iip = 17
End If
Next iip
End If

If Eingangsvariablep >= Xp(17) Then
pZeile = Zähler(16)
p1 = Xp(16)
p2 = Xp(17)
End If

'Temperaturspalte
If EingangsvariableT < XT(0) Then
TSpalte = Zähler(0)
T2 = XT(0)
T1 = XT(1)
Else
For iiT = 0 To 17
If EingangsvariableT < XT(iiT) Then
TSpalte = Zähler(iiT - 1)
T1 = XT(iiT)
T2 = XT(iiT - 1)
iiT = 17
End If
Next iiT
End If

If EingangsvariableT >= XT(17) Then
TSpalte = Zähler(16)
T2 = XT(16)
T1 = XT(17)
End If

'Dichte von Wasser in kg/m³
Feld = Array(999.83, 997.06, 988.03, 974.86, 0.5896, 0.5164, 0.4604, 0.4156, 0.379, 0.3483, 0.3223, 0.2999, 0.2805, 0.2483, 0.2227, 0.2019, 0.1847, 0.1702, _
1000, 997.24, 988.2, 975.04, 958.58, 917.07, 2.3537, 2.1083, 1.9137, 1.754, 1.62, 1.5056, 1.4066, 1.2437, 1.1149, 1.0105, 0.924, 0.8512, _
1000.3, 997.47, 988.42, 975.26, 958.81, 917.36, 4.8566, 4.2984, 3.8771, 3.5402, 3.2617, 3.0263, 1.8241, 2.4932, 2.2331, 2.0228, 1.8491, 1.703, 1000.8, 997.92, 988.86, 975.71, 959.28, 917.92, 865.08, 8.9757, 7.9713, 7.2169, 6.6142, 6.1153, 5.6926, 5.0101, 4.4794, 4.0531, 3.7023, 3.4082, _
1001.3, 998.36, 989.29, 976.15, 959.75, 918.49, 865.85, 14.172, 12.326, 11.047, 10.065, 9.2708, 8.6076, 7.5512, 6.739, 6.0908, 5.5597, 5.1155, _
1001.8, 998.81, 989.73, 976.59, 960.22, 919.05, 866.6, 799.1, 17, 15.052, 13.623, 12.497, 11.571, 10.117, 9.0121, 8.136, 7.4211, 6.825, 1002.3, 999.26, 990.16, 977.03, 960.68, 919.61, 867.35, 800.27, 22.073, 19.255, 17.299, 15.798, 14.586, 12.709, 11.299, 10.189, 9.2865, 8.5364, _
1002.8, 999.7, 990.59, 977.47, 961.14, 920.17, 868.1, 801.42, 27.662, 23.687, 21.102, 19.179, 17.653, 15.326, 13.599, 12.249, 11.156, 10.25, _
1003.3, 1000.1, 991.02, 977.91, 961.6, 920.72, 868.84, 802.56, 33.944, 28.384, 25.045, 22.646, 20.776, 17.97, 15.914, 14.316, 13.029, 11.965, 1003.8, 1000.6, 991.45, 978.35, 962.06, 921.28, 869.57, 803.69, 41.226, 33.394, 29.143, 26.202, 23.957, 20.642, 18.242, 16.391, 14.907, 13.682, _
1004.3, 1001, 991.88, 978.78, 962.52, 921.83, 870.31, 804.8, 713.36, 38.776, 33.411, 29.855, 27.198, 23.341, 20.584, 18.474, 16.788, 15.401, _
1004.8, 1001.5, 992.31, 979.22, 962.98, 922.38, 871.03, 805.9, 715.58, 44.611, 37.867, 33.611, 30.503, 26.068, 22.941, 20.564, 18.673, 17.122, 1007.3, 1003.7, 994.43, 981.37, 965.25, 925.08, 874.6, 811.22, 725.87, 87.191, 63.889, 54.2, 48.077, 40.154, 34.943, 31.124, 28.153, 25.751, _
1009.7, 1005.8, 996.53, 983.5, 967.48, 927.74, 878.06, 816.28, 735.02, 600.78, 100.54, 78.732, 67.711, 55.039, 47.319, 41.871, 37.725, 34.42, _
1012.1, 1008, 998.6, 985.61, 969.68, 930.34, 881.42, 821.11, 743.32, 625.74, 166.63, 109.09, 89.904, 70.794, 60.08, 52.803, 47.385, 43.126, 1014.5, 1010.1, 1000.7, 987.68, 971.86, 932.9, 884.7, 825.73, 750.93, 644.27, 358.05, 148.45, 115.26, 87.481, 73.234, 63.919, 57.131, 51.866, _
1016.9, 1012.2, 1002.7, 989.74, 974, 935.41, 887.89, 830.17, 757.99, 659.3, 474.89, 201.63, 144.43, 105.15, 86.779, 75.214, 66.958, 60.638, _
1019.2, 1014.3, 1004.7, 991.77, 976.12, 937.88, 891, 834.44, 764.58, 672.1, 523.67, 270.91, 177.97, 123.81, 100.71, 86.682, 76.863, 69.439, 1021.5, 1016.4, 1006.7, 993.78, 978.21, 940.31, 894.04, 838.56, 770.78, 683.33, 554.78, 343.37, 215.87, 143.44, 115.01, 98.312, 86.841, 78.266, _
1023.8, 1018.4, 1008.7, 995.77, 980.27, 942.69, 897.02, 842.54, 776.64, 693.39, 577.99, 402.28, 256.95, 163.99, 129.64, 110.09, 96.883, 87.117, _
1028.3, 1022.4, 1012.6, 999.68, 984.33, 947.36, 902.77, 850.13, 787.51, 710.93, 612.45, 479.87, 338.44, 207.2, 159.77, 134.02, 117.13, 104.87, 1032.7, 1026.4, 1016.4, 1003.5, 988.3, 951.89, 908.3, 857.29, 797.44, 726, 638.3, 528.62, 405.76, 251.73, 190.65, 158.3, 137.51, 122.65, _
1037, 1030.3, 1020.1, 1007.3, 992.18, 956.29, 913.61, 864.08, 806.62, 739.31, 659.27, 563.69, 456.99, 295.45, 221.74, 182.72, 157.94, 140.41, _
1041.2, 1034.1, 1023.8, 1011, 995.98, 960.58, 918.75, 870.54, 815.18, 751.29, 677.05, 591.14, 496.53, 336.53, 252.48, 207.03, 178.29, 158.08, 1045.3, 1037.8, 1027.4, 1014.6, 999.7, 964.75, 923.71, 876.71, 823.32, 762.21, 692.58, 613.8, 528.21, 373.93, 282.36, 231.03, 198.45, 175.61)

'Auslesen von 4 Werten aus der Messwertmatrix zwischen denen der gesuchte Wert liegt
MW1 = Feld(18 * pZeile + TSpalte)
MW2 = Feld(18 * pZeile + TSpalte - 1)
MW3 = Feld(18 * (pZeile - 1) + TSpalte)
MW4 = Feld(18 * (pZeile - 1) + TSpalte - 1)

'Interpolation der 4 Temperaturmesswerte
MW12 = MW2 + ((MW1 - MW2) * (T2 - TWert) / (T2 - T1))
MW34 = MW4 + ((MW3 - MW4) * (T2 - TWert) / (T2 - T1))

'2.Interpolation über die Druckwerte = Ergebnis
DichteWasser = MW34 + ((MW12 - MW34) * (p1 - pWert) / (p1 - p2))

End Function

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: 500 Konstanten
04.12.2002 12:55:08
Steffen D
Hallo,

wie wärs wenn du die Konstanten in einer Tabelle ablegen würdest, und dann dieses Sheet einfach ausblenden!?

Gruss
Steffen

Re: 500 Konstanten
04.12.2002 12:57:12
Steffen D
übrigens bei Excel 2000 geht es anscheinend, bei mir zumindest!
er speichert dann alle 450 Werte in dieses Array "Feld"


Gruss
Steffen

wirklich interessant
04.12.2002 14:19:27
Katina
Hallo Steffen!

Das finde ich aber interssant, dass es unter 2000 läuft! Leider soll es auf meiner Arbeitsstelle Anwendung finden und ich kann hier nicht einfach die Excelversion updaten.
Die Idee, die Konstanten in einer Tabelle zu hinterlegen hatte ich auch schon. So habe ich die Aufgabe zuerst gelöst. Das heißt, diese Datei unabhängige Funktion sollte eine Verbesserung werden.

Aber trotzdem Danke für den Tip mit Excel2000 !
Katina

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige