Выберите только тот контент, который необходим - PullRequest
0 голосов
/ 02 февраля 2020

Я создал документ Excel с листом с именем «Плаккен». Этот лист содержит кнопку, которая вставляет таблицу, которую пользователь скопировал со страницы intr anet, на лист «Шаблон (2)».

В приведенном ниже примере вы можете увидеть таблицу "template (2)". Что мне нравится делать сейчас, так это скопировать некоторые данные из вставленной таблицы на лист "opslaan", данные, которые я хочу скопировать это:

  1. Artikelnummer (номер статьи)
  2. Artikelnaam (название статьи)
  3. дата (дата)

Это 3 левые столбцы, например:

enter image description here

Но данные в таблице разделены строками, содержащими слово «vulgebied».

Пример:

enter image description here

enter image description here

Я ищу способ скопировать только все Данные, перечисленные выше, и наклеить их на лист "opslaan".

Таблица каждый раз отличается, иногда между строкой «vulgebied» больше или меньше строк, но стиль таблицы всегда одинаков.

Редактировать:

Я думаю, что может сработать:

Option Explicit

Sub DeleteRow()

Dim i As Long
Dim rng As Range

With ActiveWorkbook.Sheets(1) 
    For i = 100000 To 1 Step -1 
        With .Cells(i, "C")         
            If .Value = "Vulgebied" Then             
                If rng Is Nothing Then 
                    Set rng = .Cells
                Else
                    Set rng = Application.Union(rng, .Cells)
                End If
             End If
        End With
    Next i

    If Not rng Is Nothing Then rng.EntireRow.Delete
End With

End Sub

Но поскольку слово "vulgebied" содержит другое число после слова, я не знаю, как это решить ..

Пример: https://files.fm/u/n4k4z6yz

1 Ответ

0 голосов
/ 02 февраля 2020

Чтобы найти ячейки, которые могут содержать слово "Vulgebied", используйте функцию Instr.

Модифицированный код

Option Explicit

Sub DeleteRow()

Dim i As Long
Dim DelRng As Range

Application.ScreenUpdating = False

With ThisWorkbook.Sheets("Template (2)")

    For i = 100000 To 1 Step -1
        If InStr(.Range("C" & i).Value, "Vulgebied") > 0 Then
           If DelRng Is Nothing Then
               Set DelRng = .Range("C" & i)
           Else
               Set DelRng = Application.Union(DelRng, .Range("C" & i))
           End If
        End If
    Next i

    If Not DelRng Is Nothing Then DelRng.EntireRow.Delete
End With

Application.ScreenUpdating = False

End Sub

Примечание : более безопасный способ убедиться, что "Vulgebied" находится внутри ячейки, - использовать функцию LCase (преобразует все символы слова в нижний регистр), см. Ниже:

If InStr(LCase(.Range("C" & i).Value), "vulgebied") > 0 Then
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...