簡體   English   中英

檢查列中的值是否與其他工作表中的范圍匹配

[英]Check if the values from a column match the range from a different sheet

首先,我是新來的,所以我希望我能說清楚。

所以我有2張紙: “ Sheet1”“ Sheet2” Sheet2在range(D2:D6 )中具有不同的值。 sheet1 范圍(A2:A6)為空。 每當我在sheet1范圍(A2:A6)中插入數據時,都必須檢查該數據是否與sheet2范圍(D2:D6)中的數據匹配。 如果數據在單元格中匹配,則將其保留在range(A2:A6)中,否則將其從range(A2:A6)中刪除。

這是我編寫的代碼。 不幸的是,我無法上傳Excel,以便大家更好地查看。 該代碼僅在按下工作表中創建的底部時有效:

Sub check()


Dim i As Integer, j As Integer
Dim aRec As Worksheet, bRec As Worksheet, wb As Workbook


Dim aDesc As String, bDesc As String
Dim auxSheet1 As Variant
Dim auxSheet2 As Variant
Dim count As Integer


Set wb = Excel.ActiveWorkbook
Set aRec = wb.Worksheets(1)
Set bRec = wb.Worksheets(2)


For i = 2 To aRec.UsedRange.Rows.count
count = 1
auxSheet1 = Trim(aRec.Cells(i, 1).Value)
For j = 2 To bRec.UsedRange.Rows.count
auxSheet2 = Trim(bRec.Cells(j, 4).Value)

If Not auxSheet1 = auxSheet2 Then
count = count + 1
End If

If count = bRec.UsedRange.Rows.count Then
aRec.Cells(i, 1).Value = ""
End If
Next j
Next i


End Sub

我的問題是,僅當我按下在Excel文件中創建的底部時,此代碼才起作用。 相反,我希望我的代碼更智能,並避免按底。

我的意思是,每次在sheet1范圍(A2:A6)中輸入條目時,代碼應自動工作,並從sheet2范圍(d2:d6)中刪除不匹配的條目。 我想刪除底部並讓代碼每次在range(A2:A6)中插入數據時自動執行其工作-保留匹配的數據,並刪除不匹配的數據。

您可以創建一個“工作表更改”事件,然后可以查看更改的單元格是否包含在您關注的范圍內,然后進行處理。

請參閱此文章: https : //support.microsoft.com/zh-cn/help/213612/how-to-run-a-macro-when-certain-cells-change-in-excel

或者,您可以創建一個接受范圍的UDF,並傳遞范圍A2:A6 ,然后每次更改單元格時,都會調用UDF,並且可以調用函數。

Dim RefreshCount as Integer

Function DoRefresh(r As Range) As String
    change()
    DoRefresh = "Refresh " & RefreshCount
End Function

將公式放在單元格=DoRefresh(A2:A6) 如果願意,您可以更改結果以不計算刷新次數。

只需快速跟進。 我使代碼以某種方式工作。 我唯一要做的就是將Sub check()更改為Private Sub Worksheet_Change(ByVal Target As Range)

問題是,當我在應該執行代碼的列中插入數據時,我的excel工作表加載速度真的很慢。 代碼加載和檢查條目需要花費一些時間。 這是因為我的Excel工作表中有很多vba代碼嗎?

注意:如果僅在新的Excel工作表中復制下面提到的代碼,則該代碼將在一秒鍾內超級快速地工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM