簡體   English   中英

根據另一個單元格中的值搜索並查找值

[英]Seach and find value based on value in another cell

我正在嘗試建立一個將搜索特定列的宏。

步驟如下:
1.用戶在單元格中輸入數字,然后執行宏。
2.根據用戶輸入的值,宏將在列中查找文本。

除了不知道如何定義用戶輸入的單元格的值之外,其他所有功能都可以很好地工作。 在這里的任何幫助,將不勝感激。

Sheets("New Version ").Select
    Range("B4").Select
    Sheets("PN_List").Select
    Columns("I:I").Select
    'below is where I struggle
    Selection.Find(What:=(""), After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate 

假設用戶在單元格B4中輸入了一個數字,那么您只需要將代碼調整為:

Selection.Find(What:=Range("B4").Value, After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate 

您可以通過2種方式執行此操作。

1號:

基於模塊:(模塊中的代碼)

Sub Sample()

Dim search_range as Range, search_value as Range, _
    lastcell as Range, foundcell as Range
Dim ws as Worksheet

Set ws = Thisworkbook.Sheets("PN_List")
Set search_range = ws.Range("I1", ws.Range("I" & Rows.Count).End(xlUp))
Set lastcell = search_range.Cells(search_range.Cells.Count)
Set search_value = Thisworkbook.Sheets("New Version").Range("B4")

Set foundcell = search_range.Find(What:=search_value, After:=lastcell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate

If Not foundcell Is Nothing Then foundcell.Activate Else Msgbox "Not Found"

End Sub

2號:

工作表基於事件。 (工作表中的代碼)

Private Sub Worksheet_Change(ByVal Target as Range)

Dim search_range as Range, search_value as Range, _
    lastcell as Range, foundcell as Range
Dim ws as Worksheet

Set ws = Thisworkbook.Sheets("PN_List")
Set search_range = ws.Range("I1", ws.Range("I" & Rows.Count).End(xlUp))
Set lastcell = search_range.Cells(search_range.Cells.Count)
Set search_value = Thisworkbook.Sheets("New Version").Range("B4")

If Not Intersect(Target, search_value) Is Nothing Then
query = Msgbox("Search data?", vbYesNo)
If query = 7 Then Exit Sub
Set foundcell = search_range.Find(What:=search_value, After:=lastcell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate

If Not foundcell Is Nothing Then foundcell.Activate Else Msgbox "Not Found"

End Sub

您在B4輸入數據的第一個,然后運行宏。
每次您更改B4值時都會觸發第二個。
出現一個消息框,詢問您是否要搜索輸入的數據。

希望這可以幫助。

暫無
暫無

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

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