Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Volumenberechnung liegender Zylinder

1,361 views
Skip to first unread message

Klaus Fierenz

unread,
Jan 3, 2003, 4:38:52 PM1/3/03
to
Hallo zusammen,

ich habe im Netz leider nichts passendes gefunden, wer kann mir halfen?

Wie kann ich in Excel über das Tabellenblatt oder eine in VBA erstellte
Funktion das Volumen eines liegenden Zylinders berechnen?
Gegeben sind: der Radius / Durchmesser in m, die Länge des Zylinders in m
und die Füllhöhe ebenfalls in m.

Danke im voraus für Eure Hilfe

Klaus


Boris

unread,
Jan 3, 2003, 5:13:38 PM1/3/03
to
Hallo Klaus,

aus dem Netz:

Formeln zum Berechnen eines Zylinders:
Grundfläche = pi * Radius²
Volumen = Grundfläche * Höhe
Mantelfläche = Umfang * Höhe
Oberfläche = 2 * Grundfläche + Mantelfläche

Demzufolge ist das Volumen zu berechnen mit:
=PI()*Radius^2*Höhe

----
Gruß Boris

>-----Originalnachricht-----

>.
>

Albrecht Koch

unread,
Jan 3, 2003, 5:33:00 PM1/3/03
to
Hi Boris,

du hast schon gelesen, dass der Zylinder _liegt_ und nicht _steht_ ?


Grüße
Albrecht


"Boris" <borista...@t-online.de> schrieb im Newsbeitrag
news:038901c2b375$5db60270$d4f82ecf@TK2MSFTNGXA11...

Boris

unread,
Jan 3, 2003, 6:18:04 PM1/3/03
to
Hallo Albrecht,

dann entschuldige ich mich für meine Antwort und habe
demzufolge den Betreff geändert.

-------
Gruß Boris

>-----Originalnachricht-----

>.
>

Ingo Albers

unread,
Jan 3, 2003, 6:40:03 PM1/3/03
to

"Klaus Fierenz" <F.K...@web.de> schrieb:

> Wie kann ich in Excel über das Tabellenblatt oder eine in VBA erstellte
> Funktion das Volumen eines liegenden Zylinders berechnen?
> Gegeben sind: der Radius / Durchmesser in m, die Länge des Zylinders in m
> und die Füllhöhe ebenfalls in m.

Dazu muss natuerlich erstmal mathematisch klar sein, wie das
Volumen berechnet wird:

Gesamtvolumen: V
Fuellhoehe: H
Radius: R
Laenge: L

V(H)=L*A(H)

A(H) ist die betrachtete Grundflaeche, abhaengig von der Fuellhoehe.


Fallunterscheidung:

ist H<R, so gilt:
A(H)=1/2*Pi*R² - [(R-H)*sqr(R²-(R-H)²)-R²*arcsin((R-H)/R)]

ist H>R, so gilt:
A(H)=1/2*Pi*R² + [(H-R)*sqr(R²-(H-R)²)+R²*arcsin((H-R)/R)]

So, das muss in eine Formel mit WENN (bzw. if) gepackt werden
(wegen der Fallunterscheidung).

Der Arcussinus ist so nicht vorhanden, also muss eine abgeleitete
mathematische Funktion in Excel verwendet werden, es gilt:

Arkussinus(X) = Atn(X / Sqr(-X * X + 1))

Das Ganze unter der Annahme, dass fuer das Rohr gilt:
Aussendurchmesser=Innendurchmesser (also Wandstaerke Null).

Bei Gelegenheit packe ich das mal in eine Funktion.

Gruss
::Ingo::

PS: Formel ohne Gewaehr, da nur eben schnell skizziert.


Ingo Albers

unread,
Jan 3, 2003, 7:40:51 PM1/3/03
to

Ich selbst <IngoA...@gmx.de> schrieb


> Fallunterscheidung:
>
> ist H<R, so gilt:
> A(H)=1/2*Pi*R² - [(R-H)*sqr(R²-(R-H)²)-R²*arcsin((R-H)/R)]

^
kleine Korrektur:
A(H)=1/2*Pi*R² - [(R-H)*sqr(R²-(R-H)²)+R²*arcsin((R-H)/R)]

