2012-04-13 10 views
1

enter image description hereОбнаружение непустой местоположение последней ячейки с помощью Excel VBA

В моем листе Excel, я VBA код для обнаружения последней непустой ячейки в столбце А и добавить инкрементный серийный числовое значение в этой ячейке (в примере ниже значение ячейки A6 должно быть SN104).

Эта обработка ограничена только столбцом А, и в этом примере изображения первая непустая последняя ячейка находится на A6, иногда она может быть после 100 ячеек или 1000 ячеек.

Есть ли простой способ справиться с этим сценарием?

+0

Это * такой * дубликат. [Пример] (http://stackoverflow.com/a/6304419/119775). В следующий раз попробуйте сделать простой [поиск] (http://stackoverflow.com/search?q= [vba] + last + empty + cell), прежде чем задавать вопрос, на который уже был дан ответ несколько раз. –

ответ

0

Что-то вроде

Dim lngLastUsedRow as Integer 
lngLastUsedRow = Range("A65536").End(xlUp).Row 

Dim lngFirstEmptyRow as Integer 
lngFirstEmptyRow = Range("A65536").End(xlUp).Offset(1,0) 

// do your increment 
newValue = Cint(Mid(CurrentWorkSheet.Range("A" + lngLastUsedRow).Value,2)) + 1 

CurrentWorkSheet.Range("A" & lngFirstEmptyRow).Value = "SN" + newValue 

Я не первенствует на меня, я не могу проверить это прямо сейчас. Но это должно заставить вас начать.

+1

Это предполагает использование Excel 2003 (65536 строк), а не для всех версий Excel. Он также блокирует строки, всегда имеет двузначный альфа-префикс, который, хотя и разумный, учитывая вопрос, должен быть удовлетворен (как и пустой результат) – brettdj

1
Public Function GetLastCell(ByVal startRng as Range) as Range 

    With startRng 
     Set GetLastCell = IIf(.Offset(1).Value = "", .Offset(0), .End(xlDown)) 
    End With 

End Function 

Для примера, вы можете определить переменный ГСЧ Range, и вызвать вышеуказанную функцию таким образом:

Dim rng as Range 
Set rng = GetLastCell(Range("A1")) 

Затем ГСЧ со ссылкой на последнюю ячейку Столбца A

0

Что-то вроде этого

  1. Найти последнюю использованную ячейку в любой версии Excel и обрабатывать пустой результат
  2. Анализирует строку в последней непустой ячейки (транспортная обработка любой длины альфа затем числовом) для обновления на следующий пустую ячейку

    Sub GetTrueLastCell() 
    Dim rng1 As Range 
    Dim objRegex As Object 
    Dim strFirst As String 
    Set rng1 = Columns("A").Find("*", [a1], xlFormulas) 
    If Not rng1 Is Nothing Then 
        Set objRegex = CreateObject("vbscript.regexp") 
        With objRegex 
         .Pattern = "^(.+?[^\d])(\d+)$" 
         If .test(rng1.Value) Then 
          strFirst = .Replace(rng1.Value, "$1") 
          rng1.Value = strFirst & (Val(Right$(rng1.Value, Len(rng1.Value) - Len(strFirst)) + 1)) 
         End If 
    
        End With 
    Else 
        MsgBox "Data range is blank" 
    End If 
    End Sub 
    
Смежные вопросы