Vba, Funktion erkennt nur erste Vergleiche in erster Spalte
#1
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
Top
#2
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
Top
#3
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.
Top
#4
Hast du mal eine Bsp.Datei.

Wenn du es in einer Liste haben möchtest, dann mein erster Vorschlag.
Top
#5
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?
Top
#6
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. Blush

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
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste