2015-03-08 60 views
0

我很新的VBA所以需要幫助......請幫我..專家匹配的字符串,並將其複製

我在B列表1,它是這樣的數據 - 123alina09032015 & 我有欄A中的數據2,就像這樣 - 阿麗娜。

數據非常龐大,並且每個月都在增加。所以我想要的是一個VBA代碼來匹配A列表2和B列表1中的單詞,並將其粘貼到表格1中c列中的相鄰單元格。

我有一個代碼,但只能找到完全匹配它粘貼到表1。這裏列C是代碼:

Sub CopyBasedonSheet1() 

Dim i As Long 
Dim j As Long 
Sheet1LastRow = Worksheets("sheet1").Range("B" & Rows.Count).End(xlUp).Row 
Sheet2LastRow = Worksheets("sheet2").Range("A" & Rows.Count).End(xlUp).Row 


For j = 1 To Sheet1LastRow 
    For i = 1 To Sheet2LastRow 
     If Worksheets("sheet1").Cells(j, 1).Value = Worksheets("sheet2").Cells(i, 4).Value Then 
      Worksheets("sheet1").Cells(j, 3).Value = Worksheets("sheet2").Cells(i, 1).Value 
     Else 
     End If 
    Next i 
Next j 
End Sub 

期待你的答案

+0

你只想要第一場比賽嗎?你目前的例程不斷尋找它發現的東西。後續的比賽應該堆放在相鄰的欄目中嗎?你可以編輯你的描述,以便你使用的列與代碼中的列匹配(或編輯代碼)? – Jeeped 2015-03-08 23:09:32

+0

如何使用InStr()? – Porcupine911 2015-03-09 00:06:15

+0

是的,我用InStr(),它解決了我的問題..謝謝大家。 – LadyAlina 2015-03-09 02:35:40

回答

0

的工作表函數=Find("abc","123abc456")將返回在「123abcdef」字符串「abc」的起始位置,所以那樣4。如果第二個字符串不包含第一個字符串,則返回#Value錯誤。這可以用=IsErr(A1)函數來檢查。那就是如果你在表單上做的話。

若要在代碼中執行類似操作,如果在輸入的第一個單元格中找到SECOND單元格中的值(因此與工作表「查找」函數的參數的相反順序),則= InStr(.cells(a,b), .cells(c,d))將返回相同的4。但是,如果在另一個字符串中找不到一個字符串,VBA函數不會生成一個錯誤,而是一個零結果。

聽起來像OP關心的是一個字符串包含另一個字符串,但不是在另一個字符串中的位置。因此,不要測試單元格是否相等,請檢查InStr(worksheet().cell(), worksheet().cell()) > 0。如果爲true,則可以在另一箇中找到一個值,並且可以按照書面執行Then...