Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1096to1100
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

excel makro zum konsolidieren von tabellenb

excel makro zum konsolidieren von tabellenb
tabellenb
hallo,
ich habe nur basiswissen von vba, und ein problem, wo ich eure hilfe brauche. Ich habe aus einem messgerät daten ausgespukt bekommen, die jeweils in einem excel-file als einzelnes tabellenblatt vorliegen. ich habe all diese excel-files schon per makro in einem grossen excel-file zusammengefügt, wo jedes tabellenblatt den namen der ursprünglichen datei hat.
nun möchte ich gern aus all den tabellenblättern bestimmte zellen kopieren, und in einer tabelle am anfang zusammenfügen. dabei stehen die werte, die ich kopieren will allerdings immer in einer anderen zeile (!!!).
als beispiel, wie die daten aussehen:
a4 b4
sample xyz
....
a155 b155 c155 d155
median 0.144 std. dev. 0.111
im nächsten blatt:
a4 b4
sample yxz
....
a170 b170 c170 d170
median 0.133 std. dev. 0.087
wie stelle ich es mittels makro an, dass ich ein neues tabellenblatt erstelle, in dem in einer tabelle die werte für sample, median, std.dev. etc. als einzelne spalten aus allen tabellenblätten untereinander kopiert werden.
danke schon mal im vorraus,
volkimaus

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Daten sammeln - aber wie?
20.08.2009 20:19:43
Erich
Hallo Vorname, ( zu Vornamen und Nicknames schau bitte mal in die Forums-FAQ )
Zitat:

NickNames sind nicht erwünscht. Diese Frager werden bei der Beantwortung nicht gerade
bevorzugt behandelt. Nenne Deinen Vornamen, damit man Dich ansprechen kann.
volkimaus ist als UserID sicher gut und wohl einzigartig, aber du hast sicher auch noch einen
etwas gebräuchlicheren Vornamen...
Zu deiner Frage:
Aus deiner Beschreibung wird nicht klar, wie, in welcher Reihenfolge usw., die Quelldaten vorliegen,
und noch weniger, wie das Ergebnis aussehen soll.
Vielleicht könntest du in beiliegender Mappe das Blatt "Sammlung" so ausfüllen, wie es nach den Daten werden soll.
Wenn in den Daten unzulässige Konstellationen stehen, streich sie bitte und schreib den Grund dafür auf.
Hier die Beispielmappe:

Die Datei https://www.herber.de/bbs/user/63974.xls wurde aus Datenschutzgründen gelöscht


Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Daten sammeln - aber wie?
20.08.2009 21:48:38
volkimaus
Hallo Erich,
also die Ausgangsblätter haben an gleicher Stelle immer die Zelle Sample mit zugehörigem Wert stehen, aber die Zellen Median mit Wert und Std. Dev mit Wert stehen immer in einer anderen Zeile (wie im Beispiel zu sehen). Die Resultatstabelle besteht aus einer Spalte Sample, mit den Werten dafür untereinander aufgeführt, einer zweiten mit dem Median und eine dritte mit der Std.Dev., immer mit den zur Sample Nr. gehörigen Wertem.
Hier also die Beispieldatei: https://www.herber.de/bbs/user/63977.xls
Grüße,
Volker
Anzeige
Daten sammeln - Codevorschlag
21.08.2009 00:23:11
Erich
Hi Volker,
probier mal (in ein normales Modul):

Option Explicit
Sub SammleSamples()
Dim wksX As Worksheet, varZ, lngZ As Long
Const lngSam As Long = 3      ' Nr. der Zeile, in der "sample" steht
If WorksheetEx("Sammlung") Then
Worksheets("Sammlung").Activate
Cells.ClearContents
Else
Worksheets.Add(before:=Sheets(1)).Name = "Sammlung"
End If
Cells(1, 1).Resize(, 3) = Split("Sample|Median|Std. Dev", "|")
lngZ = 1
For Each wksX In Worksheets
With wksX
If .Name  ActiveSheet.Name Then
If .Cells(lngSam, 1)  "sample" Then
MsgBox "In " & wksX.Name & "!A" & lngSam & " steht nicht 'sample'.", _
vbCritical, "SammleSamples"
End If
lngZ = lngZ + 1
Cells(lngZ, 1) = .Cells(lngSam, 2)
varZ = Application.Match("median", .Columns(1), 0)
If Not IsNumeric(varZ) Then
MsgBox "Text 'median' in " & wksX.Name & "!A:A nicht gefunden.", _
vbCritical, "SammleSamples"
ElseIf .Cells(varZ, 3)  "std. dev." Then
MsgBox "Text 'std. dev.' steht nicht in " & wksX.Name & "!A" & varZ, _
vbCritical, "SammleSamples"
Else
Cells(lngZ, 2) = .Cells(varZ, 2)
Cells(lngZ, 3) = .Cells(varZ, 4)
End If
End If
End With
Next wksX
End Sub
Function WorksheetEx(strNam As String) As Boolean
On Error Resume Next
WorksheetEx = Worksheets(strNam).Index > 0
End Function
Eingangs hattest du geschrieben, dass "sample" in A4:B4 steht, in der Mappe ist das jetzt in Zeile 3.
Dafür die Konstante in Makro - jetzt auf 3.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Daten sammeln - Codevorschlag
21.08.2009 09:54:46
volkimaus
Hallo Erich,
danke für das Makro. Ich hab es noch ein wenig an die Datei angepasst und einen Bug behoben
If .Name  ActiveSheet.Name Then
If Not .Cells(lngSam, 1)  "Sample" Then
MsgBox "In " & wksX.Name & "!A" & lngSam & " steht nicht 'Sample'.", _
Jetzt funktioniert das ganze wunderbar.
Hier der ganze Code:
Option Explicit
Sub SammleSamples()
Dim wksX As Worksheet, varZ, lngZ As Long
Const lngSam As Long = 5      ' Nr. der Zeile, in der "sample" steht
If WorksheetEx("Sammlung") Then
Worksheets("Sammlung").Activate
Cells.ClearContents
Else
Worksheets.Add(before:=Sheets(1)).Name = "Sammlung"
End If
Cells(1, 1).Resize(, 3) = Split("Sample|Median|Std. Dev", "|")
lngZ = 1
For Each wksX In Worksheets
With wksX
If .Name  ActiveSheet.Name Then
If Not .Cells(lngSam, 1)  "Sample" Then
MsgBox "In " & wksX.Name & "!A" & lngSam & " steht nicht 'Sample'.", _
vbCritical, "SammleSamples"
End If
lngZ = lngZ + 1
Cells(lngZ, 1) = .Cells(lngSam, 2)
varZ = Application.Match("Median", .Columns(1), 0)
If Not IsNumeric(varZ) Then
MsgBox "Text 'Median' in " & wksX.Name & "!A:A nicht gefunden.", _
vbCritical, "SammleSamples"
ElseIf .Cells(varZ, 5)  "Std. Dev." Then
MsgBox "Text 'Std. Dev.' steht nicht in " & wksX.Name & "!E" & varZ, _
vbCritical, "SammleSamples"
Else
Cells(lngZ, 2) = .Cells(varZ, 2)
Cells(lngZ, 3) = .Cells(varZ, 6)
End If
End If
End With
Next wksX
End Sub
Function WorksheetEx(strNam As String) As Boolean
On Error Resume Next
WorksheetEx = Worksheets(strNam).Index > 0
End Function

Vielen Dank nochmal,
Volker
Anzeige
Bug behoben? Zweifel!
21.08.2009 10:20:00
Erich
Hi Volker,
prima, aber das mit dem Bug mag ich nicht so recht glauben.
If Not .Cells(lngSam, 1) "Sample" Then
bedeutet nichts anderes als
If .Cells(lngSam, 1) = "Sample" Then
und das ist doch wohl der korrekte Fall, in dem keine Fehlermeldung ausgegeben werden soll.
Nach dem Then wird aber eine Fehlermeldung ausgegeben.
Was genau steht bei dir in A5 der (aller) Quellblätter? Sample oder sample ?
Das was da stehen soll, müsstest du prüfen.
Vielleicht sollte da ja besser stehen (mit 'sample' in Kleinschrift)
If .Cells(lngSam, 1) = "sample" Then
Wenn Groß-/Kleinschreibung gemischt auftreten kann, dann vielleicht so:
If LCase(.Cells(lngSam, 1)) = "sample" Then
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige