Копировать данные в следующий пустой столбец - PullRequest
0 голосов
/ 18 ноября 2018

Я хотел бы скопировать данные на другой лист, но я хочу, чтобы макрос определил следующий пустой столбец, в который нужно скопировать данные.Итак, начиная с ранга C5, я хочу, чтобы он определил, какой будет следующий пустой столбец (D5, или E5 или F5, вплоть до M5), как только он определит, что я хочу скопировать данные из указанных диапазонов «Main» листаниже.Я знаю, что значение столбца должно быть переменной, переданной значению строки, чтобы это работало, но я не смог понять, как это сделать.На форумах есть примеры, но я не смог их адаптировать.

Sub Copy_To_Borrower_DBase()

Worksheets("Borrower Database").Range("D5").Value = 
Sheets("Main").Range("F5").Value 'Borrower Name
Worksheets("Borrower Database").Range("D6:D8").Value = 
Sheets("Main").Range("G6:G8").Value 'Income, Credit and Car Pmt
Worksheets("Borrower Database").Range("D9:D10").Value = 
Sheets("Main").Range("G11:G12").Value 'Borrower Name
Worksheets("Borrower Database").Range("D11").Value = 
Sheets("Main").Range("G15").Value 'Reserves
Worksheets("Borrower Database").Range("D12").Value = 
Sheets("Main").Range("D15").Value 'Credit Score
Worksheets("Borrower Database").Range("D13").Value = 
Sheets("Main").Range("D14").Value 'Rate
Worksheets("Borrower Database").Range("D14").Value = 
Sheets("Main").Range("C14").Value 'Discount Point
Worksheets("Borrower Database").Range("D15").Value = 
Sheets("Main").Range("D17").Value 'More than 1 Borrower

End Sub

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

только что очистил ваш код и добавил первый пустой столбец (lCol).

Sub Copy_To_Borrower_DBase()
Dim ws1 As Worksheet, ws2 As Worksheet

Set ws1 = ThisWorkbook.Sheets("Main")
Set ws2 = ThisWorkbook.Sheets("Borrower Database")

Dim lCol As Long

    With ws2
    lCol = .Cells(5, .Columns.Count).End(xlToLeft).Offset(, 1).Column
        .Cells(5, lCol).Value = ws1.Range("F5").Value 'Borrower Name
        .Range(.Cells(6, lCol), .Cells(8, lCol)).Value = ws1.Range("G6:G8").Value 'Income, Credit and Car Pmt
        .Range(.Cells(9, lCol), .Cells(10, lCol)).Value = ws1.Range("G11:G12").Value 'Borrower Name
        .Cells(11, lCol).Value = ws1.Range("G15").Value 'Reserves
        .Cells(12, lCol).Value = ws1.Range("D15").Value 'Credit Score
        .Cells(13, lCol).Value = ws1.Range("D14").Value 'Rate
        .Cells(14, lCol).Value = ws1.Range("C14").Value 'Discount Point
        .Cells(15, lCol).Value = ws1.Range("D17").Value 'More than 1 Borrower
    End With
End Sub
0 голосов
/ 18 ноября 2018

Вопрос и данные немного сложны для понимания, поскольку они не соответствуют 100%, но я предоставил этот пример, чтобы показать вам, как найти следующий свободный столбец:

Dim sourceSheet as Worksheet
Dim destSheet as Worksheet

Set sourceSheet = Worksheets("source")
Set destSheet = Worksheets("dest")

getNextAvailableColumn(destSheet).Value = sourceSheet.Range("A1").Value
getNextAvailableColumn(destSheet).Resize(sourceSheet.Range("A2:B10").Rows.Count,sourceSheet.Range("A2:B10").Columns.Count).Value = sourceSheet.Range("A2:B10").Value

Function getNextAvailableColumn(ws as Worksheet) as Range

    Dim nextCol as Range
    With destSheet
        nextCol = .cells(1,.Columns.Count).End(xlLeft).Offset(,1)
    End With

    Set getNextAvailableColumn = nextCol

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