Страницы: 1
RSS
Ссылка на смежный диапазон внутри массива констант
 
Уважаемые коллеги,

Для выполнения моих вычислений (пример в колонке E) вместо прямой ссылки на ячейки я хочу использовать массив констант вида ={"Петя";1;2;3:"Вася";-10;-20;-30:"Маша";0;1;1}
До тех пор пока он содержит только числовые значения мне удается более-менее успешно получать из него нужные результаты (колонка F).
Однако, в том случае, если я включаю в массив констант текстовые значения моя формула сильно усложняется. И главное, что для меня неприемлемо: появляется необходимость несколько раз указывать в формуле свои переменные (числа из столбца D и имена из строки 11) - смотрите пример в столбце G.
Пока мне приходит в голову только использование функции СМЕЩ() - см. столбец H - к сожалению мне не удалось заставить ее работать с массивом констант.
Либо использование формулы массива (см. столбец I) - чего также хотелось бы избежать...

Могли бы вы предложить альтернативное решение, не требующее многократного обращения к одним и тем же переменным внутри формулы?

Заранее благодарен!

P.S. Если кто-нибудь знает как научить MS Excel получать единицу при возведении нуля в нулевую степень без обработки ошибок - пожалуйста, дайте знать :)
 
нормально опишите что нужно сделать без вашего видения решения с константами, что нужно реально  
Лень двигатель прогресса, доказано!!!
 
смотрите в файле желтый массив так хотели
Лень двигатель прогресса, доказано!!!
 
Базовая задача (решена): Для некоторой функции (например, для полинома второй степени) задаются константы (коэффициенты перед степенями переменной) - необходимо вычислить результат для различных значений переменной. Условие: выражение для вычисления результата должно содержать обращение к переменной не более одного раза - смотрите пример в столбцах E или F.

Нерешенная задача: В зависимости от условия (задается текстом, а не числом!) производится выбор между наборами констант (строки в таблице констант), которые должны подставляться в выражение для вычисления результата в качестве коэффициентов, соответствующего условию (смотрите пример в столбце F). При этом важно в самой функции однократно обращаться к текстовому_условию (так же как однократно обращаться к переменной).

Общее пожелание: для поддержания работы формул в разных файлах вместо хранения констант в ячейках служебных листов предполагается их хранение в именованных таблицах констант. Именно по этой причине я сформулировал свой вопрос именно так.    
 
не это не для меня ни че не понял
Лень двигатель прогресса, доказано!!!
 
В любом случае - благодарю за попытку помочь
 
Игорь, выбрать несколько смежных столбцов из массива констант, похоже, невозможно.
А почему не разделить текстовую и числовую части таблицы ? (см. мой вариант).
Цитата
IKor написал #1:
как научить MS Excel получать единицу при возведении нуля в нулевую степень без обработки ошибок
Вместо нуля вставлять в ячейку:  1E-99  :-).
Изменено: С.М. - 21.03.2019 00:52:58
 
Цитата
С.М. написал:
почему не разделить текстовую и числовую части таблицы ?
Александр, спасибо за идею. Она, безусловно, работоспособна.

Более того, некоторая ее модификация и была реализована в моем основном файле (до его укрупнения-усложнения) - можно сказать, что именно ее я пытаюсь модифицировать:
1. в части сокращения количества обращений к переменным внутри формулы-функции - в идеале до единственного обращения:
по логике решения моей задачи я должен дважды преобразовать результат первого вычисления: и если в первой формуле мне удалось обращаться к переменной однократно, то во второй формуле мне требуется обратиться ко второй переменной дважды, а в третьем преобразовании я вынужден трижды обращаться к результату второго вычисления... В результате финальное преобразование (свернутое в одну формулу) содержит три ссылки на первую переменную и аж шесть ссылок на вторую...
2. сама идея добавления "текстовых комментариев" к таблице констант родилась из необходимости обрабатывать несколько разных таблиц, в которых данные, относящиеся к одному и тому же "комментарию" могут находится в разном порядке (либо попросту отсутствовать...).
Если не будет других идей, то придется использовать одну плоскую числовую таблицу, содержащей все возможные параметры для всех возможных "комментариев" плюс одну-две текстовые "шапки" для нее.
 
Аааа, вспомнил: если в таблице столбцов немного и количество постоянно, то можно их извлечь "поштучно" с помощью ВЫБОР().
2. Вариант "проблемы нуля" - пользовательская функция:
Код
Function ValueOfPolynom(Coeffs, X As Double)
    Dim Y As Double, C
    On Error GoTo E1
    For Each C In Coeffs: Y = Y * X + C: Next
    ValueOfPolynom = Y
    Exit Function
E1:
    Err.Clear: ValueOfPolynom = CVErr(xlErrNum)
End Function
Изменено: С.М. - 04.04.2019 00:25:36 (А что б красиво было :-))
Страницы: 1
Наверх