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

Страницы: 1 2 След.
Как определить адрес ближайшей ячейки в столбце с данными?
 
Согласен, оба варианта верные.
Как определить адрес ближайшей ячейки в столбце с данными?
 
Благодарю БМВ и Сергей  за ответы.
Использовал логику предложенную БМВ:
Цитата
БМВ написал:
=LOOKUP(2;1/($A$1:$A$17<>0);ROW($A$1:$A$17))
Она больше на мой взгляд подходит.
Как определить адрес ближайшей ячейки в столбце с данными?
 
БМВ, извиняюсь, но похоже не совсем то что нужно, я наверно неполно объяснил - полностью моя вина.

Я предполагаю что в итоге примерно так должно быть:

А18 - текущая ячейка с числовыми данными (отличными от нуля)
По одной ячейке вверх в столбик проверка.
А17 = 0 - неподходит, т.к. равна нулю (но если не была бы равна нулю, то по логике могла бы быть ближайшей ненулевой ячейкой)
А16 = 0 - неподходит, т.к. равна нулю
.......
А4 = 0 - неподходит, т.к. равна нулю
А3 = 123 - подходит, т.к. не равна нулю, т.е. это и есть первая ненулевая ячейка.

Столбец с данными постоянный  - А
Новые данные постоянно добавляются, т.е. текущая ячейка - это последняя на текущий момент ячейка в столбце.

Я так понимаю функция ПОИСКПОЗ ищет от строки с меньшим номером строки к большему (это не точно я могу ошибаться).

Также я не могу понять как задать аргумент "Просматриваемый_массив" функции ПОИСКПОЗ, т.к. количество ячеек между текущей и ближайшей ненулевой ячейкой всегда разное (в примере с А4 по А17). Т.е. минимальным оно может быть - по отношению к текущей ячейке предыдущей ячейкой, или несколько десятков или сотен ячеек.
Т.е. поиск ближайшей ненулевой ячейки от текущей ячейки по одной ячейке вверх в строну уменьшения строки (я так предполагаю)


Цитата
Andrej730 написал:
адрес ближайшей ненулевой ячейки, например, в соседнем столбце?
Да можно в соседнем столбце.

Цитата
Andrej730 написал:
Что понимать под ближайшей ячейкой - ближайшая следующая по столбцу (т.е. которая находится ниже и ненулевая)?
Ближайшая к текущей ячейке - это ближайшая ненулевая, которая находится выше (номер строки меньше)
Как определить адрес ближайшей ячейки в столбце с данными?
 
БМВ, благодарю за помощь. Именно то, что нужно, ато у меня уже фантазия закончилась.
Как определить адрес ближайшей ячейки в столбце с данными?
 
Пример
В столбце А случайным образом находятся числовые данные, либо при их отсутствии стоит ноль (т.е. данных нет).
В примере текущая ячейка А18 с числом 345, и ближайшая ячейка к ней с числовыми данными - А3 с числом 123, между ними данных нет, т.е. с А4 по А17 стоят нули.
Всегда расстояние между адресами с числовыми данными разное.

    А
1   0
2   0
3   123 - числовые данные (отличные от нуля)
4   0
...
17 0
18 345 - числовые данные (отличные от нуля)

Извиняюсь если вопрос покажется банальным, но мне почему-то не приходит в голову идея как это сделать формулами эксель.
Как формулами эксель определять адрес ячейки с числовыми данными ближайшей к текущей ячейки?
Как сделать элемент управления, чтобы прибавлял и убавлял 0.5 к числу?
 
Благодарю всех за ответы.
Как сделать элемент управления, чтобы прибавлял и убавлял 0.5 к числу?
 
Цитата
Юрий М написал:
SamIndy , а Вы #6 посмотрели?
Благодарю за пример, если +/- 5% то умножить на 0.95.
Но это опять же будет постоянное смешение на -5%.
И если взять для расчёта  число 100, то если корректировка до числа 99.5 нужно нажать 19 раз
на элемент управления - тогда собственно проще вручную перебить значение в ячейке без
использования элемента управления.
Изначально я думал что может быть есть какой-то способ при нулевом смещении.
Но в любом случае (если без макросов) предложенное Вами решение, самое оптимальное.
Как сделать элемент управления, чтобы прибавлял и убавлял 0.5 к числу?
 
vikttur, я имел ввиду что значение которое нужно корректировать (его величина) точно не известно, но приблизительно его корректировка нужна (опять же приблизительно) в пределах 5%.
Кстати пока писал пришла идея (но пока ещё не додумал) сделать через всплывающее меню в котором в большую и меньшую сторону с шагом в 0.5.
Как сделать элемент управления, чтобы прибавлял и убавлял 0.5 к числу?
 
