Возможно, для этого нужно использовать функцию StartPoint(), правда названия накшатры оно не выдаст - только её номер, хотя ничего не мешает задать массив с названиями накшатр и поместить это дело в отдельную функцию, которую и вызывать через эксель. Если имеются в виду индийские накшатры, то еще не забудьте переключиться на сидерический зодиак.
Кстати щас глянул в код, оказывается функцию NAKSATRA() я давно реализовал, только уже не помню, что я это делал. Дык что велосипед можно не изобретать
LordWilex. Спасибо. Я воспользовался вашим ранним советом , использовал функцию ZodSec(Sig;Sectors) с разделением на 28 сектор
MoonHome = ZodSec(LonMoon;28)-2
LordWilex.
У меня к вам просба. Мне надо найти аспекты (0,60,90,120,180) луны с планетами(Sun,Mar,Sat,Ura,SN), на какой та срок(01.06.2012 – 01.12.2014) и в лист занести. Могу ли я вас вежливо попросить показать мне все это на простом примере, используя ваши функции для эксель.
Например:
Луна в квадрате с Марсом на период ближайшие 2 месяца .
Зет это все делает для меня. Но, так тоже хочется.
За ранее благодарю.
LordWilex.
У меня к вам просба. Мне надо найти аспекты (0,60,90,120,180) луны с планетами(Sun,Mar,Sat,Ura,SN), на какой та срок(01.06.2012 – 01.12.2014) и в лист занести. Могу ли я вас вежливо попросить показать мне все это на простом примере, используя ваши функции для эксель.
Например:
Луна в квадрате с Марсом на период ближайшие 2 месяца .
Зет это все делает для меня. Но, так тоже хочется.
За ранее благодарю.
На простом примере не получится.
В этом случае бы посчитал все подряд с шагам в 1 день или меньше, если для Луны и использовал бы функцию "ЕСЛИ()" и "И()" из эксель в отдельном столбце. Что-то типа:
=И(ЕСЛИ(A1> 85); ЕСЛИ(A1<95))
На всякий случай скажу, что формулу для каждой ячейки вводить не обязательно - достаточно написать ей один раз, а потом скопировать на весь столбец.
Допустим, в ячейке "A1" содержится значение аспекта углового расстояния между Солнцем и Луной. Тогда если это значение будет между 85 и 95 градусов (т.е. квадрадраутра с орбом в 5 градусов без учета границы знака), то формула вернет "ИСТИНУ".
Потом мы, например, можем посчитать кол-во "истин" при помощи функции "СУММА()" в столбце и определить в скольких картах из нашей выборки эти объекты находятся в квадратуре.
Если мы хотим получить "таблицу аспектов", то можем применить фильтр и показать только те строки в которых есть "истина" (см. документации по Exel)
Так же, если нам не нужно ничего считать, а нужно только визуальное представление - мы можем просто пометить цветом ячейки, в которых значения попадают в определенный интервал при помощи условного форматирования (см. документацию по Exel).
Для статистической обработки больших массивов данных этого функционала более чем достаточно, а для работы с единичной картой проект в общем-то изначально не предназначен - для этого есть например - ZET
LordWilex, Спасибо за объяснения.
Если я вас правильно понял, то это должно быт так. Sub Кнопка_Вычислить ()
For julday = 2456046 To 2456607 Step 1
LmonY = Plc(julday, 1, "STrop", 0)
LSunX = Plc(julday, 0, "STrop", 0)
s = JDToDay(julday, 1) & "." & JDToDay(julday, 2) & "." & JDToDay(julday, 3) & " " & JDToDay(julday, 4) & ":" & JDToDay(julday, 5) & ":" & JDToDay(julday, 6)
' Call SweInit
ASP = ASPECT(LSunX, LmonY)
If ASP >= 85 And ASP <= 95 Then
i = i + 1
Лист7.Cells(i, 1) = julday
Лист7.Cells(i, 2) = Format(s, "dd.mm.yyyy hh:nn:ss")
Лист7.Cells(i, 3) = ASP
End If
Next julday End Sub
Буду рад если оптимизируете код для универсальности.
Благодарью.
Последний раз редактировалось Starmen, 29.04.2012 в 09:40.
LordWilex, Спасибо за объяснения.
Если я вас правильно понял, то это должно быт так. Sub Кнопка_Вычислить ()
For julday = 2456046 To 2456607 Step 1
LmonY = Plc(julday, 1, "STrop", 0)
LSunX = Plc(julday, 0, "STrop", 0)
s = JDToDay(julday, 1) & "." & JDToDay(julday, 2) & "." & JDToDay(julday, 3) & " " & JDToDay(julday, 4) & ":" & JDToDay(julday, 5) & ":" & JDToDay(julday, 6)
' Call SweInit
ASP = ASPECT(LSunX, LmonY)
If ASP >= 85 And ASP <= 95 Then
i = i + 1
Лист7.Cells(i, 1) = julday
Лист7.Cells(i, 2) = Format(s, "dd.mm.yyyy hh:nn:ss")
Лист7.Cells(i, 3) = ASP
End If
Next julday End Sub
Буду рад если оптимизируете код для универсальности.
Благодарью.
Ну можно и так Хотя я не имел в виду код, я имел в виду использование встроенных функций эксель на листе.
На счет универсальности - в данном случае у вас код привязан к конкретным ячейкам, а если данные окажутся на листе в другом месте - то код уже работать не будет. Дык что макросы - это зло
Добавить универсальности можно, если сделать все в виде функции, в которую подавать диапазоны входных и выходных ячеек.
А вообще эксель для таких задач не очень приспособлена - все делается через всем хорошо известное место
Добавить универсальности можно, если сделать все в виде функции, в которую подавать диапазоны входных и выходных ячеек.
Так милости просим.Я ведь ваши функции использовал.Это новые возможности ЩЭ по русски специально для поиска событий .
А конкретно в моем примере как сделать, чтоб в лист заносился начало и рядом конец периода а не все дни.У меня не получается
Вы хотите, чтобы я за Вас сделал Вашу работу?
Вообще-то это нужно ВАМ, а не МНЕ.
Уверяю Вас - у меня и своей работы по кодингу полно - все ни как не могу себя заставить подступиться.
А функционала ШЭ+Эксель мне с головой хватает для, решаемых мной задач
Цитата:
Сообщение от Starmen
А конкретно в моем примере как сделать, чтоб в лист заносился начало и рядом конец периода а не все дни.У меня не получается
Попробуйте функцию "Cells()", её судя по вашему предыдущему посту, Вы прекрасно знаете.
В данном случае нужно просто сделать так, чтобы первую дату (как я понимаю первый элемент массива) функция выводила обычным образом, а вторую (последний элементы массива) бы просто печатала в соседнюю ячейку через "Cells()". Это конечно изврат, но зато очень просто
Короче параметры те же, что и в функции PLC().
Только не забудьте скачать файлы нужных вам астероидов тут: ftp://ftp.astro.com/pub/swisseph/ephe/ (для начала с головой хватит папки "ast0", в ней содержится первая 1000 именованных астероидов), и поместите эту папку в папку, где у Вас хранятся эфемериды.
LordWilex
К чему равен "CTrop" в формуле =Plc($I$2;A10;"CTrop";3). Из поста №318 , вычислении скорости планет
Эт я по старой привычке пишу. Вообще-то правильно "STrop"
В первоначальной версии функции я почему-то использовал букву "С", но потом понял, что логичней зашифровать это как STrop (Swiss ephemeris Tropical zodiac ).
В принципе - в данном случае без разницы - если Вы хотите вычислить что-то в тропическом зодиаке с использованием швейцарских эфемерид - то в этот параметр можно писать любую абракадобру, все равно если функция его не распознает - результат будет выдан в тропическом зодиаке с использованием швейцарских эфемерид.
Вот если Вам нужно, вычислить координату планеты в нестандартном формате, например, с использованием JPL эфемерид в сидерическом зодиаке, то тогда придется строго писать "JSid" (JPL ephemeris sideral zodiac)
LordWilex
Спасибо.Да , с Абракадаброй и без параметра получается ,но с STrop нет.
Ааа, понятно
найдите в функции PLC() строчку:
Цитата:
' Швейцарские эфемериды
If CType = "STrop" Then iflag = SEFLG_TRUEPOS + SEFLG_SWIEPH
...
И замените на:
Цитата:
' Швейцарские эфемериды
If CType = "STrop" Then iflag = SEFLG_TRUEPOS + SEFLG_SWIEPH + SEFLG_SPEED
...
Просто там выключено вычисление скоростей планет, это сделано для того, чтобы быстрей считало, когда одновременно вычисляешь много планет. Обычно необходимости в вычислении скоростей нет.
А собственно чем отличается JPL эфемериды от других (.se1)
1. Самые точные JPL эфемериды.
2. ШЭ (файлы с расширением ".se1") - представляют собой апроксимацию JPL полиномами Чебышева. Они чуть менее точные, но для астрологических задач их более чем достаточно.
3. Эфемериды Мошьера еще менее точные, работают медленней, но зато они целиком помещаются в файл swedll32.dll
В принципе, разница там мизерная, если Вы не собираетесь отправлять пилотируемую миссию на Марс, или не решаете какие-нить научные задачи - то в принципе вообще можете этим не заморачиваться и использовать любые из них
1. Самые точные JPL эфемериды.
если Вы не собираетесь отправлять пилотируемую миссию на Марс, или не решаете какие-нить научные задачи - то в принципе вообще можете этим не заморачиваться и использовать любые из них
Про JPL эфемериды понял.
А в остальном , ничего не собираюсь делать.