Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вернуть номера строк, найденных значений. - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вернуть номера строк, найденных значений. (Макросы/Sub)
Вернуть номера строк, найденных значений.
Aleksej Дата: Понедельник, 28.11.2016, 06:59 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем доброго времени суток!
Нужна помощь в написании макроса.

1.Имеется столбец "М" с данными (данных может быть несколько тысяч)
2.Необходимо найти в нем все значения, указанные в ячейке P2
3. В столбец "Т" вернуть (записать) номера строк, где эти значения были найдены.

Спасибо! :)
К сообщению приложен файл: 0373553.xls(25Kb)


Сообщение отредактировал Aleksej - Понедельник, 28.11.2016, 07:01
 
Ответить
СообщениеВсем доброго времени суток!
Нужна помощь в написании макроса.

1.Имеется столбец "М" с данными (данных может быть несколько тысяч)
2.Необходимо найти в нем все значения, указанные в ячейке P2
3. В столбец "Т" вернуть (записать) номера строк, где эти значения были найдены.

Спасибо! :)

Автор - Aleksej
Дата добавления - 28.11.2016 в 06:59
китин Дата: Понедельник, 28.11.2016, 07:41 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3413
Репутация: 543 ±
Замечаний: 0% ±

Excel 2007;Excel 2010
И вам не хворать!!! :D
так надо? формула массива
Код
=ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ($P$2=$M$1:$M$2000;СТРОКА($1:$2000));СТРОКА(A1));"")
К сообщению приложен файл: 111111.xlsx(10Kb)


Не судите строго:я пытаюсь научиться
ЯД 41001877306852/WM R249698041931; Z239672726538
 
Ответить
СообщениеИ вам не хворать!!! :D
так надо? формула массива
Код
=ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ($P$2=$M$1:$M$2000;СТРОКА($1:$2000));СТРОКА(A1));"")

Автор - китин
Дата добавления - 28.11.2016 в 07:41
Aleksej Дата: Понедельник, 28.11.2016, 07:45 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
китин, спасибо, но нужен именно макрос.

Попробовал формулу, она почему то перестает работать, если расширяешь диапазон больше 38000 строк.


Сообщение отредактировал Aleksej - Понедельник, 28.11.2016, 08:25
 
Ответить
Сообщениекитин, спасибо, но нужен именно макрос.

Попробовал формулу, она почему то перестает работать, если расширяешь диапазон больше 38000 строк.

Автор - Aleksej
Дата добавления - 28.11.2016 в 07:45
nilem Дата: Понедельник, 28.11.2016, 08:45 | Сообщение № 4
Группа: Авторы
Ранг: Ветеран
Сообщений: 1054
Репутация: 398 ±
Замечаний: 0% ±

Excel 2013
Aleksej, привет
попробуйте
[vba]
Код
Sub ttt()
Dim x, y(), i&, k&, IskZn&

IskZn = Range("P2").Value
x = Range("M1", Cells(Rows.Count, "M").End(xlUp)).Value
ReDim y(1 To UBound(x), 1 To 1)

For i = 1 To UBound(x)
    If x(i, 1) = IskZn Then k = k + 1: y(k, 1) = i
Next i

Range("T2", Cells(Rows.Count, "T").End(xlUp)(2, 1)).ClearContents
If k > 0 Then Range("T2").Resize(k).Value = y()
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеAleksej, привет
попробуйте
[vba]
Код
Sub ttt()
Dim x, y(), i&, k&, IskZn&

IskZn = Range("P2").Value
x = Range("M1", Cells(Rows.Count, "M").End(xlUp)).Value
ReDim y(1 To UBound(x), 1 To 1)

For i = 1 To UBound(x)
    If x(i, 1) = IskZn Then k = k + 1: y(k, 1) = i
Next i

Range("T2", Cells(Rows.Count, "T").End(xlUp)(2, 1)).ClearContents
If k > 0 Then Range("T2").Resize(k).Value = y()
End Sub
[/vba]

Автор - nilem
Дата добавления - 28.11.2016 в 08:45
Aleksej Дата: Понедельник, 28.11.2016, 09:03 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
nilem, доброго дня! :)
Спасибо работает hands , но когда на большой диапазон запускаешь возникает ошибка OverFlow

Я так мыслю надо переменные какие то изменить на тип Long?
[vba]
Код
Dim x, y(), i&, k&, IskZn&
[/vba]

прошло 10 минут ....

Поигрался с переменными, не получается т.к. тут массив, а я в них не очень %)


Сообщение отредактировал Aleksej - Понедельник, 28.11.2016, 09:16
 
Ответить
Сообщениеnilem, доброго дня! :)
Спасибо работает hands , но когда на большой диапазон запускаешь возникает ошибка OverFlow

Я так мыслю надо переменные какие то изменить на тип Long?
[vba]
Код
Dim x, y(), i&, k&, IskZn&
[/vba]

прошло 10 минут ....

Поигрался с переменными, не получается т.к. тут массив, а я в них не очень %)

Автор - Aleksej
Дата добавления - 28.11.2016 в 09:03
nilem Дата: Понедельник, 28.11.2016, 09:20 | Сообщение № 6
Группа: Авторы
Ранг: Ветеран
Сообщений: 1054
Репутация: 398 ±
Замечаний: 0% ±

Excel 2013
Dim k& это как раз и есть k As long
На какой строке возникает ошибка? (она д.б. подсвечена желтым)
и насколько большой диапазон используете?


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеDim k& это как раз и есть k As long
На какой строке возникает ошибка? (она д.б. подсвечена желтым)
и насколько большой диапазон используете?

Автор - nilem
Дата добавления - 28.11.2016 в 09:20
Aleksej Дата: Понедельник, 28.11.2016, 09:26 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
nilem, как ни странно, строку не подсвечивает.
Обычно вылазит окошко где выбираешь End или Debug, а тут просто Overflow и кнопка ОК.

Если выполнять пошагово, то на этой строке вылетает ошибка.
[vba]
Код
IskZn = Range("P2").Value
[/vba]

Диапазон в столбце M 40000 строк
 
Ответить
Сообщениеnilem, как ни странно, строку не подсвечивает.
Обычно вылазит окошко где выбираешь End или Debug, а тут просто Overflow и кнопка ОК.

Если выполнять пошагово, то на этой строке вылетает ошибка.
[vba]
Код
IskZn = Range("P2").Value
[/vba]

Диапазон в столбце M 40000 строк

Автор - Aleksej
Дата добавления - 28.11.2016 в 09:26
nilem Дата: Понедельник, 28.11.2016, 09:45 | Сообщение № 8
Группа: Авторы
Ранг: Ветеран
Сообщений: 1054
Репутация: 398 ±
Замечаний: 0% ±

Excel 2013
А что находится в яч. Р2 в этот момент?
файлик можете показать (все 40000 не надо, достаточно 100 строк. Видимо, дело не в количестве)?


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеА что находится в яч. Р2 в этот момент?
файлик можете показать (все 40000 не надо, достаточно 100 строк. Видимо, дело не в количестве)?

Автор - nilem
Дата добавления - 28.11.2016 в 09:45
Aleksej Дата: Понедельник, 28.11.2016, 09:52 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
nilem, точно :o
Видимо проблема в данных ячейки P2.

Тут получается текстовые данные я пытался впихнуть в числовую переменную?
К сообщению приложен файл: 5079276.xlsx(12Kb)


Сообщение отредактировал Aleksej - Понедельник, 28.11.2016, 10:05
 
Ответить
Сообщениеnilem, точно :o
Видимо проблема в данных ячейки P2.

Тут получается текстовые данные я пытался впихнуть в числовую переменную?

Автор - Aleksej
Дата добавления - 28.11.2016 в 09:52
nilem Дата: Понедельник, 28.11.2016, 10:12 | Сообщение № 10
Группа: Авторы
Ранг: Ветеран
Сообщений: 1054
Репутация: 398 ±
Замечаний: 0% ±

Excel 2013
Ну да, так и есть
тогда переменные давайте так напишем
[vba]
Код
Dim x, y(), i&, k&, IskZn
[/vba]
т.е. IskZn As Variant
но если всегда будете искать строки, то лучше все-таки явно объявить IskZn As String (или то же самое IskZn$)


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеНу да, так и есть
тогда переменные давайте так напишем
[vba]
Код
Dim x, y(), i&, k&, IskZn
[/vba]
т.е. IskZn As Variant
но если всегда будете искать строки, то лучше все-таки явно объявить IskZn As String (или то же самое IskZn$)

Автор - nilem
Дата добавления - 28.11.2016 в 10:12
Aleksej Дата: Понедельник, 28.11.2016, 10:25 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
nilem, все работает. Спасибо за помощь. :)
Жирный плюс в карму. thumb
 
Ответить
Сообщение nilem, все работает. Спасибо за помощь. :)
Жирный плюс в карму. thumb

Автор - Aleksej
Дата добавления - 28.11.2016 в 10:25
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вернуть номера строк, найденных значений. (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!