Страницы: 1 2 След.
RSS
VBA. Как определить номер строки искомой ячейки в диапазоне
 
Как правильно выглядит код для такой конструкции?
Код
Worksheets(1).Range("Table1").[ХХХ].Find("свекла").Row

то есть Row определяется не для Worksheets(1) а для Range("Table1")
Изменено: tod2020 - 17.07.2017 13:14:02
 
Код
MsgBox Worksheets(1).Range("D5:G9").Find("свекла").Row
 
Garni, Не то. Нужно по имени диапазона
 
Тогда попробуйте так
Код
MsgBox Range("table1").Find(What:="свекла").Row


Если надо найти порядковый номер строки таблицы из Столбца3, тогда
Код
MsgBox Range("table1").Find(What:="свекла").Offset(, -1)
Изменено: Garni - 17.07.2017 13:57:50
 
У меня работает, если вы имеете ввиду чтобы указывалась строка из таблицы то отнимите количество строк с шапкой (в примере это 4)
т.е. вместо кода
Код
MsgBox (Worksheets(1).Range("table1").Find("Свекла").Row) 

Будет код

Код
MsgBox (Worksheets(1).Range("table1").Find("Свекла").Row-4)
 
Вариант:
Код
Sub Test()
  
  Const FieldName = "Имя"   ' Имя поля таблицы для поиска
  Const What = "свекла"     ' Что искать
  
  Dim x As Range
  
  With Лист1.ListObjects(1).ListColumns(FieldName).DataBodyRange
    Set x = .Find(What, LookIn:=xlValues, LookAt:=xlWhole)
    If Not x Is Nothing Then MsgBox x.Row - .Row + 1
  End With
 
End Sub
Изменено: ZVI - 17.07.2017 13:55:33
 
Всё что выше это всё многострочное сложное.
Нужно чтобы было просто в одну лакончиную строчку, без вычетаний лишних
Для этого нужно понимать классификацию, структуру объектов в строчке-конструкцию которую я изначально предложил
Изменено: tod2020 - 17.07.2017 13:57:45
 
Цитата
Garni написал:
MsgBox Range("table1").Find(What:="свекла").Offset(, -1)
это тоже не пойдет поскольку собьется нумерация со временем, только Row нужно заполучить
 
У Вас таблица из 4 строчек и вопрос о номере строки, в которой находится свекла. Вам предложили как минимум 4 варианта. Какую еще классификацию нам надо понять? Куда пойти записаться чтоб изучить структуру объекта из 4 строчек?
 
Цитата
Garni написал:
У Вас таблица из 4 строчек
это не рабочий файл. в рабочих файлах десятки-сотни таблиц с сотнями-тысячами строк
Изменено: tod2020 - 17.07.2017 14:04:35
 
Вы просто объяснить можете что Вы хотите на выходе получить? или результат сказать какой должен получится
 
Если у вас столько строчек, и не одна свекла обыкновенная там храниться, а еще свекла сахарная, свекла пареная, свекла испорченная и т.д. Тогда Find завершит поиск на первой найденной. Так какую строчку найти надо?
 
Как правильно выглядит код для такой конструкции?

Worksheets(1).Range("Table1").[ХХХХХХХХХХХХ].Find("свекла").Row

то есть Row определяется не для Worksheets(1) а для Range("Table1")

PS Был бы listObject вместо XXX стояло бы DataBodyRange
Изменено: tod2020 - 17.07.2017 14:15:36
 
Цитата
tod2020 написал: Нужно чтобы было просто в одну лакончиную строчку, без вычетаний лишних
С точки зрения правил программирования Ваше "нужно" некорректное.
Код пишется один раз так, чтобы он был понятен, работал в штатных и аварийных ситуациях.
И совершено не важно сколько в нем строчек. Это же не формула ячеек.
Хотя рекомендуется не более одной экранной странички для функции и процедуры для удобства визуального охвата и неперегрузки интеллекта и памяти программиста.
Если очень уж хочется в одну строчку, но с вычитанием, то можно, например. так:
Код
MsgBox Лист1.ListObjects("table1").ListColumns("Имя").DataBodyRange.Find("свекла").Row - Лист1.[table1].Row + 1
Изменено: ZVI - 17.07.2017 14:43:32
 
Вам ответ дал Илья Демид, в сообщении #6. Значение Row будет для являться для листа, если Вы хотите вычислить номер строки для таблицы по средствам VBA, то в лаконичную одну строку это не уберется
 
Есть и такой вариант
Код
Range("Table1").Find("свекла").Row - Range("Table1").Row – 1

Но по задаче поставленной в теме говориться о такой конструкции:
Worksheets(1).Range("Table1").[ХХХХХХХХХХХХ].Find("свекла").Row

Как правильно выглядит код для такой конструкции?
то есть Row определяется не для Worksheets(1) а для Range("Table1")
PS Был бы listObject вместо XXX стояло бы DataBodyRange


Подмена Range на ListObject не нужна
Изменено: tod2020 - 17.07.2017 14:29:59
 
Слово задача убило наповал... Уважаемый tod2020 для задач есть платный раздел
 
Цитата
Илья Демид написал:
Слово задача убило наповал
Я не требую. У Вас такая реакция(набор мыслеформ и картинка и интонация) на слово "задача" наверно с работы, но не всё так однобоко

Каждый кто отвечает на этих формах в этих темах решает задачи поставленные в теме. Я не требую большего чем тут принято. Как вещи называются так и называю
И каждый кто отвечает для когото другого  - какуюто свою задачу выполняет для себя таким образом. и я не спрашиваю зачем ктото мне отвечает.

И наверно потому заставляю себя говорить спасибо потому что человек отвечающий решает свои задачи для себя, он уже получает себе чтото там

Как детскому саду всё разжевываю
Изменено: tod2020 - 17.07.2017 14:44:29
 
В примере была таблица, поэтому в ответе и ListObject.
А что у Вас подразумевается под [XXX] ? Так как пояснений никаких не было, я посчитал, что Вы хотели указать конкретное поле в таблице для поиска, значение же может оказаться и в других полях. Уточните про XXX.
Изменено: ZVI - 17.07.2017 14:41:46
 
Вы ошибаетесь, но да ладно. Если я правильно понял то необходим вариант который бы сам вычислял в какой строке находится шапка и отнимал ее сам, Как насчет такого, но не 1 строкой:
Код
Dim a As Integer
a = Worksheets(1).Range("table1").Find("свекла").End(xlUp).Row
b = Worksheets(1).Range("table1").Find("свекла").Row
MsgBox b - a
Изменено: Илья Демид - 17.07.2017 14:41:38
 
тод2020, я уже упоминал вроде, что вы - не читатель?

В том сообщении вам был дан тот ответ, что вы требуете здесь (в одну строчку тот код переписывается просто на раз-два).
Неспособность заменить имя переменной её значением - на вашей совести...
 
Цитата
AndreTM написал:
тод2020 , я уже упоминал вроде, что вы - не читатель?
Что это значит?
 
Дубль темы:
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=93669&TITLE_SEO=93669-vba-kak-opredelit-nomer-stroki-iskomoy-yacheyki-v-umnoy-tablitse&MID=774928#message774928
 
Чтож за такое то происходит?
перевожу что твориться
-мне надо красное яблоко
-ну на целый ящик груш зеленых! тоже круглые же
-да не надо мне!, мне надо и ОДНО и КРАСНОЕ и ЯБЛОКО!
-ну на возьми ну хочешь три желтых груши?
-да не надо мне ни желтую ни зеленую грушу ни целы ящик их, мне надо одно красное яблоко
-да не бывает красных яблок я не видел и вот двое тоже не видели никогда в жизни твое красное яблоко

дают груши лишь потомуто не знают что существует красное яблоко или потомучто просто напросто нету его в наличии
Изменено: tod2020 - 17.07.2017 14:53:08
 
Цитата
vikttur написал:
Дубль темы:
Что Вы хотели этим сказать?
Я же написал последней фразой что лучше создать новую тему
Зачем лишние движения происходят то?
Изменено: tod2020 - 17.07.2017 14:55:47
 
Пусть определят участники тем - дубль или нет. Я вижу, что разница в названии - "диапазон" и "умная таблица". Вы считаете, что диапазон умной таблицы - не диапазон?
 
Цитата
AndreTM написал:
В  том сообщении  вам был дан тот ответ, что вы требуете здесь
Меня ваще не слышат - не понимают что я уже 3 раза продублировал самого начала запроса темы
Я понял люди знают как мне лучше. точно
Надоело объясняться. Буду ждать когда появится человек который понимает и меня и VBA
Изменено: tod2020 - 17.07.2017 15:00:24
 
Короче, народ - нас явно троллят  :)

Предлагаю закончить все разборы и уточнения, ибо то, что ТС - китаец из индии, было понятно ещё в старой теме примерно с третьего его поста  :D  :D  
 
Цитата
Буду ждать когда появится человек который понимает и меня и VBA
В VBA здесь разбираются многие. А вот Вас не понимают.

Цитата
tod2020 написал: Меня ваще не слышат
Не стоит ли задуматься? Если Вас не слышат многие - проблема в Вас, В том, как Вы доносите информацию. Или неправы все, кроме одного?
 
Цитата
vikttur написал:
Если Вас не слышат многие - проблема в Вас
Я думаю очень разный уровень понимания. Например это может проявляться в контактах с регионами. Ваще тяжко бывает. В москве легко улавливают меня с полу слова
Изменено: tod2020 - 17.07.2017 15:07:06
Страницы: 1 2 След.
Читают тему
Наверх