Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1688to1692
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
VBA Tabelle umwandeln
25.04.2019 11:21:31
Juri
Hallo zusammen,
ich möchte ein Makro schreiben mit dem ich aus einer gegebenen Tabelle mir nur meine benötigten Werte raussuche.
https://www.herber.de/bbs/user/129381.xlsx
Blatt Ausgangsdaten:
Hier werden täglich neue Messungen gemacht und eingetragen. Mich interessieren hier: Tag, die Schicht, das Gewicht der Messung für jedes Modul und evtl wenn vorhanden die Bemerkung (erscheint unter Feld "Bemerkung").
Die Daten sollen dann im Blatt "Daten für Diagramm" bereinigt dargestellt werden. Ich hab schon ein paar Beispiele eingetragen.
Ich stoße nun auf folgende Probleme:
-ich suche nach dem Wort Gewicht und lasse mir die danebenstehenden Wert kopiere, die Zelle beinhaltet leider eine Formel und ich brauch für das Diagramm aber die Werte
-Die Anzahl der Messungen kann von Tag zu Tag unterschiedlich sein, Anzahl Module bleibt gleich, Schicht und Nummer der Messung kann gleich verkettet dargestellt werden
-ich weiß nicht, wie ich durchsuchen soll nach Gewicht und gleichzeitg feststelle, dass es evtl ein neuer Tag ist.
-ich habe daran gedacht, die Spalte (mit Vorher, Nachher, Gewicht) nach unten durchsuchen zu lassen und mit zu zählen wie oft Gewicht kam und dann bei der Leerzeile= neuer Tag den Zähler wieder zurückzusetzen
Hoffentlich kann mit jemand helfen. Schon mal Danke im vorraus.
In der Datei ist auch im 2. Blatt eine Beispielanordnung dran.

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

