Скопируйте отфильтрованные данные в новую книгу Excel и предложите в диалоговом окне Сохранить как - PullRequest
0 голосов
/ 25 октября 2010

У меня есть рабочий лист, который содержит некоторые финансовые данные для переноса в систему учета.

Можно сказать, что я кое-что знаю о программировании, но макросы Excel для меня не слишком важны, поэтому, пожалуйста, предложите некоторые (даже частичные) решения моей проблемы. Спасибо!

Основные столбцы рабочей книги:

  • Имя
  • Счет
  • Дата
  • Followup
  • Сумма
  • Проверено
  • Переведен

Строки, которые мне нужно перенести, имеют Checked = "Yes" и Transferred = ""

Выходной рабочий лист должен иметь две строки для каждой строки основного листа (поскольку кредит и дебет должны быть разделены). Выходные столбцы должны быть:

  • Дата
  • Счет
  • "8888"
  • Followup
  • Дебет (= сумма)
  • Кредит (= пусто)

После этого необходимо перенести столбец Переданный мастер-лист на «Ожидание», и в диалоговом окне «Сохранить как» появится запрос на новую книгу (возможно, с некоторым именем и путем по умолчанию).

Еще раз спасибо!

Ответы [ 2 ]

0 голосов
/ 22 августа 2018

Вот пример того, как это можно сделать ... опустить некоторые вещи, но это должно помочь вам в этом.

Sub Transfer()

  Dim iRow As Long
  Dim iTotalRows As Long
  Dim iOutput As Long
  Dim wsMaster As Worksheet
  Dim wbNew As Workbook
  Dim wsOutput As Worksheet
  Dim sNewFile As String

 'the name of your source sheet
  Set wsMaster = ThisWorkbook.Worksheets("Master")

 'create your new target workbook 
  Set wbNew = Application.Workbooks.Add
  Set wsOutput = wbNew.Worksheets(1)
  wsOutput.Name = "Output"  'optional: name the output sheet

 'place your headings
  With wsOutput
     .Cells(1, 1) = "Date"
     .Cells(1, 2) = "Account"
     'etc
  End With

  iTotalRows = wsMaster.UsedRange.Rows.Count

 'assumes headings in row 1, so start scanning from row 2
  For iRow = 2 To iTotalRows

     'hard-coding the column positions here... not ideal but you can improve this bit
      If wsMaster.Cells(iRow, 6) = "Yes" And wsMaster.Cells(iRow, 7) = "" Then
         iOutput = iOutput + 2

         wsOutput.Cells(iOutput, 1) = wsMaster.Cells(iRow, 3) 'date
         wsOutput.Cells(iOutput + 1, 1) = wsMaster.Cells(iRow, 3) 'date again on the next row

         wsOutput.Cells(iOutput, 2) = wsMaster.Cells(iRow, 2) 'Account
         wsOutput.Cells(iOutput + 1, 2) = wsMaster.Cells(iRow, 2) 'Account again on the next row

        'etc

       'set pending flag
        wsMaster.Cells(iRow, 7) = "Pending"

      End If

  Next

 'prompt to save the new file: suggest a name with today's date encoded in it
  sNewFile = Application.GetSaveAsFilename("newFile" & Format(Now, "yymmdd") & ".xlsx")
  If sNewFile <> "" Then wbNew.SaveAs sNewFile

End Sub
0 голосов
/ 25 октября 2010

, кажется, легкая работа, которая вам понравится. Для начала просто посетите - http://www.ozgrid.com/Excel/free-training/basic-index.htm

Если вам нужна конкретная помощь, пишите ..

Приветствие ..

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