1

Я не знаю с чего начать, так что ...

ех.

<*cell* M8> 2x^2-10x+8=0 

Что я сделал до сих пор в камерах: I4,J4,K4 ;

<*cell* I4>=LEFT(M8;1) returns the value 2

<*cell* J4>=MID(M8;5;3) returns the value -10

<*cell* K4>=MID(M8;10;1) returns the value 8

и пока что это правильно! (вот ответы, которые я ищу)

Но я хочу более динамическую функцию:

ex.2

"Но! если значение ячейки M8 text, value будет равно -15x ^ 2+101x-18 = 0 слева, срединные функции не дадут ответы, которые я ищу.

Я ищу функцию, которая может сделать все это правдой (плохая шутка)

  • поиск "слева" останавливается до того, как x ^ n вернет значение (-ы) в указанную ячейку (например, I4)
  • поиск после x ^ n принимает все значения до того, как x вернет значение (-ы) в указанную ячейку (например, J4)
  • поиск после x принимает все значения перед = возвращает значение (-ы) в обозначенную ячейку (например, K4)

(Извините, ребята, но я нуб, так что это лучшее, что я мог придумать!) Конечно...Я знаю, что, возможно, есть масса лучших решений. Не стесняйтесь давать им! Я просто не знаю, как начать или с функции, чтобы начать с ...

2 ответа2

0

Предполагая, что у вас есть строка, похожая на следующую:

а х ^ 2 + б х + с = 0

Где a, b и c могут быть любыми действительными (в математическом смысле) числами (например, квадратичной функцией), тогда вы можете использовать, в сочетании с вашими рассуждениями, функции FIND.

Для первого коэффициента (а), поскольку он является первым, вы можете использовать следующее:

=LEFT(M8;FIND("x^2";M8)-1)

Предполагая, что x ^ 2 уникален, тогда эта функция получит все символы, оставшиеся от члена x ^ 2.

Остальные условия следуют аналогичным рассуждениям. Я публикую это сейчас, чтобы просветить вас, вскоре напишу оставшиеся решения.

Для второго коэффициента (b) вы попадаете в стену, потому что вам нужно найти "x" два раза, поскольку в «x ^ 2» есть "x". Возможно, есть лучшие способы сделать это, но достаточно ясно написать вложенные FIND.

=MID(M8;FIND("x^2";M8)+3;FIND("x";B2; FIND("x";B2) + 1) - (FIND("x^2";B2) + 3) )

Объясняя рассуждения. Коэффициент начинается сразу после того, как написано «x ^ 2». Итак, сначала найдите первый символ, соответствующий «x ^ 2», а затем увеличьте число символов в этой строке (3). После этого вам нужно знать, сколько символов нужно взять, и в этом разница между вторым "x" и концом «x ^ 2». +1 нужен на 3-м FIND чтобы сказать Excel не смотреть первый.

Третий коэффициент (с) основывается на двойном FIND я использовал ранее.

=MID(M8;FIND("x";B2; FIND("x";B2) + 1) + 1; LEN(M8) - FIND("x";B2; FIND("x";B2) + 1) - 2)

LEN вычисляет общее количество символов в строке. Разница заключается в количестве символов в последнем коэффициенте. -2 существует, чтобы исключить =0

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

0

Это развитие предыдущего ответа для n степенных уравнений. Но для того, чтобы это было простым решением, при постановке задачи необходимо соблюдать строгие правила:

  • Функция должна иметь все переменные, четко и однозначно определенные.

    • x^1 , x^2 , ..., x^9 все действительны, и все термины до x^9 должны существовать (даже если их нет, просто скажем 0 x^8 например).
    • x^1 и x^10 недействительны. Поскольку второе содержит первое, функция НАЙТИ будет сбита с толку. Правильное использование будет x^01 и x^10 .
    • x^0 не должен существовать (и в последнем представленном случае он не может существовать).
  • В ответ вам нужно иметь все переменные в таблице поиска. Применяются те же правила.

Тем не менее, я сейчас представляю мои настройки данных:

Начальная настройка данных и конечный результат

Он показывает некоторые вещи о том, что ожидается от функции. Помимо правил использования, представленных выше, коэффициенты могут быть записаны свободно. Однако из-за этой свободы все может показаться довольно грязным. Мое предложение состоит в том, чтобы сохранить последовательность (то есть +105.25x^15 или -205.987x^05 , для всех коэффициентов).

Теперь фактические функции поиска:

  1. Для x^8: функция, по сути, равна той, которую я представил ранее, поэтому я адаптировал ее под свой пример:

    =LEFT($C$2;FIND(B4;$C$2)-1)
    

    Обратите внимание на знаки доллара на функцию, содержащую ячейку. Хотя это особая функция, это поможет позже.

  2. Для x^7 до x^1:

    Функция здесь была бы намного сложнее (почти невозможна) без первоначальных соображений.

    =MED($C$2;FIND(B4;$C$2) + LEN(B4);FIND(B5;$C$2) - (FIND(B4;$C$2) + LEN(B4)) )
    

    Логика заключается в том, чтобы подобрать текст, который находится между терминами в последовательности. Второй аргумент помещает первый символ после первого слагаемого (x^8 ), а третий аргумент вычисляет через разность длину коэффициента.

    После этого вы можете перетащить эту функцию вниз до x^1 . Это где знаки доллара (он же "запирает ячейку") пригодится.

    Если вы не пишете нулевые термины, эта функция выдаст ошибки даже для существующих терминов.

  3. Для x^0:

    =MED($C$2;FIND(B11;$C$2) + LEN(B11);LEN($C$2) - (FIND(B11;$C$2) + LEN(B11)) - 2)
    

    Рассуждения похожи на те, которые я использовал в предыдущем ответе.

Я часто использую функцию LEN для вычисления размера (в символах) факторов. Хотя в моем примере все они состоят из 3 символов, таким образом я избегаю написания магических чисел в каждой функции, и это обеспечивает расширяемость (что необходимо для уравнений n степеней).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .