从具有部分名称关系的工作表中复制数据

时间:2018-11-14 18:32:14

标签: excel vba

我正在尝试从工作簿中每个工作表中复制名称为“ ANALYSIS E 000002”,然后是“ ANALYSIS E 000002”的数据,直到“ ANALYSIS E 000012”。有些在此字符串后有一个副本号,即“ ANALYSIS E 000002(3)”。

因此,我首先执行了vba代码,该代码将获取工作簿中的每个工作表并将其内容合并在一起。它可以完美工作,但现在我需要对其进行调整以仅选择我指定的字符串。我将需要使用其他名称。

以此代码开头:

Sub Combine_ea()
Dim J As Integer
On Error Resume Next

Sheets(1).Select
Worksheets.Add
Sheets(1).Name = "Combined"
Sheets(2).Activate
Range("A1:A2").EntireRow.Select
Selection.Copy Destination:=Sheets(1).Range("A1:A2")
For J = 2 To Sheets.Count
Sheets(J).Activate
Range("A3").Select
Selection.CurrentRegion.Select
Selection.Offset(2, 0).Resize(Selection.Rows.Count - 1).Select
Selection.Copy Destination:=Sheets(1).Range("A99999").End(xlUp)(2)
Next

End Sub

我认为最好的方法是制作一个For循环,以到达由Iterator完成的每个字符串,然后执行我的算法。我现在不确定如何适应我的代码。需要你们的帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用“喜欢”。

例如

If Sheets(1).name like "Analisis*"
then 
--Your code here
End If

答案 1 :(得分:0)

好吧,正如我所看到的,您不需要将所有信息粘贴到工作表中,您可以使用输入框询问用户他/她想要查找的字符串的名称,然后查找表格以这种方式调用,然后查找包含您要查找的单词的范围。这是一个示例:

Sub example()

Dim res As String
Dim no As Integer

res = InputBox("Write the name you want to look for")
no = Len(res)  'gets the amount of characters in the string


For i = 2 To Worksheets.Count

If Left(Worksheets(i).Name, no) = res Then 'reads the name of the worksheet form left 
to right
                                       'gets the number of characters in the variable 
                                        no and compares the substring with the string 
                                        res


      'if you are here it means the worksheets is called as you out in your input box
      'from here you can do what you want, use the same structure to look inside the 
       cells

End If

End Sub