> ist H>R, so gilt:
> A(H)=1/2*Pi*R² + [(H-R)*sqr(R²-(H-R)²)+R²*arcsin((H-R)/R)]

Gruss
::Ingo::

Ingo Albers

unread,
Jan 3, 2003, 7:52:03 PM1/3/03
to

Schon wieder ich selbst <IngoA...@gmx.de> schrieb:

> Bei Gelegenheit packe ich das mal in eine Funktion.

So, die (korrigierte) Berechnungsvorschrift habe ich mal in
eine VBA-Funktion gesteckt, die man nun mit den drei
Parametern Fuellhoehe, Radius und Laenge in Excel aufrufen
kann.
Ich bin kein VBA-Experte, deswegen ist der Code eher Quick n Dirty.
Da koennen sich jetzt die Profis auslassen ;-)
Die Berechnung sollte so jedenfalls stimmen.

Gruss
::Ingo::

Code:


Function Vol_Zyl_liegend(Fuellhoehe As Double, Radius As Double, Laenge As Double)

Const pi As Double = 3.141592653

Dim H As Double
Dim R As Double
Dim L As Double

Dim Arg As Double
Dim Arcsin_Arg As Double

H = Fuellhoehe
R = Radius
L = Laenge

If R <= 0 Then
MsgBox "Ihr Radius ist kleiner Null"
Vol_Zyl_liegend = 0
Exit Function
End If

If L <= 0 Then
MsgBox "Ihre Laenge ist kleiner Null"
Vol_Zyl_liegend = 0
Exit Function
End If

If H <= 0 Then
MsgBox "Ihre Fuellhoehe ist kleiner Null"
Vol_Zyl_liegend = 0
Exit Function
ElseIf H > 2 * R Then
MsgBox "Ihre Fuellhoehe ist groesser als der Durchmesser"
Vol_Zyl_liegend = 0
Exit Function
ElseIf H = R Then
'Grundflaeche ist exakt der Halbkreis
Vol_Zyl_liegend = 1 / 2 * L * pi * R * R
ElseIf H = 2 * R Then
'Grundflaeche ist exakt der Vollkreis
Vol_Zyl_liegend = L * pi * R * R
ElseIf H < R Then
'ist H<R, so gilt:
'A(H) = 1 / 2 * Pi * R² - [(R-H)*sqr(R²-(R-H)²)+R²*arcsin((R-H)/R)]
'Festlegen Argument des Arcsin
Arg = (R - H) / R
'Zwischenberechnung Arcsin
Arcsin_Arg = Atn(Arg / Sqr(-Arg * Arg + 1))
'Volumenberechnung
Vol_Zyl_liegend = L * (1 / 2 * pi * R * R - _
((R - H) * Sqr(R * R - (R - H) * (R - H)) + R * R * Arcsin_Arg))
ElseIf H > R Then
'ist H>R, so gilt:
'A(H) = 1 / 2 * Pi * R² + [(H-R)*sqr(R²-(H-R)²)+R²*arcsin((H-R)/R)]
'Festlegen Argument des Arcsin
Arg = (H - R) / R
'Zwischenberechnung Arcsin
Arcsin_Arg = Atn(Arg / Sqr(-Arg * Arg + 1))
'Volumenberechnung
Vol_Zyl_liegend = L * (1 / 2 * pi * R * R + _
((H - R) * Sqr(R * R - (H - R) * (H - R)) + R * R * Arcsin_Arg))
End If

End Function

Hans Hofmann

unread,
Jan 4, 2003, 5:48:57 AM1/4/03
to
On Sat, 4 Jan 2003 01:52:03 +0100, "Ingo Albers" <IngoA...@gmx.de>
wrote:

>
>Schon wieder ich selbst <IngoA...@gmx.de> schrieb:
>

Jetzt schreib ich mal dazwischen, damit Du nicht immer mit Dir selbst
reden musst ;-). Ich hab Deine Lösung nicht durchdacht, eine
Fallunterscheidung ist aber wohl nicht notwendig. Ich habe mir folge
Formel zurecht gelegt:

d-Durchmesser, l-Länge, h-Füllhöhe
=(d*d/4*ARCCOS(2*(d/2-h)/d)+WURZEL(d*d/4-(h-d/2)*(h-d/2))*(h-d/2))*l

Die kommt ohne aus. Ist aber schon lang her...

Gruß HW

Ingo Albers

unread,
Jan 4, 2003, 7:51:19 AM1/4/03
to
Hallo!

"Hans Hofmann" <ha...@chefmail.de> schrieb

> Jetzt schreib ich mal dazwischen, damit Du nicht immer mit Dir selbst
> reden musst ;-). Ich hab Deine Lösung nicht durchdacht, eine
> Fallunterscheidung ist aber wohl nicht notwendig. Ich habe mir folge
> Formel zurecht gelegt:
>
> d-Durchmesser, l-Länge, h-Füllhöhe
> =(d*d/4*ARCCOS(2*(d/2-h)/d)+WURZEL(d*d/4-(h-d/2)*(h-d/2))*(h-d/2))*l
>
> Die kommt ohne aus. Ist aber schon lang her...


Stimmt, es geht auch ohne Fallunterscheidung, s.u.


Gruss
::Ingo::

Function Vol_Zyl_liegend(Fuellhoehe As Double, Radius As Double, Laenge As Double)

Const pi As Double = 3.141592653

Dim H As Double
Dim R As Double
Dim L As Double

Dim Arg As Double
Dim Arcsin_Arg As Double

H = Fuellhoehe
R = Radius
L = Laenge

If R <= 0 Then

MsgBox "Ihr Radius ist kleiner oder gleich Null"


Vol_Zyl_liegend = 0
Exit Function
End If

If L <= 0 Then

MsgBox "Ihre Laenge ist kleiner oder gleich Null"


Vol_Zyl_liegend = 0
Exit Function
End If

If H < 0 Then


MsgBox "Ihre Fuellhoehe ist kleiner Null"
Vol_Zyl_liegend = 0
Exit Function

ElseIf H = 0 Then


Vol_Zyl_liegend = 0
Exit Function
ElseIf H = R Then
'Grundflaeche ist exakt der Halbkreis
Vol_Zyl_liegend = 1 / 2 * L * pi * R * R
ElseIf H = 2 * R Then
'Grundflaeche ist exakt der Vollkreis
Vol_Zyl_liegend = L * pi * R * R
ElseIf H > 2 * R Then
MsgBox "Ihre Fuellhoehe ist groesser als der Durchmesser"
Vol_Zyl_liegend = 0
Exit Function
Else

Klaus Fierenz

unread,
Jan 4, 2003, 8:54:55 AM1/4/03
to
Danke für Eure Hilfe. Werde versuchen das ganze noch zu verstehen.

Viele Grüße
Klaus


Josef Gietzen

unread,
Jan 4, 2003, 9:03:55 AM1/4/03
to
Hallo Hans,

Hans Hofmann schrieb:

> Jetzt schreib ich mal dazwischen, damit Du nicht immer mit Dir selbst
> reden musst ;-). Ich hab Deine Lösung nicht durchdacht, eine
> Fallunterscheidung ist aber wohl nicht notwendig. Ich habe mir folge
> Formel zurecht gelegt:
>
> d-Durchmesser, l-Länge, h-Füllhöhe
> =(d*d/4*ARCCOS(2*(d/2-h)/d)+WURZEL(d*d/4-(h-d/2)*(h-d/2))*(h-d/2))*l
>
> Die kommt ohne aus. Ist aber schon lang her...
>

du hast vollkommen recht. Klaus möchte sich wohl eine Tabelle für seinen
Heizöltank aufbauen und in dieser schnell die Ölmenge ablesen.
Da ist es einfacher in einer Spalte die Füllhöhe in cm anzugeben und
in der Nachbarsoalte "einmal" die Formel runter zu kopieren. Schon
stimmts ein für alle Mal.

Mit der Funktion müßte er immer wieder neu rechnen.

So habe ich es jedenfalls für meinen Heizöltank gemacht, wo ich mit
einem Peilstab die Füllhöhe in cm ablesen kann. Neben dem Heizkessel
hängt die einmal ausgedruckte und eingeschweißte Tanktabelle.

