Registriert seit: 07.03.2016
	
Version(en): 2013
	
 
	
	
		Hallo, 
ich würde gerne bei Übereinstimmung des Werts in der dritten Zeile einer bestimmten Spalte in Tabelle "Test" mit dem Wert in Zelle "C11" in der Tabelle "Test01" den Wert in der vierten Zeile der jeweiligen Spalte in Tabelle "Test" in Zelle "E11" in Tabelle "Test01" übernehmen. Unten angegeben ist der Code, der derzeit jedoch leider nicht funktioniert. Wer kann mir da weiterhelfen und entdeckt den derzeit noch falschen Eintrag im Code!?
Code:
Sub Test()
    Dim LoL_2 As Integer
    Dim x1 As Integer
    Dim ws2 As Worksheet
    
    Set ws2 = Worksheets("Test")
    
    With Worksheets("Test01")
        LoL_2 = ws2.Cells(3, 256).End(xlToLeft).Column
        
        For x1 = 1 To LoL_2
            If ws2.Rows("3" & x1) = .Range("C11") Then
                .Range("E11") = ws2.Rows("4" & x1)
            End If
        Next
        
    End With
End Sub
 
	 
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 10.04.2014
	
Version(en): 2016 + 365
	
 
	
		
		
		14.03.2017, 06:28 
(Dieser Beitrag wurde zuletzt bearbeitet: 14.03.2017, 06:28 von Rabe.)
		
	 
	
		Hi,
 (13.03.2017, 22:43)sunny01 schrieb:  ich würde gerne bei Übereinstimmung des Werts in der dritten Zeile einer bestimmten Spalte in Tabelle "Test" mit dem Wert in Zelle "C11" in der Tabelle "Test01" den Wert in der vierten Zeile der jeweiligen Spalte in Tabelle "Test" in Zelle "E11" in Tabelle "Test01" übernehmen.
heißt die Variable xeins oder xl?
Es ist schlecht, Variablen so zu benennen, wie Zellen oder Spalten, nimm lieber etwas längere sprechende Namen.
Du willst also prüfen:
Wenn Worksheet("Test").Range("Suchspalte" & 3) = Worksheet("Test01").Range("C11") dann
Worksheet("Test01").Range("E11") = Worksheet("Test").Range("Suchspalte" & 4)
Und dies für alle Suchspalten von 1 bis LoL2, also alle belegten nach rechts.
So richtig verstanden?
Was bringt das? Wenn der Begriff aus C11 mehrmals in den Spalten vorkommt, dann wird jeder Wert in E11 mit dem der gefundenen Folgespalte überschrieben.
	
 
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 07.03.2016
	
Version(en): 2013
	
 
	
	
		Hallo Ralf,
danke Dir für die Antwort und den Tipp für die Benennung der Variablen. Deine Auslegung des Codes ist vollkommen korrekt. 
Zur Info: der Begriff in Zelle C11 ist eindeutig und kommt nur einmal in der Tabelle vor, wodurch sichergestellt ist, dass der Wert in E11 tatsächlich aus der einen Spalte stammt. Leider funktioniert der Code derzeit nicht. Ich habe versucht, diesen aus einem Code abzuleiten, der Einträge in Zeilen (anstatt in Spalten) sucht und in der jeweiligen Zeile einen anderen Wert kopiert. In diesem Fall wäre jedoch die Suche nach der Übereinstimmung in Spalten für mich wichtig. Vielleicht entdeckst du den Fehler im Code!
	
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 10.04.2014
	
Version(en): 2016 + 365
	
 
	
	
		Hi,
 (14.03.2017, 15:01)sunny01 schrieb:  Vielleicht entdeckst du den Fehler im Code!
ich komme heute vermutlich nicht mehr dazu, aber ich denke, einer der anderen Helfer kann das einfach lösen.
	
 
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 13.04.2014
	
Version(en): 365
	
 
	
		
		
		14.03.2017, 17:19 
(Dieser Beitrag wurde zuletzt bearbeitet: 14.03.2017, 17:34 von BoskoBiati.)
		
	 
	
		Hi,
was soll das werden:
Code:
If ws2.Rows("3" & x1) = .Range("C11") Then
???
Machs mal so:
Code:
Sub Test()
   Dim loTreffer As Long
   Dim ws2 As Worksheet
   
   Set ws2 = Sheets("TestA")
   
   With Worksheets("Test01")
       If Application.WorksheetFunction.CountIf(ws2.Rows(3), .Range("C11")) > 0 Then
            loTreffer = Application.WorksheetFunction.Match(.Range("C11"), ws2.Rows(3), 0)
            .Range("E11") = ws2.Cells(4, loTreffer)
        End If
   End With
End Sub
Ach ja, ein Makro und eine Tabelle Test nennen geht schief!!!
	
 
	
	
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
	
	
 
 
	
	
	
		
	Registriert seit: 11.04.2014
	
Version(en): 2021
	
 
	
	
		Code:
Sub Test()
    Dim LoL_2 As Integer
    Dim x1 As Integer
    Dim ws2 As Worksheet
    
    Set ws2 = Worksheets("Test")
    
    With Worksheets("Test01")
        LoL_2 = ws2.Cells(3, 256).End(xlToLeft).Column
        
        For x1 = 1 To LoL_2
            If ws2.Cells(3, x1) = .Range("C11") Then
                .Range("E11") = ws2.Cells(4, x1)
            End If
        Next
        
    End With
End Sub
...versuche mal diesen Code!