Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1296to1300
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
Inhaltsverzeichnis

Mathematische Berechnungen

Mathematische Berechnungen
12.02.2013 13:12:18
Michael
Hallo Experten,
ich möchte mit ca. 50 Werten aus einem Tabellenblatt (Zellinhalte) in eine Berechnungsroutine gehen, diese dort in einem stark verschachtelten Programm verwenden und dann aus dieser Routine mit ca. 100 Werten herauskommen, welche dann in dem Tabellenblatt weiterverwendet werden sollen. Hier können auch direkte Zellinhalte damit definiert werden, besser wäre natürlich eine Ergebnismatrix. Was muss ich machen?

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mathematische Berechnungen
12.02.2013 13:27:18
Klaus
Hallo Michael,
niemand kennt deine Berechnungsroutine, dein stark verschachteltes Programm oder gar deine Tabelle. Daher muss die Antwort entsprechend allgemein ausfallen wie deine Frage:
Du musst ein VBA-Programm schreiben, welches ebendies macht.
Ist dein Level mit "kaum Kentnisse" korrekt angegeben? Wenn ich sage, "schreibe eine FOR-NEXT Schleife mit IF-Abfragen", weisst du dann wovon ich rede oder ist das chinesisch?
Grüße,
Klaus M.vdT.

AW: Mathematische Berechnungen
12.02.2013 16:00:48
Michael
Hallo Klaus,
die Programmroutinen beinhalten normale Schleifen etc., wie bei jeder Programmiersprache üblich. Ich bin ein "alter" Basic-Fan, kenne mich mit intensiven Routinen aus, aber finde keinen Einstieg in die VBA-Programmierung. Viele Excel-Funktionen nutze ich im Moment schon intensiv, habe jedoch immer das Problem, dass sich Berechnungsalgorithmen besser in einem Unterprogramm definieren lassen. Ich möchte meine alten Basic-Programme in die Excel-Umgebung integrieren, sodass ich diese dann wieder nutzen kann.
Grüße
Michael

Anzeige
OT: Basic -> VBA
13.02.2013 08:06:02
Klaus
Hi Michael,
ich komme auch aus der DOS-BASIC Zeit ... GW-Basic, Q-Basic und wie sie alle hießen :-)
Wer Basic kann, kommt in VBA schnell rein. Es ist halt kein Spagetticode mehr (aber das waren gute Basic-Programme auch nicht). Die Syntax ist weitestgehend ähnlich, und die schwierigste Hürde, die Logik eines Code vs die Logik eines Menschen zu differenzieren, hast du schon genommen!
Also: frohes schaffen! Immer dran bleiben, weniger Bücher lesen und mehr hier im Forum aktiv sein. Ich prophezeie, dass du innerhalb von wenigen Monaten die VBA-Scripte nur so aus dem Ärmel schüttelst :-)
Von der Aufgabenlösung ziehe ich mich zurück, da Luc und NoNet deutlich kompetenter sind als ich.
Gutes Gelingen!
Klaus M.vdT.

Anzeige
Ergänzung: Eine VBA-Subprozedur ...
12.02.2013 14:02:28
Luc:-?
…kann auch eine Matrix ins TabBlatt schreiben, Michael;
eine benutzerdefinierte Fkt (UDF) kann ebenso wie manche xlStandardFktt und MatrixFmln eine Matrix zurückgeben, das kommt ganz darauf an wie sie pgmiert wurde/wird.
Mit deinem Level solltest du dir aber erst mal ein paar Basiskenntnisse aneignen, indem du bspw die VBEditor-Hilfe studierst!
Gruß Luc :-?

AW: Ergänzung: Eine VBA-Subprozedur ...
12.02.2013 16:09:11
Michael
Hallo Luc,
vielen Dank für Deinen Hinweis. Die Funktionen waren mir bisher nur als Wiedergabe eines Wertes bekannt. Ich werde mit Deinen Stichworten mal recherchieren.
Mit meinem geliebten Basic habe ich (leider schon etwas her) m.E. tolle Programme geschrieben, aber diese jetzt in eine Excel-Tabelle bzw. mit VBA wieder zu regenerieren....
Vielleicht eine kleine Beispielaufgabe:
Feld(n) besitzt n Werte, welche im Unterprogramm bearbeitet werden.
Wie kann ich den Aufruf des Unterprogramms aus dem Excel-Tabellenblatt heraus definieren, wie sind die Ergebnisse im Tabellenblatt danach wieder verwertbar. Bei Funktionen ist dieses ja einfach, =Funktion steht dann in der Zelle. Gibt es eine Möglichkeit, wo z.B. aus dem Feld Funktion(n) der Wert Funktion(5) abrufbar ist?
Aller Anfang ist schwer.
Gruß
Michael

Anzeige
ARRAY als Rückgabewert einer UDF.
12.02.2013 17:58:25
NoNet
Hallo Michael,
Du möchtest anscheinend ein ARRAY (eine MATRIX) als Rückgabewert einer UDF (selbst programmierten Funktion) ?
Hier ein Beispiel - der VBA-Code zweier UDFs (in ein allgemeines VBA-Modul kopieren !) :
Public Function DoppelteSumme(rngZellen As Range)
Dim rngZ As Range, lngZ As Long
For Each rngZ In rngZellen
lngZ = lngZ + 2 * rngZ.Value
Next
DoppelteSumme = lngZ
End Function
Public Function lfdSumme(rngZellen As Range)
Dim rngZ As Range, lngZ As Long, rngT, lfdT
ReDim rngT(rngZellen.Rows.Count)
For Each rngZ In rngZellen
rngT(lngZ) = lfdT + rngZ.Value
lfdT = rngT(lngZ)
lngZ = lngZ + 1
Next
lfdSumme = Application.Transpose(rngT)
End Function
Die Funktion DoppelteSumme gibt KEINE Matrix zurück,sondern nur einfache Werte, die Funktion LfdSumme gibt eine MATRIX zurück. Hier ein kleines Anwendungsbeispiel :
ABCD
1
2
3
4
5
6
7
8
9
10
11
12

Funktionen im Tabellenblatt
Zelle Formel 
C2   =doppeltesumme(A2:A7) 
C3   =doppeltesumme(A3:A8) 
C4   =doppeltesumme(A4:A9) 
C5   =doppeltesumme(A5:A10) 
C6   =doppeltesumme(A6:A11) 
C7   =doppeltesumme(A7:A12) 

MATRIX-Funktionen im Tabellenblatt :
ZelleFormel
D2:D7   {=lfdSumme(A2:A7) 

Die Werte der Spalte C wurden folgendermassen berechnet :
- Zellen C2:C7 markieren, Funktion eingeben, Strg+ENTER drücken
Die Werte der Spalte D wurden folgendermassen berechnet :
- Zellen D2:D7 markieren, Funktion eingeben, Strg+Shift+ENTER drücken (da MATRIX-Funktion)
Gruß, NoNet

Anzeige
AW: ARRAY als Rückgabewert einer UDF.
12.02.2013 18:55:15
Michael
Hallo NoNet,
puuuh, das muss ich erst einmal analysieren. Danke erst einmal für Deine Infos.
Ich habe mir zwar VBA-Bücher (es sind auch gute dabei) ausgeliehen, aber damit kann man erst arbeiten, wenn man schon einiges programmiert hat und besondere Funktionen sucht.
Ich werde erst einmal in Klausur gehen.
Vielen Dank euch allen und bis bald
Michael

Ergänzung: Einzelnes DFeld-Element abrufen
12.02.2013 21:07:48
Luc:-?
Hallo, Michael,
bevor du in Klausur gehst, noch das.
Im TabBlatt kannst du in einer Zelle auch nur einen bestimmten Wert aus NoNets UDF lfdSumme zurückgeben, indem du die xlStandardFkt INDEX darauf anwendest:
=INDEX(lfdSumme(A2:A7);5) Das wäre dann der 5.Wert des Ergebnisvektors, also 15.
Innerhalb dieser oder einer anderen Prozedur kann man das einfach mit Indexierung machen, wobei beachtet wdn muss, wieviel Dimensionen das DFeld (Array) hat und um welche Art es sich handelt (Variant mit DFeld oder normales DFeld → Index für 2 Dimensionen: (m)(n) bzw (m, n) ), sowie womit die Indexzählung beginnt → 0 (VBA-Standard) oder 1 (xlStandard, also bei Daten aus Bereichen und Ausdrücken ⇒ xlFormeln). Andere Anfangswerte sind ebenfalls festlegbar. Natürlich spielt auch der letzte Index (die letzten Indizes) eine Rolle.
Gruß Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige