Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Извлечь из текста числа: возраст (2 значное) и номер телефона (11 значное)
 
Есть ячейка, где содержится текст примерно такого вида:
"Иванова Ульяна Викторовна, 89821234567, Тюмень 17 лет" порядок и длина текста всё время разные

Как вывести в отдельные 2 ячейки телефон и возраст? Есть ли формула? Либо макросом тоже наверное можно, если есть вариант попроще, а то с массивами ещё не разобрался
Как спарсить определённую строчку HTML кода в VBA, Нужно незаметно скопировать с сайта одну цифру в переменную VBA или хотя-бы в буфер обмена.
 
Есть сайт, где отображаются определённые цифры, например изменения цен на нефть. В яндекс браузере при нажатии CTRL+SHIFT+С, справа открывается HTML код, где на определённой строчке нужная мне цифра, которая периодически меняется, но строчка остаётся одной и той же.
Как бы её передавать в VBA в нужный момент. Важно, чтобы для сайта это выглядело так, как будто я просто сам сижу через браузер и не использую какие-либо программы.
Пока единственное что придумал, это через VBA тыкать по экрану, делать через Sendkeys Ctrl+ A, а потом CTRL+C и уже потом из буфера обмена искать нужные данные, но это как-то тупо. Кто-нибудь знает варианты поумнее? Или хотя-бы в какую сторону думать?
переменная в объявлении массив, можно ли как-то вставить в объявление размера фиксированного массива переменную, чтобы не выдавало ошибку?
 
пример:
Код
Dim arr(1 To 900000, 1 To 3)
работает
Код
st = 900000
Dim arr(1 To st, 1 To 3)
выдаёт ошибку
Клик при зажатом CTRL с помощью VBA
 
Здравствуйте! Есть код, который кликает мышкой по экрану:
Код
Private Declare Function ActivateKeyboardLayout _
                          Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long
Const kb_lay_ru As Long = 68748313, kb_lay_en As Long = 67699721
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal dwData As Long, ByVal dwExtraInfo As Long)
Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Sub клик()
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub

Как бы так сделать, чтобы он зажимал CTRL и кликал?

Пробовал делать всякие глупости вроде такой:

Код
Sub клик()
Sendkeys "{^}" 'Sendkeys "{CTRL}" тоже не работает
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub

Естественно не помогло.

Поиск в диапазоне последнего значения по указанному критерию
 
Уже сломал мозг. Вопрос к опытным товарищам.
Есть столбик с разными числами:
1
3
1,257
1,8
2,5
0,3
1,2
и т.д.
Нет ли случайно такой формулы, которая найдет последнюю по счёту (самую нижнюю) ячейку, удовлетворяющую критерию например, ">=2"
в данном случае к примеру это третий с низу столбик, число "2,5".
В идеале чтобы формула выводила номер строки, или ссылку на искомую ячейку, которую можно будет потом использовать в других формулах для обозначения диапазона.
"Поискпоз" насколько я понял, умеет что то подобное делать, если тип сопоставления -1, но вот незадача, там числа должны быть отсортированы, а у меня в разброс, да и ищет она только сверху вниз. Буду рад любым советам, даже самым идиотским :)
Как вставить формулу из VBA
 
Доброго времени суток! Пытаюсь вставить формулу в ячейку с помощью VBA, Формула составляется из нескольких кусочков при помощи символа "&"
Вставляется как надо, но везде сплошные апострофы, поэтому не работает. Как их убрать или может по другому вставлять формулу?
код следующий:
Код
.Cells(1, 1).FormulaR1C1Local = "=ИНДЕКС(I2:I24;ПОИСКПОЗ(P" & .[n1] & ";A2:A24;0))"
а в ячейку вставляется вот это:
=ИНДЕКС('I2':'I24';ПОИСКПОЗ('P4';'A2':'A24';0))
Если бы убрать вот это ' то всё бы работало. В чём я не прав?
Vba: найти ячейку, содержащую текст из буфера обмена
 
Дико простой код, надо чтобы находилась ячейка, содержащая текст из буфера обмена
Код
Sub Макрос2()
Dim m As String
m = GetClipboard
    Cells.Find(What:=m, After:=ActiveCell, LookIn:=xlValues, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
End Sub

Выдаёт ошибку. Хотя если сделать всё вручную через Ctrl+F всё работает.

что-то не так именно в Find. Проверял правильно ли ловит буфер обмена, всё работает:
Код
MsgBox GetClipboard
Изменено: Danya-asg - 22.10.2017 17:38:40
Как ускорить получение данных через ДРВ (rtd)
 
Сломал голову, но не нашел решения по всему интернету. Нужен скоростной обмен между терминалом CQG Qtrader и Exel
Вроде все просто, вставляю формулу:
Код
=ДРВ("cqg.rtd"; ;"ContractData"; "EU6?"; "Bid";; "T")
Всё работает, но медленно, задержка видна на глаз.
Как бы это сделать со скоростью до 10 ms?
Как подружить Exel с MT4 Через DDE сервер
 
Вроде всё сделал правильно.
1. разрешил на терминале DDE сервер
2. Включил автообновление ссылок
3. поставил галочку "преобразование формул в формат EXEL при вводе.
пробовал на разных терминалах MT4, в одном случае просто в ячейках высвечивается N/A
В другом случае выводит вот такое окошко "нет доступа к удалённым данным, запустить MT4.EXE?" и если запустить, то естественно не запускает.
Вот файл (стандартный для MT4)
Изменено: Danya-asg - 12.05.2017 12:56:06
Как ускорить удаление строк по критерию
 
Всем доброе утро! написал макрос, удаляющий последние 8640 строк, где 2 столбец не удовлетворяет  заданному критерию.
Код
c = InputBox("ñî ñêîëüêè", , "10:00")
d = InputBox("äî ñêîëüêè", , "22:00")
Application.ScreenUpdating = False
I = Cells(Rows.Count, 1).End(xlUp).Row
'находим номер последней строки
For J = I To I - 8640 Step -1
If Cells(J, 2) < c Or Cells(J, 2) > d Then
ActiveSheet.Rows(J).Delete 
'удаляем строку, если во втором столбе значение выходит за рамки "от с до d"
End If
Next J
Application.ScreenUpdating = True

удаляет почти минуту, есть ли способ значительно ускорить процесс? (в 10 -100 раз)
Почему VBA не хочет заменять точку на запятую в автозамене?
 
в ячейке стоит
1.07151
нужно чтобы было
1,07151
вроде всё просто:
Код
Range("C5").Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

вместо того что нужно получается 107151
Тоесть просто проглатывает точку. В чём ошибка?
Как скопировать n последних непустых ячеек с помощью VBA?
 
Есть таблица с 7 столбцами, данные всегда одновременно заканчиваются на определённой строке. Нужен код, который копирует диапазон из последних 150 непустых строк. пока только научился копировать заполненные ячейки последней строки.
Код
    Selection.End(xlDown).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Copy
Выборочно отключить пересчёт формул в некоторых ячейках
 
есть такая хорошая команда
Код
Application.Calculation = xlCalculationManual
Но мне нужно чтобы отключились автоматические вычисления во всех ячейках кроме некоторых исключений. Кто знает, есть ли  способ это сделать?
Посчитать количество ячеек из диапазона по абсолютному значению
 
Нужно посчитать количество ячеек из диапазона, в которых абсолютное значение больше или равно ячейке AC3
Код
=СЧЁТЕСЛИ(ABS(W5:W7203); ">="&$AC$3)
выдаёт ошибку. Как бы это красиво и просто сделать?
Изменено: Danya-asg - 18.03.2017 19:38:43
Почему цикл в цикле VBA вначале "буксует" а вконце "глохнет" ?
 
Нужен 2-х разрядный счётчик,который будет записывать 2 столбика в формате
00
1
2
3
-
-
9
10
1
2
3
-
- и так до 100

(первый столбик только каждый 10-й раз, когда сдвигается счётчик десятков, а в остальное время пусто)

Написал код:
Код
Sub пример()
For j = 0 To 9
    Range("A" & j * 10 + i + 1).Value = j
For i = 0 To 9
    Range("B" & j * 10 + i + 1).Value = i
Next i
Next j
End Sub
Почему-то в первый раз он дважды считает от 0 до 9,  а когда доходит до 90 - выключается. Что не так?
Изменено: Danya-asg - 14.03.2017 23:58:10
Решение задачи перебором случайных комбинаций
 
Доброго времени суток, профессионалы!
Есть лист с историей валютных котировок, около 20000 строчек.
в каждой строчке стоит последовательная цепочка из порядка 20 формул, результатом которых может быть 1 или 0 (сиреневый столбик AI). И есть общая простая формула, (зелёная ячейка AL2) которая вычисляет прибыль исходя из количества единиц и нулей в столбике AI.
Есть 9 параметров, которые влияют на вычисления всех 400000 формул (желтые поля X3, Y3, Z3 и т.д.) Изменение любого из параметров естественно влияет на значение прибыли.

Если всё упростить то:  9 входных параметров => "Черный ящик" (куча всяких вычислений, в которые мы не лезем) =>  1 выходной параметр (на который влияют все 9 входных)

Нужно найти такие значения каждой из 9 ключевых ячеек, которым соответствует максимально возможное значение ячейки "прибыль"
Как это можно реализовать? Например с помощью функции (если это вообще реально) которая поочерёдно подставляет разные случайные числа в каждую из 9 ячеек, пока не будет получено максимальное значение AL2 и после этого выводит данные всех 9 найденных оптимальных параметров.
Если это слишком сложно, то достаточно хотя-бы подбора трёх параметров, а остальные я задаю вручную. Кроме того, можно сделать грубый прербор всего по 20 вариантов каждого параметра, с заданным диапазоном и шагом (например для X3 диапазон от 0 до 20, шаг 1)
Если эта штука будет считать очень долго, несколько часов, то это в принципе допустимо.

PS, надеюсь я не вынес никому мозг) Буду рад любым уточняющим вопросам и замечаниям.
Страницы: 1
Наверх