Копировать данные из таблиц с частичным отношением имен - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь скопировать данные из каждого листа в моей книге, в котором есть «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 для достижения каждой строки, которая заканчиваетсямоим итератором, а затем сделать мой алгоритм.Я не уверен, как адаптировать мой код на этом этапе.Ребята, вам нужна помощь.

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Хорошо, как я вижу, вам не нужно вставлять всю информацию в лист, вы можете использовать поле ввода для запроса у пользователя названия строки, которую он / она хочет найти, а затем искатьлисты называются таким образом, а затем искать диапазон, который имеет слово, которое вы ищете.Вот пример:

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
0 голосов
/ 14 ноября 2018

Вы можете использовать «как».

Например,

If Sheets(1).name like "Analisis*"
then 
--Your code here
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...