da im ms-Forum noch keine Antwort vorliegt kann man sich die Sache ansehen. Es fehlen aber konkrete Informationen! Zum Programmieren muss man die Namen der Quell- und Zieltabelle kennen, und ab wo die "Nein" Spalten beginnen? Ich nehme an weil C,D,E kopiert werden soll das da kein "Nein" drin steht. Ebenso wissen wir nicht in welche Spalten in der neuen Tabelle kopiert werden soll. Auch das hier ist völlig unklar:
Zitat:Jetzt möchte ich jedes "NEIN", in Abhäbgikeit von dem Wert in Spalte A (kommt also öfter vor), in eine/viele neue Tabellen kopieren.
1) in Abhaengigkeit von welchem Wert in Spalte A?? Wo findet man den?? Und ist es immer derselbe Wert?? 2) in eine/viele neue Tabellen. Wie sagt man einem Makro was "viele" sind. Man kann 2,3 sagen, aber was sind viele??
kleiner Tipp von mir: wenn du Hilfe willst stelle bitte eine Beispieldatei mit 10-15 Zeilen, und 10 Spalten ins Forum, damit wir erst mal sehen können wie diese Aufgabe konkret aussieht, bitte mit dem Wunschergebnis! Wir können ja nicht "riechen" in welche Spalten in der Zieltabelle die Daten stehen sollen. Und in welcher Spalte angegeben werden soll in welcher Spalte in der Quelltabelle das "Nein" gefunden wurde??
mfg Gast 123
Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:1 Nutzer sagt Danke an Gast 123 für diesen Beitrag 28 • aeugeln87
02.03.2017, 23:48 (Dieser Beitrag wurde zuletzt bearbeitet: 02.03.2017, 23:48 von aeugeln87.)
(02.03.2017, 23:16)Gast 123 schrieb: Hallo
da im ms-Forum noch keine Antwort vorliegt kann man sich die Sache ansehen. Es fehlen aber konkrete Informationen! Zum Programmieren muss man die Namen der Quell- und Zieltabelle kennen, und ab wo die "Nein" Spalten beginnen? Ich nehme an weil C,D,E kopiert werden soll das da kein "Nein" drin steht. Ebenso wissen wir nicht in welche Spalten in der neuen Tabelle kopiert werden soll. Auch das hier ist völlig unklar:
1) in Abhaengigkeit von welchem Wert in Spalte A?? Wo findet man den?? Und ist es immer derselbe Wert?? 2) in eine/viele neue Tabellen. Wie sagt man einem Makro was "viele" sind. Man kann 2,3 sagen, aber was sind viele??
kleiner Tipp von mir: wenn du Hilfe willst stelle bitte eine Beispieldatei mit 10-15 Zeilen, und 10 Spalten ins Forum, damit wir erst mal sehen können wie diese Aufgabe konkret aussieht, bitte mit dem Wunschergebnis! Wir können ja nicht "riechen" in welche Spalten in der Zieltabelle die Daten stehen sollen. Und in welcher Spalte angegeben werden soll in welcher Spalte in der Quelltabelle das "Nein" gefunden wurde??
mfg Gast 123
Ok, danke. Habe ich mal gemacht.
Vll. sollten aber auch einfach neue Dateien erzeugt werden, da ca. 150 neue Tabellen, aber mit relativ wenig Inhalt, entstehen werden.
unten stehenden Code in ein allgemeines Modul einfügen:
Code:
Sub tabellenAnlegen1() Dim i As Long Dim j As Long Dim k As Long, m As Long Dim x Dim loLetzte As Long, lngS As Long Dim strgText As String Dim wks As Worksheet Dim arr As Variant Dim D1 As Object Dim varK Set D1 = CreateObject("Scripting.Dictionary") On Error GoTo fehler Application.ScreenUpdating = False
strgText = "NEIN"
With Worksheets("Teilnehmende-Stammdatenblatt") 'datentabelle loLetzte = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count) lngS = .Cells(1, .Columns.Count).End(xlToLeft).Column arr = .Range("A1:C" & loLetzte) For i = 3 To UBound(arr) x = Application.Match(strgText, .Rows(i), 0) If IsNumeric(x) Then D1(arr(i, 1)) = D1(arr(i, 1)) & "#" & arr(i, 2) & "#" & arr(i, 3) & "#" & x End If Next i
For Each varK In D1.keys Set wks = Worksheets.Add(After:=Sheets(Sheets.Count)) wks.Name = varK wks.Range("A1:B1").Value = .Range("B1:C1").Value wks.Range("C1").Value = "Spalte" k = 0 m = 2 strgText = Replace(D1(varK), "#", "", 1, 1) For j = 0 To UBound(Split(strgText, "#")) Step 3 wks.Cells(m, 1) = Split(strgText, "#")(k) wks.Cells(m, 2) = Split(strgText, "#")(k + 1) wks.Cells(m, 3) = Replace(Cells(1, Val(Split(strgText, "#")(k + 2))).Address(0, 0), "1", "") m = m + 1 k = k + 3 Next j Next .Select 'am Ende wieder Datentabelle auswählen End With fehler: Application.ScreenUpdating = True Set wks = Nothing D1.RemoveAll Set D1 = Nothing If Err.Number > 0 Then MsgBox Err.Number & " " & Err.Description
End Sub
Mit folgendem Code können alle Tabellen bis auf Tabelle "Teilnehmende-Stammdatenblatt" gelöscht und danach kann wieder der obige Code gestartet werden:
Code:
Sub tab_löschen() Dim j As Integer
For j = Sheets.Count To 1 Step -1 If Sheets(j).Name <> "Teilnehmende-Stammdatenblatt" Then Application.DisplayAlerts = False Sheets(j).Delete Application.DisplayAlerts = True End If Next j End Sub
Und unten noch einmal Deine Datei mit eingearbeitetem Code:
03.03.2017, 11:19 (Dieser Beitrag wurde zuletzt bearbeitet: 03.03.2017, 11:19 von Rabe.)
Hi Atilla,
(03.03.2017, 01:28)atilla schrieb: Und unten noch einmal Deine Datei mit eingearbeitetem Code:
zwei Sachen sind mir aufgefallen:
Das Sortieren sollte das Teilnehmende-Blatt ausklammern
wenn zwei mal NEIN in einer Zeile steht, wird im neuen Tabellenblatt nur das erste Auftreten in der Spalte C genannt. Evtl. wäre es sinnvoll, das auf weitere Spalten zu erweitern.