Как использовать LibreOffice Calc ‘set’ тип данных

#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 , используйте знак —

Несколько примеров помогут вам понять назначение отдельных функций. Последняя строка — это ответ на ваш вопрос.

Примеры ListOK

Обновлено.Из базового все эти функции вызываются как встроенные функции 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