VBA для извлечения данных между двумя датами из разных листов продукта на основной лист - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь извлечь продажи товаров из разных листов в зависимости от ДАТЫ (между двумя датами). В основной таблице у меня есть два столбца: А для дат;B для продаж номеров. Я новичок в VBA и пытаюсь написать код из изученных видео на Youtube. Пока я могу получить только значения столбца A, то есть только даты, но не смог получить значения продаж вместе с датами. Я пишу код здесь, не могли бы вы проверить его один раз и сообщить мне, где и в чем именно заключается ошибка, ваше предложение может быть полезным для меня. Заранее спасибо. :)

Private Sub CommandButton1_Click()

Dim sh As Worksheet, Psh As String, x As Date, y As Date
Sheet8.Columns("A").NumberFormat = "m/d/yyyy"

Psh = Me.Shproducts ' Shproducts is Command Button Name
Set sh = Worksheets(Psh)
 x = CDate(Me.TextBox1) ' Start Date
 y = CDate(Me.TextBox2) ' End Date

Dim i As Long, Myrange As Range, Lastrow As Long


For i = 3 To sh.Range("F" & Rows.Count).End(xlUp).Row


If sh.Cells(i, 1) >= x And sh.Cells(i, 1) <= y Then
Sheet8.Range("A1000").End(xlUp).Offset(1, 0) = sh.Cells(i, 1)
Sheet8.Range("B1000").End(xlUp).Offset(1, 0) = sh.Cells(i, 2)

End If
Next i

End Sub

1 Ответ

0 голосов
/ 03 октября 2019

Я не проверял это, но вы можете сделать что-то подобное. так что это основано на вашем коде:

Private Sub CommandButton1_Click()

  Dim sh As Worksheet, Psh As String, x As Date, y As Date
  Dim i As Long, Myrange As Range, Lastrow As Long
  Dim destinationRange As Range, c As Range, sourceRange As Range
  Dim counter As Long
  Dim currentDate As Date, currentSales As Double

  Sheet8.Columns("A").NumberFormat = "m/d/yyyy"

  Psh = Me.Shproducts ' Shproducts is Command Button Name
  Set sh = Worksheets(Psh)
  x = CDate(Me.TextBox1) ' Start Date
  y = CDate(Me.TextBox2) ' End Date

  Set destinationRange = Sheet8.Range("A100000").End(xlUp).Offset(1, 0) 
  Set sourceRange = Range(sh.Range("F3"), sh.Range("F3").End(xlDown))

  For Each c In sourceRange
    currentDate = c.Value
    currentSales = c.Offset(0, 1).Value
    If currentDate >= x And currentDate <= y Then
      destinationRange.Offset(counter, 0).Value = currentDate
      destinationRange.Offset(counter, 1).Value = currentSales
      counter = counter + 1
    End If
  Next i

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