Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将特定值替换为vba_Vba_Excel_Import - Fatal编程技术网

将特定值替换为vba

将特定值替换为vba,vba,excel,import,Vba,Excel,Import,我是excel vba的新手,我在学校实习,我在这里的时间快结束了,我需要这样做,否则我会失败,我正在处理一些我一无所知,没有足够时间学习的事情,我会解释,我的问题是创建并添加到我现有的一段代码,这段代码是由来自各种excel论坛的人员帮助编写的,代码需要做的是: 主文件从某个文件导入每周信息,想象它将这些列中的值复制到我的主文件中,在另一个星期文件中,相同的信息存在,但有一些不同的更改。您可以通过“M”列注意到这些变化我将解释导入的信息中有哪些变化。它是496。它正在试用中。当它可以继续使用时

我是excel vba的新手,我在学校实习,我在这里的时间快结束了,我需要这样做,否则我会失败,我正在处理一些我一无所知,没有足够时间学习的事情,我会解释,我的问题是创建并添加到我现有的一段代码,这段代码是由来自各种excel论坛的人员帮助编写的,代码需要做的是:

主文件从某个文件导入每周信息,想象它将这些列中的值复制到我的主文件中,在另一个星期文件中,相同的信息存在,但有一些不同的更改。您可以通过“M”列注意到这些变化我将解释导入的信息中有哪些变化。它是496。它正在试用中。当它可以继续使用时,它会将状态更改为800,并且它已准备好实施。因此,当检测到一个特定值时,我需要它,即现在在800中为496,将它所在的行更改为其他文件的其他值,如下所示:

第12周的价值:addf asdafd asds 496

第24周起的值:addf asdafd asds 800

SourceWb.Sheets(1)中的值始终为496,SourceWb.Sheets(2)中的值始终为800,SourceWb.Sheets(1)中的值最终将传递到SourceWb.Sheets(2),然后我需要替换主文件中的文件,即496中的800文件,当它们从496传递到800时,它总是出现在另一个文件中,比如在第12周,SourceWb.Sheets(1)中的文件是496,然后想象在第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

谢谢你提前回复

这是这个。我有它的评论,所以你可以告诉每个部分做什么。只需拿出勇气(子代码中的所有内容)并将其粘贴到当前代码中,编辑有关要搜索的行的部分,然后它就可以正常工作了

注意

将此代码放在将数据从SourceWb.Sheets(1)传输到SourceWb.Sheets(2)的代码之后

子按钮1\u单击()
变暗范围
'激活工作表
工作表(“SourceWb.Sheets(2)”)。激活
'搜索在SourceWb.Sheets(2)中填充的最后一行。将所有“A”更改为所需的任何行
对于范围内的每个变化(“A1:A”和范围(“A65536”)。结束(xlUp)。行)
'只要单元格=496,该值就会更改为800。如果为496,则不会更改单元格。
如果UCase(Chng)=“496”,则Chng=“800”
'获取下一个单元格
下一个Chng
端接头

实习的目的不是学习实习所涉及的技能吗?“我没有时间学习,请为我做”似乎不是做好工作的好策略。我已经向我的老板说过,我没有新的编程级别,但他只是想完成,无论我使用什么样的资源,如我所说,我的实习期即将结束,没有时间学习所要求的编程级别。我尝试过这样做,但没有成功。如果你不知道关于其他人的时间或技能的任何信息,你就无法判断其他人。也许有一些情有可原的情况在你的情况下,但你给人的印象是,你希望别人为你做家庭作业。从你的个人资料来看,你似乎已经做这个项目至少40天了。阅读一本书需要多长时间?在年初的实习期间,我必须学习VBA,以帮助我们的会计自动化许多日常任务。我能够学到足够的东西,在一周左右的时间内完成这些项目。只是研究。令人惊讶的是,这个网站上已经有了你可以用来解决你的问题的东西。我建议你四处看看,找到适合你的东西,试一下,当你遇到问题时,把问题贴出来,然后我们可以以更有效的方式提供帮助。
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