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:
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
(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.
Hoffe jetzt ist es verständlicher.
Beste Grüße
Hallo,
ist in jeder Zeile ein Nein zu finden?
Wenn nicht, soll der Datensatz dann nicht übernommen werden
oder soll er übernommen werden und die Spaltenbenennung bleibt leer?
(02.03.2017, 23:12)atilla schrieb: [ -> ]Hallo,
ist in jeder Zeile ein Nein zu finden?
Wenn nicht, soll der Datensatz dann nicht übernommen werden
oder soll er übernommen werden und die Spaltenbenennung bleibt leer?
Hallo,
es ist nicht in jeder Zeile ein "NEIN" zu finden. Die Daten sollen nur übernommen werden, wenn es ein "NEIN" gibt.
Beste Grüße
Hallo,
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:
[
attachment=9985]
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.
Hallo Ralf,
das Ende des Sortiermakros so:
Code:
Next
Sheets("Teilnehmende-Stammdatenblatt").Move before:=Sheets(1)
End Sub
Mit den zwei Nein hat der TE in seinem Beispiel auch nicht berücksichtigt.
Und außerdem würde es meinen schönen Code durcheinander bringen. :@
Aber Du hast recht, dass sollte wahrscheinlich auch rein.
Ich warte aber noch, auch aus Zeitmangel.
Ach so, bevor ich es vergesse: Du solltest nicht nur negatives heraussuchen.
Ab und zu auch mal loben, denn sonst demotiviert es mich. :22: