Мы стремимся автоматизировать этот процесс с помощью Excel VBA / макросов, потому что мы обрабатываем от двух до десяти электронных таблиц в неделю.Мы хотим извлечь определенное количество строк для каждого набора телефонных номеров.Например: электронная таблица с 200 000 строк имеет 20 000 строк, назначенных десяти телефонным номерам.Мы хотим извлечь первые десять строк на номер телефона.Наш результирующий файл будет иметь 100 строк, упорядоченных по номеру телефона.
Примечания:
- Нам нужно извлечь переменное количество записей на номер телефона.
- Номерколичество столбцов может варьироваться.
- Количество строк может варьироваться.
- Нам нужна вся строка данных.
- Столбец номера телефона может находиться в разных местах в каждомэлектронная таблица.
- Количество телефонных номеров может различаться.
Вот код, который работает с одним файлом, но не может быть продублирован на другой лист, поскольку "поле", "критерии"и «строки» меняются для каждого листа.
Мы думали, что IndexMatch может работать, но он возвращает только один элемент, а не дубликаты.
У нас нет решения VBA, поэтому мы делаем этовручную.
Буду признателен за любую помощь!
Sub ExtractPh()
' Establish filter
' Choose first unique phone number
Cells.Select
Selection.AutoFilter
ActiveSheet.UsedRange.AutoFilter Field:=25, Criteria1:= _
"800-836-9207"
' Copy ten non-sequential rows from row 1 to row 82
Rows("1:82").Select
Selection.Copy
' Add rows to second sheet
Sheets.Add After:=Sheets(Sheets.Count)
Rows("1:1").Select
ActiveSheet.Paste
' Move second to sheet to first position to save as separate file
Sheets("Sheet1").Select
Application.CutCopyMode = False
Sheets("Sheet1").Move Before:=Sheets(1)
' Return to main data sheet
Sheets("Test LKY job").Select
' Choose second unique phone number in column
ActiveSheet.UsedRange.AutoFilter Field:=25, Criteria1:= _
"800-907-3803"
' Choose second set of ten non-sequential rows and paste to first sheet
Rows("6:26").Select
Selection.Copy
Sheets("Sheet1").Select
Rows("12:12").Select
ActiveSheet.Paste
' Return to main data sheet
Sheets("Test LKY job").Select
' Choose third unique phone number in column
ActiveSheet.UsedRange.AutoFilter Field:=25, Criteria1:= _
"800-538-1668"
' Choose third set of non-sequential rows and paste to first sheet
Rows("4:48").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Rows("22:22").Select
ActiveSheet.Paste
End Sub