Как скопировать ячейки из одной рабочей книги в другую по нескольким критериям - PullRequest
0 голосов
/ 29 марта 2019

Я постараюсь объяснить мою проблему как можно яснее.Существует рабочая тетрадь (давайте назовем ее антенналистом) с одним листом.Этот лист содержит список антенн - названия антенн столбцов, частоты столбцов и столбцы с параметрами антенн.Другая рабочая книга содержит также одну рабочую таблицу.В этой таблице (пусть это будут необработанные данные) есть столбцы info3, которые соответствуют именам антенн, столбцам с частотой и другим столбцам.Мне нужен код, который проверит, совпадает ли значение / текст в info3 и частоте (необработанные данные рабочей книги) со значением / текстом в имени и частоте антенны (антенный обозреватель рабочей книги), а затем скопировать параметры (которые находятся в серых столбцах)что соответствует названию антенны и частоте соответствующих столбцов (отмечены красным) в другой книге.Столбцы не последовательны, а частота столбцов в необработанных данных книги является переменной.Будет хорошо проверить частоту только по первому символу - если это 9 (900), или 1 (1800), или 2 (2100).Я понятия не имею, как это сделать .... Я ценю помощь с этим.

https://imgur.com/Vq6V95E https://imgur.com/psT9Z1h

1 Ответ

0 голосов
/ 29 марта 2019

Это НЕ код НО некоторые рекомендации:

Option Explicit

Sub test()

    Dim wb1 As Workbook, wb2 As Workbook
    Dim LastRow1, LastRow2 As Long
    Dim rng1 As Range, rng2 As Range, Position As Range, cell As Range

    'Set the two workbooks. Keep in mind that code will works only if you have both workbooks open
    Set wb1 = Workbooks("antennalist.xls")
    Set wb2 = Workbooks("rawdata.xls")

    'Let us assume that data appears in Sheet1 & Column A in both workbooks. Find the last row of column A in both Sheets to create our ranges
    With wb1.Worksheets("Sheet1")
        LastRow1 = .Cells(.Rows.Count, "A").End(xlUp).Row
        Set rng1 = .Range("A" & LastRow1)
    End With
    With wb2.Worksheets("Sheet1")
        LastRow2 = .Cells(.Rows.Count, "A").End(xlUp).Row
        Set rng2 = .Range("A" & LastRow2)
    End With

    'Loop rawdata workbook,Sheet 1 & column A and check:
    ' 1.If the values of rawdata workbook,Sheet 1 & column A appears also in antennalist workbook,Sheet 1 & column A
    ' 2.If the value next to them match also (this is for testing purposes so you must change)
    For Each cell In rng2
        If Application.WorksheetFunction.CountIf(rng1, cell.Value) > 0 And cell.Offset(0, 1).Value = .Range("B" & rng1.Row).Value Then
        'If condition met copy from rawdata & paste to antennalist
            wb2.Worksheets("Sheet1").Range("A1:A2").Copy wb1.Worksheets("Sheet1").Range("A1:A2")
        End If
    Next cell

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...