Скопируйте указанные c ячеек в строке в таблицу месяца на основе даты в столбце - PullRequest
0 голосов
/ 07 февраля 2020

Я хочу скопировать указанные c столбцы в строке на основе даты в листы с соответствующим месяцем. Например, если столбец H на главном листе имеет 15 января 2020 года, я хочу, чтобы эту строку скопировали на листе от 20 января. И только укажите c столбцы из этой строки, просто столбцы c, d, g и h, чтобы скопировать их в соответствующие b, c, d и f в правильном месячном листе. Я искал и из того, что я получаю, для решения указанных c ячеек в строке мне нужен массив. Но я не совсем понимаю, когда получу go в разные месяцы (20 января-101 * 200).

Спасибо, что уделили время.

1 Ответ

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

Составьте имя вкладки из частей даты и используйте set ws = sheet (имя вкладки), как это

Sub copyRows()

  Const COL_DATE As String = "H"
  Const ROW1 As Long = 2

  Dim mth
  mth = Array("", "Jan", "Feb", "Mar", "Apr", "May", "Jun", _
        "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")

  Dim wb As Workbook, wsMain As Worksheet, ws As Worksheet
  Dim iLast As Long, iRow As Long, iTarget As Long
  Dim dDate As Date, sTab As String

  Set wb = ThisWorkbook
  Set wsMain = wb.Sheets("Sheet1")

  iLast = wsMain.Range(COL_DATE & Rows.Count).End(xlUp).Row

  For iRow = ROW1 To iLast

      dDate = wsMain.Range(COL_DATE & iRow).Value
      sTab = mth(Month(dDate)) & "-" & Format(dDate, "yy")

      Set ws = wb.Sheets(sTab)
      iTarget = 1 + ws.Range("F" & Rows.Count).End(xlUp).Row

      'c,d,g, and h to b,c,d, and f
      With wsMain
         .Cells(iRow, "C").Copy ws.Cells(iTarget, "B")
         .Cells(iRow, "D").Copy ws.Cells(iTarget, "C")
         .Cells(iRow, "G").Copy ws.Cells(iTarget, "D")
         .Cells(iRow, "H").Copy ws.Cells(iTarget, "F")
      End With

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