#set #libreoffice-calc
#установить #libreoffice-calc
Вопрос:
У меня есть таблица, подобная этой: a1 = 3, b1 = (1 ..10,15)
Как мне проверить, находится ли a1 в b1? «=если (a1 в b1, ‘тада!’, ‘Пропустил’)`? Правильно ли это?
Комментарии:
1. Скажите, важна ли для вас форма 1 ..10? Дело в том, что если вы напишете диапазон как 1-10, я немедленно предложу решение
2. Нет. Просто указывает набор целых чисел от 1 до 10. (1,2,3,4,5,6,7,8,9,10)
Ответ №1:
Хорошо, попробуйте это расширение. (Это было написано много лет назад для записи номеров в формах страховых полисов.)
Расширение содержит несколько функций, имя каждой из которых начинается с LST, в Мастере функций они расположены в разделе надстройки.
Списки чисел, которые передаются в функцию, должны быть наборами натуральных чисел. Числа, разделенные — = или _, обозначают интервал значений, другие нецифровые символы (включая точку, запятую, пробел) рассматриваются как разделители отдельных чисел. Поэтому 1..10,15
из вашего примера будет преобразован в 1, 10, 15
, используйте знак —
Несколько примеров помогут вам понять назначение отдельных функций. Последняя строка — это ответ на ваш вопрос.
Обновлено.Из базового все эти функции вызываются как встроенные функции Calc, с функцией service FunctionAccess
Function IsOnPeak(C2 As Variant, I13 As String, D2 As Variant, I16 As String) As Boolean
Dim Mth As Integer
Dim hr As Integer
Dim svFA As Variant
Mth =Month(C2)
hr = HOUR(D2)
svFA = createUnoService( "com.sun.star.sheet.FunctionAccess" )
IsOnPeak = (svFA.callFunction("LSTOR",Array(Mth,I13)) <> "") And (svFA.callFunction("LSTOR",Array(Hr, I16)) <> "")
End Function
Комментарии:
1. ОК. Это работает в Calc. Мне нужно использовать его в базовом макросе Libre. Я получаю сообщение not defined. Это мой скрипт
FUNCTION IsOnPeak(C2,I13,D2,I16) DIM HourIN as boolean DIM MonthIn as boolean DIM Mth as Integer DIM hr as integer Mth =Month(C2) hr = HOUR(D2) MonthIn =LSTOR(Mth,I13) HourIn = LSTOR(Hr, I16) if MonthIn and HourIn then IsOnPeak =TRUE else IsOnPeak = FALSE endif End FUNCTION
, можете ли вы показать мне, как использовать LSTOR в скрипте?2. Почему не просто
=AND(LSTOR(MONTH(C2);$I$13)<>"";LSTOR(HOUR(D2);I16)<>"")
?3. Вот и все! Perfecto! Спасибо… Dan’l