Здравствуйте уважаемые форумчане! Подскажите решение. Есть некая общая формула вида F=Ti+Zk+An, где i, k, n коэффициенты(индексы), нужно сделать расчет с разными значениями, после соответствующего ввода значений констант и коэффициентов i, k, n. И ещё показать ход вычислений, чтобы в итоге визуально это выглядело как T2*A5+Z1=2*21+3 = 45. При этом формула переменчива с количеством элементов произведений, между ними кроме операций сложения, могут быть вычитание, деление, умножение. Сам нашел только макрос для показа вычислений, но он преобразует напрямую формулу ячейки, т.е если там были логические операторы, то с ними и выводит, подставляя вместо адреса ячейки числовое значение. Тогда нужно будет чтобы конечная формула в некоторой ячейке содержала в себе "прямые вычисления", т.е если выполнялись какие-то логические операции, или подстановки, ссылающиеся на конкретные значения промежуточных вычислений, то макрос не выполнит задачу. (Например в ячейке А1=2*x, значение Х рассчитывается в другой ячейке А2=2+y, тогда А1=2*А2, для макроса же нужно А1=2*(2+y). Пример работы макроса во вложении. Не требуется использовать именно его, возможно как-то все сделать иначе. Во вложении пример работы макроса, в левой части листа, в рамке в середине пример самого задания и показано как должно выглядеть решение.
Здравствуйте уважаемые форумчане! Подскажите решение. Есть некая общая формула вида F=Ti+Zk+An, где i, k, n коэффициенты(индексы), нужно сделать расчет с разными значениями, после соответствующего ввода значений констант и коэффициентов i, k, n. И ещё показать ход вычислений, чтобы в итоге визуально это выглядело как T2*A5+Z1=2*21+3 = 45. При этом формула переменчива с количеством элементов произведений, между ними кроме операций сложения, могут быть вычитание, деление, умножение. Сам нашел только макрос для показа вычислений, но он преобразует напрямую формулу ячейки, т.е если там были логические операторы, то с ними и выводит, подставляя вместо адреса ячейки числовое значение. Тогда нужно будет чтобы конечная формула в некоторой ячейке содержала в себе "прямые вычисления", т.е если выполнялись какие-то логические операции, или подстановки, ссылающиеся на конкретные значения промежуточных вычислений, то макрос не выполнит задачу. (Например в ячейке А1=2*x, значение Х рассчитывается в другой ячейке А2=2+y, тогда А1=2*А2, для макроса же нужно А1=2*(2+y). Пример работы макроса во вложении. Не требуется использовать именно его, возможно как-то все сделать иначе. Во вложении пример работы макроса, в левой части листа, в рамке в середине пример самого задания и показано как должно выглядеть решение.cth
Вот вам примерчик, как можно сделать вашу задачку при ограниченных условиях (три переменных). Пришлось немного изменить представление исходных данных для упрощения формул. Но это непринципиально, организация поиска/подмены может осуществляться при любом расположении табличек. Обратите также внимание, что некоторые формулы избыточны и просто показывают некоторые возможности. Например, можно задать все имена и индексы переменных формулами, "разобрав" список переменных в исходной таблице. Или однозначно привязать определенные индексы к определенным именам. Также можно перейти к именованным/динамическим диапазонам данных, дополнительным проверкам на существование переменных и индексов и т.д.
Вот вам примерчик, как можно сделать вашу задачку при ограниченных условиях (три переменных). Пришлось немного изменить представление исходных данных для упрощения формул. Но это непринципиально, организация поиска/подмены может осуществляться при любом расположении табличек. Обратите также внимание, что некоторые формулы избыточны и просто показывают некоторые возможности. Например, можно задать все имена и индексы переменных формулами, "разобрав" список переменных в исходной таблице. Или однозначно привязать определенные индексы к определенным именам. Также можно перейти к именованным/динамическим диапазонам данных, дополнительным проверкам на существование переменных и индексов и т.д.AndreTM
AndreTM, благодарю за ответ. Только сейчас понял, что не совсем точно описал начальные условия, коэффициентов i например может быть несколько для одного аргумента, т.е. возможен случай X2+X3+X5, и это только с X, в одном выражении могут быть и другие, т.е X2+X3+Y1+Y5. У меня была идея реализовать все следующим образом. Например заранее известно что число слагаемых с одним аргументом будет точно не больше 5 штук. Пример с одним аргументом: X2+X3+X5, оставшиеся X1 и X4 принимаем за 0, тогда численно можно всегда считать общую формулу, т.е будет X1+X2+X3+X4+X5=0+X2+X3+0+X5. Потом можно формулу выводить в отдельную ячейку, и каким-то образом вырезать из формулы ссылки на ячейки соответствующие нулевым значениям. Работать только со строкой X1+X2+X3+X4+X5, преобразовать её в X2+X3+X5. Получить формулу, не учитывающие нулевые ячейки довольно не сложно, через функцию ЕСЛИ(пример во вожении первого поста слева столбец), но это будет уже формула с логикой, и макрос не отобразит верным образом.
AndreTM, благодарю за ответ. Только сейчас понял, что не совсем точно описал начальные условия, коэффициентов i например может быть несколько для одного аргумента, т.е. возможен случай X2+X3+X5, и это только с X, в одном выражении могут быть и другие, т.е X2+X3+Y1+Y5. У меня была идея реализовать все следующим образом. Например заранее известно что число слагаемых с одним аргументом будет точно не больше 5 штук. Пример с одним аргументом: X2+X3+X5, оставшиеся X1 и X4 принимаем за 0, тогда численно можно всегда считать общую формулу, т.е будет X1+X2+X3+X4+X5=0+X2+X3+0+X5. Потом можно формулу выводить в отдельную ячейку, и каким-то образом вырезать из формулы ссылки на ячейки соответствующие нулевым значениям. Работать только со строкой X1+X2+X3+X4+X5, преобразовать её в X2+X3+X5. Получить формулу, не учитывающие нулевые ячейки довольно не сложно, через функцию ЕСЛИ(пример во вожении первого поста слева столбец), но это будет уже формула с логикой, и макрос не отобразит верным образом.cth
Какой макрос-то? Мы же здесь про формулы... Если можно делать работу макросами - то вопросов не возникает вообще никаких. Что же касается "чисто формулами" сделать множественные значения индексов - то это тоже решаемо. Нужно просто список индексов задавать либо сразу в виде диапазона/массива, либо парсить в массив из символьной строки. Остальная логика - может быть та же, что и приведена в моём примере. Вы бы задачку свою описали словами (что, зачем и для чего это требуется), а не надуманными схемами ваших решений...
Какой макрос-то? Мы же здесь про формулы... Если можно делать работу макросами - то вопросов не возникает вообще никаких. Что же касается "чисто формулами" сделать множественные значения индексов - то это тоже решаемо. Нужно просто список индексов задавать либо сразу в виде диапазона/массива, либо парсить в массив из символьной строки. Остальная логика - может быть та же, что и приведена в моём примере. Вы бы задачку свою описали словами (что, зачем и для чего это требуется), а не надуманными схемами ваших решений...AndreTM
AndreTM, а задачка такая и есть в принципе) Эксель в данном случае как средство, это не задание по информатике. Формул штук пять вбиваются несколько раз, и просчитываются с разными значениями, при этом велика вероятность что многие значения придется изменять. Показать решение, это чтобы все не вбивать на клавиатуре вдвойне, для отчета. Сам ход вообще не важен, хоть макрос, главное чтобы упростить всю эту рутину. Мне нужен только результат на выходе, в виде формулы и ходом вычислений. А через логику пробовал просто самому интересно стало, простейшие комбинации проходили на первом курсе информатики. Макросы для меня совсем темный лес, с Бейсиком не знаком. Пример в виде скриншота во вложении.
AndreTM, а задачка такая и есть в принципе) Эксель в данном случае как средство, это не задание по информатике. Формул штук пять вбиваются несколько раз, и просчитываются с разными значениями, при этом велика вероятность что многие значения придется изменять. Показать решение, это чтобы все не вбивать на клавиатуре вдвойне, для отчета. Сам ход вообще не важен, хоть макрос, главное чтобы упростить всю эту рутину. Мне нужен только результат на выходе, в виде формулы и ходом вычислений. А через логику пробовал просто самому интересно стало, простейшие комбинации проходили на первом курсе информатики. Макросы для меня совсем темный лес, с Бейсиком не знаком. Пример в виде скриншота во вложении.cth
SM, благодарю за вариант. Получается что все формулы все равно нужно будет вбить по 1 разу? Если у меня например будет следующий блок решения по тем же формулам но с другими индексами. Я то как представлял, вбил один раз однотипные формулы, потом только индексы меняются и значения соответственно. Ведь формулы довольно простые, т.е даже знаки можно не менять, везде можно написать +, а уже сами значения только вбивать и придавать тем которые нужно отнять отрицательное значение.
SM, благодарю за вариант. Получается что все формулы все равно нужно будет вбить по 1 разу? Если у меня например будет следующий блок решения по тем же формулам но с другими индексами. Я то как представлял, вбил один раз однотипные формулы, потом только индексы меняются и значения соответственно. Ведь формулы довольно простые, т.е даже знаки можно не менять, везде можно написать +, а уже сами значения только вбивать и придавать тем которые нужно отнять отрицательное значение.cth
Простите, но не понимаю как реализовать свои формулы... Ведь выражения могут содердать как переменные с разными индексами так и разное количество слагаемых, а каких то переменных может вообще не быть в очередной порции примеров. Может я не верное выражался, когда описывал что нужно, прикрепил вложение, там мое видение того как должен выглядеть готовый файл, и что нужно ввести для решения (заполнить таблицу). Может существует какой-то готовый макрос для подобных задач.
Простите, но не понимаю как реализовать свои формулы... Ведь выражения могут содердать как переменные с разными индексами так и разное количество слагаемых, а каких то переменных может вообще не быть в очередной порции примеров. Может я не верное выражался, когда описывал что нужно, прикрепил вложение, там мое видение того как должен выглядеть готовый файл, и что нужно ввести для решения (заполнить таблицу). Может существует какой-то готовый макрос для подобных задач.cth
AndreTM, Там с общей формулой ещё можно посидеть, а вот чтобы потом еще решение выводить не знаю, наверное как-то и можно. Проще так вбить руками. Но неужели весь великий Эксель не может из формулы ячейки удалять ссылку на ту, значение в которой равно нулю. Если например есть какая-то абстрактная формула =A1+A2+A3, и если значение в A2=0, то переписать ячейку с формулой =A1+A3? Как так то...
AndreTM, Там с общей формулой ещё можно посидеть, а вот чтобы потом еще решение выводить не знаю, наверное как-то и можно. Проще так вбить руками. Но неужели весь великий Эксель не может из формулы ячейки удалять ссылку на ту, значение в которой равно нулю. Если например есть какая-то абстрактная формула =A1+A2+A3, и если значение в A2=0, то переписать ячейку с формулой =A1+A3? Как так то...cth
Вас, похоже, заносит не в те дебри... Каким боком здесь ячейки листа Excel и их представление в данном ПО? - если вы-то рассуждаете о неких своих "обозначениях" в своих "формулах". Причём, я так понял, желаете сделать итерационные вычисления (т.е. ваши переменные внутри формул могут быть сами определены как функции). Ну так задача тогда сводится не к задействованию каким-то хитровывернутым образом Excel'я, а к обычному парсингу символьных выражений. Я не просто так посоветовал вам сначала описать задачу словами, не прибегая к ссылкам на ваши "наработки", и абстрагировавшись от Excel Тогда бы стало сразу ясно, в каком направлении копать: начать с описания системы обозначений (т.е. разработки синтаксиса для задаваемых вами "формул"), затем - реализовать операции, соответствующие обозначениям, затем - написать парсер выражений, плюс сделать интерпретатор получаемых выражений, позволяющий средствам оболочки вычислить полученное выражение... Между прочим, именно то, что продемонстрировал SM в приложении к вашему примеру - а вы не захотели разобраться в реализации до конца... И вы нам тут про A3 и Z5
Вас, похоже, заносит не в те дебри... Каким боком здесь ячейки листа Excel и их представление в данном ПО? - если вы-то рассуждаете о неких своих "обозначениях" в своих "формулах". Причём, я так понял, желаете сделать итерационные вычисления (т.е. ваши переменные внутри формул могут быть сами определены как функции). Ну так задача тогда сводится не к задействованию каким-то хитровывернутым образом Excel'я, а к обычному парсингу символьных выражений. Я не просто так посоветовал вам сначала описать задачу словами, не прибегая к ссылкам на ваши "наработки", и абстрагировавшись от Excel Тогда бы стало сразу ясно, в каком направлении копать: начать с описания системы обозначений (т.е. разработки синтаксиса для задаваемых вами "формул"), затем - реализовать операции, соответствующие обозначениям, затем - написать парсер выражений, плюс сделать интерпретатор получаемых выражений, позволяющий средствам оболочки вычислить полученное выражение... Между прочим, именно то, что продемонстрировал SM в приложении к вашему примеру - а вы не захотели разобраться в реализации до конца... И вы нам тут про A3 и Z5 AndreTM
Skype: andre.tm.007 Donate: Qiwi: 9517375010
Сообщение отредактировал AndreTM - Вторник, 17.12.2013, 23:41
Ваша правда, не стал разбираться, мне нужно на днях уже отчет сдавать, эксель это конечно интересно, но именно сейчас планировал использовать его как средство. Ваши предложения, уверен, стоящие и ценные, но они не понятны мне как рядовому пользователю. Поэтому спрашиваю смешные на ваш взгляд вещи, потому что у меня нет таких познаний в экселе, но свою модель решения все же хотелось попробовать реализовать, да для людей разбирающихся глубоко в возможностях и встроенных функциях она выглядит смешно, но зато для меня она понятна, и возможно кому нибудь вроде меня тоже стала бы понятна, вряд ли я один студент кому надо вводить подобные формулы.
Ваша правда, не стал разбираться, мне нужно на днях уже отчет сдавать, эксель это конечно интересно, но именно сейчас планировал использовать его как средство. Ваши предложения, уверен, стоящие и ценные, но они не понятны мне как рядовому пользователю. Поэтому спрашиваю смешные на ваш взгляд вещи, потому что у меня нет таких познаний в экселе, но свою модель решения все же хотелось попробовать реализовать, да для людей разбирающихся глубоко в возможностях и встроенных функциях она выглядит смешно, но зато для меня она понятна, и возможно кому нибудь вроде меня тоже стала бы понятна, вряд ли я один студент кому надо вводить подобные формулы.cth