(Es hat natürlich einen kleinen Schönheitsfehler, da die Tankböden
nicht plan sondern gewölbt sind. und dadurch die tatsächliche Menge
geringfügig höher ausfällt - mein "Sicherheitsfaktor, ha, ha)

tschüss, Josef

Peter Haserodt

unread,
Jan 6, 2003, 3:26:43 PM1/6/03
to
Hi,
dann leg dich hin und gucks von da an.
Also ein liegender Zylinder ist genau das gleiche wie ein stehender. Nur um
90° gedreht.
Kann das denn so schwer sein ???
Als Tip: Füllhöhe gleich dem Ding was man als Kreis bezeichnet und oben und
unten vom Zylinder ist.

Gruss Peter

Ich glaube dass Boris seine Entschuldigung ironisch gemeint hat ;-)

"Albrecht Koch" <alb...@gmx.de> schrieb im Newsbeitrag
news:av5330$bma6q$1...@ID-37166.news.dfncis.de...

Thomas Ramel

unread,
Jan 6, 2003, 7:28:04 PM1/6/03
to
Grüezi Peter

Peter Haserodt schrieb:


>
> dann leg dich hin und gucks von da an.
> Also ein liegender Zylinder ist genau das gleiche wie ein stehender. Nur um
> 90° gedreht.

Naja ein Zylinder der liegt wird halt nicht von vorne nach hinten voll,
sondern auch von unten nach oben.
Er besteht also nicht aus quasi gestapelten Kreisflächen, sondern die
Füllhöhe ertspricht hier der Höhe des Kreisabschnittes. Also muss diese
Fläche berechent werden und mit der (in diesem Fall) Länge des Zylinders
multipliziert.

> Kann das denn so schwer sein ???

Ganz so einfach 'liegt' es hier nicht ;-)

--
Mit freundlichen Grüssen

Thomas Ramel
- MVP für Microsoft-Excel -

Zeki Aslan

unread,
Jan 10, 2003, 4:05:58 AM1/10/03
to
Servus NG,

Ingo hat die Funktion deklariert.
Dazu noch einige Fragen:

1- Was muss ich in VBA noch ergänzen, um das Programm lauffähig zu machen
und über einen Button zu
starten?
2- Wie kann ich mehrere Ergebnisse in Abhängigkeit von der Füllhöhe
ausgeben?
Ich nehmen an, durch relativen Zellbezug und Schleife. Dabei soll die
Füllhöhe in Intervallen steigen. Aus den Ergebnissen könnte man dann als
f(h) ein ansehnliches Diagramm erstellen.

Danke und viele Grüße, Zeki

Ingo Albers <IngoA...@gmx.de> schrieb in im Newsbeitrag:
av6lae$6vr$1...@nets3.rz.RWTH-Aachen.DE...

Thomas Ramel

unread,
Jan 10, 2003, 4:48:18 AM1/10/03
to
Grüezi Zeki

Zeki Aslan schrieb:


>
> 1- Was muss ich in VBA noch ergänzen, um das Programm lauffähig zu machen
> und über einen Button zu
> starten?

Kopiere die Funktion in ein Modul der Arbeitsmappe.
Nun kannst Du sie in Excel über den Funktionsassistenten in der Rubrik
'Benutzerdefiniert' anwählen und genauso einsetzen wie eine 'normale'
Excel-Funktion.
Eine Funktion wird nict wie eine Sub über einen Button gestartet, sondern
(in der Regel) in einer Zelle als Formel eingesetzt.

> 2- Wie kann ich mehrere Ergebnisse in Abhängigkeit von der Füllhöhe
> ausgeben?

Erstelle eine Liste (als Spalte) mit den gewünschten Füllhöhen und benutze
in den Nebenzellen die Funktion; so erzeugtst Du eine Quelle mit Daten für
ein Diagramm.

Zeki Aslan

unread,
Jan 10, 2003, 6:54:10 AM1/10/03
to
servus thomas,

wow, schon wieder was dazugelernt.

vielen dank, zeki

Thomas Ramel

unread,
Jan 10, 2003, 8:26:32 AM1/10/03
to
Grüezi Zeki

Zeki Aslan schrieb:


> servus thomas,
>
> wow, schon wieder was dazugelernt.
>
> vielen dank, zeki

Aber gerne doch!

Danke für die Rückmeldung.

0 new messages