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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2011, 13:36   #1
onsite
Новичок
Джуниор
 
Регистрация: 13.07.2011
Сообщений: 3
По умолчанию Поиск в массиве

Есть массив из столбцов и строк. например:
1 2 3 4 5
1
2
3 9
4
5 2

Мне нужно чтобы эксель искал нужную мне цифру. Каждой строке и столбцу присваивается номер(для расчетов) и как то эксель должен по строке и столбцу найти нужное число и вынести его в ячейку нужную.
onsite вне форума Ответить с цитированием
Старый 13.07.2011, 13:41   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Пример файла мы должны нарисовать?
Из каких ячеек брать номер строки и столбца для поиска?

Покажите свой файл Excel, выделите в нем желтым 2 ячейки с исходными данными, и зелёным - ячейку под результат.
И решение не заставит себя долго ждать.

Смотрите также:
Надстройки и программы для поиска в Excel:
http://excelvba.ru/category/Excel/search

Надстройка для поиска на всех листах книги Excel
Надстройка для поиска в Excel с выводом результатов на новый лист
Поиск из поля на панели инструментов Excel

Последний раз редактировалось EducatedFool; 13.11.2011 в 17:28.
EducatedFool вне форума Ответить с цитированием
Старый 13.07.2011, 15:48   #3
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

оо, у меня тоже про массивы, подскажите пожалуйста
задается массив, потом его надо вставить в операцию замены, но что-то не пойму, как к нему обращаться:

Код:
   'массив замены
    Dim rpl As String
    Dim ArrayRepl(0 To 5) As Integer
    ArrayRepl(0) = ","
    ArrayRepl(1) = "."
    ArrayRepl(2) = ":"
    ArrayRepl(3) = ";"
    ArrayRepl(4) = "?"
    ArrayRepl(5) = "!"
        
    'Удаляем знаки препинания из предложений
    Selection.Replace What:=ArrayRepl(), Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

Последний раз редактировалось Bape}l{ka; 13.07.2011 в 15:52.
Bape}l{ka вне форума Ответить с цитированием
Старый 13.07.2011, 16:14   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Код:
dim x
for each x in split(", . ; : ? !")
    Selection.Replace What:=x, Replacement:="", 'и прочие аргументы
next
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 13.07.2011, 16:27   #5
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

нет, знаете, Казанский, так удаляется все из ячейки, в том числе и слова, а мне надо чтобы только знаки препинания =т

и тем не менее, вопрос про массивы тоже открыт, как к нему обращаться, чтоб все элементы массива проверялись?

п.с.: и еще, как двойные кавычки (") тоже загнать в переменную, как их вообще в коде экранировать?

Последний раз редактировалось Bape}l{ka; 13.07.2011 в 16:30.
Bape}l{ka вне форума Ответить с цитированием
Старый 13.07.2011, 17:22   #6
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Цитата:
Сообщение от Bape}l{ka Посмотреть сообщение
... мне надо чтобы только знаки препинания...
Так вроде должно сработать:
Код:
Dim x
For Each x In Array(",", ".", ";", ":", "?", "!", Chr(34))
    Selection = Replace(Selection, x, "")
Next
nilem вне форума Ответить с цитированием
Старый 13.07.2011, 17:33   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

было:
Код:
ArrayRepl(4) = "?"
...
Selection.Replace What:=ArrayRepl(), Replacement:="", LookAt:=xlPart...
поиск знака вопроса, как части слова и сносит все начисто...
хотите знаки вопроса удалить? используйте ArrayRepl(4) = "~?"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 13.07.2011, 17:37   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

2 onsite:
СМЕЩ и ИНДЕКС замечательно находят значение по его строке, столбцу в диапазоне данных
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 13.07.2011, 17:51   #9
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

nilem, спасибо большое, по крайней мере выполняется нужная операция)))
правда, если в Selection больше 1й ячейки, то ругается, но ведь можно ячейки перебрать =ь

IgorGO, ах вот оно в чем дело!! не догадалась =ь а если я хочу удалить двойную кавычку (вот такую "), то как написать?
и кстати, мой способ (см. 1е сообщение) не срабатывает. если писать What:=ArrayRepl() , то проверяется только 0-й элемент массива, а все не проверяются, поэтому и спрашиваю

Последний раз редактировалось Bape}l{ka; 13.07.2011 в 17:55.
Bape}l{ka вне форума Ответить с цитированием
Старый 13.07.2011, 18:00   #10
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Ага, с тильдой работает, и перебирать не надо:
Код:
Dim x
For Each x In Array(",", ".", ";", ":", "~?", "!", Chr(34))
    Selection.Replace What:=x, Replacement:=""
Next
nilem вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в массиве edikamn Microsoft Office Excel 5 31.12.2010 12:03
Поиск в массиве 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