1

Может кто-нибудь помочь мне написать это как макрос VB/ Excel.

Я хотел бы выбрать следующее из одного листа данных и записать в другой лист данных.

Выберите любые строки, в которых в столбце T поле содержит строку SYDNEY-NEWC или содержит строку F3 но не содержит F3 в последних 10 символах или где в столбце J поле содержит строку SYDNEY-NEWC или содержит строку M4 MTWY или содержит строку F3 но не содержит строку F3 в последних 10 символах.

1 ответ1

0

Это начало. Это грубо и готово, пропуская много ошибок, и функция LEN перестанет работать, если в ячейке будет меньше 10 символов. Но это будет перемещаться по строкам, которые соответствуют вашему шаблону:

Sub MigrateData2()

Dim intRowCount As Integer
Dim intTargetRowCount As Integer
Dim intColumnCount As Integer

Dim CheckString1 As String
Dim CheckString2 As String

intTargetRowCount = 1

    For intRowCount = 1 To Range("A1").CurrentRegion.Rows.Count

        CheckString1 = Cells(intRowCount, 20) ' contents of column T
        CheckString2 = Cells(intRowCount, 10) ' contents of column J

        If CheckString1 = "SYDNEY-NEWC" Or InStr(CheckString1, "F3") _
          Or InStr(Len(CheckString1) - 10, CheckString1, "F3") > 0 _
          Or CheckString2 = "SYDNEY-NEWC" Or InStr(CheckString2, "M4 MTWY") _
          Or InStr(CheckString2, "F3") _
          Or InStr(Len(CheckString2) - 10, CheckString2, "F3") > 0 Then

            For intColumnCount = 2 To 20 ' change this last number to however many columns you have

              Sheets("Sheet2").Range("A1").Cells(intTargetRowCount, intColumnCount - 1).Value = _
              Sheets("Sheet1").Range("A1").Cells(intRowCount, intColumnCount).Value

            Next intColumnCount

            intTargetRowCount = intTargetRowCount + 1

        End If

    Next intRowCount

End Sub

Предположения:

  • Ваши исходные данные находятся на Листе 1 и начинаются в ячейке A1
  • Ваш целевой лист - Sheet2, и вы хотите начать запись данных из ячейки A1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .