Вернуть номера строк, найденных значений.
Aleksej
Дата: Понедельник, 28.11.2016, 06:59 |
Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 69
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Всем доброго времени суток! Нужна помощь в написании макроса. 1.Имеется столбец "М" с данными (данных может быть несколько тысяч) 2.Необходимо найти в нем все значения, указанные в ячейке P2 3. В столбец "Т" вернуть (записать) номера строк, где эти значения были найдены. Спасибо!
Всем доброго времени суток! Нужна помощь в написании макроса. 1.Имеется столбец "М" с данными (данных может быть несколько тысяч) 2.Необходимо найти в нем все значения, указанные в ячейке P2 3. В столбец "Т" вернуть (записать) номера строк, где эти значения были найдены. Спасибо! Aleksej
Сообщение отредактировал 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
И вам не хворать!!! так надо? формула массива Код
=ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ($P$2=$M$1:$M$2000;СТРОКА($1:$2000));СТРОКА(A1));"")
И вам не хворать!!! так надо? формула массива Код
=ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ($P$2=$M$1:$M$2000;СТРОКА($1:$2000));СТРОКА(A1));"")
китин
Не судите очень строго:я пытаюсь научиться ЯД 41001877306852
Ответить
Сообщение И вам не хворать!!! так надо? формула массива Код
=ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ($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 строк.
китин, спасибо , но нужен именно макрос. Попробовал формулу, она почему то перестает работать, если расширяешь диапазон больше 38000 строк.Aleksej
Сообщение отредактировал 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]
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
Яндекс.Деньги 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, доброго дня! Спасибо работает , но когда на большой диапазон запускаешь возникает ошибка OverFlow Я так мыслю надо переменные какие то изменить на тип Long? [vba]Код
Dim x, y(), i&, k&, IskZn&
[/vba] прошло 10 минут .... Поигрался с переменными, не получается т.к. тут массив, а я в них не очень
nilem, доброго дня! Спасибо работает , но когда на большой диапазон запускаешь возникает ошибка OverFlow Я так мыслю надо переменные какие то изменить на тип Long? [vba]Код
Dim x, y(), i&, k&, IskZn&
[/vba] прошло 10 минут .... Поигрался с переменными, не получается т.к. тут массив, а я в них не очень Aleksej
Сообщение отредактировал Aleksej - Понедельник, 28.11.2016, 09:16
Ответить
Сообщение nilem, доброго дня! Спасибо работает , но когда на большой диапазон запускаешь возникает ошибка 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 На какой строке возникает ошибка? (она д.б. подсвечена желтым) и насколько большой диапазон используете?
Dim k& это как раз и есть k As long На какой строке возникает ошибка? (она д.б. подсвечена желтым) и насколько большой диапазон используете?nilem
Яндекс.Деньги 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
Ответить
Сообщение 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 строк. Видимо, дело не в количестве)?
А что находится в яч. Р2 в этот момент? файлик можете показать (все 40000 не надо, достаточно 100 строк. Видимо, дело не в количестве)? nilem
Яндекс.Деньги 4100159601573
Ответить
Сообщение А что находится в яч. Р2 в этот момент? файлик можете показать (все 40000 не надо, достаточно 100 строк. Видимо, дело не в количестве)? Автор - nilem Дата добавления - 28.11.2016 в 09:45
Aleksej
Дата: Понедельник, 28.11.2016, 09:52 |
Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 69
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
nilem, точно Видимо проблема в данных ячейки P2. Тут получается текстовые данные я пытался впихнуть в числовую переменную?
nilem, точно Видимо проблема в данных ячейки P2. Тут получается текстовые данные я пытался впихнуть в числовую переменную? Aleksej
Сообщение отредактировал Aleksej - Понедельник, 28.11.2016, 10:05
Ответить
Сообщение nilem, точно Видимо проблема в данных ячейки 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$ )
Ну да, так и есть тогда переменные давайте так напишем [vba]Код
Dim x, y(), i&, k&, IskZn
[/vba] т.е. IskZn As Variant но если всегда будете искать строки, то лучше все-таки явно объявить IskZn As String (или то же самое IskZn$ ) nilem
Яндекс.Деньги 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 , все работает. Спасибо за помощь. Жирный плюс в карму.
nilem , все работает. Спасибо за помощь. Жирный плюс в карму. Aleksej
Ответить
Сообщение nilem , все работает. Спасибо за помощь. Жирный плюс в карму. Автор - Aleksej Дата добавления - 28.11.2016 в 10:25