Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten 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
Antworten 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.
Antworten Top
#4
Hast du mal eine Bsp.Datei.

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


Gehe zu:


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