2016-03-28 2 views
0

У меня есть таблица с несколькими элементами в ней. У всех этих элементов есть код, и они будут повторяться последовательно подряд. Я хочу выделить последнее «повторение» элемента в таблице, мне нужно иметь ссылку на адрес или строку, с которой я могу работать, поэтому я могу позже привести ее в новую таблицу, где я буду делать ежемесячную обзор текущего состояния наших изделий, представленных в первой таблице. И я почти получил, следующий код:VBA Поиск последней строки со значением в таблице Столбец

'codTeste is a integer in this example 
codTeste = Range("AE:AE").Find(what:="REST0300", after:=Range("AE1"), searchdirection:=xlPrevious).Row 

ли работать, но это не есть способ, как так:

codTeste = Range(tblDesc.DataBodyRange.Address).Find(what:="REST0300", after:=Range(TheFirstCellOfTheRelevantColumnDataBodyRange), searchdirection:=xlPrevious).Row 
    'If I do this it'll throw me a mismatch error 

точка было бы сделать его более динамичным, так чтобы не ограничивать метод находку очень специфический параметр диапазона ...

+0

если вы записываете макрос Выбрав его вручную, вы можете найти правильный синтаксис и при необходимости скорректировать код. –

+0

@ScottHoltzman, эй Скотт; У меня нет большого опыта в записи макросов, если честно, хотя я понимаю, что вы предлагаете ... Как мне вручную найти его во время записи? – steps

ответ

0

dim inCol as integer

inCol = Рабочие листы («Sheet1»). Cells.Find (что: = «Код продукта», после: = Рабочие листы («Лист1»). Диапазон («A1»), LookIn: = xlValues, LookAt: = xlWhole, SearchOrder: = xlByRows, SearchDirection: = xlPrevious) .Column

Я не могу комментировать, но это будет найти номер столбца дал имя @steps

+0

Я искал «прямой ссылочный вид», но это отличная альтернатива, спасибо! Только одна небольшая коррекция, я получал значения с xlPrevious, Я изменил его на xlNext, и он предоставил мне соответствующий индекс столбца, по крайней мере, в моей текущей книге. Итак, вы и Тим в основном ответили: p Благодарю вас, ребята. – steps

+0

Рад, что мы можем помочь – jcarroll

0

Это работает для меня:

Dim trng As Range, f As Range, inCol As Long 
Set trng = ActiveSheet.ListObjects("Table1").DataBodyRange 

useCol = 2 

Set f = trng.Columns(inCol).Find(what:="77", LookIn:=xlValues, lookat:=xlWhole, _ 
     searchdirection:=xlPrevious, after:=trng.Columns(inCol).Cells(1)) 

If Not f Is Nothing Then Debug.Print f.Row 
+0

Он отлично работает, но вместо нумерации столбца (inCol) есть способ просто поместить имя столбца, который я ищу там? Я боюсь, если я добавлю номер в него, исходная проблема останется; В моем примере это будет «Код продукта». Я хотел бы ссылаться на эту колонку не по номеру, а по имени. Это сделало бы его более динамичным (или, как я полагаю, поправьте меня, если я ошибаюсь) – steps