БМВ, к сожалению -50 это константа, а L11 неизвестно какое будет, но известно что с небольшим отклонением нужно скорректировать данное число через элемент управления (не вручную) минимальным нажатием на элемент управления в большую или меньшую сторону.

Приблизительные данные ячейки 100

30, корректирвка с шагом по 0.5 в пределах +/- 10
20, корректирвка с шагом по 0.5 в пределах +/- 5
50, корректирвка с шагом по 0.5 в пределах +/- 10
Изменено: SamIndy - 06.08.2019 14:16:45
Как сделать элемент управления, чтобы прибавлял и убавлял 0.5 к числу?
 
Цитата
vikttur написал:
Уберите второй...
Нужно чтобы не только плюсовал 0.5, но и минусовал, а элемент управления позволяет только плюсовать(
Как сделать элемент управления, чтобы прибавлял и убавлял 0.5 к числу?
 
Как сделать чтобы вместо двух элементов управления был только один?
Т.е. на верхнюю кнопку прибавлялось 0.5, а на нижнюю убавлялось.
Придумал только создав два элемента управления, но думаю что можно как-то оптимизировать.
Как в функции макроса сделать ссылки на ячейки с параметрами
 
Цитата
Ігор Гончаренко написал:
ЭТО - это что нужно сделать?(и лучше делать не необычно, а стандартно)
Это - имел ввиду тему этой ветки: "Как в функции макроса сделать ссылки на ячейки с параметрами"
Суть задачи в том, чтобы можно было параметры для функции макроса вводить из ячеек экселя.

Функции две:
Код
    ' register SPX OPT contract
    uidSPX = TwsLink2.REGISTER_CONTRACT2("SPX", "OPT", "USD", "SMART", 20190510, "PUT", 2920, 100)
    ' place BUY BUY 1 order
    uidSPXOrder = TwsLink2.PLACE_ORDER(uidSPX, 0, "BUY", "LMT", 1, 0.05, 0#, "GTC", 1, 0)

Поскольку все параметры удалось задавать из ячеек уже на #5 сообщении из #75, логикой предложенной vikttur (ещё раз благодарю его), т.е. стандартными методами наподобие:
   
Код
DT = Range("V35").Value
    Dim TP As String
    TP = Range("S35").Value
    Dim UC As String
    UC = Range("W35").Value
    Dim ST As Long
    ST = Range("U35").Value
    Dim SD As String
    SD = Range("T35").Value
    Dim OD As String
    OD = Range("Y35").Value
    Dim SZ As Long
    SZ = Range("X35").Value

и единственным нерешённым параметром стандартными методами типа:
Код
    Dim PR As Double
    PR = Range("R35").Value

стало значение 0.05 - т.е. числовой параметр десятичной/дробной частью типа Double, который >=0 (на практике от 0.05 с шагом в 0.05 в большую сторону)

Также пытались присвоить Single, а также конвертировать его в Double и другими стандартными методами, исчерпав (надеюсь что нет) идеи участников топика и мои остались, скорее всего, не стандартные или малоизвестные методы.

И ваш совет уместен: можно сделать как угодно: хоть небычно, хоть стандартно - лишь бы работало.
Воспользовавшись советами неглупых форумчан, было перепробовано много способов, и за эту помощь я им очень благодарен, но к сожалению не дало результатов.

Что точно,суммируя, всеми принимавшими участниками было выяснено:

- если напрямую ставить переменную 0.05 (или другое число) в макрос, то программа видит её и распознаёт
- если макрос берёт параметр из ячейки, то программа видит его, но не распознаёт (считает что это ошибочное данное)
- сделать так, чтобы параметр макрос брал из ячейки можно - это доказал метод предложенный sokol92 из #47, в результате которого, остаётся связь до выгрузки из памяти ком-объекта, которая позволяет программе видеть, распознавать, менять все параметры (включая пока не решённый 0.05) из ячеек листа экселя, а не в макросе править постоянно - в и чем суть, упомянутая в начале.

Я вкратце для вас изложил главное всех сообщений этой ветки форума, если вы сможете помочь в решении этой проблемы буду рад, а также, уверен, будет интересно многочисленным участникам этой битвы)))

Также если у кого есть ещё идеи - вперёд в бой с макросами)))
Как в функции макроса сделать ссылки на ячейки с параметрами
 
Цитата
Ігор Гончаренко написал:
такой же абсолютной степени лишен малейшего смысла
Возможно через макрос и так поэтому и спросил, потому что как я и писал что в том же посте что встречался что ячейку нельзя было использовать напрямую, а решалось таким лишенным смысла решением)
В надежде что у форумчан есть идеи чтобы как-то необычно это сделать.
Изменено: SamIndy - 20.05.2019 07:29:10
Как в функции макроса сделать ссылки на ячейки с параметрами
 
БМВ, уже писал,но точнее по #59 - Изображение_5.jpg
Код
Dim PR as Single
- тоже не помогло

Ещё раз файл-пример привожу.
https://trade-commander.com/twslink/ ком переходник, но это ещё саму программу нужно + настройка, а это уже слишком много

Да это и не нужно, потому что нужно как-то искаверкать:
Код
    Dim PR As Double
    PR = Range("R35").Value
чтобы из этой ячейки, но подругому брал данные
вот и весь ужас(
Скрытый текст
Изменено: SamIndy - 19.05.2019 22:53:31
Как в функции макроса сделать ссылки на ячейки с параметрами
 
БМВ, файл-пример в моем посте #14.
Цитата
sokol92 написал:
Вы выполнили действия из #64?
Да. После сохранения и перезагрузки всего все заново не работает (ссылка очищается из памяти).

Забыл написать пока ссылка работает можно даже сделать:
Код
Dim PR as Single

Да и собственно значения других ячейках переменных меняются.
Изменено: SamIndy - 19.05.2019 21:39:22
Как в функции макроса сделать ссылки на ячейки с параметрами
 
Когда-то давно я пытался начать учить си язык (что только и осталось в начале) логически я приблизительно понимаю почему происходит как в моём посте #58 (что если сделать константу, а потом убрать её) почему временно начинает работать - это что-то вроде выделяется участок памяти объектом при при первоначальной константе и даже при удалении его объект сохраняет эту связь, поэтому и временно начинает работать, но как написать, чтобы без неё нормально работало это ещё вопрос)))
Как в функции макроса сделать ссылки на ячейки с параметрами
 
Исследовал логи ком-моста и самой программы, и выяснилось что они видят, но не воспринимают когда данные находятся в ячейке, а потом идут в макрос. В случае когда данные находятся в самом макросе и мост и программа и видят и воспринимают данные (это если вкратце), что опять же приводит к проблеме того, что нужно как-то логически языком VBA написать, чтобы не происходило такой проблемы.
Как в функции макроса сделать ссылки на ячейки с параметрами
 

БМВ, Sanja, sokol92, благодарю помощь в поиске решения, но не получается пока.

Несколько раз в экселе сталкивался с такой проблемой что, данные, поступающие в ячейку, нельзя напрямую использовать, для таких ситуаций я использовал простое решение:

Данные идут в А1, а в ячейку В1 формула "=А1", и из ячейки В1 уже без проблем можно использовать данные.

Случайно об этом вспомнил и и решил попробовать в данном случае:

   

Код
    Dim PR As Double, PR0 As Double
    PR0 = Range("R35").Value
    PR = PR0

Кто-нибудь знает может ли возникнуть такая проблема в данном случае? Или я неправильно записал часть присвоение ячейки?

Изменено: SamIndy - 19.05.2019 20:20:09
Как в функции макроса сделать ссылки на ячейки с параметрами
 
Т.е. сейчас, например, после вышеописанной процедуры действий работает, можно менять сколько угодно данные из ячейки и макрос работает, но до этой последовательности действий ничего не работало.
Как в функции макроса сделать ссылки на ячейки с параметрами
 
Цитата
sokol92 написал:
Продолжаем последовательно, пока не перестанет работать.
Собственно по всем пунктам так и не перестал работать, но создаётся впечатление, что после первого непосредственного присвоения C1 значения 0.05 (непосредственно из макроса):
Код
Dim PR As Double
Range("C1")=0.05
PR = Range("C1").Value
' place BUY BUY 1 order
uidSPXOrder = TwsLink2.PLACE_ORDER(uidSPX, 0, "BUY", "LMT", 1, PR, 0#, "GTC", 1, 0)

а потом даже если удаляешь это из макроса и оставляешь только:
Код
Dim PR As Double
PR = Range("C1").Value
' place BUY BUY 1 order
uidSPXOrder = TwsLink2.PLACE_ORDER(uidSPX, 0, "BUY", "LMT", 1, PR, 0#, "GTC", 1, 0)
эксель как-то связывает путь у себя, и можно уже в ячейке менять данные.

Но как сделать так, чтобы без начального присвоения:
Код
Range("C1")=0.05
можно было сразу данные из ячейки брать?

Ведь с другими параметрами все работает:
Код
    Dim DT As Long
    DT = Range("V35").Value
    Dim TP As String
    TP = Range("S35").Value
    Dim UC As String
    UC = Range("W35").Value
    Dim ST As Long
    ST = Range("U35").Value
    Dim SD As String
    SD = Range("T35").Value
    Dim OD As String
    OD = Range("Y35").Value
    Dim SZ As Long
    SZ = Range("X35").Value
Т.е. единственная проблема с данными чисел с десятичными данными.

Пока решение проблемы застопорилось на этой точке.

Может остались ещё идеи?
Как в функции макроса сделать ссылки на ячейки с параметрами
 
Цитата
БМВ написал:
Даже сейчас вы отвечаете на вопрос как меняется с1
Извините, но я не понимаю что именно вы имеете ввиду. Я не настолько разбираюсь в макросах, объясните что именно и как найти и я обязательно найду.
Извиняюсь что не правильно вас понял.
Изменено: SamIndy - 19.05.2019 16:05:54
Как в функции макроса сделать ссылки на ячейки с параметрами
 
Цитата
sokol92 написал:
Я в чудеса не верю совсем
Недолго длилось чудо, теперь уже не работает(((
Как в функции макроса сделать ссылки на ячейки с параметрами
 
Может этот макрос сасоциировал или как-то обучил сам себя эксель?
В эксель же есть минимальные технологии самообучения, по крайней мере в плане расчётов.
Я когда читал гайд макрософстский там было написано что он самообучает себя в расчётах при втором третьем разе.  
Изменено: SamIndy - 19.05.2019 15:42:10
Как в функции макроса сделать ссылки на ячейки с параметрами
 
Извиняюсь за задержку
Цитата
БМВ написал:
В каждом своем посте меня интересует исходное содержимое С1 и очевидно, что в этом дело
С1 параметр изменяется от 0.05 с шагом в 0.05 в большую сторону, может быть любым (характеристики параметра : Type - double, Format - >=0)

sokol92, я не знаю что вы сделали или как наколдовали, но заработало, Урааааа))) Я уж думал что схожу с ума))) Часов 7-10 убил на эту проблему.

Как получилось я так и не смог понять. После того как вы посоветовали сделать #44, я сделал как вы и писали:
Код
Dim PR As Double
Range("C1")=0.05
PR = Range("C1").Value
' place BUY BUY 1 order
uidSPXOrder = TwsLink2.PLACE_ORDER(uidSPX, 0, "BUY", "LMT", 1, PR, 0#, "GTC", 1, 0)
потом вернул в обратное состояние:
Код
Dim PR As Double
PR = Range("R35").Value
' place BUY BUY 1 order
uidSPXOrder = TwsLink2.PLACE_ORDER(uidSPX, 0, SD, OD, SZ, PR, 0#, "GTC", 1, 0)
и всё заработало! Я даже подумал что меня глючит))) На всякий случай я закрыл эксель и сохранил его, потом выключил программу и вообще перезагрузил компьютер (мало ли глюк какой). Включил и снова работает.

sokol92, я так и не смог понять что сделало изменение:
Код
Dim PR As DoubleRange("C1")=0.05
PR = Range("C1").Value
' place BUY BUY 1 order
uidSPXOrder = TwsLink2.PLACE_ORDER(uidSPX, 0, "BUY", "LMT", 1, PR, 0#, "GTC", 1, 0)
В чём его действие?
Как в функции макроса сделать ссылки на ячейки с параметрами
 
Цитата
sokol92 написал:
Если работает, то смотрим внимательно на содержимое ячейки C1. Что там?
Сработало, там 0.05

Но я так понимаю этим:
Код
Range("C1")=0.05
мы просто присвоили C1 значение 0.05, или я что-то недопонимаю?
Как в функции макроса сделать ссылки на ячейки с параметрами
 
Цитата
БМВ написал:
Лист активный какой?
Тот же, Range("C1") это я вначале для упрощения писал, файл-пример с изменениями в #14.
Как в функции макроса сделать ссылки на ячейки с параметрами
 
Я обратно поставил точку системным разделителем целого и десятичного, т.е. это до ответа sokol92
Изменено: SamIndy - 19.05.2019 14:38:31
Как в функции макроса сделать ссылки на ячейки с параметрами
 
Цитата
Юрий М написал:
Вы попробуйте поменять разделитель и проверьте, как отработает Ваш макрос.
Стало всё тоже самое только с точкой и почему-то,что странно, вашем макросе на изображении 1 в одну ячейку для числа я ставил разделителем точку, а в другую запятую стали две запятые, а не точка и запятая - что для меня удивительно.
Цитата
БМВ написал:
А что в PR на момент вызова, когда №22 не работает?
Да именно точка, т.е. в моём случае точка системный разделитель целого и десятичного.

Цитата
sokol92 написал:
Давайте по порядку. В #22 так будет работать?
Да так работает.
Как в функции макроса сделать ссылки на ячейки с параметрами
 
В вашем макросе на изображении 1 в одну ячейку для числа я ставил разделителем точку, а в другую запятую и макрос всё равно сложил без ошибок
Как в функции макроса сделать ссылки на ячейки с параметрами
 
Цитата
Юрий М написал:
И тоже стандартно ))
)))))
Страницы: 1 2 След.
Наверх