# Excel Makro programmieren ?



## Gamedemos (8. Oktober 2003)

Hallo,

hat jemand Ahnung von Excel Makros ?
Ich bräuchte dringend eins, wäre super....

Es geht darum:
Ich habe eine Tabelle da stehen Namen von Tests drin und Messergebnisse.
Dazu sollen von jedem Testdurchgang die Mittelwerte errechnet werden.
In Spalte A steht zum beispiel der Name des Tests und in B das Messergebnis...
Und in C bzw. darunter sollen die Mittelwerte erscheinen.
Hier mal ein Link zu einem Beispiel (das richtige ist um einiges mehr, so 13000 Zeilen):

LINK ZUM BEIPSPIELFILE 

Danke schonmal


Gruß Gamedemos


----------



## tuxracer (8. Oktober 2003)

Mir ist so vorerst mal nicht klar, was und weshalb Du mit Makro lösen möchtest.
Kannst Du das nicht etwas konkretisieren?

Ich hab mir Dein Beispiel mal angesehen, aber ich weiss beiim besten Willen nicht, was Du mit Makros wie gelöst bekommen möchtest.


----------



## Gamedemos (8. Oktober 2003)

hi,

also mir wurde gesagt das könnte man wohl mit makros lösen **
da ich mich damit auskenne weis ich nun net wie man es sonst (außer per hand alles eingeben) machen könnte..
Gibts denn ne einfacherer möglichkeit ? Weil das Problem ist man kanns ja per Hand machen, aber das sind rund 13000 Zeilen ergebnisse aus über 100 verschiedenen Testkategorien und jede Kategorie muss ja berechnet werden (mittelwert).
Also wenn du ne andere möglichkeit kennst, gerne her damit. Ich hab leider fast keinen Plan von Excel.

Grüße Gamedemos


----------



## tuxracer (8. Oktober 2003)

Mir ist immer noch nicht klar was Du mit Makro bewerkstelligen möchtest.

Die Daten kommen ja wohl von irgendwo her, und die müssen irgendwie erfasst werden, ausser diese Daten werden direkt mit dem Computer gemessen, und könnten von diesem Progi importiert werden.

Du musst schon genauer werden, damit ich Dir ein Makro zurechtstutzen kann.

Ich kenn mich zwar aus mit Makros, aber ich kann nicht Gedanken lesen.

was willst Du mit dem Makro bewerkstelligen?


----------



## Leola13 (8. Oktober 2003)

Hai,

Pivot - Tabelle !

Versuch mal die Hilfe im Excel, ansonsten noch mal nachfragen.


Ciao   Stefan

Ich hab Langeweile :

Tabelle kompl. markieren
Daten
Pivot...
MS Excel...   auswählen
Pivot Table   auswählen
Weiter
Bereich    (evtl. ändern oder auswählen, siehe oben)
Weiter
Im neuen Blatt
Layout   anklicken
Zeile   =  Test1  von rechts rüberziehen
Daten =  Wert    von rechts rüberziehen
   Daten doppelklicken, Mittelwert auswählen
Ok
Fertigstellen

Sollte fürs Grobe reichen. Es gibt noch unendliche 
  Formatierungsmöglichkeiten.


----------



## DrSoong (8. Oktober 2003)

Ich hab dir mal ein kleines Beispiel geschrieben:

Den Folgenden Code in ein Modul einfügen:

```
Sub GetWerte()
 Dim curPos As Long, varWert As Single, Counter As Long
 Dim varTest As String, varCellMW As Integer
 curPos = 2
 varTest = Worksheets(1).Cells(curPos, 1).Value
 varCellMW = 3
 
 Do
  If Worksheets(1).Cells(curPos, 1).Value = varTest Then
  Else:
   Worksheets(1).Cells(curPos - 1, varCellMW).Value = varWert / Counter
   varWert = Val(Worksheets(1).Cells(curPos, 2).Value)
   Counter = 1
   varTest = Worksheets(1).Cells(curPos, 1).Value
  End If
  curPos = curPos + 1
 Loop Until varTest = "Tab_End"
End Sub
```


```
Sub GetNewWerte(varCell As Long)
 Dim curPos As Long, varWert As Single, Counter As Long
 Dim varTest As String, varCellMW As Integer
 varTest = Worksheets(1).Cells(varCell - 1, 1).Value
 varCellMW = 3
 curPos = varCell + 1
 
 Do
  curPos = curPos - 1
 Loop Until Worksheets(1).Cells(curPos - 1, 1).Value <> varTest
 
 Do
  varWert = varWert + Val(Worksheets(1).Cells(curPos, 2).Value)
  Counter = Counter + 1
  curPos = curPos + 1
 Loop Until Worksheets(1).Cells(curPos, 1).Value <> varTest
 Worksheets(1).Cells(curPos - 1, varCellMW).Value = varWert / Counter
End Sub
```
Die erste Prozedur summiert alles, bildet den Mittelwert und schreibt ihn in die letzte Zeile des jeweiligen Tests. Dazu gibt es 2 Restriktionen:

1) Die Tests müssen so wie in deinem Beispiel HINTEREINANDER eingetragen werden, der Name muß in einer Testreihe gleich bleiben.

2) Am Ende ALLER Testreihen muß ein bestimmter Text stehen (in meinem Fall *Tab_End*, den jeweiligen Text, kann auch ein Leertext sein, kannst du in der Zeile _Loop Until varTest =_ anpassen). Wenn das nicht geschieht, läuft das ganze in einer Endlosschleife.

Es gäbe dann noch die Möglichkeit, beim Ändern eines Testwertes die Mittelwerte aktualisieren zu lassen. Dazu links unter _Microsoft Excel Objecte_ auf die Tabelle, wo die Werte sind doppelklicken, dann ins Fenster folgendes eintragen:

```
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
 If Target.Column = 2 Then Call GetNewWerte
End Sub
```
Dabei wird, wenn ein Wert in Spalte 2 (Messwerte) geändert wird, die zweite Prozedur aufgerufen. Diese ermittelt die Größe der Messreihe und schreibt den neuen Mittelwert. Ist zeitlich nicht so aufwendig wie eine komplette Neuberechnung.

Ist sicher nur eine vorübergehende Lösung, momentan aber das beste, was ich habe.


Der Doc!


----------



## Gamedemos (9. Oktober 2003)

@DrSoong:

ich hab da ein Problem.
Bei mir kommt da Laufzeitfehler '6' Überlauf....
Mir wurde jetzt gesagt es lege am Datentyp ? Aber hab keine ahnung wie und wo...
Kannst du eventuell das von dir in eine beispieltabelle machen und mir das Excelfile schicken ? ( danop@covers.de )
danke

@tuxracer:

die Ergebnisse kommen bestimmt von ner Maschine, aber ich hab die Tabelle per mail bekommen. Das Makro soll halt dann die einzelnen Tests (die alle in einer Tabelle stehen) auswerten (Mittelwert der Ergebnisse berechnen) und dann immer in der hinteren spalte das ergebnis ausgeben.... sonst müsste ich nach jeden Test einzeln das mit dem Mittelwert eingeben damit das berechnet wird.
Ich weis nicht wie ich das noch beschreiben soll... ich hoffe du hast das jetzt verstanden....  
 

Gruß Gamedemos


----------



## tuxracer (9. Oktober 2003)

Hallo Gamedemos


Ich habe Dir hier ein funktionstüchtiges Exemplar, erweitert, aus Deiner Beispieldatei. Damit das Makro funktioniert, müssen Beginn, und Splaten der Werte so bleiben, falls Du oberhalb aus irgendeinem Grund auch immer, Zeilen einfügen möchtest, muss das Makro angepasst werden.


----------



## DrSoong (9. Oktober 2003)

Schick mir dein File, wo der Fehler auftritt (gezippt), meine Adresse steht im Profil. Ich schaus mir mal an und korrigiere es dann.


Der Doc!


----------



## Gamedemos (15. Oktober 2003)

Hi Leute,

entschuldigt bitte das ich mich jetzt erst melde.
Das Script von Tuxracer war perfekt und funktionierte sofort.
Also danke an euch alle für die Hilfe. **

Gruß Gamedemos


----------



## tuxracer (15. Oktober 2003)

@Gamedemos


solche Lorbeeren hört man gerne 


vielen Dank auch


----------

