2015-09-23 82 views
3

我需要掃描列B以找到單元格AL2中找到的左側字符相同的任何值,字符串的長度在AR1中找到。如果Col B中的左邊值與AL2中的值匹配,我需要將該行中的值從Col B複製到Col G.複製到Col At,開始一個AT6並繼續向下,直到Col C中的所有值都被檢查。第一張圖片是要掃描的數據,第二張圖片是我想要的宏吐出的圖片掃描列中匹配的文本並將結果粘貼到另一列

這裏是我錄製的修改過的宏。 IF語句中出現運行時錯誤13。任何想法如何清理?

data to be scanned data copied from scanned data

 Sub GenerateSummaryPage() 
' 

' scans B column for combiner box numbers 
Application.ScreenUpdating = False 
    Dim dlen As String 


    Worksheets("HR-Cal").Activate 
    dlen = Worksheets("HR-Cal").Range("AR2") 
    r = ActiveCell.Row 
    For lrow = Cells(Cells.Rows.Count, "B").End(xlUp).Row To 7 Step -1 

    'checks curent row for box name in cell AL2 
    'copies values from col B to col G in that row to into Col AT, starting at AS6 
    If Left(Cells(lrow, "B"), dlen) = ActiveSheet.Range("AL2").Text Then Range("B" & r).Rows.Select 
    'If Left(Cells(lrow, "B"), dlen) = Range("AL2").Value Then Range("B" & r & ":G" & r).Select 
     Selection.Copy 
    Range("AT100000").End(xlUp).Offset(1, 0).PasteSpecial (xlPasteAll) 

    Next lrow 

Application.ScreenUpdating = True 
'insert rows for inverter headers 

End Sub 
+0

我認爲你的意思'範圍(「B」 &r&「:G」&r).rows.Select' – findwindow

+0

@findwindow我做了調整,並得到了同樣的錯誤,但刪除.rows和運行宏沒有錯誤但沒有複製數據從B :G,並且靜靜地盯着那個單元格。我是否需要使用循環在AT6開始併爲每個值添加一行? –

+0

你的循環應該工作。它是'Range(「AS6」)。選擇'那是問題。你需要做出這個變量。像'細胞(lrow,45).select'(45是列AS?)。編輯:你爲什麼向後循環? – findwindow

回答

1

你應該試試這個。

If Left(Cells(lrow, "B"), dlen) = ActiveSheet.Range("AL2").Text Then 
    Range(Cells(lrow, "B"), Cells(lrow, "G")).Value = Range(Cells(lrow, "AT"), Cells(lrow, "AY")).Value 
End if 

如果這不工作,你之前,如果你可以嘗試檢查lrow的價值和DLEN做出確保他們有一個正確的值。

讓,我想你想這樣的事情我知道,如果你是這樣的

+0

這也適用,我最初調出了錯誤的單元格,但現在我無法獲取代碼來將需要的數據粘貼到所需的單元格中。我已將代碼更新到最新的版本 –

+0

如果我理解正確,您想將行A複製到T並粘貼到某處? – phil652

+0

我需要一個if stament來檢查列B的特定文本,當它發現需要將該列中的數據複製到該列中的數據時,文本到列AT中。從AT6開始,每次在列B中找到一個匹配項 –

0

假設你不需要格式化......

Dim ws As Worksheet 
Set ws = ThisWorkbook.WorkSheets("HR-Cal") 
dlen = 2 'change this 
lrow = ws.Cells(Cells.Rows.Count, "B").End(xlUp).Row 

For i = 7 To lrow 

'checks curent row for box name in cell AL2 
'copies values from col B to col G in that row to into Col AT, starting at AS6 
If Left(Cells(i, "B"), dlen) = ws.Range("M2").Text Then 'change M2 
'Range("B" & i).Rows.Select 
'If Left(Cells(lrow, "B"), dlen) = Range("AL2").Value Then Range("B" & r & ":G" & r).Select 
'Selection.Copy 
Range(Cells(i, 10), Cells(i, 15)).Value = Range(Cells(i, 2), Cells(i, 7)).Value 'change columns 
'Range("AT100000").End(xlUp).Offset(1, 0).PasteSpecial (xlPasteAll) 
End If 

Next i 
+0

ü根據需要調整列/單元格。我改變他們爲我自己的測試。 – findwindow

+0

抱歉不得不出席會議。我將修改上面的代碼並查看它是否有效 –

相關問題