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

Вход

Регистрация

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

 

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

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

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

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

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


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

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

Спасибо! :)

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

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


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

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

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

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


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

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

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

Excel 2013, 2016
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
Группа: Пользователи
Ранг: Участник
Сообщений: 69
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
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
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

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


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

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

Excel 2013
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
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

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


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

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

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

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


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

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

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

Excel 2013, 2016
Ну да, так и есть
тогда переменные давайте так напишем
[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
Группа: Пользователи
Ранг: Участник
Сообщений: 69
Репутация: 0 ±
Замечаний: 0% ±

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

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

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