Поиск первой пустой строки для вставки строки с другого листа - PullRequest
0 голосов
/ 26 февраля 2011

Я работаю над макросом для копирования строк для разных местоположений в листы, специфичные для местоположений из мастер-листа.

У меня все работает, кроме поиска последней строки, когда проверяемая ячейка содержит '0' и отображается как совпадение пустой строки. Мне нужно либо найти лучший способ вставить в первую пустую строку, либо выяснить, действительно ли проверяемая ячейка действительно пуста.

Вот код макроса:

Sub MoveDataToSheets()
'
' MoveDataToSheets Macro
' Macro written 2/25/2011 by Jim Snyder
'
    Dim rowCount As Integer, sheetIndex As Integer, LastRow As Integer
    Dim ExcelLastCell As Range

    ' Prevent screen updates from slowing execution
    Application.ScreenUpdating = False

    rowCount = ActiveCell.CurrentRegion.Rows.Count

    ' Process each row once copying row to matching location tab
    For currentRow = 1 To rowCount

        ' Determine which sheet the row goes to
        Select Case (Cells(currentRow, "B").Value)
            Case "ALTAVISTA"
                sheetIndex = 2
            Case "AN"
                sheetIndex = 3
            Case "Ballytivnan"
                sheetIndex = 4
            Case "Casa Grande"
                sheetIndex = 5
            Case "Columbus - Devices (DE)"
                sheetIndex = 6
            Case "Columbus - Nutrition"
                sheetIndex = 7
            Case "Fairfield"
                sheetIndex = 8
            Case "Granada"
                sheetIndex = 9
            Case "Guangzhou"
                sheetIndex = 10
            Case "NOLA"
                sheetIndex = 11
            Case "Process Research Operations (PRO)"
                sheetIndex = 12
            Case "Richmond"
                sheetIndex = 13
            Case "Singapore"
                sheetIndex = 14
            Case "Sturgis"
                sheetIndex = 15
            Case "Zwolle"
                sheetIndex = 16
            Case Else
                sheetIndex = 1
        End Select

        ' Only if the row cotains a valid location, copy it to location sheet
        If (sheetIndex > 1) Then
            Sheets(1).Activate                                       ' Activate the sheet being copied from
            ActiveSheet.Rows(currentRow).Copy                        ' Copy from master sheet
            Set sheet = Worksheets(sheetIndex)                       ' Designate target sheet
            Set ExcelLastCell = sheet.Cells.SpecialCells(xlLastCell) ' Find the last used row
            LastRow = ExcelLastCell.Row
            If (sheet.Rows(LastRow).Cells(LastRow, 5).Value = "") Then
                sheet.Paste Destination:=sheet.Cells(LastRow, 1)     ' Paste into first row
            Else
                sheet.Paste Destination:=sheet.Cells(LastRow + 1, 1) ' Paste in first empty row
            End If
            Sheets(1).Activate                                       ' Activate the sheet being copied from
        End If
    Next

    Application.ScreenUpdating = True
End Sub

Ответы [ 3 ]

0 голосов
/ 19 июня 2013

Если вы используете Excel 2003 и / или у вас не будет больше 65 536 на любом листе:

LastRow = Sheet.Range("A65536").End(xlUp).Row
0 голосов
/ 16 октября 2015

Для того, чтобы просто найти последнюю ячейку, которая имеет значение в столбце:

Dim LastRow As Long
LastRow = .Cells(.Rows.Count, "F").End(xlUp).Row

Затем вы можете использовать LastRow в качестве стандартной ссылки на строку. Я часто использую его, чтобы найти последнюю строку, а затем добавить 1, что фактически дает мне первую пустую ячейку в этом столбце. Пример:

Cells(LastRow + 1, 6).Value = Cells(10, 3).Value 'Or whatever value you want

Сайт CPearson, на который ссылается datatoo, приведенный выше, тем не менее, перечисляет еще много способов найти «последние клетки», если вы ищете более сложные решения.

Редактировать: только что проверено, чтобы убедиться: этот обнаруживает 0 или нули (= "") в столбце.

0 голосов
/ 26 февраля 2011

На сайте Чипа Пирсона есть пример того, что вам нужно. Вы можете сделать это на каждой странице перед вставкой. Поиск последней использованной ячейки в диапазоне

...