2017-08-16 33 views
1

我正在爲一個工作項目工作,我需要幫助更改此代碼以使用我當前的工作表。在我的「註冊」工作表中,我有一個區域,我嘗試輸入「運動員」名稱,並從「主列表」工作表中提取信息。獲得Range.Find上班

更新以下是此編碼原來的工作簿。我試圖讓這個編碼工作在我的新工作簿上,因爲我使用了兩個工作表而不是一個工作表。

Original Workbook

這裏是舊的代碼,我有,但我不能將其配置,因爲我工作過兩個工作表,而不是一個與這個新的工作簿工作。

Sub Update() 
Dim rngSearch As Range, rngFound As Range 
Set rngSearch = Range("B18:B150") 
Set rngFound = rngSearch.Find(What:=Range("B12").Value, LookIn:=xlValues, 
LookAt:=xlPart) 

If rngFound Is Nothing Then 
MsgBox "Please recheck name" 
Range("B12").Value = " " 
Exit Sub 

End If 

'Range("B12:O12").Copy 
'Range("B" & rngFound.Row).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, 
SkipBlanks _ 
    :=False, Transpose:=False 
'Range("B12:O12").ClearContents 
For a = 5 To 14 
If Cells(12, a) = "X" Or Cells(12, a) = "X" Then 
Cells(rngFound.Row, a).Value = "X" 
Else 
Cells(rngFound.Row, a).Value = " " 
End If 
Next 
Range("B12:O12").ClearContents 

Range("C12").Formula = "=IF($B12="" "","" "",VLOOKUP($B12,$B18:$O150,2,FALSE))" 
Range("D12").Formula = "=IF($B12="" "","" "",VLOOKUP($B12,$B18:$O150,3,FALSE))" 
Range("E12").Formula = "=IF($B12="" "","" "",VLOOKUP($B12,$B18:$O150,4,FALSE))" 
Range("F12").Formula = "=IF($B12="" "","" "",VLOOKUP($B12,$B18:$O150,5,FALSE))" 
Range("G12").Formula = "=IF($B12="" "","" "",VLOOKUP($B12,$B18:$O150,6,FALSE))" 
Range("H12").Formula = "=IF($B12="" "","" "",VLOOKUP($B12,$B18:$O150,7,FALSE))" 
Range("I12").Formula = "=IF($B12="" "","" "",VLOOKUP($B12,$B18:$O150,8,FALSE))" 
Range("J12").Formula = "=IF($B12="" "","" "",VLOOKUP($B12,$B18:$O150,9,FALSE))" 
Range("K12").Formula = "=IF($B12="" "","" "",VLOOKUP($B12,$B18:$O150,10,FALSE))" 
Range("L12").Formula = "=IF($B12="" "","" "",VLOOKUP($B12,$B18:$O150,11,FALSE))" 
Range("M12").Formula = "=IF($B12="" "","" "",VLOOKUP($B12,$B18:$O150,12,FALSE))" 
Range("N12").Formula = "=IF($B12="" "","" "",VLOOKUP($B12,$B18:$O150,13,FALSE))" 
Range("O12").Formula = "=IF($B12="" "","" "",VLOOKUP($B12,$B18:$O150,14,FALSE))" 

End Sub 

*更新* 我能找到需要被更新的宏。這隱藏在一個不同的模塊中。

Sub values() 
' 
'values Macro 
' 

' 
    Range("B12:O12").Select 
    Selection.Copy 
    Range("B18").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ 
    SkipBlanks:=False, Transpose:=False 

End Sub 

以下是我正在處理的新工作表的幾幅圖像。

Update Athlete: A29:O29

"Master List"

+2

請不要張貼圖片的代碼。這可能有助於閱讀[問]。 –

+1

你應該在這裏附上你的代碼,而不是像這樣的截圖。 –

+1

@John Coleman:我試圖複製和粘貼代碼,但是當我嘗試發佈代碼時出現格式錯誤。這就是爲什麼我截圖並以這種方式發佈。 –

回答

1

在你獲取數據文件(帶有按鈕)嘗試刪除任何合併柱(A & B)。做「主目錄」一樣 正如你所看到的,你在小區A29輸入名稱,以便您需要更改B12 - > A29

Sub Update() 
Dim rngSearch As Range, rngFound As Range 
'Search range: Change sheets and range 
Set rngSearch = Sheets("Master list").Range("A3:O150") 
' You type in cell A29 then search by cell A29, not B12 
Set rngFound = rngSearch.Find(What:=Range("A29").Value, LookIn:=xlValues, LookAt:=xlPart) 

If rngFound Is Nothing Then 
    MsgBox "Please recheck name" 
    Range("A29").Value = " " 
    Exit Sub 
End If 
'I think this is meaningless 
'Range("B12:O12").Copy 
'Range("B" & rngFound.Row).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
'Range("B12:O12").ClearContents 
'For a = 5 To 14 
'If Cells(12, a) = "X" Or Cells(12, a) = "X" Then 
'Cells(rngFound.Row, a).Value = "X" 
'Else 
'Cells(rngFound.Row, a).Value = " " 
'End If 
'Next 
'Range("B12:O12").ClearContents 

'You should pay attention to this as this is where your data will show: Row 29 from column B to O (I assume that you remove the merge cell A&B) 
' Source :master list 
Range("B29").Formula = "=IF($A29="","",VLOOKUP($A29,'Master list'!$A3:$O150,2,FALSE))" 
Range("C29").Formula = "=IF($A29="","",VLOOKUP($A29,'Master list'!$A3:$O150,3,FALSE))" 
Range("D29").Formula = "=IF($A29="","",VLOOKUP($A29,'Master list'!$A3:$O150,4,FALSE))" 
Range("E29").Formula = "=IF($A29="","",VLOOKUP($A29,'Master list'!$A3:$O150,5,FALSE))" 
Range("F29").Formula = "=IF($A29="","",VLOOKUP($A29,'Master list'!$A3:$O150,6,FALSE))" 
Range("G29").Formula = "=IF($A29="","",VLOOKUP($A29,'Master list'!$A3:$O150,7,FALSE))" 
Range("H29").Formula = "=IF($A29="","",VLOOKUP($A29,'Master list'!$A3:$O150,8,FALSE))" 
Range("I29").Formula = "=IF($A29="","",VLOOKUP($A29,'Master list'!$A3:$O150,9,FALSE))" 
Range("J29").Formula = "=IF($A29="","",VLOOKUP($A29,'Master list'!$A3:$O150,10,FALSE))" 
Range("K29").Formula = "=IF($A29="","",VLOOKUP($A29,'Master list'!$A3:$O150,11,FALSE))" 
Range("L29").Formula = "=IF($A29="","",VLOOKUP($A29,'Master list'!$A3:$O150,12,FALSE))" 
Range("M29").Formula = "=IF($A29="","",VLOOKUP($A29,'Master list'!$A3:$O150,13,FALSE))" 
Range("N29").Formula = "=IF($A29="","",VLOOKUP($A29,'Master list'!$A3:$O150,14,FALSE))" 

End Sub 

更新爲子

Sub values() 
    ' 
    'values Macro 
    ' 

    ' Edit your target sheet here: 
With Sheets("target sheet name") 
' Avoid select, it will slow down your code 
     .Range("B12:O12").Copy 
     .Range("B18").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ 
     SkipBlanks:=False, Transpose:=False 
    end with 
    End Sub 

值p/s:可能是這一個是你需要的全部:

=IFERROR(VLOOKUP(A29,'Master list'!$A3:$O150,2,FALSE),"") 
+0

已更新的答案,因爲你終於能夠粘貼你的代碼。 –

+0

謝謝你的幫助。我能夠找到需要更正的宏。你能看看它,讓我知道它是如何改變的。非常感謝你。 –

+0

不知道該功能的位置和目的(上下文),很難給你任何建議。順便說一句,你可以嘗試修改這些「範圍」與像「表(」主列表「)的範圍(」B12:O12「)」。小心,它是值過程,而不是屬於Range對象的值方法。 –