Hallo,
VBA ist Teil von allen MS Office-Anwqendungen und eine abgespeckte Variante von VB (aktuell Version müßte .net, brauche ich aber eigentlich nie)
Aufrufen kann man den Editor über Entwicklertools und dann Code anzeigen.
Als Seite kann ich dir vb@rchiv Visual Basic Tipps, Sourcecode, Free-ActiveX, WinAPI empfehlen.
Dort kann man sehr schnell die Befehlsreferenz bzw. auch Lösungen zu Problemen finden. Ansonsten ist auch google immer sehr hilfreich und auch die eingebaute Hilfe kann ich sehr empfehlen (wobei man hier meisten den Befehlwissen muss, den man braucht)
Als Anfang würde ich dir empfehlen, vielleicht den Code zum Mittelwert versuchen zu verstehen.
Hier nun der Code
Code:
Private Sub CommandButton1_Click()
Dim tab01, tab02 As String
Dim i, Zeile As Long
Dim Mittelwert1, Mittelwert2, Mittelwert3 As Double
Dim Mittelwert1_Anzahl, Mittelwert2_Anzahl, Mittelwert3_Anzahl As Long
tab01 = "Tabelle1"
tab02 = "Tabelle2"
Worksheets(tab02).Range("A1:D6000").Value = ""
Zeile = 1 'Startzeile
For j = 1 To 10000
Mittelwert1 = 0
Mittelwert1_Anzahl = 0
Mittelwert2 = 0
Mittelwert2_Anzahl = 0
Mittelwert3 = 0
Mittelwert3_Anzahl = 0
'Startzeit eintragen
Worksheets(tab02).Cells(j, 1).Value = Worksheets(tab01).Cells(Zeile, 1).Value
For i = 1 To 500
If Worksheets(tab01).Cells(Zeile, 2).Value <> "" Then
Mittelwert1 = Mittelwert1 + Worksheets(tab01).Cells(Zeile, 2).Value
Mittelwert1_Anzahl = Mittelwert1_Anzahl + 1
Mittelwert2 = Mittelwert2 + Worksheets(tab01).Cells(Zeile, 3).Value
Mittelwert2_Anzahl = Mittelwert2_Anzahl + 1
Mittelwert3 = Mittelwert3 + Worksheets(tab01).Cells(Zeile, 4).Value
Mittelwert3_Anzahl = Mittelwert3_Anzahl + 1
End If
Zeile = Zeile + 1
Next i
If Mittelwert1 <> 0 Then
Worksheets(tab02).Cells(j, 2).Value = Mittelwert1 / Mittelwert1_Anzahl * (-1)
Worksheets(tab02).Cells(j, 3).Value = Mittelwert2 / Mittelwert2_Anzahl * (-1)
Worksheets(tab02).Cells(j, 4).Value = Mittelwert3 / Mittelwert3_Anzahl * (-1)
Else
Exit Sub
End If
Next j
End Sub
Ich hab mir allerdings die Zeit gespart ihn ordentlich zu kommentieren (das sollte man eigentlich nicht machen. Abewr wenn du es versuchst zu verstehen, dann Schreib doch die Kommentare dazu (angeführt mit ')
Ich hab die Zusammenfassung nun gleich in ein neues Sheet geschrieben. Folgende Gründe dazu:
- es ist einfacher und ging schneller
- Alle 500 Zeile eine Zeile einfügen ist nicht gearde übersichtlich
- es verändert die ursprüngliche Datenbasis nicht (nicht sehr wissenschaftlich)
Wenn du es noch weiter ausbauen willst, dann kannst du ja mal versuchen die .txt automatisch importieren zulassen (Dateinamen aus einer Liste, Eingabefeld, Pfad in einer Zelle, ...).
Schick mir deine Mail-Adresse und ich kann dir auch das Excel-file schicken.
Bis dann
snoopy78
PS: Vom Studium her kann ich mich erinnern, dass irrgend ein Messgerät den Effekt mit den negativen Zahlen auch hatte. Das hatte aber einen logischen Grund, ich weiß aber nicht mehr was es war (DMS???)
das minus hab ich übrigens gleich weggemacht