Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2010, 13:36   #1
edikamn
Пользователь
 
Регистрация: 31.08.2010
Сообщений: 19
По умолчанию Поиск в массиве

Здравствуйте.

Задаю массив

Range("A1:B1000").value
Пусть например в нем есть значение "яблоко" в строке 5 колонке 2

Как мне найти это значение и присвоить переменным номера строки и столбца в этом массиве
edikamn вне форума Ответить с цитированием
Старый 29.12.2010, 13:59   #2
gsg
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 108
По умолчанию

можно так

Код:
Sub mass()

Dim ran As Range


Set ran = Range("A1:B1000")
ran.Select
Set x = ran.Find("яблоко")
If Not x Is Nothing Then
    x_row = x.Row
    x_col = x.Column
End If


End Sub
-Возьмите лучших их лучщих!
-Лучшие из лучших зализывают раны...
-Тогда, возьмите лучших из худших!
gsg вне форума Ответить с цитированием
Старый 29.12.2010, 15:47   #3
edikamn
Пользователь
 
Регистрация: 31.08.2010
Сообщений: 19
По умолчанию

InVal=Range("A1:B1000").value

Как искать уже в InVal и определить место положение найденного значения (InVal(5,2))
edikamn вне форума Ответить с цитированием
Старый 31.12.2010, 04:22   #4
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Так:
Код:
Type FM
    FCol As Long
    FRow As Long
End Type 'это в область объявления глобальных переменных

Sub poisk()
    Dim s$, r As FM, InVal
    s = "яблоко"
    InVal = Range("A1:B1000").Value
    r = FMatch(InVal, s)
    MsgBox r.FCol & ", " & r.FRow
End Sub

Function FMatch(arr, Mfind$) As FM
    Dim i&, j&, k As FM
    For i = 1 To UBound(arr, 1)
        For j = 1 To UBound(arr, 2)
            If arr(i, j) = Mfind Then
                FMatch.FCol = i
                FMatch.FRow = j
                Exit Function
            End If
        Next
    Next
End Function
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 31.12.2010 в 18:47.
kuklp вне форума Ответить с цитированием
Старый 31.12.2010, 11:57   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

или формулами:
=МАКС((дано="яблоки")*СТРОКА(дано))
=МАКС((дано="яблоки")*СТОЛБЕЦ(дано) )
где
дано - ссылка на массив с данными
(обе формулы массива)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 31.12.2010, 12:03   #6
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
Радость

IgorGO, автор просил не в диапазоне, а в массиве(который в памяти). С наступающим Вас!
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в массиве maksim_serg Microsoft Office Excel 13 13.05.2010 17:36
Поиск в массиве Aleksandr Помощь студентам 3 30.01.2010 19:51
Поиск в массиве VladimirAleks Общие вопросы Delphi 3 06.11.2009 15:00
Поиск в массиве ADSoft PHP 1 07.08.2009 11:17
Поиск в массиве Paul_AG Общие вопросы C/C++ 9 03.06.2009 01:29