Модераторы: mihanik

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функция наподобие Т() 
:(
    Опции темы
motorway
  Дата 8.7.2009, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Реально ли сделать функцию наподобие Т() в Экселе, которой можно передавать несколько аргументов через точку с запятой (чтобы в них при вводе адреса ячеек воспринимались как адреса, а не просто текст), которая просто будет возвращать введенную строку?

=Ф(A1+3+b; B2=3+A; C3<4) -> выводит A1+3+b; B2=3+A; C3<4 в ячейку. 

Надо, чтобы аргументы были именно в таком стиле:  через точку с запятой и переменные типа b (не назв. ячеек) не вызывали ошибок. И чтобы была возможность автозаполнения, а названия ячеек в формуле менялись автоматом при изменении их адреса
PM MAIL   Вверх
Naghual
Дата 9.7.2009, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 7
Всего: 49



Параметр функции делаешь один - текстовый.
В теле функции парсиш его и расчитываешь его как угодно.


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
motorway
Дата 9.7.2009, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



А как быть с проблемой автозаполнения и интерпретации названия ячеек? У функции Т тоже параметр текстовый может быть, но автозаполнение не происходит, и при изменении адресов ячеек не меняются адреса аргументов! Поможете расколоть орешек?  smile 
PM MAIL   Вверх
Naghual
Дата 9.7.2009, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 7
Всего: 49



Давайте попробуем разобраться вместе. Для начала, уточните ЧТО именно вы понимаете под "автозаполнением".


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
motorway
Дата 9.7.2009, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



То, что индексы у названий ячеек в формулах меняются автоматически при перетаскивании ячейки на некоторый диапазон. Например, A1+B1 -> B1+C1; или A10+B10 -> A11+B11 и т.п.
Этого не происходит при исп. функции Т().
PM MAIL   Вверх
Naghual
Дата 9.7.2009, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 7
Всего: 49



Правильно.  Вы этого и не добьетесь.  smile



--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
motorway
Дата 9.7.2009, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Никак? Почему?
PM MAIL   Вверх
RockClimber
Дата 10.7.2009, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: 7
Всего: 15



Может, я чего не понял... А функция СЦЕПИТЬ() не спасет отца русской демократии? По описанию вроде похоже...


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
motorway
  Дата 10.7.2009, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Да, действительно, СЦЕПИТЬ хорошая функция. Пока не полностью проверил, но вроде может спасти  smile 

Не получается использование в составе функции СЦЕПИТЬ некоторых комбинаций, напр. =СЦЕПИТЬ(b=[20,30]) дает ошибку, =СЦЕПИТЬ(b={20,40}) превращается в =СЦЕПИТЬ(b={20,4}). Не получается использовать -> .
=СЦЕПИТЬ(=4; max(A1+B2,5)=3) тоже не хочет.
Есть ли способы обойти эти ограничения? 
  smile 

Это сообщение отредактировал(а) motorway - 10.7.2009, 18:43
PM MAIL   Вверх
motorway
Дата 10.7.2009, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Есть ли еще варианты решения задачи? Может, можно сделать функцию типа СЦЕПИТЬ, но чтобы можно было писать любые знаки без кавычек и назв. ячейки воспринимались?
PM MAIL   Вверх
RockClimber
Дата 11.7.2009, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: 7
Всего: 15



Цитата(motorway @  10.7.2009,  21:32 Найти цитируемый пост)
Может, можно сделать функцию типа СЦЕПИТЬ, но чтобы можно было писать любые знаки без кавычек

 smile 
Не, так точно нельзя. Excel устроен так, что все, что в кавычках, воспринимается как строка, а все, что без кавычек - как адрес ячейки или число. По-другому в принципе нельзя, анархия получится.
Да и вообще, общий принцип, как сделать
Цитата(motorway @  8.7.2009,  18:21 Найти цитируемый пост)
=Ф(A1+3+b; B2=3+A; C3<4) -> выводит A1+3+b; B2=3+A; C3<4 в ячейку. 

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


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
motorway
Дата 11.7.2009, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



В общем, мне нужна любая функция, которой можно передавать строку с аргументами в виде таком же, как у СЦЕПИТЬ, но при этом без ограничений на доп. знаки в строке.
Пусть эта функция будет возвращать 0, или что угодно, главное, чтобы позволяла писать в аргументе через точку с запятой любой набор символов, в котором будут распознаваться адреса ячеек.

Пример:
=Ф(<=A1+B1; A3=B4+min(2,3*A1); a=[20,30]) - выводит в ячейку что угодно как результат, но давать вводить такие аргументы она должна  smile 

Самописная функция на VBA такого не может преодолеть? 
PM MAIL   Вверх
RockClimber
Дата 11.7.2009, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 848
Регистрация: 5.5.2006
Где: планета 013 в тен туре

Репутация: 7
Всего: 15



Кажется, дошло.
А может, расскажешь, зачем это нужно? А то я до сих пор не понимаю всей глубины замысла.
Такая строка, как <=A1+B1; A3=B4+min(2,3*A1); a=[20,30] будет однозначно воспринята как формула, и эксель будет пытаться ее вычислить. Не как формулу он воспримет только строку в кавычках.
Увы, по-другому нельзя.


--------------------
Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит.
PM MAIL GTalk   Вверх
motorway
Дата 11.7.2009, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Нужно для возможности ввода нескольких относящихся к ячейке формул. Далее они обрабатываются неким эвалюатором.
Но ведь Эксел в функции СЦЕПИТЬ все-таки что-то принимает в качестве аргументов. Даже возможно ему написать несколько выражений через ;
Нельзя ли как-то немного модифицировать эту функцию, и тогда он будет спокойно пережевывать такие выражения без ошибок?

Это сообщение отредактировал(а) motorway - 11.7.2009, 18:03
PM MAIL   Вверх
Naghual
Дата 11.7.2009, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 7
Всего: 49



Цитата(motorway @  11.7.2009,  18:00 Найти цитируемый пост)
Далее они обрабатываются неким эвалюатором.

Так может ты к решению задачи подошел не с того конца?
Может стоит пересмотреть замысел?


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.