2017-06-23 141 views
0

我的工作簿由兩個工作表(片1和片2)錯誤而使用usedrange.find

我想找的ID在J列片1,並需要尋找在片相應的日期的2,其是在列G.

我想在列要被打印W¯¯片的該日期1.

的問題是,在少數情況下,我讓我的註釋部分,這是在L列工作表2,而不是日期。

工作表2中的G列被完全填滿。

任何人都可以,建議,我的代碼或執行有什麼問題。我只是想要打印日期,如果沒有,那麼我不需要打印任何東西。

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 

回答

0

你必須把有另一種Sheets("Sheet2")以獲得正確的參考:

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

嘗試與With...End With語句的工作。然後,您可以使用Point(「。」)來引用您在with Statements中設置的工作表。

一些意見後,我覺得這個就是你需要:

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 

這個代碼是找到在Sheet2的單元格J2的ID。之後,它將保存單元格3列之前的值(J - 3列爲G列)。這是你想要寫入你的單元格W2的日期。直到J列爲空的所有行都是這樣。 這是你想要的功能嗎?

+0

它力氣工作,仍然是複製其他行值 – Mikz

+0

好吧,我不明白你的問題。您想查找sheet1中的字符串以獲取sheet2中的日期嗎?您的代碼執行以下操作: 它選擇sheet1(不是必需的),它將變量rng設置爲包含sheet1上的範圍(G1)值的第一個單元格的範圍。然後,您獲取該範圍對象值並將其輸入到工作表1的範圍(W1)中。 您要查找的身份證號碼在哪裏? – Pearli

+0

雅我的代碼,查找字符串,並從表2中獲取日期。 – Mikz