2017-06-23 10 views
0

Meine Arbeitsmappe besteht aus zwei Arbeitsblatt (Blatt 1 und Blatt 2)Fehler bei der Verwendung von usedrange.find

ich für die ID in Blatt 1 in Spalte J suchen möge, und für ihr entsprechendes Datum im Blatt suchen müssen 2, die in Spalte G.

ich möchte dieses Datum in der Spalte W des Blattes gedruckt werden 1.

Das Problem ist, in einigen Fällen ich meine Kommentarbereich bekommen, die in Spalte L von Blatt 2, anstelle von Datum.

Die Spalte G in Blatt 2 ist vollständig gefüllt.

Könnte jemand vorschlagen, was ist das Problem mit meinem Code oder Ausführung. Ich möchte nur das Datum gedruckt werden, wenn nicht, dann brauche ich nichts zu drucken.

Sub lookup() 

Dim totalrows As Long 
Dim totalcolumn As Long 
Dim rng As range 
Dim rng1 As range 
Dim i As Long 

totalrows = ActiveSheet.UsedRange.Rows.Count 

For i = 2 To totalrows 

Sheets("Sheet1").Select 

Set rng = Sheets("Sheet2").UsedRange.Find(Cells(i, 7).Value) 

If Not rng Is Nothing Then 

Cells(i, 23).Value = rng.Value 

End If 

Next i 

End Sub 

Antwort

0

Sie haben dort zu setzen andere Sheets("Sheet2") die richtige Referenz zu erhalten:

Sheets("Sheet2").UsedRange.Find(Sheets("Sheet2").Cells(i, 7).Value) 

Versuchen mit den With...End With Aussagen zu arbeiten. Dann können Sie einen Punkt (".") Verwenden, um auf die Blätter zu verweisen, die Sie in with with Statements festgelegt haben.

Nach einigen Kommentaren ich denke, das man ist, was Sie brauchen:

Sub lookup() 
    Dim totalrows As Long 
    Dim totalcolumn As Long 
    Dim rng As String 
    Dim i As Long 

    With Sheets("Sheet1") 
     totalrows = .Range(.Cells(1, 10), .Cells(1, 10).End(xlDown)).Rows.Count 

     For i = 2 To totalrows 
      With Sheets("Sheet2") 
       rng = .UsedRange.Find(Sheets("Sheet1").Cells(i, 10).Value).Offset(0, -3).Value 
      End With 

      If rng <> "" Then 
       .Cells(i, 23).Value = rng 
      End If 
     Next 
    End With 
End Sub 

Dieser Code die ID von der Zelle J2 in Sheet2 findet. Danach speichert es den Wert der Zelle 3 Spalten vor (J - 3 Spalten ist Spalte G). Dies ist das Datum, das Sie in Ihre Zelle W2 schreiben möchten. Und das ist für alle Zeilen, bis Spalte J leer ist. Ist das die Funktionalität, die Sie haben möchten?

+0

Es funktioniert, noch kopiert es die anderen Zeilenwerte – Mikz

+0

ok, ich bekomme Ihr Problem nicht. Sie möchten nach einem String in Blatt1 suchen, um ein Datum aus Blatt2 zu erhalten? Ihr Code macht folgendes: er wählt sheet1 (nicht notwendig), er setzt die Variable rng auf den Bereich der ersten Zelle, die den Wert von Range (G1) auf sheet1 enthält. Dann nimmst du den Range-Objekt-Wert und tippst in den Bereich von Sheet1 (W1). Wo suchen Sie Ihre ID? – Pearli

+0

ya my code, Sucht nach Zeichenfolge und ruft das Datum aus Blatt 2 ab. – Mikz

Verwandte Themen