Извлечение данных из таблицы Excel на основе значения ячейки - PullRequest
1 голос
/ 20 марта 2020

Добрый день всем,

Я - новое лицо на сцене кодирования VBA, и я пытаюсь и учиться, и выполнять определенные действия с Excel. У меня есть рабочая книга, отслеживающая все производимые детали, включая поставщиков, количество и сроки поставки и т. Д. c. Это большой файл, и мне регулярно приходится извлекать определенные c детали для создания отчетов. Что я пытаюсь сделать с VBA, так это: -Проверить каждую строку указанного листа c для просроченной отгрузки на основе указанной даты поставки. -Если часть просрочена, я хочу скопировать всю строку в новую workbook -Продолжайте процесс строка за строкой, пока он не достигнет конца -Выберите каждую деталь со всеми деталями, которые просрочены в новый лист

Вот что я получил, это для тестовой книги не мой главный:

Sub btnPrintReport_click()

    Dim part As String, vendor As String, date_due As String

    part = Range("L3:L10").Select

    vendor = Range("M3:M10").Select

    date_due = Range("N3:N10").Select

    If date_due < Date Then

        Range("A21").Value = part

        Range("B21").Value = vendor

        Range("C21").Value = date_due

        End If
End Sub

Я знаю, что он голый, и много пропускает. Я попытался поиграть с циклами for и do while безуспешно. Лучшее, что я могу получить, это прочитать мою тестовую книгу и распечатать самые первые значения из L, M, N, но затем она остановится, потому что я не могу заставить ее продолжить процесс для всех остальных строк (он просто читает строку 3 и останавливается). Я думал, что 1014 * исправит это, но я изо всех сил пытаюсь заставить это работать. Я надеюсь, что кто-то может указать мне правильное направление, может быть, есть что-то, что я могу прочитать в Интернете или учебник PDF, который я могу прочитать. Не нужно здесь искать руку, лол, просто пу sh в правильном направлении, так как я нахожу в Интернете так много не связанных материалов, связанных с VBA.

Спасибо за любую информацию, которую вы можете дать,

1 Ответ

0 голосов
/ 23 марта 2020

вам нужно, чтобы l oop прочитал данные на вашем рабочем листе, а затем проверил данные.

  1. это способ найти данные содержимого последней строки
lastRow = Cells(Rows.Count, 12).End(xlUp).Row  ' ,12 mean col L
Затем создайте команду l oop, что-то в этом роде
for i = 3 to lastRow
    'put your check and copy process here
    ' for example
    part = cells(i,12)  ' i = 3 then its mean cells(3,12) = L3 then so on
    .
    .
    .

    If date_due < Date Then

        cells(Cells(Rows.Count, 1).End(xlUp).Row,1).value  = part

        cells(Cells(Rows.Count, 2).End(xlUp).Row,2).value = vendor

        cells(Cells(Rows.Count, 3).End(xlUp).Row,3).value = date_due

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