Registriert seit: 29.09.2019
Version(en): 2016
08.10.2020, 15:13
(Dieser Beitrag wurde zuletzt bearbeitet: 08.10.2020, 15:13 von Felix77m7.)
Hallo zusammen,
ich habe hier eine relativ einfache funktion die die Spalten von 32 bis 37 durchgehen soll und wenn der String in der Zelle gleich mit dem der zelle(2,32) gleich ist die Zelle in eine Spalte in einem neues Arbeitsblatt copy pasten.
Komischerweise macht die Funktion das aber nur in der ersten Spalte. wo ist mein Fehler?
Sub startupRubriken()
Dim längeColumn As Integer
längeColumn = WorksheetFunction.CountA(Worksheets(1).Columns(32))
Dim n As Integer
Dim i As Integer
For n = 32 To 37
For i = 0 To längeColumn
If Worksheets("Tabelle1").Cells(i + 1, n).Value = Worksheets("Tabelle1").Cells(2, 32).Value Then
Worksheets("Tabelle1").Cells(i + 1, n).Copy Destination:=Worksheets("Tabelle2").Cells(i + 1, 1)
End If
Next i
Next n
End Sub
Registriert seit: 16.08.2017
Version(en): 2007 / 2010 / Web
08.10.2020, 15:23
(Dieser Beitrag wurde zuletzt bearbeitet: 08.10.2020, 15:23 von Elex.)
Hi
hier sollte der Fehler sein.
Code:
Destination:=Worksheets("Tabelle2").Cells(i + 1, 1)
Cells(i+1,1) sobald i von vorn beginnt überschreibst du dir was du bis dahin hast.
mach dir einen Zähler für die Funde.
a = a + 1
Cells(a,1)
oder ändere die Einfügespalte.
Cells(i+1,n)
Gruß Elex
Registriert seit: 29.09.2019
Version(en): 2016
08.10.2020, 15:32
(Dieser Beitrag wurde zuletzt bearbeitet: 08.10.2020, 15:32 von Felix77m7.)
Hi,
ne tut mir leid da hab ich mich falsch ausgedrückt. Der Vergleichswert ist sozusagen durcheinander in den Spalten 32 bis 37 aber niemals in einer Reihe 2 mal. Genau das will ich erreichen. Die die verteilt über mehrere spalten in verschiedenen Reihen sind in eine einzige Spalte zusammentragen.
Problem ist, dass er nur die Werte aus der 32. Spalte rauskopiert, aber in den folgenden dann die if schleife warum auch immer nciht mehr erfüllt wird.
Registriert seit: 16.08.2017
Version(en): 2007 / 2010 / Web
Hast du mal eine Bsp.Datei.
Wenn du es in einer Liste haben möchtest, dann mein erster Vorschlag.
Registriert seit: 29.09.2019
Version(en): 2016
Ah ich habe jetzt den Fehler gefunden. Das problem ist, dass in den folgenden Spalten vor dem String noch ein Leerzeichen ist warum auch immer.
Also in der Vergleichszelle steht "Energy & Cleantech" aber in den folgenden Zellen steht " Energy & Cleantech".
Dann ist jetzt für mich die Frage wie ich das vergleichen kann, sodass der das ignoriert. Also am besten wäre es wenn ich auch nicht If Cells( x, y) = "*BLABLA" sondern so wie jetzt auch die beiden Zellen direkt vergleiche.
Wie geht das?
Registriert seit: 16.08.2017
Version(en): 2007 / 2010 / Web
08.10.2020, 20:37
(Dieser Beitrag wurde zuletzt bearbeitet: 08.10.2020, 20:38 von Elex.)
Hi
Zitat:Ah ich habe jetzt den Fehler gefunden. Das problem ist, dass in den folgenden Spalten vor dem String noch ein Leerzeichen ist warum auch immer.
Meine erste Antwort schließt ja nicht aus das es noch weitere Probleme gibt.
So sollten beide behoben sein.
Code:
Sub startupRubriken()
Dim längeColumn As Integer
Dim n As Integer
Dim i As Integer
Dim a As Long
längeColumn = WorksheetFunction.CountA(Worksheets(1).Columns(32))
With Worksheets("Tabelle1")
For n = 32 To 37
For i = 0 To längeColumn
If .Cells(i + 1, n).Value = .Cells(2, 32).Value Or Mid(.Cells(i + 1, n).Value, 2) = .Cells(2, 32).Value Then
a = a + 1
.Cells(i + 1, n).Copy Destination:=Worksheets("Tabelle2").Cells(a, 1)
End If
Next i
Next n
End With
End Sub
Gruß Elex