Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Eindimensionales Array
zurück: Auto Paste option möglich? weiter: VBA Schleife Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Offen Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Face
Im Profil kannst Du frei den Rang ändern


Verfasst am:
30. Aug 2012, 14:47
Rufname:

Eindimensionales Array - Eindimensionales Array

Nach oben
       Version: Office 2007

Hallo,

vorweg das ist mein erster Beitrag, also weiß ich nicht ob ich hier richtig bin...

ich habe folgendes Problem:

Ich möchte, dass die berechneten werte u1,u2 an die Stelle "i" im jeweiligen Datenfeld landen. Die Berechnung klappt auch wunderbar, nur der letzte Schritt feld_u1(i) = u1 bzw. feld_u2(i) = u2 funktioniert nicht.

Wäre nett wenn mir jemand helfen könnte...


Dim feld_u1() As Long
Dim feld_u2() As Long


Do While f <= fmax

wn = 2 * Application.Pi * f
wd = wn * Sqr(1 - zeta ^ 2)


For i = 2 To n

tau = r.Cells(i, 1) - r.Cells(i - 1, 1)
t = r.Cells(i, 1)
p = r.Cells(i, 2)

u1 = (1 / (m * wd)) * Exp(-zeta * wn * (t - tau)) * Sin(wd * (t - tau))
u2 = (1 / (m * wn)) * Sin(wn * (t - tau))
ReDim Preserve feld_u1(i)
ReDim Preserve feld_u2(i)
feld_u1(i) = u1
feld_u2(i) = u2

Next i
Loop
Gast



Verfasst am:
30. Aug 2012, 15:05
Rufname:


AW: Eindimensionales Array - AW: Eindimensionales Array

Nach oben
       Version: Office 2007

Hi,

1. mit ReDim Preserve feld_u1(i) erhällt das arry i Elemente, diese reichen von 0 bis i-1. Ein i-tes Element existiert demzufolge nicht.

2. ich sehe keine zuweisung an n

3. es ist reichlich inperformant bei jedem schleifendurchlauf das array neu zu dimensionieren. Besser wäre es vorher(jenachdem wo n ermittelt wird außerhalb der For Schleife bzw sogar außerhalb von While) ein ReDim Preserve feld_u1(n)

Gruß
Peter
Face
Im Profil kannst Du frei den Rang ändern


Verfasst am:
30. Aug 2012, 15:16
Rufname:

AW: Eindimensionales Array - AW: Eindimensionales Array

Nach oben
       Version: Office 2007

Hallo Peter,

Danke für die schnelle Antwort! Habe deinen Rat befolgt und den Code verändert. Leider funktioniert er immer noch nicht. Hier mal der gesamte Code vielleicht ist das übersichtlicher....


Option Base 1

Public Sub Verschiebung2()

Dim u1#, u2#, umax1#, umax2#
Dim v1#, v2#, vmax1#, vmax2#
Dim a1#, a2#, amax1#, amax2#
Dim m#, zeta#, wd#, wn#, t#, p#, f#, tau#
Dim n%, i%, k%, j%
Dim feld_u1() As Long
Dim feld_u2() As Long
Dim feld_v1() As Long
Dim feld_v2() As Long
Dim feld_a1() As Long
Dim feld_a2() As Long


Dim r As Range
Set r = Worksheets("Sd").Range("A2:B31000")


'Start Max-Werte:

umax1 = 0
umax2 = 0
vmax1 = 0
vmax2 = 0
amax1 = 0
amax2 = 0


'Input Boxes:

zeta = InputBox("Geben Sie die Dämpfung [%] ein")
If zeta >= 100 Then MsgBox "Fehler: Zeta >= [100%]", vbCritical, "Programmfehler"
If zeta >= 100 Then Exit Sub
zeta = zeta / 100

m = InputBox("Geben Sie die Masse [t] ein")
fmax = InputBox("Geben Sie die maximal Frequenz [Hz] ein")


f = 0.01 'Start Wert Frequenz
k = 2 'Zähler Ausgabe
n = r.Rows.Count


' Redimensionierung Vectoren

ReDim Preserve feld_u1(n)
ReDim Preserve feld_u2(n)
ReDim Preserve feld_v1(n)
ReDim Preserve feld_v2(n)
ReDim Preserve feld_a1(n)
ReDim Preserve feld_a2(n)


Do While f <= fmax

wn = 2 * Application.Pi * f
wd = wn * Sqr(1 - zeta ^ 2)


For i = 2 To n

tau = r.Cells(i, 1) - r.Cells(i - 1, 1)
t = r.Cells(i, 1)
p = r.Cells(i, 2)

'Verschiebung
u1 = (1 / (m * wd)) * Exp(-zeta * wn * (t - tau)) * Sin(wd * (t - tau))
u2 = (1 / (m * wn)) * Sin(wn * (t - tau))
feld_u1(i) = u1
feld_u2(i) = u2

If u1 > umax1 Then umax1 = u1
If u2 > umax2 Then umax2 = u2




'Geschwindigkeit
v1 = (feld_u1(i) - feld_u1(i - 1)) / tau
v2 = (feld_u2(i) - feld_u2(i - 1)) / tau
feld_v1(i) = v1
feld_v2(i) = v2

If v1 > vmax1 Then vmax1 = v1
If v2 > vmax2 Then vmax2 = v2

'Beschleunigung
a1 = (feld_v1(i) - feld_v1(i - 1)) / tau
a2 = (feld_v2(i) - feld_v2(i - 1)) / tau
feld_a1(i) = a1
feld_a2(i) = a2

If a1 > amax1 Then amax1 = a1
If a2 > amax2 Then amax2 = a2



Next i

'Daten Ausgabe
Worksheets("Sd").Cells(k, 3).Value = f
Worksheets("Sd").Cells(k, 4).Value = umax1
Worksheets("Sd").Cells(k, 5).Value = umax2
Worksheets("Sv").Cells(k, 3).Value = f
Worksheets("Sv").Cells(k, 4).Value = vmax1
Worksheets("Sv").Cells(k, 5).Value = vmax2
Worksheets("Sa").Cells(k, 3).Value = f
Worksheets("Sa").Cells(k, 4).Value = amax1
Worksheets("Sa").Cells(k, 5).Value = amax2



umax1 = 0
umax2 = 0
vmax1 = 0
vmax2 = 0
amax1 = 0
amax2 = 0
f = f + 0.1
k = k + 1

Loop

MsgBox "Berechnung beendet"

End Sub
slowboarder
Im Profil kannst Du frei den Rang ändern


Verfasst am:
30. Aug 2012, 15:17
Rufname:

Re: AW: Eindimensionales Array - Re: AW: Eindimensionales Array

Nach oben
       Version: Office 2007

Anonymous - 30. Aug 2012, 15:05 hat folgendes geschrieben:
Hi,

1. mit ReDim Preserve feld_u1(i) erhällt das arry i Elemente, diese reichen von 0 bis i-1. Ein i-tes Element existiert demzufolge nicht.


nein, ist anders rum
Code:
ReDim Preserve feld_u1(i)

definiert das Array von 0 bis i und es enthält somit i + 1 Elemente.

Gruß Daniel
Gast



Verfasst am:
30. Aug 2012, 15:55
Rufname:

AW: Eindimensionales Array - AW: Eindimensionales Array

Nach oben
       Version: Office 2007

Hi,

@Daniel
Du hast natürlich recht *ascheaufshauptstreu*

@FACE
Ich sehe jetzt dein Problem nicht.
bei mir läuft die sub (deine Ausganswerte kenne ich natürlich nicht!)

Gruß
Peter
Steffl
Im Profil kannst Du frei den Rang ändern


Verfasst am:
30. Aug 2012, 16:23
Rufname:

Re: AW: Eindimensionales Array - Re: AW: Eindimensionales Array

Nach oben
       Version: Office 2007

Auch Hallo,

slowboarder - 30. Aug 2012, 15:17 hat folgendes geschrieben:


Code:
ReDim Preserve feld_u1(i)

definiert das Array von 0 bis i und es enthält somit i + 1 Elemente.


In diesem Fall nicht. Face verwendet den Frauenschalter Laughing

Face - 30. Aug 2012, 15:16 hat folgendes geschrieben:

Danke für die schnelle Antwort! Habe deinen Rat befolgt und den Code verändert. Leider funktioniert er immer noch nicht. Hier mal der gesamte Code vielleicht ist das übersichtlicher....

Code:
Option Base 1
 
Public Sub Verschiebung2()


_________________
Rückmeldung wäre nett.

Gruß Stefan
Face
Im Profil kannst Du frei den Rang ändern


Verfasst am:
30. Aug 2012, 17:12
Rufname:


AW: Eindimensionales Array - AW: Eindimensionales Array

Nach oben
       Version: Office 2007

Die Elemente im (Daten) feld_u1 und feld_u2 bleiben "0" weshalb alle weiteren Berechnungen für "v" und "a" auch 0 ergeben, obwohl u1 und u2 die richtigen Ergebnisse erzeugen
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: WENN- Funktion mit nachfolgender Array- Formel 4 DeadLoss 98 02. Apr 2014, 16:02
Gast WENN- Funktion mit nachfolgender Array- Formel
Keine neuen Beiträge Excel Formeln: Summewenn als Array Formel mit drei Bedingungen 12 Formelschwinger 198 17. Jan 2014, 16:41
Jensolator Summewenn als Array Formel mit drei Bedingungen
Keine neuen Beiträge Excel Formeln: Mehrere Tabellennamen als Array durch Funktion ersetzen 12 Archi_kg 184 18. Nov 2013, 09:02
Archi_kg Mehrere Tabellennamen als Array durch Funktion ersetzen
Keine neuen Beiträge Excel Formeln: Max Formel in Array 5 mscola 93 16. Mai 2013, 15:35
neopa Max Formel in Array
Keine neuen Beiträge Excel Formeln: Array auslösen 2 Pat23 100 18. März 2013, 18:06
Pat23 Array auslösen
Keine neuen Beiträge Excel Formeln: Array funktioniert nicht 6 victschen 186 05. Feb 2013, 16:29
Hydronaut Array funktioniert nicht
Keine neuen Beiträge Excel Formeln: Array nach Kriterien aufsummieren 1 Fat-Twin 108 18. Okt 2012, 22:53
slowboarder Array nach Kriterien aufsummieren
Keine neuen Beiträge Excel Formeln: Conditional sum ohne array 2 dubber 95 17. Okt 2012, 20:58
slowboarder Conditional sum ohne array
Keine neuen Beiträge Excel Formeln: Array auf Wertdifferenz prüfen 2 MartinBerlin 299 21. März 2012, 23:27
MartinBerlin Array auf Wertdifferenz prüfen
Keine neuen Beiträge Excel Formeln: 2 Array verbinden 4 MaxMini 1100 13. Mai 2011, 18:33
neopa 2 Array verbinden
Keine neuen Beiträge Excel Formeln: Array, Index, Vergleich, KGrösste bei gleich großen Werten 6 Gast 1415 28. Feb 2011, 17:10
Smartie256 Array, Index, Vergleich, KGrösste bei gleich großen Werten
Keine neuen Beiträge Excel Formeln: Wenn Funktion im Array 4 Gast 1217 05. März 2010, 12:23
Gast Wenn Funktion im Array
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Excel Tricks