![]() |
|
Модераторы: mihanik |
![]()
|
|
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Реально ли сделать функцию наподобие Т() в Экселе, которой можно передавать несколько аргументов через точку с запятой (чтобы в них при вводе адреса ячеек воспринимались как адреса, а не просто текст), которая просто будет возвращать введенную строку?
=Ф(A1+3+b; B2=3+A; C3<4) -> выводит A1+3+b; B2=3+A; C3<4 в ячейку. Надо, чтобы аргументы были именно в таком стиле: через точку с запятой и переменные типа b (не назв. ячеек) не вызывали ошибок. И чтобы была возможность автозаполнения, а названия ячеек в формуле менялись автоматом при изменении их адреса -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
Параметр функции делаешь один - текстовый.
В теле функции парсиш его и расчитываешь его как угодно. -------------------- Я желаю всем Счастья! |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
А как быть с проблемой автозаполнения и интерпретации названия ячеек? У функции Т тоже параметр текстовый может быть, но автозаполнение не происходит, и при изменении адресов ячеек не меняются адреса аргументов! Поможете расколоть орешек?
-------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
Давайте попробуем разобраться вместе. Для начала, уточните ЧТО именно вы понимаете под "автозаполнением".
-------------------- Я желаю всем Счастья! |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
То, что индексы у названий ячеек в формулах меняются автоматически при перетаскивании ячейки на некоторый диапазон. Например, A1+B1 -> B1+C1; или A10+B10 -> A11+B11 и т.п.
Этого не происходит при исп. функции Т(). -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
Правильно. Вы этого и не добьетесь.
-------------------- Я желаю всем Счастья! |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Никак? Почему?
-------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: 7 Всего: 15 |
Может, я чего не понял... А функция СЦЕПИТЬ() не спасет отца русской демократии? По описанию вроде похоже...
-------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Да, действительно, СЦЕПИТЬ хорошая функция. Пока не полностью проверил, но вроде может спасти
Не получается использование в составе функции СЦЕПИТЬ некоторых комбинаций, напр. =СЦЕПИТЬ(b=[20,30]) дает ошибку, =СЦЕПИТЬ(b={20,40}) превращается в =СЦЕПИТЬ(b={20,4}). Не получается использовать -> . =СЦЕПИТЬ(=4; max(A1+B2,5)=3) тоже не хочет. Есть ли способы обойти эти ограничения? Это сообщение отредактировал(а) motorway - 10.7.2009, 18:43 -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Есть ли еще варианты решения задачи? Может, можно сделать функцию типа СЦЕПИТЬ, но чтобы можно было писать любые знаки без кавычек и назв. ячейки воспринимались?
-------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| RockClimber |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: 7 Всего: 15 |
Не, так точно нельзя. Excel устроен так, что все, что в кавычках, воспринимается как строка, а все, что без кавычек - как адрес ячейки или число. По-другому в принципе нельзя, анархия получится. Да и вообще, общий принцип, как сделать
я написал уже тут. Если там не то, или ты не понимаешь, что там написано, или я не так понял - приложи файл экселевский со списком аргументов функции, значений, которые должны получиться и пр. В общем, на пальцах объясни... -------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
||||
|
|||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
В общем, мне нужна любая функция, которой можно передавать строку с аргументами в виде таком же, как у СЦЕПИТЬ, но при этом без ограничений на доп. знаки в строке.
Пусть эта функция будет возвращать 0, или что угодно, главное, чтобы позволяла писать в аргументе через точку с запятой любой набор символов, в котором будут распознаваться адреса ячеек. Пример: =Ф(<=A1+B1; A3=B4+min(2,3*A1); a=[20,30]) - выводит в ячейку что угодно как результат, но давать вводить такие аргументы она должна Самописная функция на VBA такого не может преодолеть? -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: 7 Всего: 15 |
Кажется, дошло.
А может, расскажешь, зачем это нужно? А то я до сих пор не понимаю всей глубины замысла. Такая строка, как <=A1+B1; A3=B4+min(2,3*A1); a=[20,30] будет однозначно воспринята как формула, и эксель будет пытаться ее вычислить. Не как формулу он воспримет только строку в кавычках. Увы, по-другому нельзя. -------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Нужно для возможности ввода нескольких относящихся к ячейке формул. Далее они обрабатываются неким эвалюатором.
Но ведь Эксел в функции СЦЕПИТЬ все-таки что-то принимает в качестве аргументов. Даже возможно ему написать несколько выражений через ; Нельзя ли как-то немного модифицировать эту функцию, и тогда он будет спокойно пережевывать такие выражения без ошибок? Это сообщение отредактировал(а) motorway - 11.7.2009, 18:03 -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
Так может ты к решению задачи подошел не с того конца? Может стоит пересмотреть замысел? -------------------- Я желаю всем Счастья! |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Нет, все должно быть именно так. Просто Эксел - это наиболее удобная система для ввода данных.
-------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
Ну это спорное заявление. Возможно Вы просто не видите альтернативного решения. Это так-же индивидуальное мнение. Мне, например, Аксес нравится. В любом случае, от Экселя я вам не предлагал уходить. -------------------- Я желаю всем Счастья! |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Уже были испробованы другие таблицы, в том числе потрачено 800 баксов на одну программу. По-настоящему удобный ввод возможен только в Экселе. Это - стандарт.
-------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
Так я же и не предлагаю отказаться от Екселя!
-------------------- Я желаю всем Счастья! |
|||
|
||||
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: 7 Всего: 15 |
Уже понятнее. А этот эвалюатор - он обрабатывает текст формулы или результат ее вычисления? -------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Текст. То есть, он сам считает. Ему нужны только формулы. А Эксел нужен, чтобы их удобно вводить
Это сообщение отредактировал(а) motorway - 11.7.2009, 20:34 -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: 7 Всего: 15 |
Тогда ничего не понимаю
1. Эвалюатор этот - внешняя программа? Если да - COM поддерживает? 2. То есть формулы он распознавать умеет? Ему можно дать текстовую строку и он распознает там формулы и все вычислит? Тогда почему бы ему текстовую строку и не дать? -------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Да, внешняя. Наверно, COM поддерживает, но я не знаю принципы работы с COM.
Ну да, только их и умеет. Я так и делаю, строку передаю из Эксела, но сначала она должна появиться после ввода данных! А писать формулы в виде строки не удобно, пользователи должны работать с ячейками для удобства. И вот проблема, что иногда нужно с одной ячейкой связать несколько формул. Это сообщение отредактировал(а) motorway - 11.7.2009, 20:52 -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: 7 Всего: 15 |
Кажется, в Excel была функция, которая получала на вход ссылку на ячейку и давала на выходе формулу из этой ячейки в виде текста. Но экселя у меня дома нет, а так я ее не помню... Может, можно использовать эту функцию совместно с СЦЕПИТЬ()? Тогда мы получим строку с несколькими формулами. Это максимум, что мне приходит в голову.
-------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Пока не очень понял, но основная проблема в том, что не получается нормально писать эти несколько формул в одной ячейке - Эксел выдает ошибку. Либо надо некоторые символы брать в кавычки, тогда можно с исп. СЦЕПИТЬ или др. Но это не понравится пользователям.
В общем, катастрофа на личном фронте Это сообщение отредактировал(а) motorway - 11.7.2009, 21:12 -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: 7 Всего: 15 |
Ну тут уж я ничем не могу помочь, если пользователям кавычки не нравятся. Кстати, формулы довольно удобно писать в маткаде, а еще у него был опенсорсный аналог...
-------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
Мда... Интересное дело получается...
А Сколько формул на одну ячейку может быть максимально? От чего это зависит? Если Эвалюатор - внешнее приложение, может есть смысл писать по одной формуле в ячейке а уж при передаче эвалюатору, производить необходимое объединение? -------------------- Я желаю всем Счастья! |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
В принципе, могут писать и с кавычками, но тогда даже простая формула превратится в нагромождение доп. символов, что будет не очень приятно. Можно и так, но это приведет к злобе со стороны пользователей (наверно).
На одну ячейку - любое кол-во. Насчет "по одной формуле" - не знаю, все-таки при работе с данными пользователь должен видеть, что относится именно к этой ячейке. А как Вам идея такая - пользователь вводит нужные формулы в ячейку, затем копирует написанное, делает Escape, и по нажатию нек-рой комбинации это заносится из буфера в примечание к ячейке, где и должно все храниться? Вы бы стали пользоваться таким приложением, если бы по ср. с Экселем ввод был длиннее на пару-тройку кликов/нажатий? -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: 7 Всего: 15 |
Не уверен пока, но скорее всего, можно будет сделать без нагромождения доп. символов. Вместо =Ф(<=A1+B1; A3=B4+min(2,3*A1); a=[20,30]) будет =Ф("<=A1+B1; A3=B4+min(2,3*A1); a=[20,30]"), и всего делов. Так, скорее всего, можно. Добавлено через 52 секунды А, ну при вводе, конечно, будет много разных символов... -------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Да, это позволяет писать все, что нужно, но есть минус, то, что не работает автозаполнение при этом и при изменении адресов ячеек в формуле ничего не меняется Если бы это работало, было бы все ОК. Может, это можно как-то сделать? Похоже, функции автозаполнения и изм. адресов ячеек придется делать самостоятельно -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: 7 Всего: 15 |
Завтра на работе попробую сделать пример, покажу... Не совсем это, но очень похоже...
-------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Ну если там будет и автозаполнение, и изм. адресов ячеек - будет хорошо! То есть можно считать, что ввод нескольких формул у нас есть.
Но если их (автозап+изм.адресов) и не получится сделать, наверно, написать самому эти функции реально вполне? Это сообщение отредактировал(а) motorway - 12.7.2009, 14:28 -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
ТЮ на меня за несообразительность! Наконец я понял ЧТО тебе нужно.
В Экселе, при написании функций есть возможность создавать Функции с неограниченным количеством Аргументов. Эти аргументы будут отрабатываться по всем правилам работы с функциями в том числе и Автозаполнение. Во декларация:
Инструкция ParamArray указывает, что Аргументы - это массив. В теле функции, все переданные аргументы можно получить из массива Formulas(). Дерзай. -------------------- Я желаю всем Счастья! |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
О, это вроде бы лучший из вариантов, который я пока видел!
иногда мне нужно, чтобы формула начиналась со знаков > или <. Приходится их брать в кавычки, а далее &. Ну и квадратные скобки надо брать в кавычки. Это немного усложнит жизнь пользователям. Пока, наверно, возьму в качестве рабочего варианта. -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
Да. Это единственный недостаток.
Но, как ты сам сказал, идеал недостижим стандартными средствами Экселя. -------------------- Я желаю всем Счастья! |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Другим выходом могло быть использование СЦЕПИТЬ с кавычками, чтобы можно было писать все, что хочешь, но тогда нужно самому реализовать автозаполнение и реакцию на событие изм. адресов ячеек. Это просто займет время и силы. Все-таки писать функции, которые уже есть... Лучше, наверно, пойти на компромисс с доп. символами, иногда требующимися.
-------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Naghual, а не подскажешь, как получить в виде строки все, что находится у Ф в скобках?
Т.е., если в ячейке =Ф(">="&1; -B4>=C6+D3*F4/H8-5; G13<=6; x="[30,200]"; a>5&"->"& x=3+SIN(3)) Чтобы она возвращала ">="&1; -B4>=C6+D3*F4/H8-5; G13<=6; x="[30,200]"; a>5&"->"& x=3+SIN(3) -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
Пройтись по массиву аргументов циклом и сложить все в одну переменную.
-------------------- Я желаю всем Счастья! |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Да, я пробовал так:
но пишет #ЗНАЧ! - знач., исп. в формуле, имеет неправ. тип данных - пробовал разные варианты, напр. для Ф(1) Как, кстати, проверить, не пуст ли какой-нибудь массив? Например, если массив ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas) пуст, выдается "Не найдено ни одной ячейки, удовл. заданным условиям". Поэтому нужно сначала проверить, чтобы ошибки не было. Это сообщение отредактировал(а) motorway - 13.7.2009, 21:55 -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Я попробовал получать для помещения в примечание переменную Cell.Formula, но почему-то разделители для аргументов функции Ф из точки с запятой превращаются в запятую. Из-за этого будет непонятно, где должно быть правильное окончание одной формулы и начало другой. Можно как-то получить именно то, что в аргументе формулы было?
Это сообщение отредактировал(а) motorway - 13.7.2009, 22:56 -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| Naghual |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
Был неправ. Приношу свои извинения. Нужно так:
А затем парсиш strCellFormula. ;) -------------------- Я желаю всем Счастья! |
||||
|
|||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Что-то у меня ерунда какая-то. Возвращает вместо точки с запятой запятую для разделителей. Может, еще как-то можно?!
-------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
Ход конем:
-------------------- Я желаю всем Счастья! |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Не очень понял, зачем тут используется тогда Formulas и что возвращает функция. В принципе, из положения можно выйти, если заменять на точку с запятой запятые, находящиеся не в скобках () и [] - так как обычно все запятые находятся внутри скобок у какой-то функции. Только это надо понять как.
-------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
Ну тогда попробуй без нее. Приведенный мною код лишен необходимости в этом. -------------------- Я желаю всем Счастья! |
|||
|
||||
| motorway |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Просто он у меня не работает
-------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 7 Всего: 49 |
А КАК он должен работать то? Это код - ответ на твои вопросы.
Разберись с ним и приведи к конечному результату. -------------------- Я желаю всем Счастья! |
|||
|
||||
![]()
|
| Правила форума "Программирование, связанное с MS Office" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще!
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Программирование, связанное с MS Office | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |