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, 22:48 (Dieser Beitrag wurde zuletzt bearbeitet: 02.03.2017, 22:48 von aeugeln87.)
(02.03.2017, 22: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, 10:19 (Dieser Beitrag wurde zuletzt bearbeitet: 03.03.2017, 10:19 von Rabe.)
Hi Atilla,
(03.03.2017, 00: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.