2017-08-29 89 views
0
比較兩列更快的方法

所以我必須利用目前正在做這個循環的一些代碼,它需要大約6分鐘,運行...從2點不同的工作簿

我有很多表顯示了一些不同的同一列數據。 一列以命名形式或數字形式出現(取決於用戶將其輸入到完全獨立的數據庫的方式)。

另一個數據庫包含2列:一個是數據的數字形式,而另一個被命名。如果數值在這個其他數據庫的數值列,

我的數據庫目前比較我的「名稱」列當它找到一個匹配它改變了我的「名字」細胞到相應的名稱單元格中的其他數據庫相匹配。

有沒有更快的方式做到這一點不是使用循環? 我不得不爲12個不同的工作表複製代碼,以完成相同的任務。

如前所述,整體在所有12其採取運行6分鐘左右

Sub 6mincode() 

Workbooks("1").Activate 

N = Workbooks("1").Sheets("Data").Cells(Rows.Count, "B").End(xlUp).Row 
N2 = Workbooks("2").Sheets("Data Sheet").Cells(Rows.Count, "B").End(xlUp).Row 

For I = 2 To N 
    If (WorksheetFunction.IsNumber(Sheets("Data").Cells(I, "B").Value)) = True Then 
     For zz = 8 To N2 
      If StrComp(Sheets("Data").Cells(I, "B").Value, Workbooks("2").Sheets("Data Sheet").Cells(zz, "B").Value) = 0 Then 
       Workbooks("1").Sheets("Data").Cells(I, "B").Value = Workbooks("2").Sheets("Data Sheet").Cells(zz, "C").Value 
      End If 
     Next zz 
    End If 
Next I 

End Sub 
+0

是一個更快的方法是把一切都變成數據庫表中 – jimmy8ball

+0

我很樂意這樣做,不過數據庫來自各種來源的含各種不同的信息在不同的時間以不同的方式更新。我不能將它們全部結合起來 –

回答

1

可以保存第二回路,並使用Application.Match相反,它會爲你節省大量的時間。

下面

見代碼,代碼的註釋中解釋:

Option Explicit 

Sub Sixmincode() 

Dim N As Long, N2 As Long, I As Long 
Dim Rng As Range, MatchRow 

With Workbooks("1").Sheets("Data") 
    N = .Cells(.Rows.Count, "B").End(xlUp).Row 
End With 

With Workbooks("2").Sheets("Data Sheet") 
    N2 = .Cells(.Rows.Count, "B").End(xlUp).Row ' get last row with data in column B 

    ' set the Range to Match with 
    Set Rng = .Range("B8:B" & N2) 
End With 

With Workbooks("1").Sheets("Data") 
    For I = 2 To N 
     If IsNumeric(.Cells(I, "B").Value) Then ' use IsNumeric 
      ' use Application.Match, if Not IsError means there is a match found in the second workbook 
      If Not IsError(Application.Match(.Cells(I, "B").Value, Rng, 0)) Then 
       MatchRow = Application.Match(.Cells(I, "B").Value, Rng, 0) 
       .Cells(I, "B").Value = Workbooks("2").Sheets("Data Sheet").Cells(MatchRow, "C").Value 
      End If 
     End If 
    Next I 
End With 

End Sub 
+0

非常感謝!這使我的宏不少順暢的操作,不再需要在6分鐘一個更大的工具來做到這一個小部分:) –

+0

@DaleSwire歡迎您 –

+0

@DaleSwire如果你能提供更多的數據,可能將兩個工作表的屏幕截圖和需要的結果在 –

相關問題