2015-07-13 40 views
-1

我是一名excel vba中的新手我正在爲我的學校實習,我的時間已經快要結束了,我需要這樣做或者我失敗了我正在處理一些我不想做的事情,我什麼也不知道,也沒有足夠的時間去學習,我會解釋一下,我的問題是創建並添加到現有的代碼中,這些代碼是由來自各種Excel論壇的人員的幫助以及代碼需要的do是:取代特定值vba

主文件從某些文件導入每週信息,並想象它將這些列中存在的值複製到我的主文件中,而在另一週文件中,相同的信息存在但有一些不同的更改。您可以通過列「M」注意到這些更改,我將解釋導入的信息中有哪些更改,它是在試用階段,它可以將其狀態更改爲800,並且已準備好實施,因此我需要它時,檢測到一個特定的值,現在是496在800以更改它是在到其他文件的,像這樣的其他值的行:

從12周值:ADDF asdafd ASDS 496

值從第24周:addf asdafd asds 800

SourceWb.Sheets(1)中的值始終爲496,而SourceWb.Sheets(2)中始終爲800,SourceWb.Sheets(1)中存在的值最終會傳遞給SourceWb.Sheets(2),然後我需要替換主文件中存在的文件,該文件對於800的文件是496,當它們從496傳遞到800時,它總是出現在另一個文件中,如第12周文件是496 SourceWb.Sheets(1),然後想象在第20周的文件它在SourceWb.Sheets(2),它是800.所以我需要做的是,然後在導入時,將行從第12周SourceWb.Sheets( 1)和496到SourceWb.Sheets(2)中的一個。這可能很簡單,但我無法做到,如果需要更多信息,請說出來。

的這裏 是代碼:

Sub ImportData() 
Application.ScreenUpdating = False 
Dim Path As String, Lstrw As Long 
Dim SourceWb As Workbook 
Dim TargetWb As Workbook 

Path = "C:\Users\DZPH8SH\Desktop\Status 496 800 semana 12 2015.xls" 'Change this to your company workbook path 
Set SourceWb = Workbooks.Open(Path) 
Set TargetWb = ThisWorkbook 

Dim n As Integer, targetRow As Long 
targetRow = 3 

With SourceWb.Sheets(1) 
Lstrw = .Cells.Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row 
.Range("M1:M" & Lstrw).AutoFilter Field:=1, Criteria1:="496" 
.Application.Union(.Range("D2:D" & Lstrw), .Range("F2:F" & Lstrw), .Range("I2:I" & Lstrw), .Range("M2:M" & Lstrw), .Range("N2:N" & Lstrw)).Copy 
TargetWb.Sheets(7).Cells(TargetWb.Sheets(7).Rows.Count, "A").End(xlUp)(2).PasteSpecial xlPasteValues 
.ShowAllData 
End With 

With SourceWb.Sheets(2) 
Lstrw = .Cells.Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row 
.Application.Union(.Range("D2:D" & Lstrw), .Range("F2:F" & Lstrw), .Range("I2:I" & Lstrw), .Range("M2:M" & Lstrw), .Range("N2:N" & Lstrw)).Copy 
TargetWb.Sheets(7).Cells(TargetWb.Sheets(7).Rows.Count, "A").End(xlUp)(2).PasteSpecial xlPasteValues 
End With 

SourceWb.Close savechanges:=False 
Application.ScreenUpdating = True 

感謝提前任何答覆。

+3

是不是實習學習實習技能的重點? 「我沒有時間學習,請爲我做」似乎不是一個好的策略。 –

+0

我已經向我的老闆說過,我沒有新的編程技巧,但他只是想要完成,無論我使用的資源如何,我說我的實習即將結束,沒有時間學習lvl正在被要求的節目。 – Luis

+0

我試過這樣做沒有成功,你不能在不知道任何關於其他人的時間或技能的信息的情況下判斷人。 – Luis

回答

0

這是這個。我有它的評論,所以你可以告訴每個部分做什麼。只要把膽子(子內的所有東西)粘貼到你當前的代碼中,編輯關於要搜索的行的部分,然後它應該可以正常工作。

將此代碼的代碼之後,從SourceWb.Sheets(1)將數據傳輸到SourceWb.Sheets(2)。

Sub Button1_Click() 

Dim Chng As Range 

'activate worksheet 
Worksheets("SourceWb.Sheets(2)").Activate 

'Searches for the last row that is populated in SourceWb.Sheets(2). Change all "A" to whatever row you need 
For Each Chng In Range("A1:A" & Range("A65536").End(xlUp).Row) 

'This changes the value to 800 as long as the cell = 496. If it <> 496 then the cell will not be changed. 
If UCase(Chng) = "496" Then Chng = "800" 

'Gets the next cell 
Next Chng 
End Sub