powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Присвоить переменной результат возвращаемый функцией...
8 сообщений из 8, страница 1 из 1
Присвоить переменной результат возвращаемый функцией...
    #38208823
1234_5678
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делаю так:
Код: vbnet
1.
2.
3.
.cells(<любая свободная>).FormulaR1C1 = "=MATCH(""Образец"",A:A,0)"' результат в ячейке
i = .cells(<ячейка из предыдущего шага>)'результат - в переменную
.Range(cells(<ячейка из предыдущего шага>)).ClearContents'ячейку очистить

а сразу в переменную никак нельзя результат запихнуть?
...
Рейтинг: 0 / 0
Присвоить переменной результат возвращаемый функцией...
    #38209099
Фотография lbppb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1234_5678,

Код: vbnet
1.
l = WorksheetFunction.Match("Example", Range("A:A"), 0)



Только не забудьте поставить проверку на отсутствие совпадений.
...
Рейтинг: 0 / 0
Присвоить переменной результат возвращаемый функцией...
    #38209743
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дополню: если использовать функции листа как методы объекта WorksheetFunction, то надо позаботиться об обработке ошибок:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
on error resume next
l = WorksheetFunction.Match("Example", Range("A:A"), 0)
if err then
    'значение НЕ найдено
else
    'значение найдено
end if
on error goto 0 'опционально


Если использовать функции листа как методы объекта Application, то в случае ошибки в функции не возникает ошибки VBA, но возвращается значение ошибки:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
dim l 'as variant
l = WorksheetFunction.Match("Example", Range("A:A"), 0)
if iserror(i) then
    'значение НЕ найдено
else
    'значение найдено
end if
...
Рейтинг: 0 / 0
Присвоить переменной результат возвращаемый функцией...
    #38209749
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Во втором коде

l = Application.Match("Example", Range("A:A"), 0)
...
Рейтинг: 0 / 0
Присвоить переменной результат возвращаемый функцией...
    #38209853
Фотография lbppb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Казанский,

Кстати, а есть разница в скорости исполнения?
...
Рейтинг: 0 / 0
Присвоить переменной результат возвращаемый функцией...
    #38209987
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lbppb, хороший вопрос! Я не задумывался об этом. А оказалось, что разница существенная. Для простой функции - почти в 2 раза!!!
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Sub test()
Dim t!, x, i&
t = Timer
For i = 1 To 1000000
    x = Application.WorksheetFunction.And(0)
Next
Debug.Print Timer - t
End Sub


Результат (P3-500, Офис2000)
Код: plaintext
1.
 64,66406 Application 
 33,61719 WorksheetFunction
...
Рейтинг: 0 / 0
Присвоить переменной результат возвращаемый функцией...
    #38210050
Фотография lbppb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Казанскийlbppb, хороший вопрос! Я не задумывался об этом. А оказалось, что разница существенная. Для простой функции - почти в 2 раза!!!
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Sub test()
Dim t!, x, i&
t = Timer
For i = 1 To 1000000
    x = Application.WorksheetFunction.And(0)
Next
Debug.Print Timer - t
End Sub


Результат (P3-500, Офис2000)
Код: plaintext
1.
 64,66406 Application 
 33,61719 WorksheetFunction


В 10 раз больше итераций на i7-2600 @ 3.4GHz:
41,17969 Application
13,58594 WorksheetFunction

Может быть такая разница, потому что Application проверяет не возращает ли функция ошибку...
...
Рейтинг: 0 / 0
Присвоить переменной результат возвращаемый функцией...
    #38210258
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если вообще не использовать функцию Excel, а попробовать искать самописной (типа половинного интервала)? Разница в какую сторону будет? Ну, я не имею в виду пример с AND , а именно для ПОИСКПОЗ() ?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Присвоить переменной результат возвращаемый функцией...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]