Betreff
Datum
Anwender
Anzeige
Nur ein Hinweis zum Layout der Ausgangsdaten
25.04.2019 12:31:48
Zwenn
Hallo Juri Laan,
leider kann ich Dir bei Deinem eigentlichen Problem nicht helfen. Ich möchte Dich aber darauf hinweisen, dass der Aufbau deiner Ausgangsdaten schlecht ist, um nicht zu sagen falsch. Ich schreibe diesen Hinweis, weil das ein häufiger Fehler zu sein scheint.
Das Layout beherbergt mehrere Tabellen, die gar nichts miteinander zu tun haben und die auch noch bestimmte Daten, die für alle "Messreihen" gelten, nur einmal abbilden. Das ist ein Layout für Menschen. Wir können so sehr einfach sehen, worum es eigentlich geht. Was Du willst setzt aber eine einfache Lesbarkeit für die Maschine voraus. Das bedeutet, pro Messung eine Zeile. Das bedeutet auch, Angaben wie Kalenderdaten und Schicht werden in jeder Zeile eingetragen, also auch redundant. Bemerkungen kannst Du trotzdem schreiben. Die müssen ja von der Maschine nicht mit verarbeitet werden.
Als Anhaltspunkt kannst Du Dir überlegen, wie Du Deine Messdaten als CSV-Datei übergeben würdest. CSV ist ein klassisches Format, dass für die Weiterverarbeitung durch Maschinen ersonnen wurde.
Viele Grüße,
Zwenn
Anzeige
AW: Nur ein Hinweis zum Layout der Ausgangsdaten
25.04.2019 12:41:04
Zwenn
Ok,
war ja ein super Einwurf von mir. Was ich beschrieben habe ist genau das, was Du erzeugen willst, wenn ich es richtig sehe. Da stellt sich mir allerdings die Frage, woher kommen die Ausgangsdaten in der Form?
Viele Grüße,
Zwenn
AW: Nur ein Hinweis zum Layout der Ausgangsdaten
25.04.2019 13:08:56
Juri
Hallo Zwenn,,
ich hab erst jetzt deine 2. Antwort gemerkt. Die Ausgangsdaten werden per Handgepflegt... erklärt vielleicht auch warum die List so gut übersichtlich für Menschen sein muss
Juri
AW: Nur ein Hinweis zum Layout der Ausgangsdaten
25.04.2019 12:58:43
Juri
Hallo Zwenn,
mit den Ausgangsdaten muss ich leider auch so leben. Es gibt meiner Ansicht nach auch bessere Darstellungen. In den Daten für das Diagramm ist es in der Tat sinnvoll in jeder Zeile ein Datum stehen zu haben. Das ist mir auch aufgefallen als ich Daten jetzt notgezwungen mit Hand aufbereiten musste.
Trotzdem Danke für deine Anmerkung
Juri
Anzeige
AW: Nur ein Hinweis zum Layout der Ausgangsdaten
30.04.2019 18:49:08
Juri
Hallo zusammen,
ich hab diese Woche noch ein bisschen getüftelt und bin auch voran gekommen.
Trotzdem verzweifel ich gerade ein bisschen.
Da es an einem Tag unterschiedlich viele Messungen geben kann orientiere ich mich an der Spalte F. Dort lasse ich pro gefundenes "Gewicht" +1 auf einen Zähler addieren. Es wird maximal 4 Mal gemessem und min. 1 Mal. Als Orientierung für einen neuen Tag benutze ich die leere Zelle zwischen 2 Tagen in der Spalte F, da wird dann der Zähler auf gesetzt um wieder die Schleife bei 1. Messung anfangen zu lassen.
Da meine gesuchten Werte immer in definierten Abständen zu meinem gefundenen "Gewicht" sich befinden hab ich durch offset den zu kopierenden Bereich festgelegt und lasse es im Ausgabeblatte in der letzten unbeschriebenen Zeile der zugehörigen Spalte ausgeben.. Trotzdem funtkioniert es nicht so. Beim durchlaufen des Makros wirft es mit die falschen Werte aus
Sub Datenaufbereitung()
Dim Worksheet As Worksheet
Dim AusgabeSheet As Worksheet
Dim Zähler As Integer
Dim Suchzeille As Long
Worksheets("Ausgangsdaten").Activate
Zähler = 0
Set Worksheet = ThisWorkbook.Worksheets("Ausgangsdaten")
Set AusgabeSheet = ThisWorkbook.Worksheets("Daten für Diagramm")
For SuchZeile = 4 To Worksheet.Cells(Rows.Count, 6).End(xlUp).Row
If Worksheet.Range("F" & SuchZeile).Value = "Gewicht" Then
If Zähler = 0 Then 'Erste Messung für Datum
ActiveCell.Offset(0, -4).Resize(1, 4).Copy '4 Gewichte kopieren
With Sheets("Daten für Diagramm")
AusgabeZeile = AusgabeSheet.Cells(.Rows.Count, 3).End(xlUp).Row + 1
AusgabeSheet.Range("C" & AusgabeZeile).PasteSpecial xlPasteValues
End With
ActiveCell.Offset(-2, -5).Resize(1, 1).Copy 'Datum
With Sheets("Daten für Diagramm")
AusgabeZeile = AusgabeSheet.Cells(.Rows.Count, 1).End(xlUp).Row + 1
AusgabeSheet.Range("A" & AusgabeZeile).PasteSpecial
End With
ActiveCell.Offset(-1, -5).Resize(1, 1).Copy 'Schicht
With Sheets("Daten für Diagramm")
AusgabeZeile = AusgabeSheet.Cells(.Rows.Count, 2).End(xlUp).Row + 1
AusgabeSheet.Range("B" & AusgabeZeile).PasteSpecial
End With
ActiveCell.Offset(1, -5).Resize(1, 1).Copy 'Bemerkung
With Sheets("Daten für Diagramm")
AusgabeZeile = AusgabeSheet.Cells(.Rows.Count, 7).End(xlUp).Row + 1
AusgabeSheet.Range("G" & AusgabeZeile).PasteSpecial
End With
Zähler = Zähler + 1
End If
If Zähler = 1 Then 'Zweite Messung für Datum
ActiveCell.Offset(0, -4).Resize(1, 4).Copy '4 Gewichte kopieren
With Sheets("Daten für Diagramm")
AusgabeZeile = AusgabeSheet.Cells(.Rows.Count, 3).End(xlUp).Row + 1
AusgabeSheet.Range("C" & AusgabeZeile).PasteSpecial xlPasteValues
End With
ActiveCell.Offset(-5, -5).Resize(1, 1).Copy 'Datum
With Sheets("Daten für Diagramm")
AusgabeZeile = AusgabeSheet.Cells(.Rows.Count, 1).End(xlUp).Row + 1
AusgabeSheet.Range("A" & AusgabeZeile).PasteSpecial
End With
ActiveCell.Offset(-4, -5).Resize(1, 1).Copy 'Schicht
With Sheets("Daten für Diagramm")
AusgabeZeile = AusgabeSheet.Cells(.Rows.Count, 2).End(xlUp).Row + 1
AusgabeSheet.Range("B" & AusgabeZeile).PasteSpecial
End With
ActiveCell.Offset(-2, -5).Resize(1, 1).Copy 'Bemerkung
With Sheets("Daten für Diagramm")
AusgabeZeile = AusgabeSheet.Cells(.Rows.Count, 7).End(xlUp).Row + 1
AusgabeSheet.Range("G" & AusgabeZeile).PasteSpecial
End With
Zähler = Zähler + 1
End If
If Zähler = 2 Then 'Dritte Messung für Datum
ActiveCell.Offset(0, -4).Resize(1, 4).Copy '4 Gewichte kopieren
With Sheets("Daten für Diagramm")
AusgabeZeile = AusgabeSheet.Cells(.Rows.Count, 3).End(xlUp).Row + 1
AusgabeSheet.Range("C" & AusgabeZeile).PasteSpecial xlPasteValues
End With
ActiveCell.Offset(-8, -5).Resize(1, 1).Copy 'Datum
With Sheets("Daten für Diagramm")
AusgabeZeile = AusgabeSheet.Cells(.Rows.Count, 1).End(xlUp).Row + 1
AusgabeSheet.Range("A" & AusgabeZeile).PasteSpecial
End With
ActiveCell.Offset(-7, -5).Resize(1, 1).Copy 'Schicht
With Sheets("Daten für Diagramm")
AusgabeZeile = AusgabeSheet.Cells(.Rows.Count, 2).End(xlUp).Row + 1
AusgabeSheet.Range("B" & AusgabeZeile).PasteSpecial
End With
ActiveCell.Offset(-5, -5).Resize(1, 1).Copy 'Bemerkung
With Sheets("Daten für Diagramm")
AusgabeZeile = AusgabeSheet.Cells(.Rows.Count, 7).End(xlUp).Row + 1
AusgabeSheet.Range("G" & AusgabeZeile).PasteSpecial
End With
Zähler = Zähler + 1
End If
If Zähler = 3 Then 'Vierte Messung für Datum
ActiveCell.Offset(0, -4).Resize(1, 4).Copy '4 Gewichte kopieren
With Sheets("Daten für Diagramm")
AusgabeZeile = AusgabeSheet.Cells(.Rows.Count, 3).End(xlUp).Row + 1
AusgabeSheet.Range("C" & AusgabeZeile).PasteSpecial xlPasteValues
End With
ActiveCell.Offset(-11, -5).Resize(1, 1).Copy 'Datum
With Sheets("Daten für Diagramm")
AusgabeZeile = AusgabeSheet.Cells(.Rows.Count, 1).End(xlUp).Row + 1
AusgabeSheet.Range("A" & AusgabeZeile).PasteSpecial
End With
ActiveCell.Offset(-10, -5).Resize(1, 1).Copy 'Schicht
With Sheets("Daten für Diagramm")
AusgabeZeile = AusgabeSheet.Cells(.Rows.Count, 2).End(xlUp).Row + 1
AusgabeSheet.Range("B" & AusgabeZeile).PasteSpecial
End With
ActiveCell.Offset(-8, -5).Resize(1, 1).Copy 'Bemerkung
With Sheets("Daten für Diagramm")
AusgabeZeile = AusgabeSheet.Cells(.Rows.Count, 7).End(xlUp).Row + 1
AusgabeSheet.Range("G" & AusgabeZeile).PasteSpecial
End With
Zähler = Zähler + 1
End If
End If
If Worksheet.Range("F" & SuchZeile).Value = "" Then
Zähler = 0
End If
Next SuchZeile
End Sub
ich hoffe ihr könnt mir helfen
Juri
Anzeige

76 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige