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

VBA excel Hilfe

VBA excel Hilfe
15.11.2016 12:19:08
Markus
Hallo Leute, habe folgendes Thema zu lösen.
ich habe insgesamt 12 tabellenblätter in einem Excel (davon sind nur die letzten 7 Blätter wichtig).
In Blatt "CPS" gibt es eine Auflistung von Fahrzeugkomponenten zu ihren Gruppen. (z.b. Sensorik und Aktuatorik).
Beispiel: common_fusi (spalte A) und gehört zur Gruppe Überwachungskonzepte (Spalte B)
Also in Spalte A sind somit die Komponenten (sind schon in alphabetischer Reihenfolge) und in Spalte B die Überwachungskomponenten.
Zu diesen Komponenten sind die anderen 6 tabellenblätter mit Daten befüllt (aber nicht jede Komponenten hat in jedem Tabellenblatt Daten). Sprich es kann mal zu einer Komponenten nur eine Datenzeile existieren und zur anderen 6 Datenzeile.
Meine Aufgabe ist jede einzelne Komponente aus Spalte A, jedes der darauffolgenden 6 tabellenblätter zu durchsuchen (auch Spalte A) und überprüfen ob in Spalte B (derselben Zeile der komponente) ein Wert ist. Ist dort ein Wert soll über die Zeile ein diagramm erstellt werden und in eine PP Folie kopiert werden.
Das mit dem Diagramm erstellen über die Zeile und Powerpoint kopieren bekomm ich hin.
Ich hab Probleme damit die Komponenten auszulesen.
Also Tabellenblatt "CPS" enthält in Spalte A die Komponenten udn in Spalte B die Gruppe dazu (sprich es gehören zu einer Gruppe auch mal mehr als nur eine Komponenten, d.h. in Spalte B wiederholen sich die Gruppennamen immer mal wieder).
Das Problem ist in Powerpoint soll später die Gruppierung der Diagramme aber dann Anhand der Gruppe und dann die dazugehörigen Komponenten mit ihren jeweiligen Diagrammen erfolgen.
Falls irgendetwas unklar ist, bitte bescheid geben dann versuch ichs nochmal zu erklären. oder nen Screenshot mitzuschicken.
Mein Lösungsansatz war der Gedanke in dem Tabellenblatt "CPS" in Spalte D die Gruppen alphabetisch zu sortieren und in Spalte E die dazugehörigen Komponenten.
Dann will ich die Komplette Spalte D durchlaufen, mir den Wert in E anschauen und in Spalte A durchlaufen. Dann weiß ich die Zeilennr in Spalte A und muss mit der Zeilennummer die anderen 6 Tabellenblätter anschauen und sobald Daten in der Zeile in Spalte B ist ein Diagramm erstellen.
Ich bin auch für weitere Ideen offen. brauche nur Hilfe weil ich das in der Arbeit machen muss und bis vor 1 Woche noch nie Kontakt zu VBA hatte und dementsprechend nciht sehr gut darin bin.
Mit freundlichen Grüßen
Markus Auer

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA excel Hilfe
19.11.2016 19:08:56
fcs
Hallo Markus,
ich denke es ist "einfacher", die Gruppen, Komponenten und Zeilen-Nummer aus Blatt "CPS" sowie das Ergebnis der Prüfung ob in den restlichen 6 Blättern ein Wert vorhanden ist in einem separaten Tabellenblatt einzutragen.
Dann diese Liste nah Gruppe, Komponente zu sortieren und dann für die Erstellung der Diagramme diese sortierte Liste abzarbeiten.
Gruß
Franz
Hier das Makro zur Erstellung der sortierten Liste. Das Erstellen der Diagramme in PP musst du noch integrieren.
Sub MakeDiagram()
Dim wkb As Workbook
Dim wksCPS As Worksheet
Dim wks(7 To 12) As Worksheet
Dim intS As Integer
Dim wksListe As Worksheet
Dim Zeile As Long
Dim Zeile_L As Long
Dim varComp, varGrp
Set wkb = ActiveWorkbook
Set wksCPS = wkb.Worksheets("CPS")
Application.Workbooks.Add Template:=xlWBATWorksheet
Set wksListe = ActiveSheet
With wksListe
'Spaltentitel eintragen
Zeile_L = 2
.Cells(Zeile_L, 1) = "Gruppe"
.Cells(Zeile_L, 2) = "Komponente"
.Cells(Zeile_L, 3) = "Zeile"
For intS = 7 To 12
.Cells(Zeile_L, intS - 3) = "'" & wkb.Sheets(intS).Name
Next
'Komponenten eintragen mit Info, ob Diagramm in PP erstellt werden muss
For Zeile = 2 To wksCPS.Cells(wksCPS.Rows.Count, 1).End(xlUp).Row
Zeile_L = Zeile_L + 1
.Cells(Zeile_L, 1) = wksCPS.Cells(Zeile, 2)
.Cells(Zeile_L, 2) = wksCPS.Cells(Zeile, 1)
.Cells(Zeile_L, 3) = Zeile
For intS = 7 To 12
'Wert in Spalte B prüfen
If wkb.Sheets(intS).Cells(Zeile, 2)  "" Then
.Cells(Zeile_L, intS - 3) = "ja"
Else
.Cells(Zeile_L, intS - 3) = "nein"
End If
Next
Next
.Columns.AutoFit
If Zeile_L > 3 Then
'Daten in Liste nach Gruppe, Komponente sortieren
With .Range(.Cells(2, 1), .Cells(Zeile_L, 9))
.Sort Key1:=.Range("A1"), order1:=xlAscending, _
Key2:=.Range("B1"), order2:=xlAscending, Header:=xlYes
End With
End If
Zeile_L = 1
.Cells(Zeile_L, 4) = "Diagramm erstellen aus Tabelle"
'sortierte Liste abarbeiten um Diagramme zu erstellen
For Zeile_L = 3 To Zeile_L
varGrp = .Cells(Zeile_L, 1)
varComp = .Cells(Zeile_L, 2)
Zeile = .Cells(Zeile_L, 3)
For intS = 4 To 9
If .Cells(Zeile_L, intS) = "ja" Then
With wkb.Sheets(.Cells(2, intS).Text)
.Activate
'Diagramm PP erstellen für Daten in Zeile der Tabelle
End With
End If
Next
Next
.Parent.Activate
End With
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige