tod2020 Пользователь Сообщений: 261 |
#1 17.07.2017 13:03:28 Как правильно выглядит код для такой конструкции?
то есть Row определяется не для Worksheets(1) а для Range(«Table1») Прикрепленные файлы
Изменено: tod2020 — 17.07.2017 13:14:02 |
||
Garni Пользователь Сообщений: 336 |
#2 17.07.2017 13:14:13
|
||
tod2020 Пользователь Сообщений: 261 |
Garni, Не то. Нужно по имени диапазона |
Garni Пользователь Сообщений: 336 |
#4 17.07.2017 13:46:03 Тогда попробуйте так
Если надо найти порядковый номер строки таблицы из Столбца3, тогда
Изменено: Garni — 17.07.2017 13:57:50 |
||||
Илья Демид Пользователь Сообщений: 320 |
#5 17.07.2017 13:46:16 У меня работает, если вы имеете ввиду чтобы указывалась строка из таблицы то отнимите количество строк с шапкой (в примере это 4)
Будет код
|
||||
ZVI Пользователь Сообщений: 4328 |
#6 17.07.2017 13:52:40 Вариант:
Изменено: ZVI — 17.07.2017 13:55:33 |
||
tod2020 Пользователь Сообщений: 261 |
Всё что выше это всё многострочное сложное. Изменено: tod2020 — 17.07.2017 13:57:45 |
tod2020 Пользователь Сообщений: 261 |
#8 17.07.2017 14:01:28
это тоже не пойдет поскольку собьется нумерация со временем, только Row нужно заполучить |
||
Garni Пользователь Сообщений: 336 |
У Вас таблица из 4 строчек и вопрос о номере строки, в которой находится свекла. Вам предложили как минимум 4 варианта. Какую еще классификацию нам надо понять? Куда пойти записаться чтоб изучить структуру объекта из 4 строчек? |
tod2020 Пользователь Сообщений: 261 |
#10 17.07.2017 14:03:58
это не рабочий файл. в рабочих файлах десятки-сотни таблиц с сотнями-тысячами строк Изменено: tod2020 — 17.07.2017 14:04:35 |
||
Вы просто объяснить можете что Вы хотите на выходе получить? или результат сказать какой должен получится |
|
Garni Пользователь Сообщений: 336 |
Если у вас столько строчек, и не одна свекла обыкновенная там храниться, а еще свекла сахарная, свекла пареная, свекла испорченная и т.д. Тогда Find завершит поиск на первой найденной. Так какую строчку найти надо? |
tod2020 Пользователь Сообщений: 261 |
Как правильно выглядит код для такой конструкции? Worksheets(1).Range(«Table1»).[ХХХХХХХХХХХХ].Find(«свекла»).Row то есть Row определяется не для Worksheets(1) а для Range(«Table1») PS Был бы listObject вместо XXX стояло бы DataBodyRange Изменено: tod2020 — 17.07.2017 14:15:36 |
ZVI Пользователь Сообщений: 4328 |
#14 17.07.2017 14:18:38
С точки зрения правил программирования Ваше «нужно» некорректное.
Изменено: ZVI — 17.07.2017 14:43:32 |
||||
Garni Пользователь Сообщений: 336 |
Вам ответ дал Илья Демид, в сообщении #6. Значение Row будет для являться для листа, если Вы хотите вычислить номер строки для таблицы по средствам VBA, то в лаконичную одну строку это не уберется |
tod2020 Пользователь Сообщений: 261 |
#16 17.07.2017 14:22:13 Есть и такой вариант
Но по задаче поставленной в теме говориться о такой конструкции: Как правильно выглядит код для такой конструкции? Подмена Range на ListObject не нужна Изменено: tod2020 — 17.07.2017 14:29:59 |
||
Слово задача убило наповал… Уважаемый tod2020 для задач есть платный раздел |
|
tod2020 Пользователь Сообщений: 261 |
#18 17.07.2017 14:33:49
Я не требую. У Вас такая реакция(набор мыслеформ и картинка и интонация) на слово «задача» наверно с работы, но не всё так однобоко Каждый кто отвечает на этих формах в этих темах решает задачи поставленные в теме. Я не требую большего чем тут принято. Как вещи называются так и называю И наверно потому заставляю себя говорить спасибо потому что человек отвечающий решает свои задачи для себя, он уже получает себе чтото там Как детскому саду всё разжевываю Изменено: tod2020 — 17.07.2017 14:44:29 |
||
ZVI Пользователь Сообщений: 4328 |
В примере была таблица, поэтому в ответе и ListObject. Изменено: ZVI — 17.07.2017 14:41:46 |
Илья Демид Пользователь Сообщений: 320 |
#20 17.07.2017 14:40:39 Вы ошибаетесь, но да ладно. Если я правильно понял то необходим вариант который бы сам вычислял в какой строке находится шапка и отнимал ее сам, Как насчет такого, но не 1 строкой:
Изменено: Илья Демид — 17.07.2017 14:41:38 |
||
AndreTM Пользователь Сообщений: 454 |
тод2020, я уже упоминал вроде, что вы — не читатель? В том сообщении вам был дан тот ответ, что вы требуете здесь (в одну строчку тот код переписывается просто на раз-два). |
tod2020 Пользователь Сообщений: 261 |
#22 17.07.2017 14:45:54
Что это значит? |
||
tod2020 Пользователь Сообщений: 261 |
Чтож за такое то происходит? дают груши лишь потомуто не знают что существует красное яблоко или потомучто просто напросто нету его в наличии Изменено: tod2020 — 17.07.2017 14:53:08 |
tod2020 Пользователь Сообщений: 261 |
#25 17.07.2017 14:54:55
Что Вы хотели этим сказать? Изменено: tod2020 — 17.07.2017 14:55:47 |
||
vikttur Пользователь Сообщений: 47199 |
Пусть определят участники тем — дубль или нет. Я вижу, что разница в названии — «диапазон» и «умная таблица». Вы считаете, что диапазон умной таблицы — не диапазон? |
tod2020 Пользователь Сообщений: 261 |
#27 17.07.2017 14:56:53
Меня ваще не слышат — не понимают что я уже 3 раза продублировал самого начала запроса темы Изменено: tod2020 — 17.07.2017 15:00:24 |
||
AndreTM Пользователь Сообщений: 454 |
Короче, народ — нас явно троллят Предлагаю закончить все разборы и уточнения, ибо то, что ТС — китаец из индии, было понятно ещё в старой теме примерно с третьего его поста |
vikttur Пользователь Сообщений: 47199 |
#29 17.07.2017 15:02:46
В VBA здесь разбираются многие. А вот Вас не понимают.
Не стоит ли задуматься? Если Вас не слышат многие — проблема в Вас, В том, как Вы доносите информацию. Или неправы все, кроме одного? |
||||
tod2020 Пользователь Сообщений: 261 |
#30 17.07.2017 15:06:39
Я думаю очень разный уровень понимания. Например это может проявляться в контактах с регионами. Ваще тяжко бывает. В москве легко улавливают меня с полу слова Изменено: tod2020 — 17.07.2017 15:07:06 |
||
I have the following column (column A) named project (rows column is just displaying the row number):
rows project
1 14
2 15
3 16
4 17
5 18
6 19
7 ProjTemp
8 ProjTemp
9 ProjTemp
I have an input message box where the user writes the new project name which I want inserted right after the last one. Ex: project 20 will be inserted right after project 19 and before the first «ProjTemp».
My theory was to locate the row number of the first «ProjTemp» and then insert a new row where the project is 20.
I was trying to use the Find function but I’m getting an overflow error (I’m sure I’m getting it because it’s finding 3 «ProjTemp» strings and trying to set it to one parameter):
Dim FindRow as Range
with WB.Sheets("ECM Overview")
Set FindRow = .Range("A:A").Find(What:="ProjTemp", _
After:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
MatchCase:=False)
end with
How do I code this so I only find the row number of the fist «ProjTemp»?
Is there a better way to do this, maybe a loop?
Thanks, any help will be appreciated!
tmpnik1 32 / 27 / 8 Регистрация: 28.02.2011 Сообщений: 1,712 |
||||
1 |
||||
Excel Как узнать номер ячейки, после поиска21.05.2018, 07:42. Показов 14108. Ответов 7 Метки нет (Все метки)
Запустил макрос
но мне надо начать поиск со второй строки первой колонки, и если искомое значение найдено, то узнать номер строки, колонки и ячейки..
0 |
2632 / 1637 / 745 Регистрация: 23.03.2015 Сообщений: 5,147 |
|
21.05.2018, 08:34 |
2 |
tmpnik1,
0 |
32 / 27 / 8 Регистрация: 28.02.2011 Сообщений: 1,712 |
|
21.05.2018, 08:38 [ТС] |
3 |
Начиная с B2 и до колонки V, а вот кол-во строк может меняться , поэтому наверное надо как-то определять последнюю строку
0 |
Vlad999 3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,930 |
||||||||
21.05.2018, 09:17 |
4 |
|||||||
Сообщение было отмечено tmpnik1 как решение Решение
Добавлено через 1 минуту
1 |
32 / 27 / 8 Регистрация: 28.02.2011 Сообщений: 1,712 |
|
21.05.2018, 09:53 [ТС] |
5 |
Почему то возникает ошибка invalid use of property в линии FR.Row начал разбираться, но чё-то не могу совладать с хелпом… но где найти help по этому свойству?
0 |
3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,930 |
|
21.05.2018, 11:04 |
6 |
Up переводится вверх, End(xlUp) переходим вверх до последней заполненной ячейки (это тоже самое что нажать на клавиатуре END и стрелку вверх)
1 |
tmpnik1 32 / 27 / 8 Регистрация: 28.02.2011 Сообщений: 1,712 |
||||
21.05.2018, 11:23 [ТС] |
7 |
|||
В коде нет строчки Option Explicit, но всякие переменные типа
и т.д. работают… но если раскомментировать FR.Row ‘ номер найденной строки, то ошибка.. но всё равно спасибо, работает и ладно.. Насчёт End(xlUp), просто не срабатывает логика … но тоже как принято, так принято
0 |
3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,930 |
|
21.05.2018, 13:19 |
8 |
просто не срабатывает логика вы не до конца её разобрали.
1 |
|
|
|
Популярные разделы FAQ: Общие вопросы Особенности VBA-кода Оптимизация VBA-кода Полезные ссылки
1. Старайтесь при создании темы указывать в заголовке или теле сообщения название офисного приложения и (желательно при работе с Office 95/97/2000) его версию. Это значительно сократит количество промежуточных вопросов.
2. Формулируйте вопросы как можно конкретнее, вспоминая (хотя бы иногда) о правилах ВЕЛИКОГО И МОГУЧЕГО РУССКОГО ЯЗЫКА, и не забывая, что краткость — сестра таланта.
3. Не забывайте использовать теги [сode=vba] …текст программы… [/code] для выделения текста программы подсветкой!
4. Темы с просьбой выполнить какую-либо работу полностью за автора здесь не обсуждаются и переносятся в раздел ПОМОЩЬ СТУДЕНТАМ.
Найти номер строки с нужной информацией
, Excel
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Законченный оптимист Рейтинг (т): 117 |
На: Нужно найти именно НОМЕР строки. Либо всю строку запихнуть в переменную класса Range, чтобы я мог в ней другие столбцы менять. |
Akina |
|
RangeToSearch.Select Selection.Find(What:=ValueToSearch).Activate MsgBox ActiveCell.Row |
Jin X |
|
Законченный оптимист Рейтинг (т): 117 |
Select не канает. Сообщение отредактировано: Jin X — 07.10.14, 09:23 |
Akina |
|
Цитата Jin X @ 07.10.14, 09:23 как мне найти соседнюю справа, например? Если ты знаешь строку и столбец найденной ячейки, то взять «соседнюю справа» — это, конечно, задача совершенно нерешаемая… |
Jin X |
|
Законченный оптимист Рейтинг (т): 117 |
А кроме как через Address можно как-то узнать номер строки и столбца найденной ячейки? |
Akina |
|
Не понял… номер строки и номер столбца — недостаточно, что ли? |
Jin X |
|
Законченный оптимист Рейтинг (т): 117 |
Address содержит строку вида $A$10 — выуживать из неё номер строки (особенно) и столбца не очень удобно. |
pashulka |
|
Full Member Рейтинг (т): 95 |
Jin X, Если по каким-то причинам — Вы не хотите использовать свойства Row и Column (которые Вам и предлагал использовать Akina, смотрите сообщ.#2, 4), то есть и другие способы добраться до соседней ячейки
Private Sub Test() Dim RangeToSearch As Range, CellFind As Range, FindText As String FindText = «Чё мы ищем» Set RangeToSearch = Range(«A:A») ‘Columns(1) Set CellFind = RangeToSearch.Find(FindText, , xlValues, xlWhole) If Not CellFind Is Nothing Then MsgBox Cells(CellFind.Row, CellFind.Column + 1).Address ‘Akina MsgBox CellFind.Next.Address MsgBox CellFind(1, 2).Address ‘MsgBox CellFind.Item(1, 2).Address MsgBox CellFind.Cells(1, 2).Address MsgBox CellFind.Offset(, 1).Address ‘Учитывает об’един. ячейки Else MsgBox «Ничего не найдено» End If End Sub Сообщение отредактировано: pashulka — 08.10.14, 15:46 |
Jin X |
|
Законченный оптимист Рейтинг (т): 117 |
Так, я не знал, что Row и Column будут выдавать нужные позиции, я думал, что там будет 1, 1 Добавлено 08.10.14, 16:34 |
pashulka |
|
Full Member Рейтинг (т): 95 |
Несмотря на то, что стандартная функция рабочего листа ПОИСКПОЗ()/MATCH() была отвергнута я всё-таки перечислю некоторые случаи, при которых применение WorksheetFunction.Match действительно приведёт к возникновению ошибки #1004 и может быть этот опус кому-нибудь да пригодится 1) Т.к. эта функция универсальна, т.е. она может искать не только в столбце, но и в строке, то при поиске нужно указывать диапазон состоящий только из одного столбца(если ищем номер строки) или из одной строки(если ищем номер столбца) Если изначально это сделать затруднительно, то можно воспользоваться, например, свойствами Columns/Rows об’екта Range, т.е.
Dim iSource As Range, iFindText As String ‘, iRow As Variant Set iSource = Range(«A1:C100») iFindText = «Что ищем ?» iRow = WorksheetFunction.Match(iFindText, iSource.Columns(1), 0) 2) Искомое значение банально отсутствует в столбце. 3) Искомое значение всё-таки наличествует, но функция его не находит, ибо чувствительна к типам, например, если мы ищем число 100, а в столбце наличествует текст «100» (или наоборот) Это кстати, очень распространённый вариант, из-за которого многие предпочитают мучить метод Find об’екта Range, который лишён этого недостатка(особенности) 4) Длина искомого текста больше 255 символов (касается и некоторых других функций, а также метода Find) P.S. И напоследок прилагается пример поиска, где нет необходимости мучить On Error Resume Next ( и т.п.)
Dim iSource As Range, iFindText As Variant, iRow As Variant Set iSource = Range(«A:A») ‘можно указать свой столбец iFindText = 100 ‘»Что ищем ?» iRow = Application.Match(iFindText, iSource, 0) If Not IsError(iRow) Then ‘ MsgBox «Номер найденной строки #» & iRow Else MsgBox «Не срослось …» End If |
Jin X |
|
Законченный оптимист Рейтинг (т): 117 |
Странно. Почему-то находит только при: Target = «10» В чём дело? |
pashulka |
|
Full Member Рейтинг (т): 95 |
Если при вводе чисел не было допущено очепяток, то, по всей видимости, собака порылась именно в формате, например, указано число десятичных знаков больше 0, в результате чего 10 отображается как 10,00. Бороться с таким безобразием можно, например, так Range(«Коды»).Find(Target, , xlFormulas, xlWhole) |
Jin X |
|
Законченный оптимист Рейтинг (т): 117 |
Да, собака в этом. Но там стояли не десятичные знаки, а вот так: Добавлено 10.10.14, 18:25 |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- VB for Application
- Следующая тема
[ Script execution time: 0,0316 ] [ 16 queries used ] [ Generated: 16.04.23, 11:05 GMT ]
275
14 июля 2008 года
pashulka
985 / / 19.09.2004
[quote=Андре]я нашел ячейку …[/quote]
Если исходить из Ваших слов, то поиск ячейки уже реализован, однако, второй пост содержит лишь набор ключевых слов, использование которых, в представленном виде, не имеет особого смысла … при этом сам поиск и находка изволят отсутствовать.
Что касается об’екта Selection, то если предположить, что в момент выполнения инструкций выделен действительно диапазон (хотя это может быть и не так), то удаление всех строк этого диапазона, по идее, должно выглядить следующим образом (определение необходимости наличия или отсутствия скобок ложится на Вас) :
Excel.Selection.EntireRow.Delete;